Skip to content

Commit e0f4302

Browse files
committed
_
1 parent ac1b57d commit e0f4302

File tree

3 files changed

+439
-36
lines changed

3 files changed

+439
-36
lines changed

Python/Esercizi/Alberi.py

Lines changed: 236 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
"""
22
Autor: Rurik
33
4-
Per lo svolgimento di questi esercizi verrà usata la libreria albero utilizzata
5-
durante il corso di fondamenti di programmazione.
4+
Per lo svolgimento di questi esercizi verrà usata la libreria 'albero'
5+
utilizzata durante il corso di fondamenti di programmazione.
66
Per sciogliere ogni dubbio leggere tale libreria (presente nella cartella
77
Python/Librerie).
88
"""
@@ -29,17 +29,17 @@ def ex1(tree):
2929
['i', None, None]]]
3030

3131
tree = albero.AlberoBinario.fromList(tree)
32-
print(tree)
3332
print(ex1(tree))
3433

3534

3635
#%% es_2
3736
"""
38-
37+
Dato un albero binario con nodi aventi per chiavi numeri in notazione binaria,
38+
ritornare la somma dei soli numeri pari (in notazione decimale).
3939
"""
4040

4141
# @trace
42-
def ex2(stringa, caratere, n):
42+
def ex2(tree):
4343
pass
4444

