"""
2016. május idegennyelvű: Zár
@author Klemand66
"""

from random import *


print("\n1. feladat\n")

betxt = open("ajto.txt")

kodok=[]
for sor in betxt:
    kodok.append(sor.strip())
    
betxt.close()
print("A beolvasás és a szövegfájl lezárása sikeresen befejeződött.")



print("\n2. feladat\n")

nyito=input("Adja meg, mi nyitja a zárat (min. 3, max. 10 karakter, pl. 239451)! ")



print("\n3. feladat\n")

nyitok=list(filter(lambda i: kodok[i]==nyito,range(len(kodok))))
nyitokstr=list(map(lambda i: str(i+1) ,nyitok))
print(f'A nyitó kódszámok sorai: {" ".join(nyitokstr)}')



print("\n4. feladat\n")

def ismetlodo(kod):
    for kar in kod:
        if kod.count(kar)>1:
            return True
    return False

van, ssz = False, None
for i,kod in enumerate(kodok):
    if ismetlodo(kod):
        van=True
        ssz=i+1
        break

if van:
    print(f'Az első ismétlődést tartalmazó próbálkozás sorszáma: {ssz}')
else:
    print("Nem volt ismétlődő számjegy.")



print("\n5. feladat\n")

velkod=""
while len(velkod)<len(nyito):
    szamjegy=randrange(10)
    if str(szamjegy) not in velkod:
        velkod+=str(szamjegy)

print(f'Egy {len(nyito)} hosszúságú kódszám: {velkod}')



print("\n6. feladat\n")

def nyit(jo, proba):
    egyezik = len(jo)==len(proba)
    if egyezik:
        elteres = ord(jo[0])-ord(proba[0])
        for i in range(1,len(jo)):
            if (elteres - (ord(jo[i]) - ord(proba[i])))%10 != 0:
                egyezik = False
    return egyezik

print(f'Az elkészített függvény:\n\n\
def nyit(jo, proba):\n\
    egyezik = len(jo)==len(proba)\n\
    if egyezik:\n\
        elteres = ord(jo[0])-ord(proba[0])\n\
        for i in range(1,len(jo)):\n\
            if (elteres - (ord(jo[i]) - ord(proba[i]))%10 != 0:\n\
                egyezik = False\n\
     return egyezik')



print("\n7. feladat\n")

kitxt = open("siker.txt","w")

for kod in kodok:
    kitxt.write(f'{kod} ')
    if len(kod)==len(nyito):
        if nyit(nyito,kod):
            kitxt.write(f'sikeres\n')
        else:
            kitxt.write(f'hibás kódszám\n')
    else:
        kitxt.write(f'hibás hossz\n')  
 
kitxt.close()
print("A kiíratás és a szövegfájl lezárása sikeresen befejeződött.")

input("\nA befejezéshez nyomd meg az ENTER billentyűt!")
