Uwaga : Anders Kaseorg ostrzega mnie, że może to być duplikat innego poprzedniego pytania . Wydaje się, że tak, i przepraszam, że nie znalazłem tego pytania przed opublikowaniem tego. Niemniej jednak na to pytanie otrzymano tylko jedną odpowiedź, a to jest prostsze, na wypadek, gdybyście wszyscy chcieli spróbować tym razem. Zrozumiem jednak, czy to pytanie zostanie ostatecznie oznaczone jako duplikat.
Wyzwanie
Biorąc pod uwagę takie dane wejściowe:
8g 8Df 4cs 2C 1A
Napisz najkrótszy program / funkcję, która generuje takie wyjście:
/\ -o-
| |
---|-|---------------------------------------------------|-|
|/ | |
---/|--------|\----b-*-----------------------------------|-|
/ | | | | o | |
-|--|--------|------|-----------------|------------------|-|
| (| \ | | | | | |
-|--|--)----*-------|/---------|------|------------------|-|
\ | / | | | |
-----|-------------------------|-------------------------|-|
| |
*_/ #-*-
Zasady
Dane wyjściowe muszą składać się z pięcioliniowego pięciolinii rozpoczynającego się od narysowania klucza G dokładnie tak, jak pokazano powyżej, wyrównanego do lewej strony pięciolinii i pozostawiającego jedną kolumnę po rozpoczęciu pięciolinii.
/\
| |
---|-|--
|/
---/|---
/ |
-|--|---
| (| \
-|--|--)
\ | /
-----|--
|
*_/
^
Single column
Nuty muszą zaczynać się *
od o
znaku lub w zależności od ich rodzaju.
Nie musi być dokładnie osiem kolumn oddzielenia każdego *
lub o
znaku:
/\ -o-
| |
---|-|---------------------------------------------------|-|
|/ | |
---/|--------|\----b-*-----------------------------------|-|
/ | | | | o | |
-|--|--------|------|-----------------|------------------|-|
| (| \ | | | | | |
-|--|--)----*-------|/---------|------|------------------|-|
\ | / | | | |
-----|-------------------------|-------------------------|-|
| |
*_/ #-*-
↑ ↑ ↑ ↑ ↑ ↑ ↑
8 columns of separation
Personel musi kończyć się terminatorem wyrównanym do prawej, jak pokazano w przykładzie. Lewy pasek terminatora musi być oddzielony 8 kolumnami od ostatniej nuty.
Wejście będzie pojedynczym ciągiem zawierającym nuty (co najmniej jeden, bez pustych danych wejściowych), każdy oddzielony spacją (możesz uznać, że każda nuta będzie poprawna, więc nie musisz sprawdzać błędów). Możesz również wziąć dane wejściowe jako tablicę ciągów, z notatką na element w tablicy. Dla każdej nuty pierwszy znak będzie mianownikiem długości nuty ( 1
dla całej nuty / półprzewodnika rozpoczyna się od o
; 2
dla półnuty / minimu rozpoczyna się od o
; 4
dla ćwierćnuty / ćwierćnuty zaczyna się od *
; a 8
dla ósmej notatka / ósemka , zaczyna się od*
). Druga postać będzie notatka (patrz następna tabela), a trzeci, opcjonalny postać będzie f
albo F
płaskich i notatek s
lub S
ostrych nut.
--- A (ledger line)
G
-------- F
E
-------- D
C
-------- b
a
-------- g
f
-------- e
d
--- c (ledger line)
Oczywiście dane wejściowe muszą uwzględniać wielkość liter w notatkach, ale możesz wybrać wielkość liter f
i s
modyfikatory.
Notatki c
i A
należy dodać dwie -
(linie księgi), po jednej z każdej strony, ponieważ muszą one rozszerzyć pięciolinię. Notuje d
i nie G
ma wśród personelu, ale nie potrzebuje linii księgi.
Spłaszczone lub zaostrzone nuty muszą dodać b
lub #
dwie pozycje po lewej stronie nuty.
Pędy (jeśli występują) należy narysować 4 pionowymi prętami. Nuty z b
góry i powyżej muszą rysować trzon w dół i po lewej stronie nuty. Nuty z a
dołu i do dołu muszą rysować trzon w górę i po prawej stronie nuty. Osłony muszą dodawać flagę, zawsze w prawo i dokładnie tak, jak pokazano, i nie muszą być przesyłane, jeśli jest ich kilka z rzędu.
--------------------------
-----|\----b-*------------
| | |
-----|------|-------------
| | |
----*-------|/---------|--
↑↑ |
----||------↑↑---------|--
|| || |
|| || #-*-
|\ |\ ↑↑
| Stem | Note | Stem
Note Stem Note
Jak zwykle, twój program / funkcja może bezpośrednio narysować wyjście lub zwrócić ciąg, tablicę ciągów, macierz znaków lub dowolny inny rozsądny format.
Przydatne linki
To jest golf golfowy , więc może wygrać najkrótszy program / funkcja dla każdego języka!
Premia: spróbuj pisać przykłady ze słynnymi melodiami i pozwól każdemu zgadnąć, która to melodia!