Squared Square

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?

  1. I nomi delle funzioni e delle costanti in italiano
  2. La distanza dal bordo della carta e la dimensione del quadratino minimo all’inizio del codice
  3. (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


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *