OII > Dieci esagoni

3

Olimpiadi Italiane di Informatica – 13-11-2014 – Numero 16

La grafica della tartaruga prevede che si possano impartire degli ordini di movimento a una tartaruga, che li eseguirà lasciando sul terreno una traccia dei suoi movimenti, come se avesse una penna attaccata sulla pancia.

Gli ordini possono essere impartiti tramite un semplice linguaggio, stando attenti che:

  • le istruzioni destra e sinistra sono relative all’orientamento attuale della tartaruga, e il numero che segue è un angolo espresso in gradi;
  • pennasu e pennagiu sollevano e abbassano rispettivamente la penna sotto la pancia della tartaruga: quando la penna è sollevata ovviamente non lascia tracce sul terreno;
  • l’istruzione ripeti fa ripetere il blocco che segue, delimitato da parentesi graffe, per un numero di volte indicato a fianco dell’istruzione.

Data la seguente figura a destra prodotta con la grafica della tartaruga e il seguente codice che l’ha prodotta, indicare quali numeri mancano nelle posizioni indicate dalle lettere X, Y e Z

lato = 10
ripeti 10 
{ 
    pennagiu 
    destra 30 
    ripeti --- X ---  
    {
        avanti lato  
        destra 60 
    }  
    pennasu  
    sinistra --- Y ---  
    avanti --- Z ---  
    destra 90  
    lato = lato + 20 
}

La figura del quesito è sta realizzata con XLogo.

X = 6
Y = -120
Z = 20


Disegna la stessa figura utilizzando Python e il modulo Turtle

Il codice seguente segue le indicazioni del quesito ma si ottiene una figura più piccola della precedente.

import math
import turtle

WIDTH  = 800  # larghezza finestra
HEIGHT = 800  # altezza finestra

turtle.setup(WIDTH, HEIGHT)
turtle.shape("turtle")
turtle.bgcolor("pink")
turtle.pencolor("red")
turtle.pensize(4)
turtle.right(-90)
turtle.speed(0)

LATO = 10
for esagono in range(10):
    turtle.pendown()
    turtle.right(30)
    for lato in range(6):
        turtle.forward(LATO)
        turtle.right(60)
    turtle.penup()
    turtle.right(-120)
    turtle.forward(20)
    turtle.right(90)
    LATO = LATO+20

turtle.done()

Lascia un commento