Hızlı müzik tazeleme:
Piyano klavyesi 88 notadan oluşmaktadır. Her oktavda, 12 nota vardır C, C♯/D♭, D, D♯/E♭, E, F, F♯/G♭, G, G♯/A♭, A, A♯/B♭
ve B
. Bir 'C' ye her basışınızda, desen bir oktav daha yükseğe tekrarlar.
Bir not benzersiz klavyenin 0 8. ilk üç notlar arasında bir sayıdır 1) herhangi bir kavuz veya düz yüzeylerin de dahil olmak üzere harf, ve 2) oktav tanımlanır vardır A0, A♯/B♭
ve B0
. Bundan sonra oktav 1. C1, C♯1/D♭1, D1, D♯1/E♭1, E1, F1, F♯1/G♭1, G1, G♯1/A♭1, A1, A♯1/B♭1
ve kromatik tam kromatik ölçek gelir B1
. Bu, 2, 3, 4, 5, 6 ve 7 oktavlarda tam bir kromatik ölçek geldikten sonra, son nota C8
.
Her nota 20-4100 Hz aralığında bir frekansa karşılık gelir. İle A0
tam olarak 27,500 hertz başlayarak karşılık gelen her nota iki veya kabaca 1.059463 önceki nota süreleri onikinci köküdür. Daha genel bir formül:
n, notun numarasıdır; A0, 1'dir. ( Burada daha fazla bilgi var )
Meydan okuma
Bir notu temsil eden bir dizgede geçen ve bu notun sıklığını yazdırır veya döndüren bir program veya işlev yazın. #
Keskin sembol (ya da sizin gençler için hashtag) için bir pound işareti b
ve düz sembol için bir küçük harf kullanacağız . Tüm girişler (uppercase letter) + (optional sharp or flat) + (number)
boşluksuz olarak görünecektir . Giriş klavyenin aralığının dışındaysa (A0'dan düşük veya C8'den yüksek) veya geçersiz, eksik veya fazladan karakterler varsa, bu geçersiz bir giriştir ve işlemeniz gerekmez. Ayrıca, E # veya Cb gibi garip girdiler almayacağınızı da güvenle kabul edebilirsiniz.
Hassas
Sonsuz hassasiyet gerçekten mümkün olmadığından , gerçek değerin bir kuruşundaki herhangi bir şeyin kabul edilebilir olduğunu söyleyeceğiz . Aşırı ayrıntıya girmeden, bir yüzde iki veya 1.0005777895'in 1200. köküdür. Bunu daha açık hale getirmek için somut bir örnek kullanalım. Diyelim ki girişiniz A4. Tam bu kayda değer 440 Hz'dir. Bir kez yüzde düz 440 / 1.0005777895 = 439.7459
. Yüzde keskin olduğu için 440 * 1.0005777895 = 440.2542
, 439.7459'dan büyük ancak 440.2542'den küçük herhangi bir sayı sayılacak kadar kesindir.
Test durumları
A0 --> 27.500
C4 --> 261.626
F#3 --> 184.997
Bb6 --> 1864.66
A#6 --> 1864.66
A4 --> 440
D9 --> Too high, invalid input.
G0 --> Too low, invalid input.
Fb5 --> Invalid input.
E --> Missing octave, invalid input
b2 --> Lowercase, invalid input
H#4 --> H is not a real note, invalid input.
Geçersiz girişleri işlemeniz gerekmediğini unutmayın. Programınız gerçek girişlermiş gibi görünüyorsa ve bir değer yazıyorsa, bu kabul edilebilir. Programınız çökerse, bunun da kabul edilebilir olduğunu. Bir tane aldığında her şey olabilir. Giriş ve çıkışların tam listesi için bu sayfaya bakın.
Her zaman olduğu gibi, bu kod golf, bu yüzden standart boşluklar geçerlidir ve baytlarda en kısa cevap kazanır.
H
nedir? H
B anlamı AFAIK sadece Almanca konuşulan ülkelerde kullanılır. ( B
bu arada Bb anlamına gelir.) İngilizlerin ve İrlandalıların B dedikleri şey, İspanya ve İtalya'da Do Re Mi Fa Sol La Si'deki gibi Si veya Ti denir.
H
göre, Almanya, Çek Cumhuriyeti, Slovakya, Polonya, Macaristan, Sırbistan, Danimarka, Norveç, Finlandiya, Estonya ve Avusturya'da kullanılan Wikipedia . (Ayrıca kendim de Finlandiya için onaylayabilirim.)