Code:
# Färbe den Papierbogen mit 5 Farben, wobei gleich Farben diagonal
# von links oben nach rechts unten verlaufen.
# Die Teile 1,2,3 und 5 lassen sich so färben, dass jede von 5 Farben
# genau einmal vorkommt.
# Lediglich Teil 4 besitzt keine solche Färbung.
# die Farbverteilung des problematischen Achterteils:
# die Farben können rotiert werden
TEIL = (1,3,2,2,0)
def sh(t,shift):
return t[shift:]+t[:shift]
def simplify(t):
m = min(t)
t1 = tuple([i-m for i in t])
return max([sh(t1,shift) for shift in range(5)])
def hinzu(t,shift):
teil = sh(TEIL,shift)
return simplify(tuple([i+j for i,j in zip(t,teil)]))
t = (0,0,0,0,0)
erreichbar = set()
erreichbar.add(t)
L = [t]
while len(L):
t = L.pop(0)
for shift in range(5):
t1 = hinzu(t,shift)
if t1[0]<10 and t1 not in erreichbar:
erreichbar.add(t1)
L.append(t1)
if t1[0]<5: print(t1)
# benötigte Muster, um ein Rechteck zu füllen:
# (0,0,0,0,0)
# (1,0,0,0,0) (1,1,0,0,0) (1,1,1,0,0) (1,1,1,1,0)
# (1,1,0,0,0) (2,1,0,0,1) (2,2,1,0,1) (1,1,1,0,0)
# (1,1,1,0,0) (2,2,1,0,1) (2,1,0,0,1) (1,1,0,0,0)
# (1,1,1,1,0) (1,1,1,0,0) (1,1,0,0,0) (1,0,0,0,0)Anbei noch der versprochene Python-Code

