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

doremifasollasi
CDEFGAB

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)

Algoritmo

  • 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.
CodiceCommenti
(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, va in Halt
(A,[A..Z.],A,[A..Z.],>)Salta tutto per scrivere .LA
(A,-,A1,.,>)Scrive .
(A1,-,A2,L,>)Scrive L
(A2,-,R,A,<)Scrive A
(R,[A..Z.],R,[A..Z.],<)Salta tutto per tornare a sinistra
(R,-,0,-,>)Arriva a sinistra, ricomincia

Lascia un commento