Advertisement
MrBlaise

Emelt informatika érettségi 2010 október - Anagramma

Oct 6th, 2013
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.03 KB | None | 0 0
  1. #!/usr/bin/env python3
  2.  
  3. # Rostás Balázs  -Emelt informatika érettségi 2010 október - Anagramma
  4.  
  5. def anagrammaKereses(keresettSzo, szavak):
  6.  
  7.     anagramma = True
  8.     anagrammaSzavak = []
  9.    
  10.     for szo in szavak:
  11.         for char in szo:
  12.             if char not in keresettSzo:
  13.                 anagramma = False
  14.                 break
  15.         if anagramma and len(szo) == len(keresettSzo):
  16.             anagrammaSzavak.append(szo)
  17.         else:
  18.             anagramma = True
  19.     return anagrammaSzavak
  20.  
  21. # 1. feladat:
  22. print("1. feladat:")
  23. szovegBe = input("Kérem adjon meg egy szöveget: ")
  24.  
  25. karakterSzam = []
  26. for char in szovegBe:
  27.     if char.lower() not in karakterSzam:
  28.         karakterSzam.append(char.lower())
  29.  
  30. print("Összesen", len(karakterSzam), "különböző karakter van a szövegben.")
  31.  
  32. # 2. feladat:
  33. fajlBe = open("szotar.txt", "r")
  34. szavak = [sor.strip() for sor in fajlBe]
  35. fajlBe.close()
  36.  
  37. print("\n2. feladat - szavak.txt beolvasása - KÉSZ!")
  38.  
  39. # 3. feladat:
  40. fajlKi = open("abc.txt", "w")
  41. [ print("".join(sorted(szo)), file = fajlKi ) for szo in szavak ]
  42. fajlKi.close()
  43.  
  44. print("\n3. feladat - abc.txt fájl létrehozása - KÉSZ!")
  45.  
  46. # 4. feladat:
  47. print("\n4. feladat:")
  48.  
  49. elsoSzo = input("Kérem adjon meg egy szót: ")
  50. masodikSzo = input("Kérem adjon meg egy másik szót: ")
  51. anagramma = True
  52.  
  53. for char in elsoSzo:
  54.     if char.lower() not in masodikSzo.lower():
  55.         print("Nem anagramma")
  56.         anagramma = False
  57.         break
  58.    
  59. if anagramma:    
  60.     print("Anagramma")
  61.  
  62. # 5. feladat:
  63. print("\n5. feladat:")
  64.  
  65. szoBe = input("Kérem adjon meg egy szót az anagrammák kilistázásához: ")
  66.  
  67. anagrammaSzavak = anagrammaKereses(szoBe, szavak)
  68. if len(anagrammaSzavak) != 0:
  69.     print("\n".join(anagrammaSzavak))
  70. else:
  71.     print("Nincs a szótárban anagramma")
  72.  
  73. # 6. feladat:
  74. print("\n6. feladat:")
  75.  
  76. maxEddig = 0
  77. hoszSzavak = []
  78. hoszSzavakRend = []
  79.  
  80. for szo in szavak:
  81.     if maxEddig < len(szo):
  82.         maxEddig = len(szo)
  83.  
  84. for szo in szavak:
  85.     if maxEddig == len(szo):
  86.         hoszSzavak.append(szo)
  87.        
  88. for szo in hoszSzavak:
  89.     keresettSzo = anagrammaKereses(szo, szavak)
  90.     if len(keresettSzo) != 0:
  91.         for szoKeresett in keresettSzo:
  92.             if szoKeresett not in hoszSzavakRend:
  93.                 hoszSzavakRend.append(szoKeresett)
  94.                
  95. print("\n".join(hoszSzavakRend))
  96.  
  97. # 7. feladat:
  98.  
  99. rendezettszavak = sorted(list({ ''.join(sorted(szó)) for szó in szavak }), key=len)
  100. hossz = len(sorted(szavak, key=len)[0]) # A legrövidebb szó hosszára állítjuk
  101. fajlKi = open('rendezve.txt', 'w')
  102. for szó in rendezettszavak:
  103.     if len(szó) > hossz: # Ha nőtt a szó hossza az előzőhöz képest
  104.         print('', file=fajlKi)
  105.         hossz = len(szó)
  106.     for anagramma in anagrammaKereses(szó, szavak):
  107.         print(anagramma, '', end='', file=fajlKi)
  108.     print('', file=fajlKi) # Sortörés az egymás anagrammáit tartalmazó sor végén
  109. fajlKi.close()
  110.  
  111. print("\n7. feladat - rendezve.txt létrehozása - KÉSZ!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement