Latar Belakang
Dalam musik Barat, setiap not tunggal memiliki nama yang ditetapkan. Dalam setiap oktaf, ada dua belas nada unik dalam urutan berikut: "CC # / Db DD # / Eb EFF # / Gb GG # / Ab AA # / Bb B C", di mana C terakhir adalah satu oktaf di atas yang pertama.
Untuk mengetahui perbedaan antara not oktaf yang berbeda, angka (untuk tantangan ini terbatas pada satu digit) ditambahkan ke akhir nama not. Jadi, C5 adalah not yang satu oktaf di atas C4. Bb6 di atas B5.
Fakta penting adalah bahwa B5 dan C6 adalah not yang bersebelahan, dan bahwa C0 dan B9 adalah not terendah dan tertinggi.
Di antara dua not, ada jarak yang merupakan jumlah semitone di antara mereka. Bb4 adalah satu semiton di bawah B4, yang merupakan satu semitone di bawah C5. Ada dua belas semiton dalam satu oktaf, jadi Bb4 adalah jarak 12 dari A # 3 karena itu adalah satu oktaf di atasnya (perhatikan bagaimana satu not dapat memiliki hingga dua nama).
Tantangan
Tantangan Anda adalah menulis program sesingkat mungkin yang dapat mengambil daftar catatan musik dari STDIN dan mencetak daftar perubahan interval ke STDOUT.
Input akan berupa daftar catatan musik yang dipisahkan ruang. Setiap catatan akan terdiri dari huruf besar AG, tanda b atau # opsional, dan satu digit angka. Anda tidak harus berurusan dengan E # / Fb atau B # / Cb. Input contoh:
C4 D4 E4 F4 G4 A4 B4 C5 C4
Output akan berupa daftar bilangan bulat yang dipisahkan oleh spasi yang mewakili jarak antara setiap not berurutan, selalu diawali dengan + atau - untuk menunjukkan apakah not naik atau turun relatif terhadap yang sebelumnya. Akan selalu ada satu nomor lebih sedikit yang dihasilkan dari catatan yang dimasukkan. Contoh output untuk input di atas:
+2 +2 +1 +2 +2 +2 +1 -12
Beberapa contoh input lainnya:
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
Dan output yang sesuai:
-1 +1 -5 +5 +2 -2 -5
+11 +11 +11 +11 +11 +11 +11
+1 -2 +3 -4 +5
Aturan dan Batasan
Pemenang ditentukan oleh jumlah karakter dalam kode sumber
Program Anda harus terdiri dari hanya karakter ASCII yang dapat dicetak
Anda tidak diizinkan menggunakan fungsi bawaan apa pun yang terkait dengan musik atau suara
Selain itu, aturan golf kode standar berlaku
+0
atau-0
atau0
dua catatan identik?