Il quadrato di quadrati perfetto con il numero minimo di quadrati: 21 quadrati in un quadrato 112x112
Codice originale
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
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 ] |
Vedi