ที่เกี่ยวข้อง: เพลง: มีอะไรในคอร์ดนี้? , หมายเหตุ tablature , ฝ่ายผลิตแท็บกีต้าร์? , แปลคู่จำนวนบันทึกกีตาร์
ให้นิ้วกีตาร์เอาท์พุทคอร์ดที่มันหมายถึง คุณสามารถใช้อินพุตและเอาต์พุตมาตรฐานหรือเขียนฟังก์ชันที่ส่งคืนสตริง
การป้อนข้อมูลด้วยนิ้วจะจัดเป็นหนึ่งในคอร์ดต่อไปนี้ที่จะแสดงดังต่อไปนี้ (ถ้าบันทึกรูทเป็น C):
- คณะสาม
C
- รองลงมา:
Cm
- (เด่น) เจ็ด:
C7
- น้อยเจ็ด:
Cm7
คอร์ดอาจจะกลับด้านดังนั้นคุณไม่สามารถเชื่อใจโน้ตที่ต่ำที่สุดว่าเป็นราก คุณไม่สามารถเชื่อใจได้ว่าสิ่งนี้เป็นนิ้วที่ง่ายหรือเป็นเรื่องธรรมดาในโลกแห่งความเป็นจริง โดยทั่วไปเอาต์พุตของโปรแกรมของคุณจะต้องละเว้นอ็อกเทฟของพิทช์และปฏิบัติต่อพิทช์ทั้งหมดที่สอดคล้องกับโน้ตเพลงเดียวกัน (เช่นA
) เท่ากัน
นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ
รูปแบบอินพุต
อินพุตเป็นชุดของค่า 6 ค่าที่ระบุสำหรับแต่ละสายของกีตาร์ 6-string ในการปรับแต่งมาตรฐาน (EADGBE) ซึ่งทำให้ไม่สบายใจที่สตริงนั้นจะเล่น มันอาจบ่งบอกว่าสายไม่ได้เล่นเลย หงุดหงิด "zeroth" เป็นที่รู้จักกันว่าตำแหน่งที่เปิดและทำให้ไม่สบายใจจำนวนนับจากที่นั่น สมมติว่ากีต้าร์มีตำแหน่งหงุดหงิด 21 ตำแหน่งซึ่งตำแหน่งหงุดหงิดสูงสุดคือหมายเลข 20
ตัวอย่างเช่นอินพุตX 3 2 0 1 0
หมายถึงการวางนิ้วมือที่ตำแหน่งต่อไปนี้ที่ด้านบนของคอกีตาร์:
(6th) |---|---|---|---|---
|-X-|---|---|---|---
|---|---|---|---|---
|---|-X-|---|---|---
|---|---|-X-|---|---
(1st) |---|---|---|---|---
และก้าวเดินสายที่ 2 ถึงสายที่ 6 มันสอดคล้องกับแท็บ ASCIIนี้:
e |-0-|
B |-1-|
G |-0-|
D |-2-|
A |-3-|
E |---|
คุณมีความยืดหยุ่นในการเลือกประเภทของการป้อนข้อมูลที่คุณต้องการ: แต่ละตำแหน่งที่ไม่สบายใจสามารถแสดงเป็นสตริงหรือตัวเลข สายกีต้าร์ที่ไม่ได้เล่นมักจะระบุด้วยX
แต่คุณสามารถเลือกค่า Sentinel ที่แตกต่างได้ถ้ามันทำให้คุณง่ายขึ้น (เช่น-1
ถ้าคุณกำลังใช้ตัวเลข) ชุดของตำแหน่งที่หงุดหงิด 6 ตำแหน่งสามารถป้อนเป็นรายการอาร์เรย์หรือลำดับใด ๆ ก็ได้สตริงที่คั่นด้วยช่องว่างเดียวหรือเป็นอินพุตมาตรฐาน - อีกครั้งที่คุณเลือก
คุณสามารถพึ่งพาอินพุตที่สอดคล้องกับหนึ่งใน 4 ชนิดของคอร์ดที่กล่าวถึงข้างต้น
โปรดอธิบายในโพสต์ของคุณว่ารูปแบบการป้อนข้อมูลของคุณเป็นอย่างไร
รูปแบบผลลัพธ์
คุณต้องส่งคืนหรือพิมพ์ไปที่เอาต์พุตมาตรฐานสตริงที่อธิบายคอร์ดที่ใช้สำหรับ สตริงนี้ประกอบด้วยสองส่วนที่ต่อกัน การใช้อักษรตัวพิมพ์ใหญ่มีความสำคัญ อนุญาตช่องว่างต่อท้าย
ส่วนแรกแสดงให้เห็นโน้ตราก , หนึ่งA
, A#
/ Bb
, B
, C
, C#
/ Db
, D
, D#
/ Eb
, E
, F
, F#
/ Gb
, G
หรือ/G#
Ab
(ฉันใช้#
แทน♯
และb
แทน♭
เพื่อหลีกเลี่ยงการกำหนด Unicode.) บันทึกรากที่สามารถแสดงได้โดยไม่ต้องมีคมหรือแบนจะต้องแสดงโดยที่พวกเขา (ไม่เคยส่งออกB#
, Fb
หรือDbb
); ผู้ที่ไม่สามารถแสดงด้วยสัญลักษณ์คมหรือแบนเดียว (เช่นอย่างใดอย่างหนึ่งC#
หรือDb
แต่ไม่เคยB##
) กล่าวอีกนัยหนึ่งคุณต้องลดจำนวนอุบัติเหตุ (ชาร์ปหรือแฟลต) ให้น้อยที่สุดในชื่อโน้ต
ส่วนที่สองแสดงถึงประเภทของคอร์ดไม่ว่าจะว่างเปล่าสำหรับคณะสามหรือm
กลุ่มรอง7
สำหรับกลุ่มที่เจ็ดหรือm7
สำหรับกลุ่มที่เจ็ด ดังนั้น G ที่สำคัญคือการส่งออกก็เป็นG
ในขณะที่เจ็ดD♯เล็ก ๆ น้อย ๆ อาจจะออกเป็นอย่างใดอย่างหนึ่งหรือD#m7
Ebm7
ตัวอย่างเพิ่มเติมสามารถพบได้ในกรณีทดสอบในตอนท้าย
ทฤษฎีและคำใบ้
โน้ตดนตรี
ระดับสีมี 12 สนามต่อคู่ เมื่อปรับให้เท่ากันนิสัยแต่ละสนามเหล่านี้เป็นสิ่งที่ห่างไกลอย่างเท่าเทียมกันจากประเทศเพื่อนบ้าน1 สนามที่มี 12 semitonesห่างกัน (อ็อกเทฟ) ถือว่าเป็นโน้ตดนตรีเดียวกัน ซึ่งหมายความว่าเราสามารถรักษาโน้ตได้เช่นจำนวนเต็มโมดูโล 12 จาก 0 ถึง 11 เจ็ดรายการเหล่านี้จะได้รับชื่อตัวอักษร2จาก A ถึง G ซึ่งไม่เพียงพอที่จะตั้งชื่อทั้ง 12 สนาม แต่เพิ่มการแก้ไขอุบัติเหตุโดย: เพิ่ม♯ ( คมชัด) สำหรับโน้ตทำให้หนึ่ง semitone สูงขึ้นและการเพิ่ม flat (แฟล็ต) ทำให้หนึ่ง semitone ต่ำลง
คอร์ด
คอร์ดคือ 2 หรือมากกว่าบันทึกเล่นด้วยกัน ประเภทของคอร์ดขึ้นอยู่กับความสัมพันธ์ระหว่างบันทึกซึ่งสามารถกำหนดได้โดยระยะทางระหว่างพวกเขา คอร์ดมีรูทโน้ตตามที่กล่าวไว้ก่อนหน้านี้ เราจะถือว่ารูทโน้ตเป็น 0 ในตัวอย่างเหล่านี้ แต่นี่เป็นเรื่องที่ไม่แน่นอนและสิ่งที่สำคัญในความท้าทายนี้คือระยะห่างระหว่างโน้ตในโมดูโลคณิตศาสตร์ ก็จะเป็นหนึ่งในประเภทคอร์ดที่ไม่ซ้ำกันสำหรับคำตอบทั้งสามหรือคอร์ดที่เจ็ด โน้ตรูทนั้นจะไม่ได้เป็นระดับเสียงต่ำสุดเสมอไป เลือกบันทึกย่อที่คุณสามารถอธิบายคอร์ดเป็นหนึ่งในสี่ประเภทต่อไปนี้:
- หลักสาม
0 4 7
เป็นคอร์ดกับบันทึกที่ - สามรองลงมา
0 3 7
คือคอร์ดกับบันทึกที่ - ที่โดดเด่น (หรือที่สำคัญ / เล็กน้อย) เจ็ด
0 4 7 10
คอร์ดมีการบันทึก - เล็กน้อย (หรือรายย่อย / เล็กน้อย) เจ็ด
0 3 7 10
คอร์ดมีการบันทึก 3
การปรับจูนกีตาร์
การปรับจูนแบบมาตรฐานของกีตาร์ 6-string เริ่มต้นด้วย E บนสตริงที่ต่ำที่สุดจากนั้นจะบันทึกโน้ตเป็นระยะ 5, 5, 5, 4 และ 5 เซมิโคลนขึ้นไป การ E ต่ำสุดเป็น 0 หมายถึงนี้ก้าวเดินทุกสายของกีต้าร์ช่วยให้คุณโหมโรงเลข0 5 10 15 19 24
ที่โมดูโล 12 เทียบเท่ากับหรือบันทึก0 5 10 3 7 0
E A D G B E
ทำงานตัวอย่าง
ถ้าใส่ของคุณ0 2 2 0 0 0
สอดคล้องนี้เพื่อบันทึกE B E G B E
ดังนั้นเพียงแค่ E, B และกรัมรูปแบบเหล่านี้คอร์ดEm
ซึ่งสามารถมองเห็นได้ด้วยเลขพวกเขามีรากเป็น E 0 3 7
ให้เรา (ผลลัพธ์จะเหมือนกันสำหรับX 2 X 0 X 0
หรือ12 14 14 12 12 12
.)
หากอินพุตของคุณคือการ4 4 6 4 6 4
นับหมายเลขเหล่านี้ด้วยรูทของC♯ให้7 0 7 10 4 7
หรือ0 4 7 10
ดังนั้นคำตอบคือC#7
(หรือDb7
) หากเป็นเช่น4 4 6 4 5 4
นั้นการนับจะให้7 0 7 10 3 7
หรือ0 3 7 10
ซึ่งก็คือC#m7
(หรือDbm7
)
กรณีทดสอบ
X 3 2 0 1 0 ---> C
0 2 2 0 0 0 ---> Em
X 2 X 0 X 0 ---> Em
4 4 6 4 6 4 ---> C#7 (or Db7)
4 4 6 4 5 4 ---> C#m7 (or Dbm7)
0 2 2 1 0 0 ---> E
0 0 2 2 2 0 ---> A
X X 4 3 2 2 ---> F# (or Gb)
3 2 0 0 0 1 ---> G7
X X 0 2 1 1 ---> Dm7
3 3 5 5 5 3 ---> C
4 6 6 5 4 4 ---> G# (or Ab)
2 2 4 4 4 5 ---> B7
0 7 5 5 5 5 ---> Am7
7 6 4 4 X X ---> B
8 6 1 X 1 3 ---> Cm
8 8 10 10 9 8 --> Fm
0 19 5 16 8 7 --> Em
6 20 0 3 11 6 --> A# (or Bb)
X 14 9 1 16 X --> G#m (or Abm)
12 14 14 12 12 12 --> Em
15 14 12 12 12 15 --> G
20 X 20 20 20 20 --> Cm7
X 13 18 10 11 10 --> A#7 (or Bb7)
1ตามลอการิทึมของความถี่
2หรือในSolfègeชื่อชอบทำใหม่ไมล์ ในการท้าทายนี้ใช้ชื่อตัวอักษร
3สิ่งนี้อาจเรียกได้ว่าเป็นคอร์ดที่หกที่สำคัญโดยมีทางเลือกที่แตกต่างกันของโน๊ตรูท ในการท้าทายนี้ให้เรียกชื่อนี้ด้วยชื่อที่รองลงมาที่เจ็ด