1. (side effects) Scrivere l'algoritmo di ordinamento select Sort in modo che dia risultati corretti con una corretta funzioneProgrammi in Haskellscambia
,
ma azzeri tutto il vettore usando la funzionescambia3
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 ilvirtual
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).
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.Programmi in Haskell
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.
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.
Partita
che inizializza la partita usando una stringa FEN).
![]() |
![]() |
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica ![]() |
|
![]() |
![]() |