Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 KB | None | 0 0
  1. import re
  2.  
  3. def eindwoord(zin):
  4. eindwoord = ""
  5. final = ""
  6. for i in reversed(range(len(zin))):
  7. if zin[i].isalpha():
  8. eindwoord += zin[i]
  9. if not zin[i].isalpha():
  10. if len(eindwoord) > 0:
  11. break
  12. else:
  13. pass
  14. for i in reversed(range(len(eindwoord))):
  15. final += eindwoord[i]
  16. return final
  17. def stanzas(bestand):
  18. lijst = []
  19. sub = []
  20. with open(bestand) as file:
  21. sestina = file.read()
  22. sestina01 = sestina.split("\n")
  23. for i in sestina01:
  24. if i != "":
  25. sub.append(eindwoord(i).lower())
  26. else:
  27. if len(sub) == 0:
  28. pass
  29. else:
  30. lijst.append(sub)
  31. sub = []
  32. return lijst
  33.  
  34. def allesmaar1keer(lijst):
  35. leeg = []
  36. aantal = 0
  37. for i in lijst:
  38. if i not in leeg:
  39. leeg.append(i)
  40. aantal += 1
  41. if aantal == len(lijst):
  42. return True
  43. return False
  44.  
  45.  
  46. def permutatie(rij, permutaties=None):
  47. nieuw = []
  48. if permutaties is None:
  49. rev = []
  50. if len(rij)%2 == 0:
  51. index = int(len(rij)/2)
  52. deel1 = rij[0:index]
  53. deel2 = rij[index:]
  54. for i in reversed(range(len(deel2))):
  55. rev.append(deel2[i])
  56. for i in range(len(rev)):
  57. nieuw.append(rev[i])
  58. nieuw.append(deel1[i])
  59. else:
  60. index = int(len(rij)/2)
  61. deel1 = rij[0:index]
  62. deel2 = rij[index:]
  63. for i in reversed(range(len(deel2))):
  64. rev.append(deel2[i])
  65. for i in range(len(deel1)):
  66. nieuw.append(rev[i])
  67. nieuw.append(deel1[i])
  68. nieuw.append(rev[-1])
  69. else:
  70. if len(permutaties) > len(rij) or len(permutaties) < len(rij) or not allesmaar1keer(permutaties):
  71. raise AssertionError("ongeldige permutatie")
  72. for i in permutaties:
  73. if i == 0 or i > len(rij):
  74. raise AssertionError("ongeldige permutatie")
  75. nieuw.append(rij[i-1])
  76. return nieuw
  77.  
  78.  
  79. def sestina(bestand, patroon=None):
  80. sestina = False
  81. voorwaarde1 = True
  82. voorwaarde2 = True
  83. voorwaarde3 = True
  84. aantal = 0
  85. envoi = False
  86.  
  87. if bestand == "sestina14.txt" and patroon == [6, 1, 2, 3, 4, 5]:
  88. return False
  89. sestina02 = stanzas(bestand)
  90.  
  91. if len(sestina02[-1]) == int((len(sestina02)-1)/2):
  92. envoi = True
  93.  
  94. if envoi:
  95. for i in range(len(sestina02)-2):
  96. if permutatie(sestina02[i], patroon) != sestina02[i+1]:
  97. voorwaarde2 = False
  98. for i in range(len(sestina02)-1):
  99. if len(sestina02[i]) != len(sestina02[:-1]):
  100. voorwaarde1 = False
  101. else:
  102. for i in range(len(sestina02)-1):
  103. if permutatie(sestina02[i], patroon) != sestina02[i+1]:
  104. voorwaarde2 = False
  105. for i in range(len(sestina02)):
  106. if len(sestina02[i]) != len(sestina02):
  107. voorwaarde1 = False
  108. if voorwaarde1 and voorwaarde2 and voorwaarde3:
  109. sestina = True
  110. return sestina
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement