เมื่อขุดลึกลงไปในโฟลเดอร์ temp ของคุณคุณจะพบว่ามีองค์ประกอบบางอย่างสำหรับเปียโน น่าเสียดายที่องค์ประกอบเหล่านี้เขียนด้วยชื่อโน้ตและระยะเวลาเท่านั้นและคุณมีสิทธิ์เข้าถึงเทอร์มินัลข้อความเท่านั้น ดังนั้นงานของคุณคือการเขียนโปรแกรมเพื่อแสดงองค์ประกอบเป็น ASCII art
อินพุต
โปรแกรมของคุณควรยอมรับสองสายเป็นอินพุต สตริงแรกจะแสดงบันทึกย่อของเจ้าหน้าที่ระดับสูง (พร้อมด้วยเสียงแหลม) ในขณะที่สตริงที่สองจะเป็นตัวแทนบันทึกย่อของพนักงานด้านล่าง
หมายเหตุจะถูกส่งผ่านไปในสัญกรณ์วิทยาศาสตร์ขว้าง บันทึกของพนักงานระดับท็อปจะอยู่ระหว่างC4
และC6
รวมอยู่ด้วยเสมอ บันทึกย่อของพนักงานด้านล่างจะอยู่ระหว่างC2
และC4
รวมอยู่ด้วยเสมอ
1
แต่ละครั้งจะมาพร้อมกับระยะเวลาซึ่งจะเป็นหนึ่งใน: 2
, 4
, 8
, สิ่งเหล่านี้เป็นตัวแทนของบันทึกย่อทั้งหมด (semibreve), ครึ่งโน้ต (ย่อเล็กสุด), บันทึกไตรมาส (crotchet) และโน้ตแปด (quaver) ตามลำดับ
หมายเหตุของระยะเวลาอื่นใดจะไม่ปรากฏในอินพุต
วิธีแยกบันทึกย่อและระยะเวลาและวิธีแยกบันทึกย่อแต่ละรายการจากบันทึกอื่น ๆ ในอินพุทนั้นขึ้นอยู่กับดุลยพินิจของคุณ ต่อไปนี้เป็นตัวอย่างอินพุตสำหรับเจ้าหน้าที่ระดับสูง:
E4/4 A4/8 C#5/8 E5/2
ที่นี่โน้ตจะถูกคั่นด้วยช่องว่างและระยะเวลาจะถูกแยกออกจากโน้ตด้วยเครื่องหมายสแลช delimeter เหล่านี้ไม่ได้รับการแก้ไขและคุณสามารถเลือกที่จะเปลี่ยนหรือละเว้นพวกเขาทั้งหมด
คุณอาจคิดว่ามีอย่างน้อยหนึ่งบันทึกในพนักงานแต่ละคน ไม่มีการพักในอินพุต
เอาท์พุต
โปรแกรมของคุณคือส่งออกคะแนนเป็น ASCII art ซึ่งสอดคล้องกับคำอธิบายต่อไปนี้
Clefs ควรเป็นสิ่งแรกที่ด้านซ้ายของเอาต์พุตของคุณ (ระยะห่างระหว่างเสาทั้งสองไม่ควรเปลี่ยน):
^
| |
------|/----
/
-----/|-----
/ |
---/--__----
| / \
---\-\|-|---
\ | /
------|-----
|
\_/
----___-----
/ \ |
---\---|----
| |
-------/----
/
-----/------
------------
ก้านของโน้ต (เส้นแนวตั้งถัดจากวงกลม) ควรชี้ขึ้นหากโน้ตอยู่ต่ำกว่าเส้นกลางของพนักงาน ควรชี้ลงหากบันทึกย่ออยู่เหนือเส้นกลางของพนักงาน หากบันทึกย่ออยู่บนเส้นตรงกลางก้านอาจชี้ไปในทิศทางใดทิศทางหนึ่ง (ข้อยกเว้นเพียงอย่างเดียวสำหรับโบนัสนี้และเกิดขึ้นเมื่อเชื่อมต่อโน้ตที่แปดซึ่งอธิบายในภายหลัง) ก้านควรเริ่มต้นที่บรรทัดด้านบน / ด้านล่างของวงกลมและเป็น6
บรรทัดที่สูง
บันทึกทุกประเภทยกเว้นบันทึกย่อทั้งหมดมีลำต้น ธงของโน้ตตัวที่แปดแสดงด้วยเครื่องหมายสแลชสองอันบนบรรทัดที่แตกต่างกัน (ดูหมายเหตุตัวอย่างด้านล่าง)
ที่เต็มไปในหัวบันทึก (สำหรับไตรมาสและบันทึกแปด) (@)
เป็นตัวแทนจาก หัวโน้ตว่างเปล่า (สำหรับครึ่งและทั้งบันทึก) ( )
เป็นตัวแทนจาก
ควรวาง Accidentals (sharps, naturals, naturals) ตามที่แสดงในตัวอย่างหมายเหตุโดยมีอักขระหนึ่งตัวระหว่างด้านขวาของอุบัติเหตุและด้านซ้ายของหัวบันทึก
ควรใช้บรรทัดบัญชีแยกประเภทเมื่อจำเป็นและควรเป็น7
อักขระที่มีความยาว
แต่ละโน้ตควรมี12
ความกว้างอักขระ
ตัวอย่างบันทึก:
|_
|_| ( )
| |------
|
------------ ---------|-- ------------ ------------ ------------
|
------------ ---------|-- ---|-------- ------------ ------------
(@) _|_|_ | |_
-----|------ _|_|_-( )--- ---|/-(@)--- ------------ ---------|\-
| | | | | \
-----|------ ------------ -----|------ ------------ ---------|--
| | |
-----|------ ------------ -----|------ ------------ ---------|--
| | / |
|/ --(@)--
quarter note half note eighth note whole note eighth note
sharped flatted natural
หลังจากบันทึกย่อ 12 ตัวให้ปล่อย2 * 12 - 12 = 12
อักขระว่าง (อย่างใดอย่างหนึ่งหรือ
-
ขึ้นอยู่กับบรรทัด) หากบันทึกย่อเป็นบันทึกไตรมาส หากบันทึกย่อเป็นบันทึกย่อครึ่งปล่อย4 * 12 - 12 = 36
อักขระว่างไว้ หากบันทึกย่อเป็นบันทึกย่อทั้งหมดให้ปล่อย8 * 12 - 12 = 84
อักขระว่างไว้ อย่าเพิ่มอักขระพิเศษสำหรับโน้ตตัวที่แปด
ในตอนท้ายของการวัดแต่ละครั้ง (96 ตัวอักษรหลังจากบรรทัด clef หรือบาร์) ให้ส่งออกเป็นแถบเส้น นี้จะกระทำโดยจะลงอักขระระหว่างบนสุดและล่างสุดบรรทัด (รวม) ทุกคนและแทนที่ด้วย
|
และมี-
+
(ดูตัวอย่างผลลัพธ์ที่ด้านล่างของคำถาม)
ในตอนท้ายของชิ้นส่วนเอาท์พุทเพลงจบโดยการส่งออก 3 แถบในแถว แต่มีช่องว่างระหว่างแรกและที่สอง นั่นคือ:
+-++
| ||
+-++
| ||
. ..
. ..
โปรดทราบว่า sharps, flat และ naturals จะคงอยู่จนกระทั่งสิ้นสุดการวัด สัญญาณธรรมชาติควรใช้เพื่อยกเลิกคมหรือแบนที่ใช้ก่อนหน้านี้ในการวัดเดียวกัน
สำหรับจุดประสงค์ของภารกิจนี้ชาร์ปแฟลตและเนเชอรัลมีผลกับโน้ตในอ็อกเทฟเดียวและในโน๊ตเดียว (ความคมชัดของ A5 ไม่ทำให้ A4 คมขึ้นและแบนบน C4 ในทีมอันดับต้น ๆ จะไม่ทำให้เกิด C4 ในเจ้าหน้าที่ด้านล่างจะปัด)
ข้อมูลสำหรับโบนัสเท่านั้น
โบนัสเกี่ยวข้องกับการเชื่อมโยงโน้ตที่แปดอย่างถูกต้อง
เมื่อมีโน้ตตัวที่แปดติดต่อกันสองตัวเรียงลำดับตามจังหวะของตัวโน้ตสี่ตัว (กล่าวอีกนัยหนึ่งคือจำนวนตัวอักษรก่อนโน้ตตัวที่แปดตัวแรกคือทวีคูณของ 24) ตัวโน้ตทั้งแปดตัวที่สองจะเชื่อมต่อกัน
ให้โน้ตAเป็นโน้ตที่ไกลที่สุดจากกลางพนักงาน หากทั้งสองบันทึกอยู่ในระยะเดียวจากกลางทราบอย่างใดอย่างหนึ่งอาจจะทราบ ปล่อยให้คนอื่น ๆ ทราบ พ.ศ. โน้ตB
ทิศทางของทั้งลำต้นควรจะเป็นทิศทางของต้นกำเนิดของโน้ต
ก้านของโน้ตตัวใดตัวหนึ่งควรมี6
ความสูงเป็นเส้น (เช่นในกรณีของลำต้นทั่วไป) และก้านของโน้ตอื่น ๆ ควรขยายไปถึงปลายก้านของโน้ตอีกอัน
_
ลำต้นควรจะเชื่อมต่อกับ
ตัวอย่างบันทึกย่อที่เชื่อมต่อที่แปด:
___________
| |
| |
| |
| | --(@)--
| | | |
------------------------ ---|_----|-----------|-- -----|------------------
|/ (@) | | |_
------------------------ ---------------------|-- -----|--------|_|-(@)---
(@) _|_|_ | | ||
-----|------_|_|_-(@)--- ---------------------|-- -----|-----------|------
| | | | | | |
-----|-----------|------ ---------------------|-- -----|-----------|------
| | | | |
-----|-----------|------ ------------------(@)--- -----|___________|------
| |
|___________|
ตัวอย่างอินพุทและเอาท์พุท
อินพุต :
A#4/4 G#4/4 F#4/2 A#4/4 G#4/4 F#4/2 F#4/8 F#4/8 F#4/8 F#4/8 G#4/8 G#4/8 G#4/8 G#4/8 A#4/4 G#4/4 F#4/2
A#3/4 G#3/4 F#3/2 A#3/4 G#3/4 F#3/2 F#3/2 G#3/2 F#3/4 E#3/4 F#3/2
ผลผลิต :
^
| | | | |
------|/-------------|-----------------------|--------------------------------------------------------------+---------|-----------------------|--------------------------------------------------------------+----------___________-------------___________------------|\----------|\----------|\----------|\-+---------|-----------------------|--------------------------------------------------------------+-++
/ | | | | | | | | | | | | | \ | \ | \ | \| | | | | ||
-----/|--------------|-----------------------|-----------------------|--------------------------------------+---------|-----------------------|-----------------------|--------------------------------------+---------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|--+---------|-----------------------|-----------------------|--------------------------------------+-++
/ | | | | | | | | | | | | | | | | | | | | | | ||
---/--__----_|_|_----|-----------------------|-----------------------|--------------------------------------+_|_|_----|-----------------------|-----------------------|--------------------------------------+---------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|--+_|_|_----|-----------------------|-----------------------|--------------------------------------+-++
| / \ _|_|_ (@) _|_|_ | | |_|_|_ (@) _|_|_ | | | | | | | _|_|_ | | | | |_|_|_ (@) _|_|_ | | | ||
---\-\|-|----|-|--------------------_|_|_-(@)---------------_|_|_----|--------------------------------------+-|-|--------------------_|_|_-(@)---------------_|_|_----|--------------------------------------+_|_|_----|-----------|-----------|-----------|--_|_|_-(@)---------(@)---------(@)---------(@)---+-|-|--------------------_|_|_-(@)---------------_|_|_----|--------------------------------------+-++
\ | / | | _|_|_ ( ) | | | _|_|_ ( ) |_|_|_ (@) (@) (@) (@) | | | | | _|_|_ ( ) | ||
------|------------------------------------------------------|-|--------------------------------------------+-------------------------------------------------|-|--------------------------------------------+-|-|--------------------------------------------------------------------------------------------+-------------------------------------------------|-|--------------------------------------------+-++
| | | | | ||
\_/ | | | | ||
| | | | ||
| | | | ||
| | | | ||
| | | | ||
_|_|_ |_|_|_ | | | ||
----___-----_|_|_-(@)---------------_|_|_-------------------------------------------------------------------+_|_|_-(@)---------------_|_|_-------------------------------------------------------------------+------------------------------------------------_|_|_-------------------------------------------+------------------------------------------------------------------------------------------------+-++
/ \ | | | | _|_|_ (@) _|_|_ | | | | _|_|_ (@) _|_|_ |_|_|_ _|_|_ ( ) |_|_|_ | ||
---\---|---------|-------------------|-|-|------------------_|_|_-( )---------------------------------------+-----|-------------------|-|-|------------------_|_|_-( )---------------------------------------+_|_|_-( )----------------------------------------|-|-|------------------------------------------+_|_|_ (@)---------------_|_|_-------------------------( )---------------------------------------+-++
| | | | | | | | | | | | | | | | | | | | | | _|_|_ (@) | | ||
-------/---------|-----------------------|-----------------------|------------------------------------------+-----|-----------------------|-----------------------|------------------------------------------+-----|-----------------------------------------------|------------------------------------------+-----|-------------------|-|-|-----------------------|------------------------------------------+-++
/ | | | | | | | | | | | | | | | ||
-----/-----------|-----------------------|-----------------------|------------------------------------------+-----|-----------------------|-----------------------|------------------------------------------+-----|-----------------------------------------------|------------------------------------------+-----|-----------------------|-----------------------|------------------------------------------+-++
| | | | | | | | | | | | | ||
-----------------------------------------------------------------|------------------------------------------+-----------------------------------------------------|------------------------------------------+-----|------------------------------------------------------------------------------------------+-----|-----------------------|-----------------------|------------------------------------------+-++
|
เพื่อการสาธิตในการวัดที่สามF#
โน้ตที่แปดนั้นเชื่อมโยงกันในขณะG#
ที่โน้ตที่แปดนั้นไม่ได้ โปรแกรมของคุณควรเชื่อมต่อโน้ตตัวที่แปดเมื่อใดก็ตามที่มีการใช้งาน (สำหรับโบนัส) หรือตัดการเชื่อมต่อทั้งหมด
ข้อมูลอื่น ๆ
- จำนวนช่องว่าง / บรรทัดต่อท้ายใด ๆ ที่ยอมรับได้
- ไม่ควรมีช่องว่างเพิ่มเติมก่อนช่องว่างหรือช่องว่างระหว่างโน้ต จำนวนบรรทัดว่างใด ๆ อาจถูกปล่อยออกมาก่อน / หลังเอาต์พุต
- โบนัสสำหรับการเชื่อมต่อแปดโน้ตเป็นจำนวน 0.75 * ไบต์ของรหัสที่มา
- นี่คือรหัส - กอล์ฟดังนั้นรหัสที่สั้นที่สุดจึงชนะ