Informatica Generale Homework di Recupero 2016
|
|
|
- Salvatore Magni
- 9 anni fa
- Visualizzazioni
Transcript
1 Informatica Generale Homework di Recupero 016 docente: Ivano Salvo Sapienza Università di Roma Gruppo 1 Esercizio 1.1 Scrivere un programma C che presi in input due interi positivi a ed b (a, b > 0) calcola il logaritmo intero di a in base b. Più formalmente, il programma deve restituire in output un numero intero k, per cui sia verificata la disuguaglianza b k a < b k+1. Esempi: Presi in input 6 e, il programma deve stampare 5, in quanto 5 = 6 < 6 = 6. Presi in input 81 e, il programma deve stampare, in quanto = 81 < = 5. Esercizio 1. Un intero positivo n si dice perfetto se è uguale alla somma di tutti i suoi divisori propri. Ad esempio, 8 = è perfetto. n si dice abbondante se la somma di tutti i suoi divisori propri è maggiore di n. Ad esempio < = 6 è abbondante. n si dice difettivo se la somma di tutti i suoi divisori propri è minore di n. Ad esempio 7 > = 1. Scrivere una programma C che preso in input un numero positivo n stampi 0 se n è un numero perfetto, 1 se è difettivo ed 1 se è abbondante. Esercizio 1. Dato un intero strettamente positivo n, definiamo il successivo di un naturale n > 1 come segue (1 non ha successivi): n/ se n è pari n + 1 se n è dispari > 1 1
2 Scrivere un programma che letto in input un numero intero positivo n produca in output il numero di passi necessari affinchè la sequenza che comincia con n raggiunga il numero 1. Esempio: La sequenza che comincia con, prosegue con 10, 5, 16, 8,,, 1: quindi in questo caso il programma dovrebbe stampare 7. Gruppo Esercizio.1 (Enigmistica: Lucchetto) Nel linguaggio enigmistico un lucchetto è un gioco caratterizzato dallo schema XY + Y Z XZ. Forse un informatico teorico direbbe piuttosto che prese tre parole (o sequenze) w 1, w, w su un certo alfabeto di simboli Σ, w è un lucchetto di w 1 e w se e solo se esistono tre parole x, y, z tale che w 1 = xy, w = yz e w = xz. Dovete scrivere un programma che legge due stringhe e produce in output il lucchetto massimale tra le due parole. Il programma deve quindi trovare la più lunga sequenza finale di w 1 che è uguale alla sequenza iniziale di w, e produrre in output il lucchetto risultante seguendo le regole sopra descritte (senza ovviamente preoccuparsi che il risultato abbia significato o meno nella lingua italiana). Esempi: Se le parole di ingresso sono uguali, il risultato è la sequenza vuota. Se non esiste nessun suffisso della prima comune a un prefisso della seconda, allora il risultato è semplicemente la concatenazione delle due parole. Ad esempio se l input fosse: rara e mente il vostro programma dovrebbe scrivere in output raramente. Attenzione però che in alcuni casi il lucchetto non è unico, ma voi dovete restituire il massimale. Ad esempio se l input fosse tono e onore dovete scrivere in output tre e non tonnore. Esercizio. (Anagrammi) Scrivere un programma C che legge in input due stringhe s 1 ed s e verifica se s 1 è un anagramma di s. In caso affermativo, stampa 1, altrimenti stampa 0. Attenzione al fatto che eventuali caratteri ripetuti devono avere lo stesso numero di occorrenze in s 1 ed s. Esempi: La stringa roma è anagramma di mora, ma non di morra. Esercizio. (MasterMind) Scrivere un programma che legge in input 0 cifre (una alla volta con scanf("%d",...);) e considera le prime dieci come una combinazione segreta del gioco del master mind, e le seconde 10 come un tentativo di indovinare la combinazione segreta. Produrre in output numeri
3 (su due righe diverse), tali che il primo sia il numero delle cifre corrette al posto giusto, e il secondo sia il numero delle cifre corrette, ma al posto sbagliato. Esempio: Supponiamo venga letta la seguente sequenza di cifre: Va interpretata come segue: combinazione segreta: tentativo: risultato: dove significa numero giusto al posto giusto e significa numero giusto al posto sbagliato. Osservate che l ultimo 1 del tentativo non produce nessun risultato perchè ho già impegnato entrambi gli 1 della combinazione segreta. In questo caso il vostro programma dovrebbe rispondere quindi: Gruppo Esercizio.1 [Matrice a spirale]. Scrivere un programma che legge un numero intero n e crea una matrice a spirale n n. Si mette in alto a sinistra (in posizione [0,0]) il numero 1 e poi, andando in senso orario verso il centro della matrice, si dispongono gli altri numeri,,,... fino a n. Ecco ad esempio le matrici a spirale di lato e Input: un numero intero n, dimensione della matrice. Output: la matrice a spirale n n. Esercizio. [Caselle Controllate dalla Regina]. Negli scacchi, la regina si muove in tutte le direzioni (orizzontale, verticale, diagonale) di un numero di caselle a piacere. Dovete scrivere un programma che stampa le caselle in cui può muovere una regina.
4 Input Tre numeri interi, n, i, j, con 0 i, j < n. n è la dimensione del lato della scacchiera, mentre [i, j] è la posizione della regina. Output Una matrice di interi n n, in cui viene messo un in posizione [i, j], un 1 in tutte le posizioni raggiungibili dalla regina, e 0 nelle posizioni non raggiungibili dalla regina. Esempio Se l input fosse 5 l output sarebbe la matrice: Esercizio. (Sudoku) Come probabilmente sapete, la soluzione di un Sudoku consiste in una matrice 9 9 contenente numeri da 1 a 9, dimodochè in ciascuna riga, ciascuna colonna e in ciascuna di 9 sottomatrici appaiano tutti una ed una sola volta (vedi figura sottostante). Dovete scrivere un programma che legge 9 stringhe di 9 caratteri (ciascun carattere è una cifra tra 1 e 9) e verifica se si tratta di una soluzione di un Sudoku. In caso affermativo, il vostro programma deve stampare 1 e viceversa stampare 0. Esempio: Qui sotto un esempio di input, il sudoku corrispondente nella usuale presentazione grafica. In questo caso, il programma dovrà stampare 1, in quanto si tratta della soluzione di un Sudoku. Input:
5 Esercizio. Probabilmente conoscete tutti il gioco del Una matrice contiene numeri che sono tutti potenze di due o caselle vuote. Si può muovere a destra, sinistra, alto e basso, causando lo scivolamento di tutti i numeri della matrice, facendoli occupare la posizione libera più a destra, sinistra, alto o basso libera. Ad esempio, muovendo verso destra, ogni numero occuperà la casella più a destra possibile: questo dipende da quante caselle vuote ci sono a destra, e da eventuali fusioni : infatti, se due numeri uguali si trovano adiacenti (sulla stessa riga) muovendo verso destra (o sinistra) si fondono e la casella conterrà poi la somma dei due numeri. Muovendo verso l alto o il basso vengono fusi numeri adiacenti sulla stessa colonna. Noi codificheremo in una matrice di interi una posizione del 08, con la convenzione che le caselle vuote siano rappresentate dal numero 0. Il gioco finisce quando non si possono fare ulteriori mosse: ciò accade quando si verificano entrambe le due seguenti condizioni: 1. non ci sono caselle libere;. non c è nessuna possibile fusione, in nessuna direzione (cioè non ci sono coppie di numeri uguali adiacenti in orizzontale o in verticale. Scrivere un programma C che, letta da input una matrice di interi, restituisca 1 se il gioco è finito e 0 altrimenti. Gruppo L input degli esercizi di questa sezione è costituito da un numero intero n < 100 che rappresenta il numero di nodi di un albero binario T di interi e poi da n interi, di cui i primi n sono il risultato di una visita preorder di T e i secondi n sono gli stessi interi, nell ordine ottenuto da una visita inorder di T. Sotto l ipotesi che tutti i nodi contengano informazioni distinte, è possibile ricostruire in modo univoco l albero binario T. Infatti, la visita preorder ci permette di identificare in modo univoco la radice (che è il primo elemento della visita). Nella visita inorder la radice separa gli elementi del sottoalbero sinistro da quelli del sottoalbero destro. A questo punto, è possibile ricostruire il sottoalbero sinistro e destro riapplicando ricorsivamente lo stesso ragionamento, dopo aver opportunamente selezionato le sequenze di elementi che rappresentano le visite preorder e inorder del sottoalbero sinistro e del sottoalbero destro. 1 vedi ad esempio (videogioco) 5
6 Figura 1: Albero binario nell esempio Esempio: Supponiamo di leggere come input il numero 7 e 1 numeri nel seguente ordine: L albero corrispondente è mostrato in Fig. 1. Infatti, la visita preorder ci dice che - è la radice. Dopodichè, andando a vedere la visita inorder, è possibile scoprire che 1-5 è la visita inorder del sottoalbero sinistro e 6 7 è la visita inorder del sottoalbero destro. Dato che anche nella visita preorder la visita del sottoalbero sinistro precede la visita del sottoalbero destro, possiamo dedurre che 1-5 sia la visita preorder del sottoalbero sinistro e 6 7 la visita preorder del sottoalbero destro. Ora è possibile riapplicare ricorsivamente il ragionamento considerando la coppia di visite 1-5 e 1-5 per ricostruire il sottoalbero sinistro e la coppia di visite 6 7 e 6 7 per il sottoalbero destro. Esercizio.1 Leggete un albero di interi come descritto sopra. In output, occorre produrre l albero in cui l etichetta di ciascun nodo stata sostituita con la somma delle etichette sottoalbero radicato in quel nodo. Produrre come output la sequenza di interi corrispondente a una visita inorder dell albero. Esempio: Dato in input l albero a sinistra, bisogna costruire l albero a destra e produrre in output la sua visita inorder, senza andare a capo Output: Esercizio. Leggete un albero di interi come descritto sopra. In output, occorre produrre l albero in cui l etichetta di ciascun nodo stata sostituita con la somma delle etichette nel cammino che lega il nodo alla radice. Produrre come output la sequenza di interi corrispondente a una visita postorder dell albero. 6
7 Esempio: Dato in input l albero a sinistra, bisogna costruire l albero a destra e produrre in output la sua visita postorder, senza andare a capo Output:
ESERCIZI SULLA TECNICA BACKTRACKING e BRANCH & BOUND
ESERCIZI SULLA TECNICA BACKTRACKING e BRANCH & BOUND 1. [ STRINGHE] Scrivere in pseudo-codice una procedura che, preso in input un intero n, stampi tutte le stringhe di lunghezza minore o uguale ad n sull
PROVETTE D ESAME. Algoritmi e Strutture Dati
PROVETTE D ESAME Algoritmi e Strutture Dati ESERCIZIO 1 Si ottengano limiti superiori e inferiori per la seguente ricorrenza ESERCIZIO 1 ESERCIZIO 2 Dato un albero binario T, il grado di sbilanciamento
Esercizi
Esercizi Si implementi una funzione che riceve in input una matrice NxM di float. Definito picco un numero circondato in tutte le posizioni intorno solo da numeri strettamente inferiori alla sua metà,
Macchina di Turing Universale
Informatica Teorica 2010/2011 M.Di Ianni Macchina di Turing Universale Vogliamo definire una macchina di Turing U che, presi in input la descrizione di una macchina di Turing ad un nastro T ed un input
0.1 Esercizi calcolo combinatorio
0.1 Esercizi calcolo combinatorio Esercizio 1. Sia T l insieme dei primi 100 numeri naturali. Calcolare: 1. Il numero di sottoinsiemi A di T che contengono esattamente 8 pari.. Il numero di coppie (A,
INDICE DEI GIOCHI. Giochi del 23 Aprile 2016
INDICE DEI GIOCHI Giochi del 23 Aprile 2016 PROG GIOCO 1 Filo di Arianna 1 2 Barattolo con sorpresa (col) 3 Battaglia spaziale 1 4 Crucipixel1 - gallo cedrone 5 Kakuro 1 - (anche fac) 6 Kalik e Kalek (col)
Alberi binari e alberi binari di ricerca
Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
Esercitazione 6. Alberi binari di ricerca
Esercitazione 6 Alberi binari di ricerca Struttura base Rappresentabile attraverso una struttura dati concatenata in cui ogni nodo è un oggetto di tipo struttura Ogni nodo contiene: campo chiave (key)
Automi a stati finiti
Automi a stati finiti Definizioni preliminari Il modello: la definizione formale, esempi. Le definizioni utili per descrivere e provare proprietà degli automi: diagramma degli stati, configurazioni, relazione
Liste di Liste Matrici
Liste di Liste Matrici Una lista annidata è una lista che compare come elemento di un'altra lista. Nell'esempio seguente il quarto elemento della lista (elemento numero 3 dato che il primo ha indice 0)
Esercizi su Python. 14 maggio Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che:
Esercizi su Python 14 maggio 2012 1. Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che: 1. conti quanti elementi pari sono presenti nella lista; 2. conti quanti quadrati
Esercizi di Fondamenti di Informatica per la sicurezza. Stefano Ferrari
Esercizi di Fondamenti di Informatica per la sicurezza tefano Ferrari 23 dicembre 2003 2 Argomento 1 Grammatiche e linguaggi Esercizi Es. 1.1 Definiti i linguaggi: L 1 = {aa, ab, bc, c} L 2 = {1, 22, 31}
alla categoria di automi a minor potenza riconoscitiva possibile. }, dove k è un parametro.
Algoritmi e Prin Appello del 2 Settembre 20 Informatica 2 ore e 30 minuti. Chi deve sostenere solo il modulo di Informatica teorica deve svolgere gli Esercizi 1 e 2 in 1 ora e minuti. Chi deve sostenere
12 Function Handles e Ricorsione in MATLAB
1 Function Handles e Ricorsione in MATLAB Un function handle è una variabile il cui valore è una funzione. Data una funzione esistente, il suo function handle è dichiarato come handle = @nome dove nome
Gara Matematica. Dipartimento di Matematica Ulisse Dini. Viale Morgagni 67/a Firenze. Soluzioni edizione 2011
Gara Matematica Dipartimento di Matematica Ulisse Dini Viale Morgagni 67/a - 50134 Firenze Soluzioni edizione 011 Esercizio 1. Determinare tutti gli interi positivi non nulli n che sono uguali alla somma
Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio
Algoritmi Greedy Tecniche Algoritmiche: tecnica greedy (o golosa) Idea: per trovare una soluzione globalmente ottima, scegli ripetutamente soluzioni ottime localmente Un esempio Input: lista di interi
Alberi ed Alberi Binari
Alberi ed Alberi Binari Il tipo di dato Albero Un albero è una struttura di data organizzata gerarchicamente. È costituito da un insieme di nodi collegati tra di loro: ogni nodo contiene dell informazione,
Lezione 9 Alberi binari di ricerca
Lezione 9 Alberi binari di ricerca Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 1 Lista monodirezionale Scrivere
Programmazione Greedy I codici di Huffman
Programmazione Greedy I codici di Huffman Codifica dell informazione La rappresentazione ordinaria dell informazione prevede l impiego di un numero costante di bit; per esempio ad ogni carattere del codice
Corso di Laurea in Matematica per l Informatica e la Comunicazione Scientifica
Corso di Laurea in Matematica per l Informatica e la Comunicazione Scientifica Soluzione del compito di Matematica Discreta 1 del 25 luglio 200 1. Qual è il numero di applicazioni f : A = {1,..., 5} B
Note per la Lezione 4 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 4 Ugo Vaccaro Ripasso di nozioni su Alberi Ricordiamo che gli alberi rappresentano una generalizzazione delle liste, nel senso che
(A) CONOSCENZA TERMINOLOGICA (B) CONOSCENZA E COMPETENZA (C) ESERCIZI DI COMPRENSIONE
(A) CONOSCENZA TERMINOLOGICA Dare una breve descrizione dei termini introdotti: Dato strutturato Rappresentazione logica del vettore Array Componenti Accesso diretto Indice (B) CONOSCENZA E COMPETENZA
Fondamenti teorici e programmazione
Fondamenti teorici e programmazione FTP(A) - modb Lezione 16 Grammatiche Libere da Contesto Alberi di derivazione sintattica Linguaggio generato F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione
Fondamenti d Informatica: Le Macchine di Turing. Barbara Re, Phd
Fondamenti d Informatica: Le Macchine di Turing Barbara Re, Phd Esercizio 1 } Consideriamo una MdT che modifica una sequenza di A rimpiazzando ogni A in posizione dispari con una B (la prima A ha posizione
Moltiplicazione. Divisione. Multipli e divisori
Addizione Sottrazione Potenze Moltiplicazione Divisione Multipli e divisori LE QUATTRO OPERAZIONI Una operazione aritmetica è quel procedimento che fa corrispondere ad una coppia ordinata di numeri (termini
ELEMENTI DI PROGRAMMAZIONE a.a. 2013/14 UNA GERARCHIA DI MACCHINE
ELEMENTI DI PROGRAMMAZIONE a.a. 23/4 UNA GERARCHIA DI MACCHINE Andrea Prevete, UNINA2 24 UNA GERARCHIA DI MACCHINE macchine combinatorie macchine sequenziali (automi a numero finito di stati)... macchine
Albero binario. Alberi binari (introduzione) Terminologia. Alberi di ricerca binaria (BST)
Albero binario 2 Alberi binari (introduzione) Struttura di dati bidimensionale formata da nodi costituiti ciascuno dai dati da memorizzare e da due link Ver. 2.4 20 - Claudio Fornaro - Corso di programmazione
Suffix Trees. Docente: Nicolò Cesa-Bianchi versione 21 settembre 2017
Complementi di Algoritmi e Strutture Dati Suffix Trees Docente: Nicolò Cesa-Bianchi versione 21 settembre 2017 In generale, possiamo trovare tutte le occorrenze di un pattern y in un testo x in tempo O(
Laboratorio di Python
Laboratorio di Python Esercizi di debug Lab07 27 Marzo 2018 Outline Correzione esercizi per oggi Debug Strategia Esercizi di debug Esercizi per casa Outline Correzione esercizi per oggi Debug Strategia
LABORATORIO DI INFORMATICA ESERCITAZIONE VIII
LABORATORIO DI INFORMATICA ESERCITAZIONE VIII Cercate di eseguire gli esercizi da soli. Se non ci riuscite, cercate di capire i messaggi di errore. Se non ci riuscite, provateci di nuovo. Poi chiamate
SUDOKU Come si gioca Regole del Gioco Risolvere un Sudoku Consigli
SUDOKU Come si gioca Sudoku consiste in un diagramma di 81 quadretti con dei numeri all interno, disposti in modo simmetrico. L obiettivo del gioco consiste nel riempire il diagramma in modo che in tutte
Alberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei
Alberi Alberi: definizioni Alberi Binari Esercizi su alberi binari: metodi ricorsivi Struttura dati per alberi generici 1 Alberi Gli alberi sono strutture dati naturalmente ricorsive Un albero è un particolare
Informatica II. Capitolo 16 Backtrack
Introduzione Informatica II Capitolo 16 Backtrack Abbiamo visto che esistono diverse classi di problemi (decisionali, di ricerca, di ottimizzazione) Sono tutte definizioni basate sul concetto di soluzione
10 Funzioni MATLAB. dove: output1, output2,.. sono gli output (opzionali), che, se dichiarati, devono essere inizializzati dalla funzione
Le funzioni in un programma sono utilizzate per strutturare il codice in sottoparti e per evitare di replicare inutilmente il codice. In MATLAB le funzioni vengono identificate con la parola chiave function
Lezione 9 Alberi binari: visite ed esercizi
Lezione 9 Alberi binari: visite ed esercizi Informatica 4 Maggio 2016 Operazioni sugli alberi: visita La visita di un albero esplora tutti i nodi ed esegue una qualche operazione su di essi. Per esempio,
Lista di esercizi 11 maggio 2016
Lista di esercizi 11 maggio 2016 1. Determinare il numero di sequenze binarie di lunghezza n che contengano almeno una coppia di 0 consecutivi. Soluzione. Potrebbe essere utile un programma di calcolo
Esercizi di Programmazione Prolog
Esercizi di Programmazione Prolog Marco Comini 29 febbraio 2008 Nel seguito useremo il termine PROLOG in contrasto a PROLOG PURO per distinguere Prolog con builtins (come < e is) da quello senza. Inoltre
Algoritmi e Principi dell Informatica
Algoritmi e Principi dell Informatica Appello del 21 Febbraio 2013 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 3 ore. Chi deve sostenere solo il modulo di Informatica
Quiz sui linguaggi regolari
Fondamenti dell Informatica 1 semestre Quiz sui linguaggi regolari Prof. Giorgio Gambosi a.a. 2016-2017 Problema 1: Data l espressione regolare a, definita su {a, b}, descrivere il linguaggio corrispondente
n deve essere maggiore di 0, altrimenti il metodo restituisce null.
Esercizio 1 di classe Intersezione che presi in input due Array di int A e B, restituisce in output un array contenente gli elementi presenti sia in A che in B. Esercizio 2 di classe identità che prende
Frequenza lettere in inglese
Frequenza lettere in inglese Sequenza random (entropia log 27 = 4.75): XFOML RXKHRJFFJUJ ZLPWCFWKCYJ FFJEYVKCQSGHYDĚ Sequenza basata su frequenze (entropia circa 4.1): OCRO HLI RGWR NMIELWIS EU LL NBNESEBYAĚ
