Le défi
Le code le plus court par nombre de caractères pour sortir une partie d'un clavier de piano à partir d'une note d'entrée d'une longueur donnée.
L'entrée sera composée d'une note ( [ACDFG]#|[A-G]
) pour commencer l'impression du clavier et d'un nombre positif représentant la longueur des touches à imprimer, y compris la première note.
La première clé doit être imprimée en entier - si elle a une touche pointue gauche, elle sera coupée, de même que lorsque la touche de démarrage est nette, la touche gauche sera également coupée.
Une touche Sharp n'est pas comptée, seules les touches blanches.
Cas de test
Input
C 14
Output
| ### ### | ### ### ### | ### ### | ### ### ### |
| ### ### | ### ### ### | ### ### | ### ### ### |
| ### ### | ### ### ### | ### ### | ### ### ### |
| ### ### | ### ### ### | ### ### | ### ### ### |
| ### ### | ### ### ### | ### ### | ### ### ### |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
|____|____|____|____|____|____|____|____|____|____|____|____|____|____|
Input
D# 1
Output
### |
### |
### |
### |
### |
| |
| |
| |
_|____|
Input
A 7
Output
## ### | ### ### | ### ##
## ### | ### ### | ### ##
## ### | ### ### | ### ##
## ### | ### ### | ### ##
## ### | ### ### | ### ##
| | | | | | | |
| | | | | | | |
| | | | | | | |
|____|____|____|____|____|____|____|
Le décompte des codes comprend l'entrée / la sortie (c'est-à-dire le programme complet).
language-agnostic
code-golf
rosetta-stone
LiraNuna
la source
la source
[A-G]#*
? Cela signifie-t-il que nous devons gérer, disons,B#####
commeE
?Réponses:
GolfScript - 80 caractères
Convient à une ligne de #SO sans la barre de défilement :)
GolfScript - 81 caractères
Version joliment formatée (27 x 3)
GolfScript - 82 caractères
GolfScript - 85 caractères
Version joliment formatée (17 x 5)
GolfScript - 94 caractères
GolfScript - 98 caractères
GolfScript - 101 caractères
GolfScript - 109 caractères
GolfScript - 120 caractères
GolfScript - 127 caractères
la source
Perl, 133 (129) caractères
Perl,
167160156147142133D'oh!147144137134133 caractèresVoici une solution de 129 caractères, empruntant plusieurs idées à la solution Ruby de molf:
et avec l'aide d' Acme :: AsciiArtinator :
la source
Rubis - 125 caractères
146144140137134126125 caractères(La deuxième nouvelle ligne n'est pas nécessaire et ajoutée uniquement pour éviter une barre de défilement sur SO. Les points-virgules peuvent être remplacés par des nouvelles lignes si vous le souhaitez.)
La version Ruby 1.9 est différente mais de longueur égale (remplacée
a[0]
para.ord
et"_"
par?_
):Appeler avec
la source
i%7%4<1||t>4?"_|___":"###__"
dei%7%4&&t<5?"###__":"_|___"
et enregistrer 2 caractères. J'adore cet%7%4
idiomeLilyPond, 285
288291310315330333340350caractèresEn accord avec le thème de la musique, voici une solution dans un langage conçu pour la composition de partitions musicales, LilyPond:
Usage:
$ lilypond thisfile.ly <input.in >output.out 2>/dev/null
la source
RetroGolf - Applesoft BASIC: 236
239245249257245267285Montré sur plusieurs lignes pour plus de lisibilité, mais doit être une seule ligne:
Peut être testé avec cet interpréteur Applesoft BASIC en Javascript ou un émulateur .
Piano http://img685.imageshack.us/img685/3407/piano2.png
la source
C # - 315
Je persiste à jouer au golf en C # bien que ce ne soit pas un langage très laconique ...
la source
Python - 164
la source
t
etu
et en multipliant par 7?Octave, 153
154155158159162172180186185188197199200206207209212214215219240244268caractèresPourquoi n'utiliser que C ou C # ou F # (ou B ou D) quand vous pouvez programmer avec une octave complète?
(enveloppé tous les 60 caractères pour plus de clarté)
Oui ... cette solution calcule vraiment la transposition conjuguée complexe d'une chaîne.
Usage:
$ octave -q thisfile.m <input.in >output.out
la source
C - 197
203207216224232240personnagesCette version équivalente à 194 caractères suppose que le dépassement de la mémoire tampon est correct.
la source
for(j=0; j<=l*5+h; j++)
<- espaces inutiles, et vous semblez les avoir également inclus dans le nombre de caractèresPostScript: 239
245293312(régulier); 219224225231(ASCII85)Version binaire étendue via le codage ASCII85 dans un programme de 219 caractères avec uniquement des caractères imprimables ASCII:
Usage:
$ gs -q -dNOPROMPT -dNODISPLAY -dBATCH thisfile.ps <input.in >output.out
la source
F #: 224
225, 226, 248, 252, 270, 276, 299, 306CharsJ'ai utilisé des modules de 2 pour détecter un espace ou une livre. '' vaut 32% 2 = 0 '#' vaut 35% 2 = 1 et comme mon conditionnel a renvoyé des zéros pour faux, je viens de multiplier le résultat des modules.
Utilisé le <| opérateur pour raser un caractère d'espace. Utilisation de la surcharge d'opérateur pour enregistrer un autre caractère.
original
la source
let g s i=for i=1 to i do printfn"%s"(String.replicate 99 s).[t+4*p..t+int(x.[2..])*5+5*p]
sed, 231
235234235237238244268269270276279280282287300307314329338caractèresFonctionne jusqu'à 99 clés. Le piano standard a 52 touches blanches, donc cela devrait être suffisant.
Exemples:
Le dernier exemple imprime le clavier standard, ainsi que des touches noires imaginaires à chaque extrémité.
la source
PianoScript - 2 caractères
C'est un one-liner:
Usage:
Production:
Vous trouverez plus d'informations sur le langage PianoScript ici .
la source
JavaScript - 195 caractères
Hé, le golf est un jeu où tu n'es que contre toi, non? :)
Solution par gnarf; porté sur Rhino (avec un correctif mineur et des changements de formatage) par KirarinSnow; encore ébréché par le gnarf; erreur corrigée par KirarinSnow. cache
k[1]
par cwallenpooleUsage:
$ cp input.in 0; rhino thisfile.js
Version de démonstration HTML rapide: Test de golf - Ajouts
readFile=prompt;print=function(a) {document.write("<pre>"+a);}
la source
s=s[b](1-q,p=s.length-3)
Python3 - 158
Économisez sur
input
vsraw_input
. Perdez()
pourprint
la source
F #: 355 caractères significatifs
Tout sur une seule ligne:
Étendu:
la source
gets
ou l'équivalent, nous économiserions 22 caractères!SETL
165 caractères; Traduction de la solution Gribblers Python.
la source
D2 (modèles): 331
370400+ 17 caractères(basé sur la solution Ruby.)
Comprimé:
Expliqué:
Comme nous ne pouvons pas passer de paramètres à partir de
dmd
l'entrée, il faut le faire dans le code. Prend en charge jusqu'à 99 clés seulement.la source
Haskell:
212211208 caractèresIl suppose toujours des lettres compatibles ascii (en particulier, la séquence "@ABCDEFG"), mais ne nécessite plus Char.ord
la source
Rubis - 113 caractères
Fonctionne avec des arguments de ligne de commande
Rubis - 118 caractères
la source
PHP - 208 caractères
Doit être amélioré.
L'entrée doit être fournie dans la constante nommée PIANO.
la source
F #
414386372 caractères significatifs:Oh, et un bonus, ce script gérera correctement "F # 372" - Je ne vous ennuierai pas en le collant ici cependant ...
System.Console.ReadLine () est une telle déception ...
la source