L'apocalypse zombie est arrivée et le monde touche à sa fin. Soudain, quelqu'un découvre une formule qui prend l'heure, la minute et le jour actuels et crache la note parfaite à jouer sur un piano qui tue instantanément tous les zombies qui l'entendent. Malheureusement, il ne reste qu'un seul pianiste dans le monde, et il a oublié comment lire les notes, mais il sait toujours lire les partitions. Bien sûr, c'est une chose très sensible au temps, il semble donc naturel d'avoir un ordinateur pour le faire. 1
Votre défi est de prendre une note, telle que G
, et de sortir la note placée sur une portée (en clé de sol), comme ceci:
-----
-----
|
---|-
|
--O--
-----
Spécification:
- Vous devez produire une portée de lignes alternées de
-----
(5 tirets) et une ligne vierge. Il y aura 5-----
s au total. La note doit être superposée au dessus de cette portée. - L'entrée spécifiera où se trouve la note. L'entrée sera:
- un facultatif
H
ouL
, spécifiant "haut" ou "bas" - une lettre de
A
àG
, spécifiant la hauteur - facultatif
#
oub
, spécifiant pointu ou plat.
- un facultatif
- La "note" est définie comme:
- Un
O
(O majuscule) aligné au milieu de la portée, qui est à la place de la note. (La ligne du haut estHF
(F élevé) et la ligne du bas estE
(un E normal).) - Trois
|
s (barres verticales), la tige, qui sera:- un espace à gauche de la note et en descendant (en commençant un espace en dessous de la note) si la note est sur la ligne médiane (
B
) ou au-dessus, ou - un espace à droite de la note et en remontant (en commençant un espace au-dessus de la note) si la note est en dessous de la ligne médiane.
- un espace à gauche de la note et en descendant (en commençant un espace en dessous de la note) si la note est sur la ligne médiane (
- Un
#
oub
un espace directement à gauche de la note s'il est spécifié dans l'entrée.
- Un
- Des lignes de grand livre doivent être ajoutées si la note est trop haute ou trop basse. Ces lignes seront
---
(seulement 3 tirets de largeur, par opposition à 5) et n'apparaîtront que si la note est sur ou au-dessus / en dessous (pour les lignes de livre supérieur / inférieur respectivement) les lignes de livre. - Les espaces étrangers peuvent être placés où vous le souhaitez; par exemple, vous pouvez faire en sorte que les lignes vides aient des espaces ou avoir un espace après les lignes du grand livre si cela vous aide à enregistrer des caractères.
Voici une visualisation, pour comprendre plus facilement la spécification, avec tous les noms de notes à côté des lignes:
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)
Voici quelques exemples supplémentaires que vous pouvez utiliser pour tester votre programme:
Contribution: HG#
#O
-|---
|
-|---
-----
-----
-----
Contribution: LAb
-----
-----
-----
-----
-----
|
--|
|
bO-
Contribution: HB
O
|--
|
-|---
-----
-----
-----
-----
Contribution: C
-----
-----
-----
-----
|
---|-
|
-O-
Il s'agit de code-golf , donc le code le plus court en octets gagnera!
1: exposition la plus réaliste evar! :-P
#
oub
à droite de la note plutôt qu'à gauche; est-ce vraiment ce qui est nécessaire?