R = 0
alue = [R,R,R,R,R,R,R,R,R,R,
R,0,0,0,0,0,0,0,0,R,
R,0,1,1,1,0,0,0,0,R,
R,0,0,0,1,1,1,0,0,R,
R,0,0,1,1,0,0,0,0,R,
R,0,0,0,0,0,0,0,0,R,
R,0,0,0,0,0,0,0,0,R,
R,0,0,0,0,0,0,0,0,R,
R,0,0,0,0,0,0,0,0,R,
R,R,R,R,R,R,R,R,R,R]
# Oikea, ylös, vasen, alas
suunnat = [1,-10,-1,10]
# Etsitään kuvion vasen ylänurkka ja aloitetaan siitä
alkupaikka = alue.index(1)
# Ensimmäisen palan yläpuolella ja vasemmalla on aina "seinä"
# Lähdetään kulkemaan alaspäin pitäen oikeaa kättä seinää vasten
alkusuunta = 3
# Asetetaan paikka ja suunta alussa
paikka = alkupaikka
suunta = alkusuunta
# Kerätään löydetyt palat listaan
palat = [alkupaikka]
while(True):
# Katsotaan pääseekö haluttuun suuntaan liikkumaan
if alue[paikka + suunnat[suunta]] == 1:
# Siirrytään seuraavalle palalle
paikka += suunnat[suunta]
# Listätään mahdollinen uusi pala listaan
if paikka not in palat:
palat.append(paikka)
# Käännytään oikealle (oikean käden sääntö)
suunta -= 1
if suunta < 0:
suunta = 3
# Jos ei pääse jatketaan etsintää
else:
# Käännytään vasemmalle
suunta += 1
if suunta > 3:
suunta = 0
# Lopeteteaan jos kaikki 8 palaa on löydetty
if len(palat) == 8:
break
# Lopetetaan jos on palattu takaisin alkupisteeseen
if suunta == alkusuunta and paikka == alkupaikka:
break
if (len(palat) == 8):
print("Kuvio koostuu 8 yhtenäisestä palasta!")
else:
print("Kuviossa on vain "+str(len(palat))+" palaa...")