Laboratorio 10. Programmazione - CdS Matematica. Michele Donini, Marta Gatto, Mirko Polato 19 gennaio 2016

Documenti analoghi
Laboratorio 8. Programmazione - CdS Matematica. Mirko Polato 15 Dicembre 2015

Laboratorio 8. Programmazione - CdS Matematica. Marco Virgulin 13 Gennaio 2015

Laboratorio 07. Programmazione - CdS Matematica. Michele Donini 10 dicembre 2015

Laboratorio di Python

Laboratorio 04. Programmazione - CdS Matematica. Michele Donini 17 Novembre 2015

La corrispondenza dei semi tra carte italiani e francesi è la seguente:

Regole dell Asso piglia tutto (o Scopa d assi)

Regole del Sette e mezzo

Laboratorio di Python

I giocatori possono selezionare il tipo di carte (napoletane, piacentine ).

Esercizi su Python. 14 maggio Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che:

Regole dei Mazzetti. Il mazzo di carte

Introduzione al C. Esercitazione 6. Raffaele Nicolussi. Corso di Fondamenti di Informatica Ingegneria Clinica

Esercizi Python. Corso di Bioinformatica 2012

Regole della Briscola

alberi binari e ricorsione

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

Si può scrivere un programma anche utilizzando un editor di testo (Blocco Note, WordPad, ) ricordandosi comunque di salvarlo con l estensione.py.

Laboratorio di Informatica

Rappresentazione degli algoritmi

I giocatori possono selezionare il tipo di carte (napoletane, piacentine ).

Corso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione

PROGRAMMAZIONE: Le strutture di controllo

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

Laboratorio di Python

Cucù. Versione 1.1 per iphone 3G/3GS/4 e Android di P.Massimino 2011

Elementi di Informatica e Programmazione PPING 20 aprile 2010 Non saranno corretti elaborati scritti confusamente o con grafia difficilmente leggibile

Matlab. Istruzioni condizionali, cicli for e cicli while.

Mini-Corso di Informatica

Costrutti condizionali e iterativi

C espressioni condizionali

Laboratorio di Python

P-P P-V V-P V-V AR-AR AR-RR RR-AR RR-RR

Laboratorio di Python

Laboratorio di Python

I giocatori possono selezionare il tipo di carte (napoletane, piacentine).

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Esercitazione gennaio 2015

Laboratorio 02. Programmazione - CdS Matematica. Mirko Polato 3 Novembre 2015

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate

MATLAB c. Lucia Gastaldi Dipartimento di Matematica Lezione 4 (15 ottobre 2003)

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Laboratorio di Python

Introduzione al MATLAB c Parte 3 Script e function

Laboratorio di Python (con Linux)

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

