Giter Site home page Giter Site logo

pater999 / unitn-linguaggi-programmazione-sml Goto Github PK

View Code? Open in Web Editor NEW
32.0 4.0 9.0 3.94 MB

Repository contenente esami con soluzione proposti durante lo sbarramento dell'esame di Programmazione Funzionale (prof Kuper).

Standard ML 100.00%
unitn sml polyml exam exercises exam-practice programming-language functional-programming programmazione-funzionale

unitn-linguaggi-programmazione-sml's People

Contributors

giogio31 avatar marck283 avatar mgiacopu avatar pater999 avatar riklus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

unitn-linguaggi-programmazione-sml's Issues

Nuove domande di teoria, esame sessione di luglio

Di seguito le domande nuove (rispetto al simulatore) presenti nella mia versione di esame di luglio. Non assicuro la correttezza delle risposte. Il simulatore io lo ho usato l'ultima volta l'11 luglio, quindi non so se alcune di queste siano già state inserite.

DOMANDA 1:
un ADT è definito essere un modello matematico di un user-defined type, insieme a tutte le operazioni su quel modo:

  1. Struttura
  2. Primitiva
  3. Assignment
  4. Cardinalità
  5. Nessuna delle precedenti

DOMANDA 2:
un linguaggio di programmazione (come FORTRAN) usa una allocazione fissa della memoria (in compilazione). Questo tipo di linguaggio non può supportare:

  1. Procedure
  2. Eccezioni
  3. Ricorsione
  4. Nessuna della altre risposte
  5. Numeri floating-point

DOMANDA 3:
il cut=! in Prolog:

  1. Ha successo e ferma backtracking
  2. Chiama un'eccezione
  3. Esegue il backtracking
  4. Fallisce e ferma il backtracking
  5. Nessuna delle altre risposte

DOMANDA 4: [non sono sicura della risposta, so solo che non è sicuramente la 3]
in Prolog:

  1. Conta l'ordine delle regole e predicati (da sinistra a destra) in una regola
  2. Nessuna delle altre risposte
  3. Conta l'ordine delle regole e predicati (da destra a sinistra) in una regola
  4. Conta solo l'ordine delle regole
  5. Conta solo l'ordine dei predicati (da destra a sinistra) in una regola

DOMANDA 5: [non è la 2]
si assuma che A sia un array di lunghezza 40. Trovare il 30simo elemento

  1. Array.sub(A,30)
  2. Array.sub(A,29)
  3. Nessuna delle altre risposte
  4. sub(A,29)
  5. A[30]

Aggiungo di seguito alcune domande - sempre non inserite nel simulatore quando lo ho usato io - dell'appello di giugno che mi hanno mandato.

DOMANDA 6:
Memorizzare array in ordine di riga o colonna:

  1. Nessuna delle altre risposte
  2. Conta soltanto quando si usa il caching
  3. Viene sempre usato l'ordine per colonna
  4. Non conta mai
  5. Viene sempre usato l'ordine per riga

DOMANDA 7:
Pointer reversal is used in garbage collection:

  1. To avoid wasting space for marking used records
  2. In implementations of Python
  3. To deal with loops in pointer structures
  4. When we don't have space for a earch structure
  5. Nessuna delle altre risposte

DOMANDA 8:
In ML 4+3.0 genera come risultato:

  1. Errore di tipo
  2. 7.0
  3. Nessuna delle altre risposte
  4. Dipende dall'implementazione
  5. 7

DOMANDA 9:
Dato il seguente programma ML:

structure Struct1 = struct; val i = 3; type t = int; val x = 4; end; signature SIG1 = sig; val i:int; type t; val x: t; end; structure Struct2:> SIG1 = Struct1;

Indicare il risultato di Struct2.x = Struct2.i;

  1. Nessuna delle altre risposte
  2. 3
  3. false
  4. type error
  5. true

Esame Luglio 2023

Esercizio

Si scriva una funzione conta_duplicati (avente tipo ''a list -> (''a * int) list) che riceve come argomento una lista di ''a e restituisce una lista di tuple ''a * int. La funzione conta_duplicati ritorna una lista di coppie (elemento, numero di occorrenze dell'elemento), cioè per ogni elemento distinto e della lista di input, la lista di output contiene una coppia (e, numero di occorrenze di e).

Come esempio, l'invocazione conta_duplicati [2, 2, 2, 2]; deve avere risultato [(2,4)],

conta_duplicati ["lunedi'", "lunedi'", "martedi'", "lunedi'"]; deve avere risultato [("lunedi'",3), ("martedi'",1)] e

conta_duplicati ["blu", "verde", "verde", "blu", "rosso"]; deve avere risultato [("blu",2), ("verde",2), ("rosso",1)].

IMPORTANTE: notare il tipo della funzione!.

L'ordine delle coppie all'interno della lista risultante non è rilevante.

La funzione conta_duplicati deve essere definita in un file .sml autocontenuto ma separato da qualsiasi codice di test si sia usato. Il file .sml deve contenere la chiamata a conta_duplicati. Si consegni il file .sml contenente la definizione di conta_duplicati rinominandolo Cognome_Nome_Matricola.sml.

Esame giugno 2023

Ciao,
l'esame di quest'anno era nuovo, purtroppo non ho il testo esatto, ma dovrebbe essere una cosa del genere:

"""
scrivere una curried function “f” che prenda in input una lista di stringhe[ai, ai+1, …] e un intero n, e ritorni una lista di stringhe[bi, bi+1, …] in cui bi è uguale ad ai solo se la lunghezza di ai è minore o uguale ad n, altrimenti bi è uguale ad ai senza il primo carattere.

Esempio:

>f [" ", "ab", "abc", "abcd", "abcde"] 3;
val it = [" ", "ab", "abc", "bcd", "bcde"]: string list

"""

Questa è la mia soluzione che è stata considerata valida:

fun f (nil) n = nil | f (a::l) n = if (length (explode a) <= n) then a::(f (l) n) else implode(tl(explode(a)))::(f (l) n);

Esame Febbraio 2023

Ciao! Grazie mille innanzitutto per la dispensa.

L'esame pratico di Febbraio 2023 era quello dell'ambiente vuoto intonil, stesso testo e stessa soluzione

esame 13 febr 2024

test di esame ML da 13.02.2024:
Scrivere una funzione preffixes (di tipo string -> string list) che presa in input una stringa,
ritorni una lista di tutti i preffissi della stringa, compresa la stringa stessa ed escusa la stringa vuota.
(nota: esista una funzione map che permette appendere un elemento a ogni elementi da lista)

Esempi: 
> preffixes "ciao";
val it : ["c" , "ci", "cia", "ciao"];
> preffixes "";
val it : [];
> preffixes "hi world";
val it : ["h", "hi", "hi ", "hi w", "hi wo", "hi wor", "hi worl", "hi world"];

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.