Arka fon
Batı müziğinde her müzik notasının atanmış bir adı vardır. Her oktav içinde, aşağıdaki sırayla on iki benzersiz not vardır: "CC # / Db DD # / Eb EFF # / Gb GG # / Ab AA # / Bb B C", burada son C birinciden bir oktavdır.
Farklı oktavların notları arasındaki farkı söylemek için, not adının sonuna bir sayı (tek bir rakamla sınırlandırılmış bu meydan okuma için) eklenir. Dolayısıyla C5, C4'ün üzerinde bir oktav olan nottur. Bb6, B5'in üzerindedir.
Önemli bir gerçek, B5 ve C6'nın yan yana olan notlar olduğu ve C0 ve B9'un en düşük ve en yüksek notalar olduğudur.
Herhangi iki nota arasında, aralarındaki yarı tonların sayısı olan bir mesafe vardır. Bb4, C4'ün altında bir yarı ton olan B4'ün altında bir yarı tondur. Bir oktavda on iki yarı ton vardır, bu nedenle Bb4, A # 3'ten 12 mesafedir, çünkü üzerinde bir oktav vardır (tek bir notun en fazla iki isme sahip olabileceğine dikkat edin).
Meydan okuma
Zorluğunuz STDIN'den müzik notalarının bir listesini alabilecek ve aralık değişiklikleri listesini STDOUT'a yazdırabilecek en kısa programı yazmaktır.
Giriş, boşlukla ayrılmış müzik notalarının bir listesi olacaktır. Her not bir büyük harf AG, isteğe bağlı bir b veya # işaretinden ve tek haneli bir rakamdan oluşacaktır. E # / Fb veya B # / Cb ile uğraşmak zorunda kalmayacaksınız. Örnek girdi:
C4 D4 E4 F4 G4 A4 B4 C5 C4
Çıktı, her ardışık nota arasındaki mesafeyi temsil eden ve notanın kendisinden önceki sayıya göre artan mı yoksa azalan mı olduğunu göstermek için her zaman + veya - ile ön ekli olarak boşlukla ayrılmış bir tamsayı listesi olacaktır. Girilen notlardan her zaman daha az bir sayı verilir. Yukarıdaki giriş için örnek çıktı:
+2 +2 +1 +2 +2 +2 +1 -12
Bazı örnek girişler:
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
Ve ilgili çıktıları:
-1 +1 -5 +5 +2 -2 -5
+11 +11 +11 +11 +11 +11 +11
+1 -2 +3 -4 +5
Kurallar ve Kısıtlamalar
Kazanan, kaynak koddaki karakter sayısına göre belirlenir
Programınız yalnızca yazdırılabilir ASCII karakterlerden oluşmalıdır
Müzik veya sesle ilgili herhangi bir yerleşik işlevi kullanmanıza izin verilmiyor
Bunun dışında standart kod golf kuralları geçerlidir
+0
mı-0
yoksa0
iki özdeş not mu?