print((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript

Lezione 6 programmazione in Java

Implementazione dell albero binario in linguaggio C++

Quando usiamo Python in modo interattivo in genere e' lo shell utilizzato che gestisce l'indentazione e la deindentazione.

Allegato Tesoro nascosto

Si può scrivere un programma anche utilizzando un editor di testo (Blocco Note, WordPad, ) ricordandosi comunque di salvarlo con l estensione.py.

Ingegneria degli Algoritmi (II parte pratica)

Lezione 7 Alberi binari: visite e alberi di ricerca

Oro! Oro! Oro a perdita d occhio. Un asino d oro può tornare sempre utile ma attenzione, questi animali testardi possono mandarti sul lastrico.

Algoritmi e Strutture Dati Laboratorio 15/12/2008. Daniele Loiacono

Laboratorio di Python

Istruzioni per lo svolgimento della prova

Laboratorio di Python

Il linguaggio C Strutture

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

A. Tesoro nascosto. Figura 1: Tesoro nascosto. Materiali

Introduzione alla programmazione

Shell: variabili di sistema. Per visualizzare il valore di tutte le variabili d ambiente si usa il comando set

Lezione 12 Tabelle Hash

Programmazione in Python per la bioinformatica

Pensiero computazionale. Lezione 10 MIT AppInventor

Informatica B. Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti. Prof. Marco Masseroli

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

PROCESSI STOCASTICI 1: ESERCIZI

Kill & Save. mazzo obiettivi. Dal mazzo obiettivi togliete tutte le carte di. obiettivo. Tutte le carte che avanzano dal mazzo obiettivi

Esercizio 1: calcolo insieme intersezione

MATLAB Elementi di grafica Costrutti di programmazione

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

Classic Black Jack Premium Black Jack Vip Black Jack

A m n B n p = P m p. 0 1 a b c d. a b. 0 a 0 c Il risultato e lo stesso solo nel caso in cui c = 0 e a = d.

Dall algoritmo al programma

Complementi ed esercitazioni sui sottoprogrammi

Fondamenti di Informatica T-1. Classi e array

Laboratorio 06. Programmazione - CdS Matematica. Michele Donini 03 dicembre 2013

Scilab. Introduzione a Scilab - Vettori. Corso di Informatica CdL: Chimica. Claudia d'amato.

12 Strutture con MATLAB

Laboratorio di Programmazione M-Z

If Statement. Il costrutto condizionale if ha la seguente sintassi:

% Scrivere un programma che inizializza un vettore monodimensionale di interi a = [ ]

L utility Unix awk [Aho-Weinberger-Kernighan]

Lezione 8 programmazione in Java. Anteprima. La ricorsione. Nicola Drago Dipartimento di Informatica Università di Verona

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

Formalismi per la descrizione di algoritmi

Progettazione di algoritmi

Si gioca con due mazzi di carte francesi inclusi i jolly per un totale di 108 carte.

Introduzione Il costrutto if: else: Il costrutto while: Il costrutto for: Sommario FONDAMENTI DI INFORMATICA. Avviso. Introduzione

Algoritmi di ordinamento: Array e ricorsione

Jass. Norme per Differenzler r a carte coperte Valevole dal 22 agosto 2015

Valori Alfanumerici. Informatica di Base -- R.Gaeta 1

Laboratorio di Python (con Linux)

Esercitazione 1 Conversione di base

Complessità algoritmi su strutture dati

Transcript:

Laboratorio 10 Programmazione - CdS Matematica Michele Donini, Marta Gatto, Mirko Polato 19 gennaio 2016

Esercizio 1 Date le seguenti istruzioni, dire senza eseguire, quale sarà il valore contenuto nella variabile t. x = 1 y = 2 t = (x, y*x, x*x, [y,3]) x = x * t[2] t[3][1] = x t[3].extend([x, y]) y = x**2 + t[1] t[3][3] -= 1 2 of 15

Esercizio 1 Date le seguenti istruzioni, dire senza eseguire, quale sarà il valore contenuto nella variabile t. x = 1 y = 2 t = (x, y*x, x*x, [y,3]) x = x * t[2] t[3][1] = x t[3].extend([x, y]) y = x**2 + t[1] t[3][3] -= 1 Soluzione: t = (1, 2, 1, [2, 1, 1, 1]) 2 of 15

Esercizio 2 Date le seguenti istruzioni, dire senza eseguire, quale sarà il valore contenuto nella variabile x. x = [42] for i in range(4): y = x x[0] = i x = [x, y] 3 of 15

Esercizio 2 Date le seguenti istruzioni, dire senza eseguire, quale sarà il valore contenuto nella variabile x. x = [42] for i in range(4): y = x x[0] = i x = [x, y] Soluzione: x = [[3, [2, [1, [0]]]], [3, [2, [1, [0]]]]] 3 of 15

Esercizio 3 Creare una matrice contenente la tabellina dei numeri coompresi tra 1 e 10. Generare la lista di tutti i numeri presenti nella tabellina, senza ripetizioni, in due modi: 1 con un descrittore di lista partendo dalla matrice 2 con un descrittore di lista partendo dalla lista di tutti i numeri compresi tra 1 e 100 4 of 15

Esercizio 3 Creare una matrice contenente la tabellina dei numeri coompresi tra 1 e 10. Generare la lista di tutti i numeri presenti nella tabellina, senza ripetizioni, in due modi: 1 con un descrittore di lista partendo dalla matrice 2 con un descrittore di lista partendo dalla lista di tutti i numeri compresi tra 1 e 100 tab = [[i*j for j in range(1,11)] for i in range(1,11)] l1 = list(set([i for row in tab for i in row])) l2 = [i for i in range(1,101) if (sum([1 if ((mod(i,j) ==0 and i/j<11)) else 0 for j in range(1,11)])>0)] 4 of 15

Esercizio 4 Partendo da s = "Cualcossa cui non va" generare le seguenti due stringhe: 1 s1= "Qualcosa qui non va" 2 s2= "Qui qualcosa va" 5 of 15

Esercizio 4 Partendo da s = "Cualcossa cui non va" generare le seguenti due stringhe: 1 s1= "Qualcosa qui non va" 2 s2= "Qui qualcosa va" Soluzione: s="cualcossa cui non va" s=s.lower() s=s.replace( cu, qu ) s=s.replace( ss, s ) s1=s.capitalize() l=s.split() l2=[l[1],l[0],l[3]] s2=.join(l2) s2=s2.capitalize() 5 of 15

Esercizio 5 Date le seguenti funzioni: def f1(n): return (n+7) % 26 def f2(n): return (n-3) % 26 def f3(n): return n f = [f1, f2, f3] scrivere un programma che data la stringa s= zuzzurrellonando cifri i singoli caratteri di s applicando ciclicamente le funzioni contenute nella lista f. 6 of 15

Esercizio 5 Soluzione def f1(n): return (n+7) % 26 def f2(n): return (n-3) % 26 def f3(n): return n f = [f1, f2, f3] s = "zuzzurrellonando" t = "".join([chr(f[i%len(f)](ord(c) - ord( a )) + ord( a )) for i, c in enumerate(s)]) print t #grzgrryblslnhkdv 7 of 15

Esercizio 6 Denire la classe Matrice e un metodo mul che prenda in input una lista (che considereremo come un vettore) ed esegua il prodotto matrice-vettore, ritornandone il risultato. 8 of 15

Esercizio 6 Denire la classe Matrice e un metodo mul che prenda in input una lista (che considereremo come un vettore) ed esegua il prodotto matrice-vettore, ritornandone il risultato. class Matrice: def init (self, l): self.mat = l def mul(self,v): return [sum([self.mat[row][col] * v[col] for col in range(len(v))]) for row in range(len(self.mat))] m = Matrice([[0,1],[1,0]]) vec = [3,4] print m.mul(vec) # [4, 3] 8 of 15

Esercizio 6 Denire le funzioni: a) norma che presa in input una lista (per noi un vettore v) ne ritorna il valore della norma 2 (cioè i v 2 i ) b) di che prese in input due liste ritorna la lista che rappresenta il vettore della dierenza dei due vettori dati 9 of 15

