Basi 4 - Challenges

Scarica zip esercizi

Naviga file online

Proponiamo ora degli esercizi senza soluzione, accetti la sfida? Prova ad eseguirli sia in Jupyter che in un editor di testo come Spyder per familiarizzarti con entrambi gli ambienti.

Sfida - quali booleani 1?

✪ Trova la riga che assegnando valori a x e y faccia in modo che la stampa stampi True. Esiste una sola combinazione o più di una?

[1]:

x = False; y = False
#x = False; y = True
#x = True; y = False
#x = True; y = True

print(x and y)
False

Sfida - quali booleani 2?

✪ Trova la riga che assegnando valori a x e y faccia in modo che la stampa stampi True. Esiste una sola combinazione o più di una?

[2]:
x = False; y = False; z = False
#x = False; y = True; z = False
#x = True; y = False; z = False
#x = True; y = True; z = False
#x = False; y = False; z = True
#x = False; y = True; z = True
#x = True; y = False; z = True
#x = True; y =True; z =True

print((x or y) and (not x and z))
False

Sfida - Aereoporto

✪✪ Finalmente decidi di prenderti una vacanza e vai all’aereoporto, ma già sai che dovrai fare varie code. Fortunatamente hai solo il bagaglio a mano, quindi ti rechi subito ai controlli di sicurezza, dove puoi scegliere tra tre file di sic1, sic2 e sic3 persone. Ogni persona in media ci mette 4 minuti ad essere esaminata, te incluso, e ovviamente scegli la fila più corta. Dopodichè vai al gate, dove trovi due file di ga1 e ga2 persone, e sai che ogni persona te incluso in media ci mette 20 secondi a passare: di nuovo scegli la fila più corta. Fortunatamente l’aereo è prossimo al gate quindi puoi subito scegliere se salire dalla fila in testa all’aereo con bo1 persone o dalla fila in coda all’aereo con bo2 persone. Per salire ogni passeggero te incluso in media ci mette 30 secondi, e scegli la coda più corta.

Scrivi del codice per calcolare quanto tempo ci impieghi in totale ad entrare nell’aereo, mostrandolo in minuti e secondi

Esempio - dati:

sic1,sic2,sic3,ga1,ga2,bo1,bo2 = 4,5,8,5,2,7,6

il tuo codice deve stampare:

24 minuti e 30 secondi
[3]:
sic1,sic2,sic3,ga1,ga2,bo1,bo2 = 4,5,8,5,2,7,6   # 24 minuti e 30 secondi
#sic1,sic2,sic3,ga1,ga2,bo1,bo2 = 9,7,1,3,5,2,9  # 10 minuti e 50 secondi

# scrivi qui


24 minuti e 30 secondi

Sfida - Teoria del boccino

Vengono tirate delle bocce, con l’obiettivo di avvicinarsi il più possibile al boccino rosso.

  1. Scrivi del codice che mostra True se una certa boccia è dentro la fascia scura, False altrimenti

  2. Scrivi del codice che mostra True se una certa boccia è dentro il cerchio, False altrimenti (SUGGERIMENTO: avrai bisogno di calcolare la distanza dal boccino con math.sqrt …)

  • NON usare l’istruzione if

bocce

[4]:
import math

h = 30
w = 20
r = 5


x=17; y=25   # a   fascia: False   cerchio: False
#x=19; y=36  # b   fascia: True    cerchio: False
#x=8;  y=36  # c   fascia: True    cerchio: True
#x=16; y=32  # d   fascia: True    cerchio: False
#x=7;  y=41  # e   fascia: False   cerchio: False
#x=12;y=33   # f   fascia: True    cerchio: True

# scrivi qui


x= 17 y= 25
Raggiunta la fascia? False
Entro il cerchio? False

Sfida - Space mining

✪✪ Un robot è atterrato sul pianeta Zorbon 5, con il compito di trivellare il terreno per estrarre il prezioso metallo Tiberium. La zona di ricerca ha lato d ed è divisa in settori, con l’origine (0,0) al centro. I colori nella mappa rappresentano la densità di Tiberium:

  • rosso: 3

  • arancione: 2

  • giallo: 1

Il robot conosce le proprie coordinate x e y: scrivi del codice che stampa la densità di Tiberium corrispondente alla posizione del robot.

  • NON usare l’istruzione if

  • SUGGERIMENTO: usa la funzione abs(x) per calcolare il valore assoluto

space-mining

[5]:

d = 30

x,y = 0, 0       # 3
#x,y = 2, 2      # 3
#x,y = -2, -2    # 3
#x,y = 7, 0      # 2
#x,y = -7, 0     # 2
#x,y = 0, 8      # 2
#x,y = -12, 0    # 2
#x,y = 2, 13     # 2
#x,y = 2, 13     # 2
#x,y = 13, 13    # 1
#x,y = 14, -12   # 1
#x,y = -11, -13  # 1
#x,y = -10, 11   # 1

# scrivi qui


[5]:
3

Sfida - La fabbrica infinita

✪✪ Nel regno di Steamland esiste una fabbrica che si dice si estenda all’infinito.

La fabbrica è popolata da robot che in prossimità degli incroci dei corridoi grigio chiari e gialli hanno il compito di azionare i complessi meccanismi a vapore che governano la fabbrica. Ogni robot conosce la sua posizione x, y. L’origine è in basso a sinistra e ogni corridoio è largo m.

Scrivi del codice che stampa True quando i robot sono negli incroci, e False altrimenti.

  • NON usare l’istruzione if

  • Il tuo codice deve funzionare anche per qualsiasi valore di x e y, anche enormi

factory-grid-1

[6]:

m = 10

x,y = 2.5 * m, 0.5 * m       # True
#x,y = 2.5 * m, 1.5 * m      # False
#x,y = 0.5 * m, 0.5 * m      # False
#x,y = 5.5 * m, 0.5 * m      # True
#x,y = 5.5 * m, 2.5 * m      # True
#x,y =  7.0 * m, 4.5 * m     # False
#x,y = 5.5 * m, 2.5 * m      # True
#x,y = 299.5 * m, 200.5 * m  # True
#x,y = 300.5 * m, 200.5 * m  # False

# scrivi qui


[6]:
True

Sfida - L’Anello di Luce

✪✪✪ Il malvagio stregone Tenebron ha scagliato una maledizione contro il tuo regno, e Re Tribolatus corre trafelato nel tuo studio alchemico implorandoti di contrastare queste forze oscure. Per fortuna, leggendo i tuoi grimori scopri il rituale del RendeRing che è in grado di erigere un anello di forza intorno al regno. Il sortilegio prescrive di tracciare un anello con un’intensità che varia da 0.0 (buio) fino all’intensità massima 5.0 (bianco). L’intensità aumenta linearmente fino a che si raggiunge il raggio r=5.0, dopodichè descresce linearmente fino a raggiungere lo 0.0

Data la posizione x,y, scrivi del codice che calcola l’intensità di luce.

  • NON usare l’istruzione if

  • NOTA: l’intensità non può mai essere negativa

  • SUGGERIMENTO: usa math.sqrt

the-ring

[7]:
import math

r = 5.0

x,y = 0,0    #  0.0
#x,y = 0,3    #  3.0
#x,y = -4,0   #  4.0
#x,y = 3,-3   #  4.242640687119285
#x,y = 3,4    #  5.0
#x,y = 4,-3   #  5.0
#x,y = -4,3   #  5.0
#x,y = 6,0    #  4.0
#x,y = 0,7    #  3.0
#x,y = 0,-8   #  2.0
#x,y = 10,0   #  0.0
#x,y = -6,7   #  0.7804555427071129
#x,y = -7,9   #  0.0  mai negativa ...

# scrivi qui


[7]:
0.0
[ ]: