reset
to tile1 :s
pu
fw :s
pd
rt 90
arc :s/3 90
arc 2*:s/3 90
pu
fw :s
rt 90
fw :s
pd
rt 90
arc :s/3 90
arc 2*:s/3 90
rt 90
end
to tile2 :s
pu
fw :s
rt 90
fw :s
pd
rt 90
arc :s/3 90
arc 2*:s/3 90
pu
fw :s
rt 90
fw :s
pd
rt 90
arc :s/3 90
arc 2*:s/3 90
rt 90
fw :s
lt 90
end
to tile3 :s
end
to tile4 :s
end
to tile5 :s
end
to tile6 :s
end
to tile7 :s
end
to tile8 :s
end
to tile9 :s
end
to tile10 :s
end
to tile11 :s
pu
fw :s/3
pd
rt 90
fw :s
pu
bw :s
pd
lt 90
pu
fw :s/3*2
pd
rt 90
arc :s/3 90
pu
fw :s
pd
rt 90
arc :s/3 90
pu
fw :s
pd
rt 90
pu
fw :s/2
pd
arc :s/6 180
pu
fw :s/2
pd
rt 180
pu
fw :s
pd
lt 90
end
to tile12 :s
pu
fw :s
rt 90
fw :s
rt 90
fw :s/3
rt 90
pd
fw :s
pu
bw :s
pd
lt 90
pu
fw :s/3*2
pd
rt 90
arc :s/3 90
pu
fw :s
pd
rt 90
arc :s/3 90
pu
fw :s
pd
rt 90
pu
fw :s/2
pd
arc :s/6 180
pu
fw :s/2
pd
rt 90
pu
fw :s
rt 180
pd
end
to tile13 :s
end
to tile14 :s
end
to Truchet_Tiling :s2
st
make "y 500
repeat 500/:s2[
setxy 0 :y
repeat 500/:s2[
make "r random 14
if :r == 0[
;tile1 :s2
]
if :r == 1[
tile2 :s2
]
if :r == 2[
tile3 :s2
]
if :r == 3[
tile4 :s2
]
if :r == 4[
tile5 :s2
]
if :r == 5[
tile6 :s2
]
if :r == 6[
tile7 :s2
]
if :r == 7[
tile8 :s2
]
if :r == 8[
tile9 :s2
]
if :r == 9[
tile10 :s2
]
if :r == 10[
tile11 :s2
]
if :r == 11[
tile12 :s2
]
if :r == 12[
tile13 :s2
]
if :r == 13[
tile14 :s2
]
]
make "y :y - :s2
]
end