Die Zombie-Apokalypse ist da und die Welt geht unter. Plötzlich entdeckt jemand eine Formel, die die aktuelle Stunde, Minute und den aktuellen Tag enthält, und spuckt die perfekte Note aus, um auf einem Klavier zu spielen, das jeden Zombie, der sie hört, sofort tötet. Leider gibt es nur noch einen Klavierspieler auf der Welt, und er hat vergessen, Noten zu lesen, weiß aber immer noch, wie man Noten liest. Natürlich ist dies eine sehr zeitkritische Sache, daher scheint es natürlich, dass ein Computer dies tut. 1
Ihre Herausforderung besteht darin, eine Notiz wie G
die folgende zu notieren und sie auf einem Notensystem (im Violinschlüssel) auszugeben:
-----
-----
|
---|-
|
--O--
-----
Spezifikation:
- Sie müssen einen Stab mit abwechselnden Zeilen von
-----
(5 Bindestrichen) und eine Leerzeile ausgeben . Es werden-----
insgesamt 5 s sein. Die Notiz muss oben auf diesen Stab gelegt werden. - Die Eingabe gibt an, wo sich die Notiz befindet. Die Eingabe wird sein:
- ein optionales
H
oderL
, wobei "hoch" oder "niedrig" angegeben wird - ein Brief von
A
bisG
, der die Tonhöhe angibt - ein optionales
#
oderb
, scharf oder flach spezifizierend.
- ein optionales
- Die "Notiz" ist definiert als:
- Einer
O
(Großbuchstabe O) ist auf die Mitte des Stabes ausgerichtet, die sich an der Stelle der Notiz befindet. (Die oberste Zeile istHF
(hohes F) und die unterste Zeile istE
(ein normales E).) - Drei
|
s (vertikale Balken), der Stiel, der sein wird:- ein Leerzeichen links von der Note und abwärts (beginnend ein Leerzeichen unter der Note), wenn sich die Note in der Mittellinie (
B
) oder darüber befindet, oder - Ein Leerzeichen rechts von der Note und nach oben (beginnend ein Leerzeichen über der Note), wenn sich die Note unter der Mittellinie befindet.
- ein Leerzeichen links von der Note und abwärts (beginnend ein Leerzeichen unter der Note), wenn sich die Note in der Mittellinie (
- Ein
#
oderb
ein Leerzeichen direkt links von der Note, falls in der Eingabe angegeben.
- Einer
- Ledgerzeilen müssen hinzugefügt werden, wenn die Note zu hoch oder zu niedrig ist. Diese Linien sind
---
(nur 3 Striche in der Breite im Gegensatz zu 5) und werden nur angezeigt, wenn sich die Notiz auf oder über / unter (jeweils für die oberen / unteren Hauptbuchlinien) den Hauptbuchlinien befindet. - Überflüssige Leerzeichen können beliebig platziert werden. Sie können beispielsweise festlegen, dass die leeren Zeilen Leerzeichen enthalten oder dass nach den Hauptbuchzeilen ein Leerzeichen steht, wenn dies beim Speichern von Zeichen hilfreich ist.
Hier ist eine Visualisierung, um die Spezifikation leichter zu verstehen, mit allen Notennamen neben den Zeilen:
HB
--- HA
HG
----- HF
HE
----- HD
HC
----- B
A
----- G
F
----- E
D
--- C
LB
--- LA
LG
--- LF
... (bottom cut off for brevity, you get the idea anyway)
Hier sind einige weitere Beispiele, mit denen Sie Ihr Programm testen können:
Eingang: HG#
#O
-|---
|
-|---
-----
-----
-----
Eingang: LAb
-----
-----
-----
-----
-----
|
--|
|
bO-
Eingang: HB
O
|--
|
-|---
-----
-----
-----
-----
Eingang: C
-----
-----
-----
-----
|
---|-
|
-O-
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
1: realistischste ausstellung evar! :-P
#
oderb
auf der rechten Seite der Note statt auf der linken Seite; ist es wirklich das, was benötigt wird?