---++ <font color=#006400 size="+3">Modalita' di Esame A.A. 2019/2020 e 2020/21</font> L'esame consiste in un colloquio orale su C++, Haskell ed eventuali confronti fra linguaggi di programmazione.<br> Lo studente inoltre è invitato a risolvere alcuni homework scelti tra i seguenti, da discutere in sede d'esame.<br> *Programmi in C++* <blockquote> <b>1.</b> (*side effects*) Scrivere l'algoritmo di ordinamento _select Sort_ in modo che dia risultati corretti con una corretta funzione ==scambia==,<br> ma azzeri tutto il vettore usando la funzione ==scambia3== nella dispensa *D2*, Fig. *8* di Informatica Generale. <b>2.</b> Partendo dai razionali visti a lezione, programmare i razionali immutabili.<br> <b>3.</b> Nell'esempio di punti e punti colorati, verificare cosa accade eliminando il ==virtual== dalla definizione del metodo move.<br> <b>3.</b> Scrivere l'iteratore costante sugli Stack.<br> <b>4.</b> Reimplementare gli Stack usando un Vector come struttura dati.<br> <b>5.</b> Scrivere una classe per definire il template degli alberi binari: chi sono i possibili iteratori? Implementarne uno.<br> <b>6.</b> (potenzialmente *laborioso*) Provare ad aggiungere un pezzo eterodosso all'applicazione degli Scacchi: <br> ad esempio l'_arcivescovo_ (che ha il movimento combinato di alfiere e cavallo) <br> o il _cancelliere_ (che ha il movimento combinato di cavallo e torre).<br> </blockquote> *Programmi in Haskell* <blockquote> <b>1.</b> 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.<br> <b>2.</b> Scrivere mergesort in Haskell.<br> <b>3.</b> Scrivere una funzione Haskell che presa una lista, genera la lista delle sottoliste di cardinalità _k_.<br> <b>4.</b> Scrivere una funzione Haskell che data una lista L calcola la lista di liste che contiene i prefissi di L.<br> <b>5.</b> Scrivere il funzionale map senza decomporre liste, ma usando il funzionale foldr. <br> Argomentare sul perché il contrario non si può fare.<br> <b>6.</b> Scrivere una funzione Haskell che genera lo stream delle righe del triangolo di tartaglia.<br> <b>7.</b> Il programma nella slide *10* lezione *8* calcola i primi come sfondo degli Hammings, partendo dal programma nella slide *9* .<br> Provare a fare lo stesso con il programma nella slide *5*. In questo caso si otterrebbe un crivello di Eratostene. Perché?<br> <b>8.</b> 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.<br> </blockquote> Programmi in Haskell ---++ <font color=#006400 size="+3">Modalita' di Esame A.A. 2016/2017 e 2017/18</font> L'esame consiste nella discussione orale di 1 progettino riguardante il gioco degli Scacchi.<br> Quest'anno sarà sufficiente apportare modifiche al codice fornito dal docente, nella pagina dei Materiali Didattici.<br> 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 <i>storia</i> 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 [[https://it.wikipedia.org/wiki/Nottambulo_(scacchi)][Nottambulo]], il [[https://it.wikipedia.org/wiki/Grillo_(scacchi)][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 [[https://it.wikipedia.org/wiki/Problema_di_scacchi][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: [[%ATTACHURL%/mate2moves.pdf][matti in due mosse]] e [[%ATTACHURL%/mate2moves-2.pdf][altri matti in due mosse]]. Potete leggere la posizione iniziale con una [[https://it.wikipedia.org/wiki/Notazione_Forsyth-Edwards][FEN]] (nel progetto c'è un costruttore di =Partita= che inizializza la partita usando una stringa FEN). * implementare il gioco della [[https://it.wikipedia.org/wiki/Quadriglia_(scacchi)][Quadriglia]]. Qui occorre far partire due partite, sincronizzate dai pezzi presi da ciascun giocatore e che possono essere usati dal suo compagno. ---++ <font color=#006400 size="+3">Modalita' di Esame A.A. 2015/2016</font> L'esame consiste nella discussione orale di 1 progettino riguardante il gioco degli Scacchi.<br> Il testo del progetto, ampiamente discusso a lezione, e' pubblicato qui sotto.<br> * Progetto 2015-2016: [[%ATTACHURL%/progetto.pdf][Scacchi in C++]] ---++ <font color=#006400 size="+3">Modalita' di Esame A.A. 2014/2015</font> L'esame consiste nella discussione orale di 3 homework dati durante il corso.<br> I testi degli homework verranno pubblicati in questa pagina.<br> * Homework 1: [[%ATTACHURL%/hw1.polinomi.pdf][Polinomi in C++]] * Homework 2: [[%ATTACHURL%/hw2.macchinaDistributrice.pdf][Macchina Distributrice]] * Homework 3: [[%ATTACHURL%/hw2.templateSet.pdf][Insiemi Generici]] -- Users.IvanoSalvo - 30 Sep 2014
This topic: LDPMat
>
WebHome
>
ModalitaDEsame
Topic revision: r11 - 2020-12-01 - IvanoSalvo
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback