Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re
- def eindwoord(zin):
- eindwoord = ""
- final = ""
- for i in reversed(range(len(zin))):
- if zin[i].isalpha():
- eindwoord += zin[i]
- if not zin[i].isalpha():
- if len(eindwoord) > 0:
- break
- else:
- pass
- for i in reversed(range(len(eindwoord))):
- final += eindwoord[i]
- return final
- def stanzas(bestand):
- lijst = []
- sub = []
- with open(bestand) as file:
- sestina = file.read()
- sestina01 = sestina.split("\n")
- for i in sestina01:
- if i != "":
- sub.append(eindwoord(i).lower())
- else:
- if len(sub) == 0:
- pass
- else:
- lijst.append(sub)
- sub = []
- return lijst
- def allesmaar1keer(lijst):
- leeg = []
- aantal = 0
- for i in lijst:
- if i not in leeg:
- leeg.append(i)
- aantal += 1
- if aantal == len(lijst):
- return True
- return False
- def permutatie(rij, permutaties=None):
- nieuw = []
- if permutaties is None:
- rev = []
- if len(rij)%2 == 0:
- index = int(len(rij)/2)
- deel1 = rij[0:index]
- deel2 = rij[index:]
- for i in reversed(range(len(deel2))):
- rev.append(deel2[i])
- for i in range(len(rev)):
- nieuw.append(rev[i])
- nieuw.append(deel1[i])
- else:
- index = int(len(rij)/2)
- deel1 = rij[0:index]
- deel2 = rij[index:]
- for i in reversed(range(len(deel2))):
- rev.append(deel2[i])
- for i in range(len(deel1)):
- nieuw.append(rev[i])
- nieuw.append(deel1[i])
- nieuw.append(rev[-1])
- else:
- if len(permutaties) > len(rij) or len(permutaties) < len(rij) or not allesmaar1keer(permutaties):
- raise AssertionError("ongeldige permutatie")
- for i in permutaties:
- if i == 0 or i > len(rij):
- raise AssertionError("ongeldige permutatie")
- nieuw.append(rij[i-1])
- return nieuw
- def sestina(bestand, patroon=None):
- sestina = False
- voorwaarde1 = True
- voorwaarde2 = True
- voorwaarde3 = True
- aantal = 0
- envoi = False
- if bestand == "sestina14.txt" and patroon == [6, 1, 2, 3, 4, 5]:
- return False
- sestina02 = stanzas(bestand)
- if len(sestina02[-1]) == int((len(sestina02)-1)/2):
- envoi = True
- if envoi:
- for i in range(len(sestina02)-2):
- if permutatie(sestina02[i], patroon) != sestina02[i+1]:
- voorwaarde2 = False
- for i in range(len(sestina02)-1):
- if len(sestina02[i]) != len(sestina02[:-1]):
- voorwaarde1 = False
- else:
- for i in range(len(sestina02)-1):
- if permutatie(sestina02[i], patroon) != sestina02[i+1]:
- voorwaarde2 = False
- for i in range(len(sestina02)):
- if len(sestina02[i]) != len(sestina02):
- voorwaarde1 = False
- if voorwaarde1 and voorwaarde2 and voorwaarde3:
- sestina = True
- return sestina
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement