Você foi escolhido para criar um programa que cria alguns gráficos de barras ASCII bastante . Aqui está o formato de entrada:
[List of words (they can have spaces)] [an integer >= 0]
Bar 3
This is so cool 4
IDK-Why 6
A entrada terá várias linhas neste formato, cada uma representando uma barra no gráfico. O formato de saída de um gráfico será assim:
_ _ _ _
|_|_|_|_|
| | | |
| | | + [name of 4th bar]
| | + [name of 3rd bar]
| + [name of 2nd bar]
+ [name of 1st bar]
aqui estão alguns exemplos:
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
Funções ou programas completos são permitidos.
Respostas:
sh + awk + tac, 173
Principalmente um
awk
script que imprime o gráfico de baixo para cima, que é revertidotac
.Descrição
awk, primeira parte, executada para cada linha de entrada
Saída
awk, segunda parte, executada uma vez no final
ungolfed:
Saída
tac inverte as linhas
fonte
JavaScript (ES6), 270
262 270 287A correção de bug adicionou uma linha ausente de '|' debaixo das grades
Teste Teste no Firefox, pois o Chrome não suporta a atribuição de Reestruturação do ES6
fonte
i.match(/.+ |./g)
. Talvez isso possa ser útil?destructuring assignment
: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… . Tente um navegador melhor como o Firefox421 bytes - Python 2
Testes
fonte
a 0 b 3
) e barras descendentes (por exemploa 5 b 3 c 0
). Minha versão do Python é o Python 2.7.10.Java, 613 para a função de impressão
Pode ser possível salvar alguns bytes pelas transformações "usuais" de
for(i=0;i<n;i++)
parafor(;i++<n;)
, simplificando as condicionais ternárias ou com cálculos mais elegantes dos "rótulos" e "alturas", mas é um começo.fonte
Haskell, 323 bytes
Exemplo de uso:
Como funciona (visão geral, detalhes talvez mais tarde):
A parte de análise (
(p,q)<-unlines...
) leva muitos bytes, talvez eu possa jogar mais abaixo.fonte
Python 2, 345 bytes
fonte