Sorry - gmail seems to have mangled the code formatting. Here's the J
turtle code:
NB. Ewart Shaw Turtle tiling
NB. -----------------------------------------
NB. Created 26-Aug-2023
NB. Last modified 1-Sept-2023
NB. ========================================================================
NB.* FDIR n directory to contain figures
NB.
require '~ESutils'
mkdir FDIR=: jpath '~ESDoutput/UKMT/' NB. home
NB. ========================================================================
NB. Utilities
NB.
fappendslf=: {{ (x,LF) fappends y }}
fwriteslf=: {{ (x,LF) fwrites y }}
textfpt=: ('(', (":@{.), ',', ')',~ (":@{:))
NB. ========================================================================
NB. Turtle node coordinates
NB.
M1=: -: (S3,1) ,: _1,S3=: %:3 NB. rotate 30 degrees
M=: tidyreals _1 |. (+/ . *)/\ 12#,:M1 NB. rotate 30*i. 12 degrees
X=: 0 2 4 5 5 5 4 2 2 2 1 _1 _1 _1 + 0 0 0 0 1 2 2 2 2 1 1 1 1 0*S3
Y=: 0 0 0 0 _1 0 0 0 2 3 3 3 1 0 + 0 0 0 1 1 1 2 2 2 2 1 1 1 1*S3
T=: tidyreals X,.Y NB. Nodes of turtle
TM=: tidyreals T (+/ . *)"2 M NB. All 12 orientations of turtle
NB. ========================================================================
NB. Turtle paths for cover
NB.
addtile=: {{
(,: T) addtile y
:
'oldtile oldnode newnode orientation'=. y
newtile=. orientation { TM
x, newtile +"1 (oldnode { oldtile { x) - newnode { newtile
}}
setsupertile=: {{
a=. addtile 0 1 13 11
a=. a addtile 0 5 11 4
a=. a addtile 1 5 13 2
a=. a addtile 3 1 11 2
a=. a addtile 3 0 10 0
a=. a addtile 1 1 13 10
a=. a addtile 6 1 11 10
a=. a addtile 0 1 13 8
b=. 11 12 13 0 { 0 { a
b=. b, 1 2 3 4 5 6 { 8 { a
b=. b, 1 2 3 4 5 6 7 8 { 7 { a
b=. b, 5 6 { 6 { a
b=. b, 1 2 3 4 5 6 { 5 { a
b=. b, 1 2 3 4 5 6 7 8 { 4 { a
b=. b, 5 6 { 3 { a
b=. b, 1 2 3 4 5 6 7 8 { 2 { a
b=. b, 9 10 { 0 { a
SUPERTILE=: tidyreals a
SUPERBDRY=: tidyreals b
STM=: tidyreals SUPERTILE (+/ . *)"_ 2/ M NB. All 12 orientations
SBM=: tidyreals SUPERBDRY (+/ . *)"_ 2/ M NB. All 12 orientations
'SUPERTILE, SUPERBDRY, STM, STB created'
}}
addst=: {{
(,: 4 { STM) addst y
:
'oldst oldtile oldnode newtile newnode orientation'=. y
newst=. orientation { STM
NB. NEWBDRY=: orientation { SBM NB. currently not needed
x, newst +"1 (oldnode { oldtile { oldst {x) - newnode { newtile { newst
}}
settiling=: {{
a=. addst 0 0 11 2 5 2
a=. a addst 0 7 1 0 11 2
a=. a addst 0 7 6 4 6 8
a=. a addst 3 7 6 4 6 0
a=. a addst 0 2 0 2 2 10 NB. 5
a=. a addst 0 2 6 7 6 6
a=. a addst 1 0 0 5 2 4
a=. a addst 1 7 1 0 11 0
a=. a addst 1 7 6 4 6 6
a=. a addst 2 7 6 2 6 4 NB. 10
a=. a addst 2 4 1 0 11 4
a=. a addst 3 0 11 2 5 6
a=. a addst 3 7 1 0 11 6
a=. a addst 4 0 8 7 4 2
a=. a addst 4 0 11 2 5 10 NB. 15
a=. a addst 6 4 2 0 0 6
a=. a addst 6 4 5 7 1 8
a=. a addst 12 8 1 0 11 2
a=. a addst 12 7 1 0 11 4
a=. a addst 12 7 6 4 6 10 NB. 20
a=. a addst 13 7 6 7 6 2
a=. a addst 14 4 5 7 1 4
a=. a addst 14 0 0 5 6 0
a=. a addst 15 7 1 0 11 8
a=. a addst 15 7 6 4 6 2 NB. 25
a=. a addst 16 5 4 8 4 6
a=. a addst 16 4 6 4 0 4
a=. a addst 22 4 6 2 6 10
a=. a addst 23 0 11 4 5 0
a=. a addst 24 5 0 7 2 4 NB. 30
a=. a addst 24 4 0 5 2 4
a=. a addst 26 4 0 8 0 8
a=. a addst 26 2 1 0 11 10
a=. a addst 28 0 0 7 2 2
a=. a addst 34 0 8 7 4 4 NB. 35
a=. a addst 35 2 0 2 2 10
a=. a addst 28 8 4 5 4 2
a=. a addst 37 0 11 8 1 6
a=. a addst 29 0 0 7 2 4
a=. a addst 39 2 1 0 11 8 NB. 40
a=. a addst 30 2 0 5 2 2
a=. a addst 30 2 6 7 6 6
a=. a addst 32 7 6 4 6 0
a=. a addst 32 4 0 8 2 8
a=. a addst 38 4 2 0 0 6 NB. 45
a=. a addst 41 0 11 7 1 4
a=. a addst 42 4 0 5 2 2
a=. a addst 43 0 0 7 2 4
a=. a addst 28 0 11 7 1 0
a=. a addst 21 2 0 5 2 0 NB. 50
a=. a addst 20 0 0 7 2 2
a=. a addst 20 0 11 7 1 0
a=. a addst 19 7 7 7 5 0
a=. a addst 19 7 1 0 11 2
a=. a addst 8 7 7 2 5 2 NB. 55
a=. a addst 8 7 0 5 2 4
a=. a addst 7 0 11 7 1 6
a=. a addst 44 5 0 7 2 4
a=. a addst 58 2 0 5 2 2
a=. a addst 48 2 1 0 11 8 NB. 60
a=. a addst 48 5 6 8 0 6
a=. a addst 46 2 0 2 2 10
a=. a addst 40 5 0 4 2 0
a=. a addst 36 8 0 2 2 8
a=. a addst 36 0 11 2 1 6 NB. 65
a=. a addst 35 5 0 2 2 6
a=. a addst 34 4 0 0 0 4
a=. a addst 45 7 7 2 5 8
a=. a addst 50 0 11 7 1 2
a=. a addst 50 2 0 2 2 6 NB. 70
a=. a addst 57 4 1 0 11 8
a=. a addst 55 4 5 0 11 2
a=. a addst 10 0 0 4 2 4
a=. a addst 10 5 0 7 2 0
a=. a addst 74 2 0 2 2 6 NB. 75
a=. a addst 61 4 0 8 2 6
a=. a addst 63 0 9 2 3 8
TILING=: a +/ . * ((2&o. , 1&o.@-),: 1&o. , 2&o.) o. 5%12
TILING=: TILING ([ + $@[ $ ]) 35 30 NB. NEW
'TILING created'
}}
--
Ewart Shaw [J.E.H.Shaw] www.instagram.com/ewartshaw/
www.facebook.com/ewart.shaw www.ewartshaw.com [WIP]
3 ((4&({*.(=+/))++/=3:)@([:,/0&,^:(i.3)@|:"2^:2))&.>@]^:(i.@[) <#:3 6 2
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm