Encontre o desafio original aqui
Desafio
Dado um número inteiro, Z
no intervalo -2^31 < Z < 2^31
, imprima o número de dígitos nesse número (na base 10).
Regras
Você não deve usar nenhuma função de string (no caso de sobrecarga, não deve passar uma string para funções que atuam como funções de string e de número inteiro). Você não tem permissão para armazenar o número como uma sequência.
Todas as funções matemáticas são permitidas.
Você pode receber entrada em qualquer base, mas a saída deve ser o comprimento do número na base 10.
Não conte o sinal de menos para números negativos. O número nunca será um decimal.
O zero é efetivamente um zero inicial, portanto pode ter zero ou um dígito.
Exemplos
Input > Output
-45 > 2
1254 > 4
107638538 > 9
-20000 > 5
0 > 0 or 1
-18 > 2
Ganhando
O menor código em bytes vence.
Respostas:
Mathematica, 13 bytes
Bem...
fonte
Python 2 , 30 bytes
Experimente online!
fonte
Japonês ,
53 bytesExperimente online!
fonte
a
desnecessário - 5 minutos antes do lançamento do desafio :-) Infelizmente, isso significa que ele só funcionará no intérprete online. ( teste on-line! )JavaScript (ES6), 19 bytes
fonte
f=
.Geléia ,
32 bytes1 byte economizado graças a Leaky Nun
Experimente online!
Explicação
fonte
DL
?D
). O desafio diz: no caso de sobrecarga, você não deve passar uma string em funções que agem tanto como corda e inteiro funções Esta resposta segue essa regra: Eu não estou passando uma stringMinha resposta do outro desafio ainda funciona:
Braquilog , 1 byte
Experimente online!
O
l
builtin está sobrecarregado, mas em números inteiros, leva o número de dígitos do número inteiro, ignorando o sinal.fonte
Código de Chamada , 5 bytes
Nota: Esse é exatamente o mesmo código do outro desafio
Explicação
fonte
dc , 1 byte
Experimente online!
Não usando um builtin, 18 bytes:
Experimente online!
fonte
SILOS , 41 bytes
Experimente online!
Retorna
1
para0
.fonte
Lua , 40 bytes
Porta da minha resposta python
Experimente online!
fonte
Java 8,
61593937 bytesPorta da resposta C # de @TheLethalCoder , mas sem a
Math.floor
porque o uso de(int)
-cast automaticamente / trunca decimais em Java.Experimente online.
Resposta Java 7 recursiva (
6138 bytes ):Porto da resposta C de @ Khaled.K .
Experimente online.
fonte
C #,
4956 bytesfonte
Alice , 16 bytes
Experimente online!
Explicação
Isto é simplesmente uma estrutura para entrada numérica → processamento matemático → saída numérica.
O restante do código é o algoritmo real:
fonte
Python 2 , 48 bytes
-3 graças a ovs -1 graças a pizzapants
Experimente online!
fonte
lambda x:1+log10(abs(x)+.1)//1
para 48 bytesimport math
emath.log10
salva um byteC, 27 bytes
Experimente on-line
C (gcc), 22 bytes
Usando matemática, 29 bytes
fonte
R , 40 bytes
Experimente online!
fonte
MATL , 5 bytes
Experimente online!
Explicação
fonte
05AB1E , 6 bytes
Experimente online! ou Experimente todos os testes
fonte
Ä>T.nî
Gelatina , 5 bytes
Experimente online!
fonte
Oitava , 27 bytes
Experimente online!
fonte
PHP, 23 bytes
Experimente online!
fonte
PowerShell,
5251 bytesAgradecemos a Felipe por corrigir o problema com o Log10 e por salvar 1byte.
Todas as
System.Math
chamadas são extremamente caras no PowerShell.Usa o método de obter o Log10 do valor Abs da entrada e arredondá-lo para cima.
fonte
Floor()+1
.Ceil()
falha por potências de 10$m::Log10(...
para salvar um byteQBIC , 25 bytes
Isso divide a entrada por 10 e controla quantas vezes podemos fazer isso até
N
<1.Explicação:
fonte
Bash , 50 bytes
Experimente online!
Nenhum comando string / array, apenas conte dígitos por divisão inteira.
fonte
Ruby , 33 bytes
Experimente online!
fonte
bc , 6 bytes
Função incorporada.
fonte
Na verdade , 8 bytes
Experimente online!
Explicação:
Este programa efetivamente calcula
floor(log10(x))+1
. Para lidar com o fato delog(0)
ser indefinido (na verdade, ele retorna(-inf+nanj)
uma maneira especial de dizer que não é definido), a entrada é incrementada se for0
anterior ao cálculo do comprimento. Assim,0
é considerado como tendo um comprimento de1
.fonte
Pari / GP , 13 bytes
Experimente online!
fonte
Ruby, 27 bytes
Como teste:
Emite:
fonte
Perl 5
-p
, 26 bytesExperimente online!
fonte