Hogyan generáljam le az összes előállítható karakterkombinációt?
Egy string értékét szeretném úgy változtatni, hogy ha a végtelenségig futna, akkor minden lehetséges betűsorozat egyik pillanatban pont a string tartalma volt.
Tehát először "a" lenne az értéke
aztán b,c,...,z, aa, ... az, aaa ......
Egyszerűen nem tudok erre jó algoritmust írni. Valaki segítene?
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Leírom mégegyszer, mert látom nehéz a felfogás.
"Adva van egy hash érték. És a feladat leírása csak annyit mond, hogy találjuk meg azt a karaktersorozatot, amelyikből generálták..."
A feladatot nem lehet megoldani, akármilyen csoda algoritmust írsz akkor sem.
A hash függvények nem reverzibilisek, azaz 1 outputhoz több input is tartozhat.
Így ha találsz is egy megoldást, semmi sem garantálja, hogy valóban az volt az input, csupán azt, hogy a helyes megoldások között ott van az is, amit megtaláltál.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
A brute force meg eleve elméleti lehetőség kicsi kombinatorikát kellett volna tanulni 1 karakteres string 26 kombináció angol abc mellett
2 karakter 26*26
3 karakter 26*26*26
4 karakter ugye 26^4 en
Irhatsz vegtelen ciklust de már nyolc karakteres stringnél is a kombinációk száma 208827064576 ami másodpercenként 15000 hashel számolva 161,13 napba telne. Mivel semmit sem tudunk a string hosszárol karaktereiből igy egy fektetett nyolcas a kombinációk száma. És nem allithatod le a ciklust semmilyen egyezésnél sem mert a hash ertek fix hosszú a bemenet korlátlan hosszúságú lehet igy matematikailag mindenkepp tobb inputnak lesz azonos hash-e plusz a hash-ek bináris allományokkal is elvannak igy teljes 0-FF kozotti lehetséges kapcsolat. Hogy mi volt ebből az input stringet te nem dontheted el. Sőt a tanárod sem hiába tudja miből generálta a hash-t. Hozhatsz neki egy az övétől teljesen különböző inputra azonos hash-t es mivel neki sincs végtelen memoriája nem mondhatja rá hogy nem jó. A feladat megoldásainak száma végtelen. De nem jelenti azt hogy elég egy random stringgel odaállitani elé.kell az algoritmus aztán szolj a tanárodnak futtassa le ő.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Konkrét algoritmust már írtak páran ha jól látom, ha esetleg python-t használsz, akkor abban ott az itertools.product() függvény, ami pont erre való.
pl.:
import itertools
for i in range(3):
. . for s in itertools.product('abcd', repeat=i):
. . . . print(s)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Teljes Python program:
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!