4545
tree = ['1011', # 1011
@@ -51,5 +51,236 @@ def ex2(stringa, caratere, n):
5151
['0001', # 0000 1101
5252
['1000', None, None], #
5353
['0101', None, None]]]
54+
55+
tree = albero.AlberoBinario.fromList(tree)
56+
print(ex2(tree))
57+
58+
59+
#%% es_3
60+
"""
61+
Dato un albero binario ritornare l'altezza massima dell'albero.
62+
"""
63+
64+
import albero
65+
66+
def ex3(tree):
67+
pass
68+
69+
70+
tree = ['a', # a
71+
['b', # / \
72+
['c', None, None], # b g
73+
['d', # / \ / \
74+
['e', None, None], # c d h i
75+
['f', None, None]]], # / \
76+
['g', # e f
77+
['h', None, None], #
78+
['i', None, None]]]
79+
80+
tree = albero.AlberoBinario.fromList(tree)
81+
print(ex3(tree))
82+
83+
84+
#%% es_4
85+
"""
86+
Dato un albero binario con nodi aventi per chiavi caratteri alfabetici, calcolare
87+
la somma dei nodi in valore ascii nelle penultime posizioni, ovvero quei nodi
88+
per i quali nessuno dei figli ha a sua volta dei figli (nel caso sotto d + i).
89+
90+
Produrre una seconda versione in cui vengono considerati "penultimi" tutti i nodi
91+
aventi almeno un figlio senza figli (nel caso sotto b + d + g + i).
92+
"""
93+
94+
import albero
95+
96+
def ex4(tree):
97+
pass
98+
99+
100+
tree = ['a', # a
101+
['b', # / \
102+
['c', None, None], # b g
103+
['d', # / \ / \
104+
['e', None, None], # c d h i
105+
['f', None, None]]], # / \ /
106+
['g', # e f j
107+
['h', None, None], #
108+
['i',
109+
['j', None, None],
110+
None]]]
111+
112+
tree = albero.AlberoBinario.fromList(tree)
113+
print(ex4(tree))
114+
115+
116+
#%% es_5
117+
"""
118+
Dato un albero calcolare il numero di nodi al livello k (partendo da 1).
119+
"""
120+
121+
import albero
122+
123+
def ex5(tree, k):
124+
pass
125+
126+
127+
tree = ['a', # a
128+
['b', # / \
129+
['c', None, None], # b g
130+
['d', # / \ / \
131+
['e', None, None], # c d h i
132+
['f', None, None]]], # / \
133+
['g', # e f
134+
['h', None, None], #
135+
['i', None, None]]]
136+
137+
tree = albero.AlberoBinario.fromList(tree)
138+
print(ex5(tree, 3))
139+
140+
141+
#%% es_6
142+
"""
143+
Dato un albero binario con nodi aventi per chiavi caratteri alfabetici, ricercare
144+
la chiave passata come parametro all'interno della funzione, ritornare True o
145+
False a seconda del caso.
146+
147+
Sviluppare questo esercizio con tutte le tipologie di visite ai nodi (pre-order,
148+
in-order e post_order).
149+
"""
150+
151+
import albero
152+
153+
def ex6(tree, key):
154+
pass
155+
156+
tree = ['a', # a
157+
['b', # / \
158+
['c', None, None], # b g
159+
['d', # / \ / \
160+
['e', None, None], # c d h i
161+
['f', None, None]]], # / \ /
162+
['g', # e f j
163+
['h', None, None], #
164+
['i',
165+
['j', None, None],
166+
None]]]
167+
168+
tree = albero.AlberoBinario.fromList(tree)
169+
print(ex6(tree, 'h'))
170+
171+
172+
#%% es_7
173+
"""
174+
Dato un albero binario con nodi aventi per chiavi caratteri alfabetici, ricercare
175+
la chiave passata come parametro all'interno della funzione e ritornare il numero
176+
di visite effettuate; se la chiave non viene trovata ritornare -1.
177+
178+
Consiglio:
179+
implementa l'esercizio con due funzioni.
180+
"""
181+
182+
import albero
183+
184+
def ex7(tree, key):
185+
pass
186+
187+
tree = ['a', # a
188+
['b', # / \
189+
['c', None, None], # b g
190+
['d', # / \ / \
191+
['e', None, None], # c d h i
192+
['f', None, None]]], # / \ /
193+
['g', # e f j
194+
['h', None, None], #
195+
['i',
196+
['j', None, None],
197+
None]]]
198+
199+
tree = albero.AlberoBinario.fromList(tree)
200+
print(ex7(tree, 'h'))
201+
202+
203+
#%% es_8
204+
"""
205+
Esame fondamenti di programmazione 20 giugno 23:
206+
Dato un albero binario composto da nodi aventi per chiave degli interi, si
207+
trasformi l'albero in modo tale che ogni figlio sinistro sia minore del figlio
208+
destro; se questa proprietà non viene rispettata bisogna scambiare la posizione
209+
dei due figli.
210+
La funzione restituisce il numero di cambi effettuati.
211+
212+
Esempio:
54213
214+
______2______ ______2______
215+
| | | |
216+
__ 7__ ___5___ __ 5__ ___7___
217+
| | | | => | | | |
218+
_4_ 3_ _0_ _5_ _3_ 4_ _0_ _5_
219+
| | | | | | | | | | | | | |
220+
2 -1 1 8 3 2 9 -1 2 1 3 8 2 9
221+
222+
expected = 4
223+
224+
NB:
225+
l'albero va solo modificato, non ritornato.
226+
"""
227+
228+
import albero
229+
230+
def ex8(tree):
231+
pass
232+
233+
tree = [2,
234+
[7,
235+
[4,
236+
[2, None, None],
237+
[-1, None, None]],
238+
[3, None,
239+
[1, None, None]]],
240+
[5,
241+
[0,
242+
[8, None, None]
243+
[3, None, None]],
244+
[5,
245+
[2, None, None],
246+
[9, None, None]]]]
247+
248+
tree = albero.AlberoBinario.fromList(tree)
249+
print(ex8(tree))
250+
251+
252+
#%% es_9
253+
"""
254+
Esame introduzione agli algoritmi 27 giugno 2022:
255+
Dato un albero binario di ricerca (ovvero un albero dove ogni sottoalbero
256+
sinistro ha valori più bassi del nodo padre, e ogni sottoalbero destro ha
257+
valori maggiori del nodo padre), modificare il valore di ciascun nodo in modo
258+
che il nuovo valore del nodo risulti la somma di tutte le chiavi che nell'albero
259+
iniziale avevano un valore maggiore della sua chiave originaria.
260+
261+
10 61
262+
/ \ / \
263+
7 15 80 20
264+
/ \ / \ => / \ / \
265+
3 9 12 20 87 71 49 0
266+
\ \
267+
14 35
268+
"""
269+
270+
import albero
271+
272+
def ex9(tree):
273+
pass
274+
275+
tree = [10, # 10
276+
[7, # / \
277+
[3, None, None], # 7 15
278+
[9, None, None]], # / \ / \
279+
[15, # 3 9 12 20
280+
[12, None, # \
281+
[14, None, None]], # 14
282+
[20, None, None]]]
283+
284+
tree = albero.AlberoBinario.fromList(tree)
285+
print(ex9(tree))
55286

