Vous avez été choisi pour créer un programme qui crée de jolis diagrammes à barres ASCII . Voici le format d'entrée:
[List of words (they can have spaces)] [an integer >= 0]
Bar 3
This is so cool 4
IDK-Why 6
L'entrée aura plusieurs lignes dans ce format, chacune représentant une barre dans le graphique. Le format de sortie d'un graphique sera le suivant:
_ _ _ _
|_|_|_|_|
| | | |
| | | + [name of 4th bar]
| | + [name of 3rd bar]
| + [name of 2nd bar]
+ [name of 1st bar]
Voici quelques exemples:
In:
Cool 4
Kool 6
Out:
_
| |
_| |
| | |
| | |
| | |
|_|_|
| |
| + Kool
+ Cool
In:
Graph 5
Bar 3
Out:
_
| |
| |_
| | |
| | |
|_|_|
| |
| + Bar
+ Graph
In:
Very 4
Large 5
Bar 3
Graph 5
Out:
_ _
_| | | |
| | |_| |
| | | | |
| | | | |
|_|_|_|_|
| | | |
| | | + Graph
| | + Bar
| + Large
+ Very
In:
Bars can be 0 0
Large-bars_are$nice2 6
average)(@#$ 3
neato 5
Out:
_
| | _
| | | |
| |_| |
| | | |
| | | |
_|_|_|_|
| | | |
| | | + neato
| | + average)(@#$
| + Large-bars_are$nice2
+ Bars can be 0
Des fonctions ou des programmes complets sont autorisés.
Réponses:
sh + awk + tac, 173
Surtout un
awk
script qui imprime le graphique de bas en haut qui est ensuite inversé partac
.La description
awk, première partie, exécutée pour chaque ligne d'entrée
Sortie
awk, deuxième partie, exécutée une fois à la fin
non golfé:
Sortie
tac renverse les lignes
la source
JavaScript (ES6), 270
262 270 287Une correction de bogue a ajouté une ligne manquante de «|» sous les barreaux
Test Test dans Firefox, car Chrome ne prend pas en charge l' affectation ES6 Destructuring
la source
i.match(/.+ |./g)
. Peut-être que cela pourrait être utile?destructuring assignment
: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… . Essayez un meilleur navigateur comme Firefox421 octets - Python 2
Les tests
la source
a 0 b 3
) et des barres descendantes (par exemplea 5 b 3 c 0
). Ma version Python est Python 2.7.10.Java, 613 pour la fonction d'impression
Il peut être possible d'économiser quelques octets par les transformations "habituelles" de
for(i=0;i<n;i++)
enfor(;i++<n;)
, en simplifiant les conditions ternaires, ou avec des calculs plus élégants des "étiquettes" et des "hauteurs", mais c'est un début.la source
Haskell, 323 octets
Exemple d'utilisation:
Comment ça marche (aperçu approximatif, détails peut-être plus tard):
La partie d'analyse (
(p,q)<-unlines...
) prend beaucoup d'octets, je peux peut-être la jouer plus bas.la source
Python 2, 345 octets
la source