Esercizio 6 Denire le funzioni: a) norma che presa in input una lista (per noi un vettore v) ne ritorna il valore della norma 2 (cioè i v 2 i ) b) di che prese in input due liste ritorna la lista che rappresenta il vettore della dierenza dei due vettori dati import math def norma(v): return math.sqrt(sum([i**2 for i in v])) def diff(v1,v2): return [v1[i]-v2[i] for i in range(len(v1))] vec1, vec2 = [1,2,3], [0,4,2] print norma(vec1),norma(vec2) print diff(vec1,vec2) #3.74165738677 4.472135955 #[1, -2, 1] 9 of 15

Esercizio 6 Denire la funzione normalizzazione che presa in input una lista (per noi un vettore v) ritorna la lista normalizzata rispetto alla norma 2, cioè la lista i cui elementi sono tutti divisi per la costante norma(v) 10 of 15

Esercizio 6 Denire la funzione normalizzazione che presa in input una lista (per noi un vettore v) ritorna la lista normalizzata rispetto alla norma 2, cioè la lista i cui elementi sono tutti divisi per la costante norma(v) def normalizzazione(v): n = norma(v) return [i/n for i in v] vec1 = [1,2,3] print normalizzazione(vec1) print norma(normalizzazione(vec1)) #[0.26726..., 0.53452..., 0.80178...] #1.0 10 of 15

Esercizio 6 Partendo dalle seguenti linee di codice: import random N = 4 M = Matrice([[1,0,0,1],[0,1,2,0],[0,1,1,1],[0,1,0,0]]) vr = [random.random() for i in range(len(n))] Implementare un algoritmo che: 1) faccia il prodotto della matrice M per il vettore vr; 2) normalizzi il vettore risultante; 3) ripeta le operazioni ripartendo da "1)" usando al posto di vr il vettore ottenuto dopo la normalizzazione. L'algoritmo deve ripetere queste operazioni ntanto che la norma 2 della dierenza tra il vettore del passo precedente e il vettore ottenuto non risulta essere inferiore a 1e-8. Stampare inne il vettore risultante. 11 of 15

Esercizio 6 Soluzione: import random N = 4 M = Matrice([[1,0,0,1],[0,1,2,0],[0,1,1,1],[0,1,0,0]]) vr = [random.random() for i in range(n)] vprec = [-42.0]*N while norma(diff(vprec,vr)) > 1e-8: vprec = vr vr = normalizzazione(m.mul(vr)) print vr #[0.165298..., 0.729155..., 0.604822..., 0.274224...] 12 of 15

Esercizio 7 Dato un Albero binario creare una funzione nodi_l(albero,l) che restituisce il numero di nodi presenti al livello l nell'albero. 13 of 15

Esercizio 7 Dato un Albero binario creare una funzione nodi_l(albero,l) che restituisce il numero di nodi presenti al livello l nell'albero. Soluzione: class Albero(): def init (self, val=none, sx=none, dx=none): self.val = val self.sx = sx self.dx = dx def nodi_l(albero,l): if (albero == None or l<0): return 0 if l == 0: return 1 return nodi_l(albero.dx, l-1) + nodi_l(albero.sx, l-1) 13 of 15

Esercizio 8 Creare una classe che gestisca una partita a 7 1. Regole base: 2 si gioca con un mazzo di carte all'italiana, ovvero 40 carte con 4 semi: bastoni, spade, denari e coppe; ogni carta vale quanto il numero che rappresenta ad eccezione delle gure (i.e., fante(8), cavallo(9) e re(10)) che valgono 1 2 ; il gioco si svolge tra giocatore e banco: vince chi possiede come somma delle proprie carte il valore più vicino ( ) al 7 1 2. Chi lo supera sballa e perde; il giocatore riceve carte ntanto che lo vuole o sballa; il banco (CPU) accetta carte ntanto che non ha un valore 5 1 2 ; 14 of 15

Esercizio 8 Viene richiesto di: creare una classe che gestisca il gioco per un numero di turni ssato; ogni turno deve: assegnare una carta a banco e giocatore (il giocatore deve conoscere anche la carta del banco); chiedere all'utente se vuole carta o si ferma, no a che non si ferma o sballa; successivamente, pesca le carte al banco no a che non ha un valore 5 1 2. in caso di stessi punti (senza essere sballati) vince il banco; se sballano entrambi non c'è vincitore; niti i turni: dire chi ha vinto più mani. 15 of 15