Segítene valaki egy kód írásában(Python)?
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.
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?
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.
@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.
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)]
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!