mercoledì 29 luglio 2009

RDS Kata

RDS è l'acronimo di Radio Data System. Si tratta di uno standard europeo per l'invio di dati digitali attraverso le trasmissioni radio in FM. Tra le informazioni inviate esiste uno spazio riservato all'invio di un identificativo di 64 caratteri alfanumerici (RT) che può essere liberamente utilizzato dall'emittente. La quasi totalità delle stazioni radio utilizza questo spazio per inviare il nome della radio su cui si è sintonizzati. In alcuni casi però informazioni supplementari riguardo alle trasmissioni in corso, per esempio titolo e autore della canzone, vengono trasmesse al posto del nome. Sfortunatamente i ricevitori in grado di visualizzare tutti i 64 caratteri (per intero o grazie allo scrolling) non sono molte, la maggior parte hanno display a 8 caratteri. C'è chi allora si è ingegnato cercando di aggirare il problema. Vorrei prendere spunto da quest'idea per proporre il seguente kata.

Obbiettivo
Produrre un applicazione che prende in input autore, titolo e anno di un brano musicale e che sappia inviare a un ricevitore dotato di display a 8 caratteri il testo suddiviso in parti. Le emittenti che usano questa tecnica, lasciano il testo per alcuni secondi prima di passare al successivo. Ignoriamo il tempo che passa usando il metodo RadioStation.sendNextTextOn(RadioReceiver) che a ogni chiamata visualizza il testo successivo.

Requisiti

- quando non c'è un brano musicale viene inviato al display il nome della radio: "SIAgile "
- dopo aver inviato autore, brano e anno si invia di nuovo il nome della radio
- le parole più lunghe di 8 caratteri vengono inviate per intero (alcuni display possono avere più di 8 caratteri)
- se la somma di due parole consecutive più lo spazio è minore o uguale a 8 il testo viene inviato in un colpo solo, ad esempio "Il cielo" o "Io e te "
- la regola della somma delle parole vale separatamente per autore, titolo e anno. Non si vedrà mai "Io 2009 "
- il testo visualizzato è sempre centrato, ad esempio " Domani " o " Adesso "
. Per testi con numero di caratteri dispari ci sarà uno spazio in più a destra.

Nel prossimo post una mia soluzione in Java che utilizzerò come confronto per la Milestone One. Chi volesse partecipare e proporre soluzioni in qualunque linguaggio (anche Java) è il benvenuto.

3 commenti:

  1. kata interessante.
    Perché hai cambiato idea?
    Avevi detto che l'avresti voluto farlo in python!
    ;-)

    RispondiElimina
  2. Ecco una possibile realizzazione del Kata:
    http://www.francolombardo.net/rds-kata_post-90.html

    Ciao

    Franco

    RispondiElimina
  3. Simpatico contributo, Franco.
    Potresti allegare anche i test con cui l'hai esercitato? Così farne un refactoring per ridurre la complessità ciclomatica diventa più sicura e semplice.

    RispondiElimina