Python/Esercizi/Matrici.py

Lines changed: 6 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
"""
22
Autor: Rurik
33
4-
Ricordiamo che per matrice si intende un array bidimensionale (array di array) contenente, in ciascun sotto-array, qualsiasi tipo di valore. In python le rappresentiamo come
5-
liste di liste.
4+
Ricordiamo che per matrice si intende un array bidimensionale (array di array)
5+
contenente, in ciascun sotto-array, qualsiasi tipo di valore. In python le
6+
rappresentiamo come liste di liste.
67
78
Conoscenze richieste:
89
- Manipolazione delle strutture dati
@@ -13,8 +14,9 @@
1314

1415
#%%
1516
""" ES 0 - banale
16-
Si definisca una funzione che dati in input un valore h, un valore l e un carattere alfanumerico x, ritorni una matrice bidimensionale di altezza
17-
h, larghezza l e composta da soli caratteri k.
17+
Si definisca una funzione che dati in input un valore h, un valore l e un carattere
18+
alfanumerico x, ritorni una matrice bidimensionale di altezza h, larghezza l e
19+
composta da soli caratteri k.
1820
"""
1921

2022
def es0(h, l, k):
@@ -178,29 +180,3 @@ def es6(matrice):
178180
# [-2, 4, 7, 4, 8, -8, 9]])) # [41, 43, 39, 32, 28, 20, 28]] , 10
179181

180182

181-
182-
183-
#%%
184-
"""ES 7 - difficile
185-
Progettiamo il nostro primo gioco sulle matrici!
186-
La nostra funzione questa volta non riceverà parametri in input e non ritornerà nulla, si svolgerà tutto interamente sul terminale.
187-
Il gioco si svolgerà su una matrice 11x11 dove ogni valore sarà equivalente ad un under score '_'. Il nostro personaggio (PG), rappresentato dal carattere '@' partirà in posizione 5,5
188-
(al centro della matrice) e potrà spostarsi dentro di essa tramite i classici comandi WASD. Quando il PG attraversa un bordo della matrice, riappare dall'altra parte (effetto PAC-MAN).
189-
Al disopra della matrice (o dovunque preferiate) dovrà esserci un contatore delle vite del personaggio e un contatore dei punti.
190-
All'interno dell matrice saranno presenti dei nemici, rappresentati con il carattere '#' che ad od ogni turno si sposteranno in una casella casuale adiacente (non in diagonale).
191-
Se un nemico entra a contatto con il nostro PG, si trovano quindi sulla stessa casella, il PG perderà una vita.
192-
L'obbiettivo del PG è quello di raccogliere punti '+' in giro per la matrice. I punti appariranno sempre in posizioni casuali diverse da quelle del PG e dei nemici (che andranno
193-
aumentando ogni volta che il punto cambia posizione, comparendo in caselle casuali diverse da quella del PG, di altri NPC e del punto). Anche i nemici posono prendere i punti
194-
'+', facendo apparire altri nemici (che inoltre si incrementeranno di uno ogni n punti presi dal giocatore(n è un valore a vostra scelta)).
195-
Il gioco va in GAME OVER quando il PG perde tutte e 3 le sue vite.
196-
197-
Per lo svolgimento di questo esercizio consiglio di usare copiare la traccia su uno script vuoto, strutturando il programma su più funzioni con ruoli ben precisi.
198-
L'esercizio può essere svolto anche utilizzando la programmazione ad oggetti.
199-
"""
200-
import random
201-
202-
def main():
203-
#inserisci qui il tuo codice
204-
pass
205-
206-
# main()

0 commit comments

Comments
 (0)