sfondo
Nella musica occidentale, ogni singola nota musicale ha un nome assegnato. All'interno di ogni ottava, ci sono dodici note uniche nel seguente ordine: "CC # / Db DD # / Eb EFF # / Gb GG # / Ab AA # / Bb B C", dove la C finale è un'ottava sopra la prima.
Per dire la differenza tra note di ottave diverse, un numero (per questa sfida limitato a una singola cifra) viene aggiunto alla fine del nome della nota. Pertanto, C5 è la nota che è un'ottava sopra C4. Bb6 è sopra B5.
Un fatto importante è che B5 e C6 sono note che si trovano una accanto all'altra e che C0 e B9 sono le note più basse e più alte.
Tra due note qualsiasi, c'è una distanza che è il numero di semitoni tra loro. Bb4 è un semitono al di sotto di B4, che è esso stesso un semitono al di sotto di C5. Ci sono dodici semitoni in un'ottava, quindi Bb4 è una distanza di 12 da A # 3 poiché è un'ottava sopra di essa (nota come una singola nota può avere fino a due nomi).
La sfida
La tua sfida è quella di scrivere il programma più breve possibile che può prendere un elenco di note musicali da STDIN e stampare l'elenco delle modifiche agli intervalli su STDOUT.
L'input sarà un elenco separato da spazi di note musicali. Ogni nota sarà composta da una lettera maiuscola AG, un segno b o # opzionale e un numero a una cifra. Non dovrai avere a che fare con E # / Fb o B # / Cb. Esempio di input:
C4 D4 E4 F4 G4 A4 B4 C5 C4
L'output sarà un elenco di numeri interi separati da spazio che rappresentano la distanza tra ogni nota successiva, sempre preceduta da un + o - per mostrare se la nota era crescente o decrescente rispetto a quella precedente. Verrà sempre emesso un numero in meno rispetto alle note immesse. Esempio di output per l'input sopra:
+2 +2 +1 +2 +2 +2 +1 -12
Alcuni altri input di esempio:
E5 D#5 E5 B4 E5 F#5 E5 B4
C0 B0 Bb1 A2 G#3 G4 F#5 F6
G4 Ab4 Gb4 A4 F4 A#4
E i loro corrispondenti output:
-1 +1 -5 +5 +2 -2 -5
+11 +11 +11 +11 +11 +11 +11
+1 -2 +3 -4 +5
Regole e restrizioni
Il vincitore è determinato dal numero di caratteri nel codice sorgente
Il programma dovrebbe essere composto solo da caratteri ASCII stampabili
Non è consentito utilizzare alcun tipo di funzione integrata correlata alla musica o al suono
Oltre a ciò, si applicano le regole standard per il golf
+0
o-0
o0
per due note identiche?