Homework 1 - Anagrammi
Realizzate il programma assembly MIPS che gira sul simulatore MARS e che:
- Legge una stringa testo1 seguita da accapo lunga al massimo 100 caratteri
- Legge una stringa testo2 seguita da accapo lunga al massimo 100 caratteri
- Per ciascuno dei due testi calcola l'istogramma della frequenza delle lettere
- ovvero per ciascuna lettera (codici ascii da 1 a 255) conta quante volte essa appare nel corrispondente testo
- Confronta i due istogrammi così ottenuti e stampa la stringa (seguita da accapo)
- ANAGRAMMA se i due istogrammi sono identici (ovvero le lettere sono tutte presenti lo stesso numero di volte, anche se in ordine diverso)
- SIMILI se i due istogrammi differiscono solo di 1 o 2 (ovvero una o due lettere sono state tolte/aggiunte oppure una è stata scambiata con una diversa)
- DIVERSI se i due istogrammi differiscono di 3 o più
NOTA: se le due stringhe sono vuote (contengono solo accapo) la loro differenza è 0, quindi stampate
ANAGRAMMA
NOTA: se una stringa in input fosse maggiore di 100 caratteri la syscall 8 deve prendere solo i primi 100 ed ignorare i seguenti. (in questo caso la stringa termina con '\0' invece che con '\n')
NOTA: nel confrontare i due istogrammi, per ogni lettera, vi conviene calcolare la differenza di conteggio in valore assoluto.
Esempio
Se i testi sono:
Paperino e' andato al mare con Paperina e Qui, Quo, Qua.
Paperina e' andata al mare con Paperino e Qua, Qui, Quo.
Il programma deve stampare
SIMILI
Infatti, a parte la posizione di alcune coppie di lettere scambiate tra di loro, che non cambia i conteggi per quelle lettere, c'è una sola lettera sostituita con una diversa (andat
o->andat
a) quindi gli istogrammi differiscono di 2. (il conteggio della lettera
o diminuisce di 1 mentre quello della lettera
a aumenta di 1, quindi
|-1|+|+1|=2 )
Test
- Il vostro programma verrà provato su almeno 20 coppie di testi da me generati per verificare i diversi casi.
- La verifica se l'output è corretto è automatica, quindi per evitare di fallire i test NON stampate nessun altro messaggio da programma tranne l'output richiesto.
- Per provare ad eseguire il vostro programma con input/output da file potete usare il comando (in una finestra di comandi)
java -jar Mars4_5.jar me nc sm ic programma.asm < input.txt > output.txt
Consegna entro lunedì 27 marzo 2017 ore 24
- Dovete essere iscritti a twiki
- Chi copia/passa avrà il proprio compito annullato
- Attenti a non inserire caratteri strani (accentate o virgolette inglesi) nel programma
- Potete consegnare più volte, vale solo l'ultima
Consegnate QUI