Neste desafio, você escreverá um programa para gerar quantas casas decimais existem na string de entrada e, se necessário, apara a entrada.
Exemplos
-12.32
2
32
0
3231.432
3
-34.0
0 -34
023
0 23
00324.230
2 324.23
10
0
00.3
1 0.3
0
0
-04.8330
3 -4.833
Regras
- Input será uma string que pode ser usada através de STDIN, argumentos de função ou o equivalente mais próximo
- A saída pode ser através do retorno da função, STDOUT ou o equivalente mais próximo.
- Não há limite para o tamanho do número inteiro de entrada, exceto para o comprimento máximo da string dos idiomas .
- Se a entrada tiver zeros desnecessários (iniciais ou finais):
- Você deveria tirá-los
- Gera a quantidade de casas decimais no novo número
- Saída do novo número separado por um separador (por exemplo, espaço, nova linha, vírgula)
- A entrada sempre corresponderá a este RegEx:
-?\d+(\.\d+)?
ou se você não falar RegEx :- Não poderia ser um
-
no início implicando um número negativo. Então haverá pelo menos um dígito. Então poderia haver ... um.
e mais alguns dígitos. - Para verificar se uma entrada é válida, verifique aqui
- Não poderia ser um
- Sem Regex
Este é o código-golfe, então o código mais curto em bytes ganha
0
.Respostas:
PHP 7, 142 bytes
De alguma forma, consegui compactar tudo em uma única declaração impressa:
Executa a partir da linha de comando, como:
Demo
Veja todos os casos de teste, incluindo um muito longo (62 caracteres) em ação:
Experimente antes de comprar 1
1 Passe o mouse sobre a caixa abaixo de " Saída para 7.0.0 " para ver todos os resultados.
fonte
Python 2,
165180 bytesNo começo eu estava pensando em escrever meu primeiro programa Pyth, consegui contar os dígitos após a vírgula em potencial. Mas fiquei muito irritado, não sei como você gosta dessa linguagem, acho que é apenas para ganhar. Enfim, aqui está a minha solução (editada porque não funcionava para grandes números):
Caso alguém queira desenvolver meu trabalho em Pyth:
~b@+cz"."" "1Wq@b_1"0"~b<b_1)plrb6
Para ver onde você está, insira um ap entre@+
.fonte
05AB1E , 23 bytes (não competitivo)
Porra, eu estava tão perto. O Python analisa flutuadores muito grandes usando notação científica, então eu corrigi esse bug no intérprete. No entanto, isso foi feito após o desafio e, portanto, minha submissão não é competitiva.
Código:
Explicação:
Usa a codificação ISO 8859-1 .
fonte
JavaScript (ES6), 156
162Edit Bug corrigido para '-0' - thx @Fez Vrasta Edit 2 6 bytes salvos thx @Neil
É uma bagunça, mas é 100% baseado em string - sem limite devido a tipos numéricos
Menos golfe
Teste
fonte
-0
como entrada .. nós deve saída0
, não0 0
c=='.'?p=t:+c&&(l=t,k=k||t)
para economizar um byte?t=l=k=p=0
e++t&&c=='.'
etc.ES6,
102180177 bytesEditar: salvou 3 bytes graças a @ edc65; economizou 1 byte graças a insertusernamehere.
fonte
t=[...s]
t[--l]==0
port[--l]<1
.C ++, 180 bytes
Este é um C ++ portátil, que não faz suposições de codificação de caracteres e não inclui bibliotecas (nem mesmo a Biblioteca Padrão).
A entrada é passada
s
. O número de casas decimais é retornado; a sequência é modificada no local e a nova partida é retornadap
.Por direito, devo retornar a
size_t
, mas, em vez disso, vou reivindicar que você deve compilar isso para um sistema operacional que limite o tamanho das strings para metade do intervalo deint
. Eu acho isso razoável; conta mais de 2 bilhões de casas decimais em arquiteturas de 32 bits.Explicação
Programa de teste
Saída de teste
fonte