Lưu ý : Anders Kaseorg cảnh báo tôi rằng đây có thể là một bản sao của một câu hỏi khác trước đó . Có vẻ như vậy, và tôi xin lỗi tôi đã không tìm thấy câu hỏi đó trước khi đăng câu hỏi này. Tuy nhiên, câu hỏi đó chỉ nhận được một câu trả lời và câu hỏi này đơn giản hơn, chỉ trong trường hợp tất cả các bạn muốn thử lần này. Tôi sẽ hiểu nếu câu hỏi này cuối cùng được đánh dấu là trùng lặp.
Các thách thức
Đưa ra một đầu vào như thế này:
8g 8Df 4cs 2C 1A
Viết chương trình / hàm ngắn nhất tạo ra đầu ra như thế này:
/\ -o-
| |
---|-|---------------------------------------------------|-|
|/ | |
---/|--------|\----b-*-----------------------------------|-|
/ | | | | o | |
-|--|--------|------|-----------------|------------------|-|
| (| \ | | | | | |
-|--|--)----*-------|/---------|------|------------------|-|
\ | / | | | |
-----|-------------------------|-------------------------|-|
| |
*_/ #-*-
Quy tắc
Đầu ra phải bao gồm một nhân viên năm dòng bắt đầu bằng bản vẽ G-clef chính xác như được hiển thị ở trên, căn chỉnh bên trái của nhân viên và để lại một cột duy nhất sau khi bắt đầu nhân viên.
/\
| |
---|-|--
|/
---/|---
/ |
-|--|---
| (| \
-|--|--)
\ | /
-----|--
|
*_/
^
Single column
Các ghi chú phải bắt đầu bằng một *
hoặc một o
ký tự tùy thuộc vào loại của nó.
Phải có chính xác tám cột tách mỗi *
hoặc một o
ký tự:
/\ -o-
| |
---|-|---------------------------------------------------|-|
|/ | |
---/|--------|\----b-*-----------------------------------|-|
/ | | | | o | |
-|--|--------|------|-----------------|------------------|-|
| (| \ | | | | | |
-|--|--)----*-------|/---------|------|------------------|-|
\ | / | | | |
-----|-------------------------|-------------------------|-|
| |
*_/ #-*-
↑ ↑ ↑ ↑ ↑ ↑ ↑
8 columns of separation
Các nhân viên phải kết thúc với dấu kết thúc được căn bên phải như trong ví dụ. Thanh bên trái của dấu kết thúc phải được tách 8 cột khỏi ghi chú cuối cùng.
Đầu vào sẽ là một chuỗi chứa các ghi chú (ít nhất là một, không có đầu vào trống), mỗi chuỗi được phân tách bằng khoảng trắng (bạn có thể coi mỗi ghi chú sẽ là một ghi chú thích hợp, do đó không cần kiểm tra lỗi). Bạn cũng có thể lấy đầu vào là một chuỗi các chuỗi, với một ghi chú cho mỗi phần tử trong mảng. Đối với từng nốt nhạc, ký tự đầu tiên sẽ là mẫu số của độ dài lưu ý ( 1
cho một nốt tròn / semibreve , bắt đầu với o
; 2
cho một nửa lưu ý / nốt trắng , bắt đầu với o
; 4
cho một nốt đen / ý ngông , bắt đầu với *
, và 8
cho một thứ tám ghi chú / quaver , bắt đầu với*
). Ký tự thứ hai sẽ là ghi chú (xem bảng tiếp theo) và ký tự thứ ba, tùy chọn sẽ là f
hoặc F
cho ghi chú phẳng và s
hoặc S
cho ghi chú sắc nét.
--- A (ledger line)
G
-------- F
E
-------- D
C
-------- b
a
-------- g
f
-------- e
d
--- c (ledger line)
Rõ ràng, đầu vào phải tôn trọng trường hợp cho các ghi chú, nhưng bạn có thể chọn trường hợp của f
và s
sửa đổi.
Ghi chú c
và A
phải thêm hai -
(dòng sổ cái), một ở mỗi bên, vì chúng phải mở rộng nhân viên. Ghi chú d
và G
nằm ngoài đội ngũ nhân viên nhưng không cần dòng sổ cái.
Làm phẳng hoặc làm sắc nét các ghi chú phải thêm b
hoặc #
hai vị trí ở bên trái của ghi chú.
Các thân cây (nếu có) phải được vẽ bằng 4 thanh dọc. Ghi chú từ b
và trên phải vẽ thân cây xuống và ở bên trái của ghi chú. Ghi chú từ a
và bên dưới phải vẽ thân cây lên trên và ở bên phải của ghi chú. Quavers phải thêm cờ, luôn luôn đúng và chính xác như được hiển thị, và không cần phải chiếu nếu có một vài trong số chúng liên tiếp.
--------------------------
-----|\----b-*------------
| | |
-----|------|-------------
| | |
----*-------|/---------|--
↑↑ |
----||------↑↑---------|--
|| || |
|| || #-*-
|\ |\ ↑↑
| Stem | Note | Stem
Note Stem Note
Như thường lệ, chương trình / hàm của bạn có thể trực tiếp vẽ đầu ra hoặc trả về một chuỗi, mảng chuỗi, ma trận ký tự hoặc bất kỳ định dạng hợp lý nào khác.
Liên kết hữu ích
Đây là môn đánh gôn , vì vậy có thể chương trình / chức năng ngắn nhất cho mỗi ngôn ngữ sẽ giành chiến thắng!
Phần thưởng: hãy thử viết ví dụ với những giai điệu nổi tiếng và để mọi người thử đoán xem đó là giai điệu nào!