Modalita' di Esame A.A. 2019/2020 e 2020/21

L'esame consiste in un colloquio orale su C++, Haskell ed eventuali confronti fra linguaggi di programmazione.
Lo studente inoltre è invitato a risolvere alcuni homework scelti tra i seguenti, da discutere in sede d'esame.

Programmi in C++

1. (side effects) Scrivere l'algoritmo di ordinamento select Sort in modo che dia risultati corretti con una corretta funzione scambia,
ma azzeri tutto il vettore usando la funzione scambia3 nella dispensa D2, Fig. 8 di Informatica Generale. 2. Partendo dai razionali visti a lezione, programmare i razionali immutabili.
3. Nell'esempio di punti e punti colorati, verificare cosa accade eliminando il virtual dalla definizione del metodo move.
3. Scrivere l'iteratore costante sugli Stack.
4. Reimplementare gli Stack usando un Vector come struttura dati.
5. Scrivere una classe per definire il template degli alberi binari: chi sono i possibili iteratori? Implementarne uno.
6. (potenzialmente laborioso) Provare ad aggiungere un pezzo eterodosso all'applicazione degli Scacchi:
ad esempio l'_arcivescovo_ (che ha il movimento combinato di alfiere e cavallo)
o il cancelliere (che ha il movimento combinato di cavallo e torre).

Programmi in Haskell

1. Lambda calcolo: se N, M sono numerali di Church, che funzioni sono N (+1) 0 e N succ M, dove succ è il termine che fa il successore.
2. Scrivere mergesort in Haskell.
3. Scrivere una funzione Haskell che presa una lista, genera la lista delle sottoliste di cardinalità k.
4. Scrivere una funzione Haskell che data una lista L calcola la lista di liste che contiene i prefissi di L.
5. Scrivere il funzionale map senza decomporre liste, ma usando il funzionale foldr.
Argomentare sul perché il contrario non si può fare.
6. Scrivere una funzione Haskell che genera lo stream delle righe del triangolo di tartaglia.
7. Il programma nella slide 10 lezione 8 calcola i primi come sfondo degli Hammings, partendo dal programma nella slide 9 .
Provare a fare lo stesso con il programma nella slide 5. In questo caso si otterrebbe un crivello di Eratostene. Perché?
8. Scrivere una funzione Haskell che genera tutte le sottoliste finite di uno stream in modo che ogni sotto-lista finita appaia dopo un numero finito di passi.

Programmi in Haskell

Modalita' di Esame A.A. 2016/2017 e 2017/18

L'esame consiste nella discussione orale di 1 progettino riguardante il gioco degli Scacchi.
Quest'anno sarà sufficiente apportare modifiche al codice fornito dal docente, nella pagina dei Materiali Didattici.

Ogni studente, o gruppo, può scegliere 1 o più delle seguenti opzioni:

  • implementare le mosse speciali (arrocco, en-passant e promozione). Queste mosse non rispettano le usuali regole degli scacchi: nell' arrocco si muovono due pezzi ed è possibile solo a condizione che re e torre non si siano mai stati mossi prima. L'arrocco può essere denotato come tutte le altre mosse con lo spostamento del Re (e1g1, e1c1 per il bianco). Nella presa en-passant il pezzo preso non si trova nella casella d'arrivo del pezzo mosso. Nella promozione scompare un pedone e appare un nuovo pezzo. Questa può essere denotata dalla mossa di pedone seguita dalla lettera che identifica il nuovo pezzo (ad esempio: c7c8D, indica la promozione a donna di un pedone bianco che raggiunge l'ottava traversa). Queste mosse comportano due problemi: la classe Scacchiera non è sufficiente informazione per stabilirne la correttezza, ma è necessaria la storia della partita. Inoltre, ritirare le mosse necessita di ulteriore informazione. Quindi metodi come puoiMuovere o allMoves dovrebbero ricevere in input ad esempio un oggetto Posizione che estende Scacchiera con l'informazione necessaria (al momento memorizzata nella classe Partita). La classe Move va estesa.
  • implementare pezzi eterodossi, come il Nottambulo, il Grillo o i più prosaici Araldo (che combina il movimento di alfiere e cavallo), Cancelliere (che combina il movimento di Torre e Cavallo).
  • scrivere una funzione che risolve Matti in due o tre mosse. Ricordo che ciò significa che esiste una mossa del bianco per cui, per ogni mossa del nero, il bianco può dare matto alla seconda mossa (analogamente si definiscono i problemi di 3 o più mosse). Potete considerare problemi senza mosse speciali, se non le avete implementate. Trovate un buon numero di esempi su cui sperimentare nei seguenti documenti: matti in due mosse e altri matti in due mosse. Potete leggere la posizione iniziale con una FEN (nel progetto c'è un costruttore di Partita che inizializza la partita usando una stringa FEN).
  • implementare il gioco della Quadriglia. Qui occorre far partire due partite, sincronizzate dai pezzi presi da ciascun giocatore e che possono essere usati dal suo compagno.

Modalita' di Esame A.A. 2015/2016

L'esame consiste nella discussione orale di 1 progettino riguardante il gioco degli Scacchi.
Il testo del progetto, ampiamente discusso a lezione, e' pubblicato qui sotto.

Modalita' di Esame A.A. 2014/2015

L'esame consiste nella discussione orale di 3 homework dati durante il corso.
I testi degli homework verranno pubblicati in questa pagina.

-- IvanoSalvo - 30 Sep 2014

Edit | Attach | Watch | Print version | History: r11 < r10 < r9 < r8 < r7 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r11 - 2020-12-01 - IvanoSalvo






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback