Musica, musica!
Tradizionalmente, le sette note della scala musicale vengono denominate in Italia do, re, mi, fa, sol, la, si.
Le stesse note nel sistema anglosassone vengono indicate con le prime lettere dell’alfabeto: A, B, … G, con
DO <--> CRE <--> DMI <--> EFA <--> FSOL <--> GLA <--> ASI <--> B
Si scriva un programma che, data una stringa di note nel sistema anglosassone, lasci sul nastro le note equivalenti nel sistema italiano, separate da un punto.
| Nastro iniziale | Nastro finale | ? | |
|---|---|---|---|
| 1° | CCDCFE | DO.DO.RE.DO.FA.MI | Tanti auguri |
| 2° | CDECCDECEFGEFG | DO.RE.MI.DO.DO.RE.MI.DO.MI.FA.SOL.MI.FA.SOL | Fra’ Martino |
| 3° | BACBAC | SI.LA.DO.SI.LA.DO | Zerlina cede alle lusinghe di Don Giovanni (Mozart) |
Diagramma di stato

- Nello stato 0 legge uno dei caratteri A, B, C, D, E, F, G
- Se legge la A, la cancella, va tutto a destra per scrivere .LA, ritorna a sinistra e ricomincia
- Se legge la B, la cancella, va tutto a destra per scrivere .SI …
- …
- Se legge la G, la cancella, va tutto a destra per scrivere .SOL …
- Negli stati A, B, C, D, E, F, G salta qualsiasi carattere A, B, C, D, E, F, G, I, L, O, R, M, S, . per andare a destra
- Negli stato R salta qualsiasi carattere A, B, C, D, E, F, G, I, L, O, R, M, S, . per ritornare a sinistra
- Se nello stato 0 legge il punto, lo cancella e si arresta
| A | B | … | S | . | – | |
|---|---|---|---|---|---|---|
| 0 | A, -, > | B, -, > | … | — | H, -, > | — |
| A | A, A, > | A, B, > | … | A, S, > | A, ., > | A1, ., > |
| A1 | — | — | — | — | — | A2, L, > |
| A2 | — | — | — | — | — | R, A, < |
| B | B, A, > | B, B, > | … | B, S, > | B, ., > | B1, ., > |
| B1 | — | — | — | — | — | B2, S, > |
| B2 | — | — | — | — | — | R, I, < |
| … | … | … | … | … | … | … |
| R | R, A, < | R, B, < | … | R, S, < | R, ., < | 0, -, > |
Quintuple
(0, [ABCDEFG], [ABCDEFG], -, >)
(0, ., H, -, >)
(A, [A..Z.], A, [A..Z.], >)
(A, -, A1, ., >)
(A1, -, A2, L, >)
(A2, -, R, A, <)
(B, [A..Z.], B, [A..Z.], >)
(B, -, B1, ., >)
(B1, -, B2, S, >)
(B2, -, R, I, <)
(C, [A..Z.], C, [A..Z.], >)
(C, -, C1, ., >)
(C1, -, C2, D, >)
(C2, -, R, O, <)
(D, [A..Z.], D, [A..Z.], >)
(D, -, D1, ., >)
(D1, -, D2, R, >)
(D2, -, R, E, <)
(E, [A..Z.], E, [A..Z.], >)
(E, -, E1, ., >)
(E1, -, E2, M, >)
(E2, -, R, I, <)
(F, [A..Z.], F, [A..Z.], >)
(F, -, F1, ., >)
(F1, -, F2, F, >)
(F2, -, R, A, <)
(G, [A..Z.], G, [A..Z.], >)
(G, -, G1, ., >)
(G1, -, G2, S, >)
(G2, -, G3, O, >)
(G3, -, R, L, <)
(R, [A..Z.], R, [A..Z.], <)
(R, -, 0, -, >)
- Ha letto una nota e va nello stato corrispondente
- Ha letto il punto, non ci sono più note
- …
- Salta tutto per scrivere “.LA”
- …
- …
- …
- …
- Salta tutto per scrivere “.SI”
- …
- …
- …
- …
- Salta tutto per scrivere “.DO”
- …
- …
- …
- …
- Salta tutto per scrivere “.RE”
- …
- …
- …
- …
- Salta tutto per scrivere “.MI”
- …
- …
- …
- …
- Salta tutto per scrivere “.FA”
- …
- …
- …
- …
- Salta tutto per scrivere “.SOL”
- …
- …
- …
- …
- …
- Ritorna a sinistra
- Arrivato a sinistra, ricomincia