Đi sâu vào sâu trong thư mục tạm thời của bạn, bạn tìm thấy một số tác phẩm cho piano. Thật không may, các tác phẩm này chỉ được viết với tên ghi chú và thời lượng và bạn chỉ có quyền truy cập vào một thiết bị đầu cuối văn bản. Do đó, nhiệm vụ của bạn là viết một chương trình để hiển thị các tác phẩm dưới dạng nghệ thuật ASCII.
Đầu vào
Chương trình của bạn nên chấp nhận hai chuỗi làm đầu vào. Chuỗi đầu tiên sẽ đại diện cho các ghi chú của nhân viên hàng đầu (với khóa của âm bổng), trong khi chuỗi thứ hai sẽ đại diện cho các ghi chú của nhân viên dưới cùng.
Các ghi chú sẽ được thông qua trong ký hiệu cao độ khoa học . Ghi chú của nhân viên hàng đầu sẽ luôn luôn ở giữa C4
và C6
bao gồm. Ghi chú của nhân viên dưới cùng sẽ luôn ở giữa C2
và C4
bao gồm.
Mỗi nốt sẽ đi kèm với một thời gian, mà sẽ là một trong: 1
, 2
, 4
, 8
. Chúng đại diện cho toàn bộ một ghi chú (semibreve), một nửa nốt (tối thiểu), một nốt quý (crotchet) và một nốt thứ tám (quaver) tương ứng.
Ghi chú của bất kỳ thời lượng khác sẽ không bao giờ xuất hiện trong đầu vào.
Cách ghi chú và thời lượng được phân tách và cách mỗi ghi chú được tách ra khỏi các ghi chú khác trong đầu vào tùy theo ý của bạn. Sau đây là một đầu vào mẫu cho nhân viên hàng đầu:
E4/4 A4/8 C#5/8 E5/2
Ở đây, các ghi chú được phân tách bằng một khoảng trắng và thời lượng được tách ra khỏi ghi chú bằng dấu gạch chéo về phía trước. Các dấu phân cách này không cố định và bạn có thể chọn thay đổi chúng hoặc bỏ qua chúng hoàn toàn.
Bạn có thể cho rằng có ít nhất một lưu ý trong mỗi nhân viên. Không có phần còn lại trong đầu vào.
Đầu ra
Chương trình của bạn là xuất điểm số dưới dạng nghệ thuật ASCII, tuân theo các mô tả sau.
Các dấu vân tay phải là thứ đầu tiên ở bên trái đầu ra của bạn (khoảng cách giữa hai cột không nên thay đổi):
^
| |
------|/----
/
-----/|-----
/ |
---/--__----
| / \
---\-\|-|---
\ | /
------|-----
|
\_/
----___-----
/ \ |
---\---|----
| |
-------/----
/
-----/------
------------
Thân của ghi chú (đường thẳng đứng bên cạnh vòng tròn) sẽ hướng lên trên nếu ghi chú nằm dưới đường giữa của nhân viên. Nó nên chỉ xuống dưới nếu ghi chú ở trên đường giữa của một nhân viên. Nếu ghi chú nằm trên đường giữa, thì thân cây có thể chỉ theo một trong hai hướng. (Ngoại lệ duy nhất này là phần thưởng và xảy ra khi kết nối các ghi chú thứ tám, được mô tả sau). Thân cây phải bắt đầu trên đường kẻ trên / dưới vòng tròn và 6
cao hơn đường kẻ.
Tất cả các loại ghi chú ngoại trừ toàn bộ ghi chú có cuống. Cờ của ghi chú thứ tám được thể hiện bằng hai dấu gạch chéo về phía trước trên các dòng khác nhau (xem ghi chú ví dụ bên dưới).
Một đầu ghi chú điền (cho ghi chú quý và thứ tám) được đại diện bởi (@)
. Một đầu ghi chú trống (cho một nửa và toàn bộ ghi chú) được đại diện bởi ( )
.
Các tai nạn (vật sắc nhọn, căn hộ, tự nhiên) phải được đặt như thể hiện trong các ghi chú mẫu, với chính xác một ký tự nằm giữa bên phải của tai nạn và bên trái của đầu ghi chú.
Các dòng sổ cái nên được sử dụng khi cần thiết và nên có 7
độ dài các ký tự, tập trung quanh đầu ghi chú.
Mỗi ghi chú nên có 12
ký tự rộng.
Ví dụ ghi chú:
|_
|_| ( )
| |------
|
------------ ---------|-- ------------ ------------ ------------
|
------------ ---------|-- ---|-------- ------------ ------------
(@) _|_|_ | |_
-----|------ _|_|_-( )--- ---|/-(@)--- ------------ ---------|\-
| | | | | \
-----|------ ------------ -----|------ ------------ ---------|--
| | |
-----|------ ------------ -----|------ ------------ ---------|--
| | / |
|/ --(@)--
quarter note half note eighth note whole note eighth note
sharped flatted natural
Sau ghi chú 12 ký tự, để 2 * 12 - 12 = 12
trống các ký tự (có thể hoặc
-
tùy thuộc vào dòng) nếu ghi chú là ghi chú quý. Nếu ghi chú là một nửa ghi chú, để 4 * 12 - 12 = 36
trống các ký tự. Nếu ghi chú là toàn bộ ghi chú, hãy để 8 * 12 - 12 = 84
trống các ký tự. Không thêm ký tự cho ghi chú thứ tám.
Ở cuối mỗi biện pháp (96 ký tự sau dòng khóa hoặc thanh vạch), xuất ra một vạch vạch. Điều này được thực hiện bằng cách đi xuống mọi ký tự giữa các dòng trên cùng và dưới cùng (bao gồm), và thay thế bằng
|
và -
bằng +
. (Xem ví dụ đầu ra ở cuối câu hỏi).
Ở phần cuối của bản nhạc, xuất kết thúc bản nhạc bằng cách xuất 3 dòng thanh liên tiếp, nhưng có khoảng cách giữa phần thứ nhất và phần thứ hai. Đó là:
+-++
| ||
+-++
| ||
. ..
. ..
Lưu ý rằng vật sắc nhọn, căn hộ và tự nhiên kéo dài cho đến khi kết thúc biện pháp. Dấu hiệu tự nhiên chỉ nên được sử dụng để loại bỏ một vật sắc nhọn hoặc phẳng được sử dụng trước đó trong cùng một biện pháp.
Với mục đích của nhiệm vụ này, các vật sắc nhọn, căn hộ và tự nhiên chỉ ảnh hưởng đến một ghi chú trong một quãng tám và trong một lần khóa (một nét sắc nét trên A5 không làm cho A4 bị sắc nét và một căn hộ trên C4 trong đội ngũ nhân viên hàng đầu không gây ra C4 trong nhân viên dưới cùng để được vỗ).
Thông tin cho phần thưởng chỉ
Phần thưởng liên quan đến việc kết nối đúng các ghi chú thứ tám.
Khi có hai nốt thứ tám liên tiếp, được căn chỉnh theo nhịp ghi chú quý (nói cách khác, số ký tự trước nốt thứ tám đầu tiên là bội số của 24), hai nốt thứ tám sẽ được kết nối.
Hãy lưu ý A là ghi chú xa nhất từ giữa các nhân viên. Nếu cả hai chú đều giống nhau khoảng cách từ giữa, hoặc là lưu ý có thể lưu ý Một . Hãy để người khác chú ý be note B .
Sự chỉ đạo của cả hai bắt nguồn nên sự chỉ đạo của gốc của note Một .
Thân của một trong các ghi chú phải là 6
dòng cao (như trường hợp của thân cây nói chung), và thân của ghi chú khác nên được kéo dài đến cuối thân của ghi chú khác.
Các thân cây nên được kết nối với _
.
Ví dụ kết nối ghi chú thứ tám:
___________
| |
| |
| |
| | --(@)--
| | | |
------------------------ ---|_----|-----------|-- -----|------------------
|/ (@) | | |_
------------------------ ---------------------|-- -----|--------|_|-(@)---
(@) _|_|_ | | ||
-----|------_|_|_-(@)--- ---------------------|-- -----|-----------|------
| | | | | | |
-----|-----------|------ ---------------------|-- -----|-----------|------
| | | | |
-----|-----------|------ ------------------(@)--- -----|___________|------
| |
|___________|
Ví dụ đầu vào và đầu ra
Đầu vào :
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
Đầu ra :
^
| | | | |
------|/-------------|-----------------------|--------------------------------------------------------------+---------|-----------------------|--------------------------------------------------------------+----------___________-------------___________------------|\----------|\----------|\----------|\-+---------|-----------------------|--------------------------------------------------------------+-++
/ | | | | | | | | | | | | | \ | \ | \ | \| | | | | ||
-----/|--------------|-----------------------|-----------------------|--------------------------------------+---------|-----------------------|-----------------------|--------------------------------------+---------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|--+---------|-----------------------|-----------------------|--------------------------------------+-++
/ | | | | | | | | | | | | | | | | | | | | | | ||
---/--__----_|_|_----|-----------------------|-----------------------|--------------------------------------+_|_|_----|-----------------------|-----------------------|--------------------------------------+---------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|--+_|_|_----|-----------------------|-----------------------|--------------------------------------+-++
| / \ _|_|_ (@) _|_|_ | | |_|_|_ (@) _|_|_ | | | | | | | _|_|_ | | | | |_|_|_ (@) _|_|_ | | | ||
---\-\|-|----|-|--------------------_|_|_-(@)---------------_|_|_----|--------------------------------------+-|-|--------------------_|_|_-(@)---------------_|_|_----|--------------------------------------+_|_|_----|-----------|-----------|-----------|--_|_|_-(@)---------(@)---------(@)---------(@)---+-|-|--------------------_|_|_-(@)---------------_|_|_----|--------------------------------------+-++
\ | / | | _|_|_ ( ) | | | _|_|_ ( ) |_|_|_ (@) (@) (@) (@) | | | | | _|_|_ ( ) | ||
------|------------------------------------------------------|-|--------------------------------------------+-------------------------------------------------|-|--------------------------------------------+-|-|--------------------------------------------------------------------------------------------+-------------------------------------------------|-|--------------------------------------------+-++
| | | | | ||
\_/ | | | | ||
| | | | ||
| | | | ||
| | | | ||
| | | | ||
_|_|_ |_|_|_ | | | ||
----___-----_|_|_-(@)---------------_|_|_-------------------------------------------------------------------+_|_|_-(@)---------------_|_|_-------------------------------------------------------------------+------------------------------------------------_|_|_-------------------------------------------+------------------------------------------------------------------------------------------------+-++
/ \ | | | | _|_|_ (@) _|_|_ | | | | _|_|_ (@) _|_|_ |_|_|_ _|_|_ ( ) |_|_|_ | ||
---\---|---------|-------------------|-|-|------------------_|_|_-( )---------------------------------------+-----|-------------------|-|-|------------------_|_|_-( )---------------------------------------+_|_|_-( )----------------------------------------|-|-|------------------------------------------+_|_|_ (@)---------------_|_|_-------------------------( )---------------------------------------+-++
| | | | | | | | | | | | | | | | | | | | | | _|_|_ (@) | | ||
-------/---------|-----------------------|-----------------------|------------------------------------------+-----|-----------------------|-----------------------|------------------------------------------+-----|-----------------------------------------------|------------------------------------------+-----|-------------------|-|-|-----------------------|------------------------------------------+-++
/ | | | | | | | | | | | | | | | ||
-----/-----------|-----------------------|-----------------------|------------------------------------------+-----|-----------------------|-----------------------|------------------------------------------+-----|-----------------------------------------------|------------------------------------------+-----|-----------------------|-----------------------|------------------------------------------+-++
| | | | | | | | | | | | | ||
-----------------------------------------------------------------|------------------------------------------+-----------------------------------------------------|------------------------------------------+-----|------------------------------------------------------------------------------------------+-----|-----------------------|-----------------------|------------------------------------------+-++
|
Để chứng minh, trong biện pháp thứ ba, các F#
ghi chú thứ tám được kết nối, trong khi các G#
ghi chú thứ tám thì không. Chương trình của bạn nên kết nối các ghi chú thứ tám bất cứ khi nào có thể áp dụng (đối với phần thưởng) hoặc để tất cả chúng bị ngắt kết nối.
Thông tin khác
- Bất kỳ số lượng khoảng trắng / dòng dấu là chấp nhận được.
- Không nên có thêm khoảng trắng trước dấu vân tay, cũng không có khoảng trắng giữa các ghi chú. Bất kỳ số lượng dòng trống có thể được phát ra trước / sau đầu ra.
- Phần thưởng cho việc kết nối các ghi chú thứ tám là 0,75 * số byte của mã nguồn .
- Đây là mã golf , vì vậy mã ngắn nhất sẽ thắng.