Milyen praktikus, hatékony, gyors módszer van erre: maszkolás?
Van egy 14 betűs szó: ADMINISTRATION
és van sok ezer 14 számjegyű szám, pl.:
10261637017641, 10929259119249, 11394999419904, 11644460110404, 11759597817529, ...
Azt kell eldönteni, hogy a számok közül melyek felelnek meg a szónak, vagyis ahol egyforma betűk vannak a szóban, ott egyforma számjegyek vannak a számban, ill. ahol különbözőek a szóban, ott különbözőek a számban is.
Ötlet? Hogyan kell csinálni?
Transzformálod a karakterláncot (mindegy hogy betű vagy számsor) pl. a következő szabállyal:
karakter -> karakter első előfordulásának helye.
vagy
karakter -> hányféle egyéb karaktert láttam az adott karakter első előfordulása előtt
Tehát a karakterláncot egy számlistává transzformálod. Ezután már csak meg kell nézned, hogy a betűsorod transzformáltja mely számsor transzformáltjával egyezik.
A második transzformációval:
ADMINISTRATION -> [0,1,2,3,4,3,5,6,7,0,6,3,8,4]
10261637017641 -> [0,1,2,3,0,3,4,5,1,0,5,3,6,0] ami nem egyezik
de például:
96582837097812 -> [0,1,2,3,4,3,5,6,7,0,6,3,8,4] ami egyezik
Python 2.7 kódot feltettem ide: pastebin pont com/BVYDifkL (valamiért nem engedi ezt az oldalt betenni, azt hiszi, hogy linkrövidítő)
Egy pillanat alatt lefut többezer számra. Ha nem írsz ki minden sort, csak eltárolod egy listába a számokat, amelyek egyeznek, egymillió számra a laptopomon 3 másodperc alatt fut le, kipróbáltam.
Köszi! Lefuttattam a kódot, de az utolsóra is azt írta, hogy különbözik (pedig jó, "stimmelni" kellene).
Python 3.3.3-mam van, nem változtattam mást a kódon, csak a "print"-eket zárójeleztem.
Hali, Python 2-n helyesen fut: [link]
Pyhton 3-ban, bár nem szoktam használni, tudtommal a map függvény generátor objektumot ad vissza, nem pedig listát. A return map(...)-es sort cseréld erre, és jó lesz:
return [transzformacio[x] for x in szoveg]
O.K. Így már jó, stimmel! :D
Köszönöm!
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!