Edizione VII – Problema 1

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 <--> C
  • RE <--> D
  • MI <--> E
  • FA <--> F
  • SOL <--> G
  • LA <--> A
  • SI <--> 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 inizialeNastro finale?
CCDCFEDO.DO.RE.DO.FA.MITanti auguri
CDECCDECEFGEFGDO.RE.MI.DO.DO.RE.MI.DO.MI.FA.SOL.MI.FA.SOLFra’ Martino
BACBACSI.LA.DO.SI.LA.DOZerlina cede alle lusinghe di Don Giovanni (Mozart)

Diagramma di stato

  • 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, …
  • Se nello stato 0 legge il punto, lo cancella e si arresta.

Quintuple

(0, A, A, -, >)Ha letto la A
(0, B, B, -, >)Ha letto la B
(0, C, C, -, >)Ha letto la C
(0, D, D, -, >)Ha letto la D
(0, E, E, -, >)Ha letto la E
(0, F, F, -, >)Ha letto la F
(0, G, G, -, >)Ha letto la G
(0, ., H, -, >)Ha letto il punto, non ci sono più note
(A, [A..Z.], A, [A..Z.], >)Salta tutto per scrivere “.LA”
(A, -, A1, ., >)Scrive .
(A1, -, A2, L, >)Scrive L
(A2, -, R, A, <)Scrive A
(B, [A..Z.], B, [A..Z.], >)Salta tutto per scrivere “.SI”
(B, -, B1, ., >)Scrive .
(B1, -, B2, S, >)Scrive S
(B2, -, R, I, <)Scrive I
(R,[A..Z.], R, [A..Z.],<)Ritorna a sinistra
(R,-,0,-,>)Arrivato a sinistra, ricomincia

Lascia un commento