Kuralları
Görev
Dizeler veya listeler / diziler olarak girilen iki not verildiğinde, birbirinden kaç tane yarı ton hesapladığını (notların kendileri de dahil) hesaplayarak sayı olarak çıktı alın.
Bir yarı ton açıklaması:
Bir yarı ton, klavyede bir adım yukarı veya aşağıdır. Bir örnek C ila C # 'dır. Notun altında görebileceğiniz gibi C beyaz bir notta ve C # ise sadece siyah nottur. Yarı tonlar, aşağıdakiler dışında, siyah nottan sonraki beyaz notaya yukarı veya aşağı doğru atılımdır:
- B'den C'ye
- C'den B'ye
- E'den F'ye
- E ila E
Örnekler
'A, C' -> 4
'G, G#' -> 2
'F#, B' -> 6
'Bb, Bb' -> 13
kurallar
- İki nota arasındaki en büyük mesafe 13 yarı tondur.
- Girilen ikinci not her zaman ilk girilen notun üstünde olacaktır.
- Girdiyi bir dize veya bir dizi / liste olarak alabilirsiniz. Bir dize olarak alırsanız, notlar virgülle ayrılır (örneğin
String -> 'A, F'
,Array -> ['A', 'F']
). - Her zaman iki geçerli not alacağınızı varsayabilirsiniz.
- Keskinler olarak
#
ve daireler de gösterilecektir.b
- Kodunuz enharmonik eşdeğerleri desteklemelidir (örneğin, hem F # hem de Gb'yi desteklemesi gerekir)
- Kodunuzun, adlandırılmış, ancak keskin veya düz olmayan bir adla desteklenmesi gerekmez (yani, E # veya Cb'yi desteklemeniz gerekmez). Bonus puanınız olsa kodunuz destekliyorsa bonus puan.
- Kodunuzun çift keskinlik veya çift daire desteklemesi gerekmez.
- Hem aynı notaları hem de aynı perdeyi (örn. 'Gb, Gb' veya 'A #, Bb') alırsanız, ikincinin birincinin üzerinde bir oktav olmayacağını varsayabilirsiniz.
- Bu kod golf, bu yüzden en az sayıda bayt olan cevap kazanır.
Cb
Veya gibi notlara hitap etmek zorunda mıyız E#
? Peki ya çift keskinlikler / daireler?
(X, Y]
C ila C # 1 yarı ton ve C ila C 12 yarı ton olduğu şekilde temsil edilir .
G -> G#
çünkü ikisi de dahil.