Il quadrato di quadrati perfetto con il numero minimo di quadrati: 21 quadrati in un quadrato 112x112
Codice originale
TO place x y
POSITION [50+x*4, 500-y*4]
END
TO line x1 y1 x2 y2
PENUP place x1 y1
PENDOWN place x2 y2
END
TO grid x1 y1 x2 y2
REPEAT y2-y1+1 [ line x1 y1+REPCOUNT-1 x2 y1+REPCOUNT-1 ]
REPEAT x2-x1+1 [ line x1+REPCOUNT-1 y1 x1+REPCOUNT-1 y2 ]
END
TO box x y n
PENUP
place x+n/2 y+n/2
HEADING 0
FILLCOLOR ANY
FILLTRANSPARENCY 50
PENDOWN
SQUARE DIM*n
FONTSIZE MAX (2*DIM, n*2.5)
TEXT str(n)
END
PICTURE “squaredsquare.svg” [
HIDETURTLE
PENSIZE 0.5
PENCAP “ROUND”
PENCOLOR “SILVER”
FONTFAMILY “Nimbus Sans L”
grid 0 0 112 112
PENSIZE 1
PENCOLOR “BLACK”
box 0 0 33
box 29 33 4
box 33 0 37
box 0 33 29
box 0 33+29 50
box 29 33+4 25
box 29+25 37 16
box 29+25 37+16 9
box 29+25+9 37+16 7
box 29+25+9 37+16+7 2
box 50 37+25 15
box 50 37+25+15 35
box 33+37 0 42
box 33+37 42 18
box 50+15 37+16+7 17
box 50+15+17 18+42 6
box 50+15+17 18+42+6 11
box 50+35 18+42+17 8
box 29+25+16+18 42 24
box 50+35+8 42+24 19
box 50+35 42+24+19 27
]
Più leggibile?
- I nomi delle funzioni e delle costanti in italiano
- La distanza dal bordo della carta e la dimensione del quadratino minimo all’inizio del codice
- (0,0) è l’angolo in alto a sinistra
GLOBAL SPAZIO, DIM, NUM
SPAZIO=50 ; distanza dal bordo in alto e a sinistra
DIM =4 ; dimensione del quadratino più piccolo
NUM =112 ; quadrato di quadratini
HIDETURTLE
PENCAP “ROUND”
FONTFAMILY “Nimbus Sans L”
; trasforma la posizione logica (x,y) in posizione fisica
TO posizione x y
GLOBAL SPAZIO, DIM
POSITION [DIM*x+SPAZIO, DIM*y+SPAZIO]
END
; traccia la linea da x1,y1 a x2,y2
TO linea x1 y1 x2 y2
PENUP posizione x1 y1
PENDOWN posizione x2 y2
END
; disegna la griglia di base
TO griglia x1 y1 x2 y2
REPEAT y2-y1+1 [ linea x1 y1+REPCOUNT-1 x2 y1+REPCOUNT-1 ]
REPEAT x2-x1+1 [ linea x1+REPCOUNT-1 y1 x1+REPCOUNT-1 y2 ]
END
; disegna un quadrato s*s con etichetta s
TO quadrato x y s
PENUP
posizione x+s/2 y+s/2
HEADING 0
FILLCOLOR ANY
FILLTRANSPARENCY 50
PENDOWN
SQUARE DIM*s
FONTSIZE MAX [2*DIM, s*2.5]
TEXT str(s) ; necessario (?) usare str()
END
PICTURE “quadrato_di_quadrati.svg” [
; la griglia di base grigio chiaro
PENSIZE 0.5
PENCOLOR “SILVER”
griglia 0 0 NUM NUM
; i singoli quadrati con contorno nero e parametri (x, y, numero)
PENSIZE 1
PENCOLOR “BLACK”
quadrato 0 0 50
quadrato 50 0 35
quadrato 50+35 0 27
quadrato 50+35 27 8
quadrato 50+35+8 27 19
quadrato 50 35 15
quadrato 50+15 35 17
quadrato 50+15+17 35 11
quadrato 50+15+17 35+11 6
quadrato 50+15+17+6 35+11 24
quadrato 0 50 29
quadrato 29 50 25
quadrato 29+25 50 9
quadrato 29+25+9 50 2
quadrato 29+25+9 50+2 7
quadrato 29+25+9+7 50+2 18
quadrato 29+25 50+9 16
quadrato 29 50+25 4
quadrato 0 50+29 33
quadrato 33 50+25 37
quadrato 33+37 27+19+24 42
]
Il prossimo quadrato di quadrati perfetti ha lato 175