Teljesen átírtam mindkét algoritmust. A mostanival már nincs jelszó újrakérés (ha az elkészűlt jelszó nem felel meg a feltételeknek), hanem egy menetben lefut az egész, és így gyorsult.
Meg a "Q" betűt is kivettem, mert irásban az is hasonlíthat a nagy "O"-hoz vagy nullához.
Első függvénynél a szabályok:
- minimum 1 kisbetű kell
- minimum 1 nagybetű kell
- minimum 1 szám kell
Másodiknál a szabályok:
- csak 1 nagybetű kell
- csak 1 szám kell
- minimum 1 kisbetű kell
- maximum 2 magánhangzó követheti egymást ha nem egyeznek, kivéve "ee"
- maximum 2 mássalhangzó követheti egymást, ha egyeznek, vagy a kivételi lista alapján
Ezek alapján a fentit is úgy oldottam meg, hogy lekértem 1 kisbetűt, 1 nagybetűt és 1 számot mindenképpen a jelszóba, majd hozzákértem a többit véletlenszerűen, az eredményben pedig összekevertem a karakter sorrendet.
A második is hasonló elv alapján, csak bekavart (nem kicsit) az, hogy a magánhangzókat és mássalhangzókat is külön csoportban kell a végén összekeverni, ráadásul a külön típusok helye megmaradjon - mindez azért, hogy nehogy az összekeverés után egymás mellé kerüljön 2-nél több magánhangzó például. Majd a számot még beszúrtam véletlen szerűen valahova.