แนวทาง
งาน
เมื่อได้รับโน้ตสองรายการให้ป้อนเป็นสตริงหรือรายการ / อาร์เรย์คำนวณจำนวนเซมิโคลอนแยกออกเป็นสองส่วน
คำอธิบายของ semitone:
semitone เป็นขั้นตอนเดียวขึ้นหรือลงบนคีย์บอร์ด ตัวอย่างคือ C ถึง C # ดังที่คุณเห็นด้านล่างโน้ต C อยู่ในโน้ตสีขาวและ C # คือโน้ตดำด้านบน Semitones เป็นการกระโดดจากโน้ตดำไปยังโน้ตสีขาวถัดไปขึ้นหรือลงยกเว้น:
- B ถึง C
- C ถึง B
- E ถึง F
- F ถึง E
ตัวอย่าง
'A, C' -> 4
'G, G#' -> 2
'F#, B' -> 6
'Bb, Bb' -> 13
กฎระเบียบ
- ระยะทางที่ใหญ่ที่สุดระหว่างสองโน้ตคือ 13 semitones
- บันทึกที่ป้อนที่สองจะอยู่เหนือบันทึกที่ป้อนครั้งแรกเสมอ
- คุณสามารถรับอินพุตเป็นสตริงหรืออาร์เรย์ / รายการ หากคุณใช้มันเป็นสตริงบันทึกจะคั่นด้วยเครื่องหมายจุลภาค (เช่น
String -> 'A, F'
,Array -> ['A', 'F']
) - คุณสามารถสันนิษฐานได้ว่าคุณจะได้รับโน้ตที่ถูกต้องสองครั้งเสมอ
- Sharps จะแสดงเป็น
#
และแฟลตจะแสดงเป็นb
- รหัสของคุณต้องรองรับการเพิ่มประสิทธิภาพเทียบเท่า (เช่นต้องสนับสนุนทั้ง F # และ Gb)
- รหัสของคุณไม่จำเป็นต้องรองรับบันทึกย่อที่ตั้งชื่อด้วย แต่สามารถตั้งชื่อได้โดยไม่มีความคมหรือแบน (เช่นคุณไม่จำเป็นต้องรองรับ E # หรือ Cb) คะแนนโบนัสหากรหัสของคุณรองรับ
- รหัสของคุณไม่จำเป็นต้องรองรับการแบ่งช่วงแบบสองเท่าหรือสองเท่า
- คุณสามารถสันนิษฐานได้ว่าถ้าคุณได้ทั้งโน้ตตัวเดียวกันหรือพิทช์เดียวกัน (เช่น 'Gb, Gb' หรือ 'A #, Bb') อันดับที่สองจะไม่เท่ากับหนึ่งคู่เหนือระดับแรก
- นี่คือรหัสกอล์ฟดังนั้นคำตอบที่มีจำนวนไบต์น้อยที่สุดจะเป็นผู้ชนะ
Cb
หรือE#
? สิ่งที่เกี่ยวกับ double sharps / flats?
(X, Y]
C ถึง C # คือ 1 semitone และ C to C คือ 12 semitones
G -> G#
เพราะพวกเขาทั้งสองรวมอยู่ด้วย