QUESITO 1
Algoritmo di Cesare: algoritmo di crittografia descritto dallo storico Svetonio: dato un testo "in
chiaro" crearne uno non comprensibile sostituendo le lettere che lo compongono. L'algoritmo
di basa su una "chiave" che è un numero tra 1 e 20 e rappresenta lo spostamento
nell'alfabeto che si deve effettuare per ottenere la lettera che sostituisce quella originale.
Cifrario di vigenere: Il metodo si può considerare una generalizzazione del cifrario di Cesare;
invece di spostare sempre dello stesso numero di posti la lettera da cifrare, questa viene
spostata di un numero di posti variabile, determinato in base ad una parola chiave, da
concordarsi tra mittente e destinatario, e da scriversi sotto il messaggio, carattere per
carattere; la parola chiave è detta anche verme, per il motivo che, essendo in genere molto
più corta del messaggio, deve essere ripetuta molte volte.
QUESITO 2
Sia dato un file che contiene una matrice rettangolare di interi positivi preceduta dalle sue
dimensioni (separate dal carattere “X”) Come esempio si consideri il file “in.txt” con il
seguente contenuto: 5X6 1 3 4 8 9 5 0 0 0 0 0 0 3 2 5 2 0 0 2 3 3 3 0 1 0 1 1 1 1 1 Scrivere
uno script python che prenda il nome di un file siffatto e produca un file “out.txt” eliminando
le righe che hanno come primo valore 0 ed invertendo l’ordine delle righe. Il numero di righe
(nella prima riga, quella delle dimensioni) deve essere riscritto in modo che corrisponda alle
righe della nuova matrice. Nell’esempio di cui sopra il contenuto del file al termine
dell’esecuzione deve essere il seguente. 3X6 2 3 3 3 0 1 3 2 5 2 0 0 1 3 4 8 9 5
QUESITO 3
Estrarre e contare le biblioteche di un comune (chiesto come input all’utente) sulla base dei
dati contenuti nel file biblioteche.csv. Creare delle funzioni di utilità per accedere ad un file e
per terminare l’accesso ad un file (“apertura e chiusura”). Utilizzare una tupla “biblioteca” che
rappresenti una riga del file biblioteche.csv. Possibilmente fare una funzione che legga una
riga e ritorni la tupla relativa. Per la eventuale tupla, impostare solo i tre valori "codice",
"denominazione", "comune".
QUESITO 4
Si consideri una matrice di caratteri 8 × 8 che contiene la posizione di una partita di scacchi.
I pezzi bianchi sono rappresentati dalla loro iniziale minuscola: r, d, a, c, t, e p
rispettivamente per re, donna, alfiere, cavallo, torre e pedone; i pezzi neri sono rappresentati
dalla stessa iniziale maiuscola R, D, A, C, T, e P. Le caselle vuote sono rappresentate dallo
spazio. Ad esempio la seguente matrice rappresenta la posizione iniziale. Si vuole scrivere
una funzione che valuti chi è in vantaggio nella posizione corrente dal punto di vista del
materiale presente sulla scacchiera. A questo scopo si usi la seguente valutazione dei pezzi:
pedone = 1, cavallo = 3, alfiere = 3, torre = 5, donna = 9, re =0. Si scriva un programma
python (opportunamente modularizzato tramite funzioni ausiliarie) che prenda come
parametro un file contenente una matrice siffatta e restituisca: • 1 se il bianco ha più
materiale del nero, • 2 se il nero ha più materiale del bianco, • 0 se il materiale è pari, • -1 se
la posizione sulla scacchiera non è legale