Encuentra el desafío original aquí
Desafío
Dado un número entero, Z
en el rango -2^31 < Z < 2^31
, genera el número de dígitos en ese número (en base 10).
Reglas
No debe usar ninguna función de cadena (en el caso de sobrecarga, no debe pasar una cadena a funciones que actúen como funciones de cadena y de número entero). No está permitido almacenar el número como una cadena.
Todas las funciones matemáticas están permitidas.
Puede tomar la entrada en cualquier base, pero la salida debe ser la longitud del número en la base 10.
No cuente el signo menos para números negativos. El número nunca será un decimal.
El cero es efectivamente un cero inicial, por lo que puede tener cero o un dígito.
Ejemplos
Input > Output
-45 > 2
1254 > 4
107638538 > 9
-20000 > 5
0 > 0 or 1
-18 > 2
Victorioso
El código más corto en bytes gana.
Respuestas:
Mathematica, 13 bytes
Bien...
fuente
Python 2 , 30 bytes
Pruébalo en línea!
fuente
Japt ,
53 bytesPruébalo en línea!
fuente
a
innecesario: 5 minutos antes de que se publicara el desafío :-) Desafortunadamente, eso significa que solo funcionará en el intérprete en línea. ( ¡JavaScript (ES6), 19 bytes
fuente
f=
.Jalea ,
32 bytes1 byte guardado gracias a Leaky Nun
Pruébalo en línea!
Explicación
fuente
DL
?D
). El desafío dice: en el caso de sobrecarga, no debe pasar una cadena a funciones que actúen como funciones de cadena y de número entero. Esta respuesta sigue esa regla: no estoy pasando una cadenaMi respuesta del otro desafío todavía funciona:
Brachylog , 1 byte
Pruébalo en línea!
La
l
construcción está sobrecargada, pero en los enteros, toma el número de dígitos del entero, ignorando el signo.fuente
Chaincode , 5 bytes
Nota: este es exactamente el mismo código que el del otro desafío
Explicación
fuente
dc , 1 byte
Pruébalo en línea!
Sin usar un builtin incorporado, 18 bytes:
Pruébalo en línea!
fuente
SILOS , 41 bytes
Pruébalo en línea!
Devoluciones
1
para0
.fuente
Lua , 40 bytes
Puerto de mi respuesta de Python
Pruébalo en línea!
fuente
Java 8,
61593937 bytesPuerto de la respuesta C # de @TheLethalCoder , pero sin el
Math.floor
porque usar un(int)
-cast automáticamente pisos / trunca los decimales en Java.Pruébalo en línea.
Respuesta recursiva de Java 7 (
6138 bytes ):La respuesta C del puerto de @ Khaled.K .
Pruébalo en línea.
fuente
C #,
4956 bytesfuente
Alice , 16 bytes
Pruébalo en línea!
Explicación
Esto es simplemente un marco para la entrada numérica → procesamiento matemático → salida numérica.
El resto del código es el algoritmo real:
fuente
Python 2 , 48 bytes
-3 gracias a ovs -1 gracias a pizzapants
Pruébalo en línea!
fuente
lambda x:1+log10(abs(x)+.1)//1
para 48 bytesimport math
ymath.log10
ahorra un byteC, 27 bytes
Probar en línea
C (gcc), 22 bytes
Usando matemáticas, 29 bytes
fuente
R , 40 bytes
Pruébalo en línea!
fuente
MATL , 5 bytes
Pruébalo en línea!
Explicación
fuente
05AB1E , 6 bytes
Pruébalo en línea! o prueba todas las pruebas
fuente
Ä>T.nî
Jalea , 5 bytes
Pruébalo en línea!
fuente
Octava , 27 bytes
Pruébalo en línea!
fuente
PHP, 23 bytes
Pruébalo en línea!
fuente
PowerShell,
5251 bytesGracias a Felipe por solucionar el problema con Log10 y proporcionar un ahorro de 1byte.
Cualquier
System.Math
llamada es extremadamente costosa en PowerShell.Utiliza el método para obtener el Log10 del Valor Abs de la entrada y redondearlo.
fuente
Floor()+1
.Ceil()
falla por poderes de 10$m::Log10(...
para guardar un byteQBIC , 25 bytes
Esto divide la entrada por 10 y realiza un seguimiento de cuántas veces podemos hacer esto hasta
N
<1.Explicación:
fuente
Bash , 50 bytes
Pruébalo en línea!
Sin comando string / array, solo cuenta dígitos por división de enteros.
fuente
Rubí , 33 bytes
Pruébalo en línea!
fuente
a. C. , 6 bytes
Función incorporada
fuente
En realidad , 8 bytes
Pruébalo en línea!
Explicación:
Este programa efectivamente calcula
floor(log10(x))+1
. Para lidiar conlog(0)
ser indefinido (en realidad devuelve,(-inf+nanj)
que es una forma especial de decir que no está definido), la entrada se incrementa si es0
anterior al cálculo de la longitud. Por lo tanto,0
se considera que tiene una longitud de1
.fuente
Pari / GP , 13 bytes
Pruébalo en línea!
fuente
Rubí, 27 bytes
Como prueba:
Produce:
fuente
Perl 5
-p
, 26 bytesPruébalo en línea!
fuente