Les touches du piano ont 3 caractères de large et 7 caractères de haut. Cependant, si chaque clé avait 3 caractères de large, il n'y aurait pas assez de place pour les clés noires. C'est pourquoi certaines touches blanches ont des parties découpées. Il existe 3 types de touches blanches.
Clés avec la moitié droite manquante (R):
____
| |
| |
| |
| |
| |
| |
|___|
Clés avec la moitié gauche manquante (L):
____
| |
| |
| |
| |
| |
| |
|___|
Et les touches avec les moitiés gauche et droite manquantes (M):
___
| |
| |
| |
| |
| |
| |
|___|
Sur un vrai clavier, le modèle de ceux-ci se présente comme suit:
RMLRMML, RMLRMML, RMLRMML...
et répète pour un total de 88 touches. Maintenant, vous ne pouvez pas le voir lorsque les clés sont affichées individuellement, mais lorsque vous les rapprochez, vous pouvez voir les touches noires.
_________________________________________________________
| | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
Ta tâche
Étant donné un entier positif N , imprimez cet art ASCII d'un piano avec N touches blanches. Vous devriez être capable de gérer n'importe quel N de 1 à 52 inclus (car les vrais pianos à 88 touches ont 52 touches blanches). Voici la sortie de test de 1 à 8, et après cela, le modèle augmente de manière similaire.
1
____
| |
| |
| |
| |
| |
| |
|___|
2
________
| | | |
| | | |
| | | |
| | | |
| | |
| | |
|___|___|
3
_____________
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | |
| | | |
|___|___|___|
4
________________
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | |
| | | | |
|___|___|___|___|
5
____________________
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | |
| | | | | |
|___|___|___|___|___|
6
________________________
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | |
| | | | | | |
|___|___|___|___|___|___|
7
_____________________________
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | |
| | | | | | | |
|___|___|___|___|___|___|___|
8
________________________________
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | |
| | | | | | | | |
|___|___|___|___|___|___|___|___|
Enfin, voici une sortie complète de 52 touches:
_________________________________________________________________________________________________________________________________________________________________________________________________________________
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
Les failles standard sont interdites et la réponse la plus courte en octets l'emporte!
Réponses:
Pyth,
686563 octetsEssayez-le en ligne!
Suite de tests.
Dans cette version, je viens de remplacer les affectations (J et K) à l'intérieur pour économiser 2 octets. Par conséquent, lisez la version ci-dessous.
Version précédente de 65 octets avec explication
Essayez-le en ligne!
Magie noire
la source
JavaScript (ES6),
155149147 octetsOù
\n
représente le caractère de nouvelle ligne littéral. Exploite le fait que toutes les lignes après le premier début avec un|
caractère. Explication:Edit: sauvé 2 octets en corrigeant ma lecture erronée de la spécification sur la hauteur des touches.
la source
Rubis, 119 octets
Non testé dans le programme de test
la source
> <>,
188182 octetsLe nombre de touches blanches à afficher doit être présent sur la pile au démarrage du programme.
Edit : j'ai réussi à raser quelques octets en combinant la sortie pour les lignes 5/6 et 7. Version précédente:
la source
PHP, 238 octets
Comme d'habitude, ajoutez le code avec
<?php
, mettez-le dans un fichier PHP (nommons-lekeyboard.php
) et exécutez-le en utilisant:Deux octets supplémentaires peuvent être enregistrés sur PHP7 en pressant l'initialisation de
$n
et$s
dans leur première utilisation:Le code non golfé, une suite de tests et d'autres goodies peuvent être trouvés sur github .
la source
Python
32,191185180182171 171145144133132 bytesCela pourrait utiliser du golf, mais j'ai déjà tellement joué avec le code que je ne vois peut-être pas où se trouvent les terrains de golf. Toutes les suggestions de golf sont les bienvenues.
Modifier: mal lu la spécification sur la hauteur des touches. Ce bug a été corrigé.
Edit: emprunté 12 idées clés de Neil à sa réponse Javascript, supprimé certaines parenthèses et basculé sur Python 2 pour économiser 11 octets.
Edit: Beaucoup de changements pour réduire la fonction à un
for
boucle.Modifier: Maintenant un programme au lieu d'une fonction.
Edit: utilise maintenant
print"\n|".join()
comme suggéré par Neil pour économiser 11 octets. Transformé le programme en une fonction pour enregistrer un octet.la source
"\n|".join
astuce.print
et"\n|"
!C # 1683 octets
Donc ... après avoir vu la réponse de Neil ci-dessus, c'est assez embarrassant, mais je le posterai quand même car cela m'a pris un certain temps (bénissez). J'ai utilisé C # pour créer le mien. A l'intérieur de la classe "Fncs", j'ai créé un tableau de l'ordre typique des clés. Ensuite, j'ai créé une fonction qui peut permettre à l'utilisateur d'obtenir un index approprié pour ce tableau en fonction d'un entier donné. Afin d'éditer des lignes individuelles, j'ai créé une classe "PianoKeyboard" qui contient un dictionnaire stockant plusieurs chaînes représentant les lignes individuelles. Enfin, j'ai créé la fonction "DrawKey" qui ajoute le texte approprié aux lignes individuelles et la fonction "GetKeys" qui renvoie la valeur globale de la chaîne.
la source