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 (andato->andata) 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

Edit | Attach | Watch | Print version | History: r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r4 - 2017-03-23 - AndreaSterbini






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback