Kezdőoldal » Számítástechnika » Programozás » Segítene valaki egy kód...

Segítene valaki egy kód írásában(Python)?

Figyelt kérdés

Nem igazán értek a témához. Hobbi szinten foglalkozok lottóval és szeretném tudni, hogy bizonyos húzásból hány olyan kombináció van ami ismétlődik. Az egyszerűség kedvéért leírom a példát.

Adott intervallumon belül kihúzzák ezeket a számokat:

1,2,3,4,5,6

1,3,5,7,8,9

1,2,3,5,6,9


Én arra lennék kiváncsi, hogy a 1,2,3 vagy a 3,5,6 vagy a 2,3,5 stb kombináció hányszor szerepelt a 3 húzásból. Itt könnyű dolgom van mert látom, hogy kétszer de ezt több húzásból szeretném megnèzni. Minden olyan kombinációra kiváncsi lennék amelyikre ez igaz, hogy x sorsoláson belül melyek azok a 3 számból álló kombinációk amik szerepelnek kétszer. Nem találtam ilyen statisztikát sehol ezért szeretném egy kóddal megoldani ahol en tudom bevinni az aktuális számokat de ezt a feladatot mindig fixen megoldja. Előre is köszönöm aki tud segíteni.



ápr. 8. 19:44
 1/7 anonim ***** válasza:
Kérd meg erre ChatGPT barátunk. Pár másodperc alatt kiadja neked a kódot. Csak tudd jól megadni neki hogy mit is akarsz.
ápr. 8. 19:53
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:
Próbáltam, de nem igazán akarja megérteni mit szeretnék.
ápr. 8. 19:57
 3/7 anonim ***** válasza:

Kombinatorika:


[link]

ápr. 8. 21:49
Hasznos számodra ez a válasz?
 4/7 anonim ***** válasza:

Meddig jutottál?


Nekem nem egyértelmű, a 3,5,6 pl sorrendben kell, egymás után, vagy lehet más sorrendben is, vagy lehet közbe ékelődve másik szám, pl 3,8,5,6?

ápr. 9. 10:36
Hasznos számodra ez a válasz?
 5/7 anonim ***** válasza:

Lehet nem a legszebb megoldás, de tessék:

(Ha a számok sorrendje is érdekel, nem csak a jelenlét, akkor bonyolultabb a helyzet, ez a verzió nem veszi figyelembe a sorrendet/egymáshoz képesti helyzetet.)


def teszt(teszt_alany: list[set[int]], számok: set[int]) -> int:

válasz: int = 0

for x in teszt_alany:

if számok.issubset(x):

answer += 1

return válasz


Az első argumentum egy set-eket (halmazokat) tartalmazó lista, ahol a halmazok a tesztelni kívánt lottóhúzások. A számok szintén egy set, ami a tesztelendő számokat (pl. 1, 2, 5) tartalmazza. Hogy a lottóhúzások listáját hogy állítod elő, azt rád bízom, with open() a barátod. (Gondolom a húzások el vannak tárolva egy fájlban, nem kézzel akarod minden alkalommal bepötyögni.) A pandas read_csv/read_excel függvényei is jól jöhetnek, ha tudod hogy kell használni a pandas-t.

ápr. 10. 18:47
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:
Előző vagyok, bocsi, a gyakori elrontja az indenteket ha közvetlenül kód szerkesztőből másolsz, de remélem érthető. Az if a for alá kerül, az answer += 1 pedig válasz += 1 akart lenni, és az if-hez képest +1 tab/4 space.
ápr. 10. 18:51
Hasznos számodra ez a válasz?
 7/7 anonim ***** válasza:

@18:47 @18:51

Nem szerencsés változónévben ékezetes karakter.

Az a részhalmazos (subset) megoldás sem szerencsés. Ez akkor lenne szerencsés,ha egy vagy egy-egy konkrét részhalmazt keresnénk. Mivel a kérdező ezt keresi : "Minden olyan kombinációra kiváncsi lennék amelyikre ez igaz, hogy x sorsoláson belül melyek azok a 3 számból álló kombinációk amik szerepelnek kétszer".

Éppen ezért az összes lehetséges számhármast végig kéne tesztelni. Sokkal jobb futási idejű (és észszerűbb) mindig az adott számhatost felosztani számhármasokra.

[link]

Az én megoldásomban ami végzi ezen felosztást az a harmas_komb_huzas_alapjan függvény. Első paramtétere bemeneti paraméter az adott számhatost várja, második paraméter kimeneti paraméter ami dict-be rakja ahol a kulcs egy tuple számhármas, a hozzá tartozó érték egy lista ami a bemenetbe kapott számhatossal bővíti az adott listát.

Az hogy honnan jönnek a számok az lehet fájlból pl, én kézzel töltöttem fel a kérdező által írt számokkal.

Az összes kérdéses számhármast kiíratok és a hozzájuk tartozó számhatosokat is a példakódban.

Vagyis kimenete :

(1, 2, 3) -> [(1, 2, 3, 4, 5, 6), (1, 2, 3, 5, 6, 9)]

(1, 2, 5) -> [(1, 2, 3, 4, 5, 6), (1, 2, 3, 5, 6, 9)]

(1, 2, 6) -> [(1, 2, 3, 4, 5, 6), (1, 2, 3, 5, 6, 9)]

(1, 3, 6) -> [(1, 2, 3, 4, 5, 6), (1, 2, 3, 5, 6, 9)]

(1, 5, 6) -> [(1, 2, 3, 4, 5, 6), (1, 2, 3, 5, 6, 9)]

(2, 3, 5) -> [(1, 2, 3, 4, 5, 6), (1, 2, 3, 5, 6, 9)]

(2, 3, 6) -> [(1, 2, 3, 4, 5, 6), (1, 2, 3, 5, 6, 9)]

(2, 5, 6) -> [(1, 2, 3, 4, 5, 6), (1, 2, 3, 5, 6, 9)]

(3, 5, 6) -> [(1, 2, 3, 4, 5, 6), (1, 2, 3, 5, 6, 9)]

(1, 3, 9) -> [(1, 3, 5, 7, 8, 9), (1, 2, 3, 5, 6, 9)]

(1, 5, 9) -> [(1, 3, 5, 7, 8, 9), (1, 2, 3, 5, 6, 9)]

(3, 5, 9) -> [(1, 3, 5, 7, 8, 9), (1, 2, 3, 5, 6, 9)]

ápr. 11. 13:09
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!