Dado um decimal na forma de <float>, <precision>
, você desenha a representação gráfica da parte decimal (ou seja, fração) do flutuador. Exemplos:
Entrada:,
6.75, 4
saída:6||| 7 ----
6.75
(primeiro número da entrada) é o número a ser explicado4
(o segundo número da entrada) é o número de traços abaixo dos tubos.6
é o piso 6,75,7
é o teto6.75
. O número de tubos é odecimal part of first input number * second input number
.Entrada:,
10.5, 6
saída:10||| 11 ------
Entrada:,
20.16, 12
saída20|| 21 ------------
.16
na verdade, usa 1,92 tubos, mas como não consigo desenhar 1,92, eu o levo a 2.Entrada:,
1.1, 12
saída:1| 2 ------------
.1
é de 1,2 canos neste caso, então ele é colocado em um cano.Além disso, um estojo de ponta. Entrada:
5, 4
(ou seja, o número é um número inteiro), saída:5 6 ----
- O número a ser explicado é o número positivo, limitado apenas pelas suas habilidades no idioma.
- O número de precisão é um inteiro par, maior que 2 (ou seja, a precisão mínima exigida é 4). Também pode ser arbitrário grande.
- > = n.5 os tubos são arredondados para n + 1 (ou seja, 1,5 é arredondado para 2 e 2,5 é arredondado para 3). <n.5 os tubos são arredondados para n (ou seja, 1,4 é arredondado para 1 e 2,4 é arredondado para 2).
- Se for mais conveniente para o seu idioma, você pode receber a entrada como uma matriz, por exemplo
[6.75, 4]
. Se você receber a entrada na ordem inversa, ou seja[4, 6.75]
, especifique-a na sua resposta.
5.0 4
: ele extrair5
para6
ou a partir4
de5
, ou seja aceitável? Entrada1.25 2
: possui 0 ou 1 se|
, e por quê (ou seja, qual é a regra de arredondamento)? O primeiro número na entrada precisa ser positivo? Qual é a máxima precisão e magnitude? O segundo número na entrada precisa ser positivo? Se é negativo, desenhamos para trás?Respostas:
CJam, 32 bytes
Pega primeiro a precisão e o segundo decimal, separados por um espaço.
Execute todos os casos de teste.
Explicação
fonte
Mathematica, 119 bytes
Eu tentei ... Testando:
fonte
Japonês,
4746 bytesApenas um monte de adição e repetição.
Experimente online
fonte
(U-Uf)
é o mesmo queU%1
salvar dois bytes.Java,
253206181 bytesEconomizou 47 bytes graças ao @Kenney, ao incluir condições e variáveis usadas uma vez e classificar variáveis redundantes.
Economizou 25 bytes novamente graças ao @Kenney, alinhando 2 loops com operadores ternários.
Manipulação de Cordas Puras:
Versão de loops embutidos (181 bytes):
Versão de 4 loops (206 bytes):
Versão não destruída:
Exemplo de trabalho aqui em ideone.com . O programa completo aceita a entrada STDIN como
<float>,<precision>
.OBSERVAÇÃO: as
Math.round(float)
rodadas de Java usamRoundingMode.HALF_UP
como padrão, que é o comportamento necessário do OP.A saída dos casos de teste fornecidos foi diferente do que o OP forneceu.
fonte
a
(nunca usado), definindo-lo em 233. Você poderia salvar outros 23 para chegar aos 210 bytes: a substituiçãoq.length()
comb
salva 13:int g=(int)f, b=(""+g).length(), c=b, i=0;
. Incrementando o iteração na condição dafor
salva 6, e inlined
(usado uma vez) economiza 4:int c = b; for(;i++<b;)h+=" "; for(;i++<=b+p;)h+="-"; for(i=c;i<c+Math.round((f-g)*p);i++)q+="|"; for(;i++<p+b;)q+=" ";
.\n
b
tornou-se aswell obsoleto ;-) Você ainda pode salvar 1 byte na 2ª para:for(;i++<=c+p;)
. Você pode salvar o arquivo com terminações de linha Unix no Windows, mas, infelizmente, Java não permitir que cordas de várias linhas ..for(;i<c+p;)h+=i++<c?" ":"-";for(i=c;i<p+c;)q+=i++<c+Math.round((f-g)*p)?"|":" ";
Javascript ES6,
105104 bytesEconomizei 1 byte graças a, hum, como você digita ՊՓԼՃՐՊՃՈԲՍԼ?
fonte
(f,p)=>(i=f|0)+("|"[r="repeat"](j=(f-i)*p+.5|0)+" "[r](p-j))+(i+1)+("\n"+i).replace(/\d/g," ")+"-"[r](p)
\n
por uma nova linha real. E certifique-se de envolvê-lo em seqüências de caracteres de modelo.Haskell, 113 bytes
Exemplo de uso:
properFraction
divide o decimal em sua parte inteira e fração. A saída é uma lista das partes (número inicial, barras, espaços, ...) que são concatenadas em uma única sequência (via>>=id
).fonte
main
invólucro para um programa completo).MATL , 49 bytes
Utiliza a versão 6.0.0 do idioma / compilador. É executado em Matlab ou Octave.
Toma números na mesma ordem que no desafio.
Exemplos
Explicação
fonte
Perl, 90 bytes
Espera entrada como argumentos da linha de comando. Salve em um arquivo (digamos
90.pl
) e execute comoperl 90.pl 6.75 4
Com comentários
fonte
Stackgoat ,
3127 bytesSemelhante à maioria das outras respostas. Vou ver se consigo jogar mais golfe. A entrada pode ser separada por vírgula, espaço ou quase qualquer coisa separada.
Não competir porque o Stackgoat foi criado após esse desafio
Explicação
fonte
Lua, 157 bytes
Longo, mas não consegue encontrar uma solução mais curta
Ungolfed
Você pode testar o lua online , os seguintes casos de teste podem ser úteis :)
fonte
C,
233231 bytesUngolfed:
fonte
Python 3,
116108 byteslink trinket.io
Obrigado a Seeq por salvar alguns caracteres.
Primeira versão:
Versão não destruída:
fonte
;
. Você usa apenash
uma vez, portanto, deve incorporá-lo também. Deve salvar alguns caracteres.h
é mais complicado. Para que a concatenação e alen
função nas duas últimas linhas funcionem,l
deve ser uma cadeia de caracteres, portantoh
, precisará ser substituída porstr(int(l)+1)
. A configuraçãoh
antes da conversãol
salva alguns caracteres.