Reto
Dado un número entero, Q
en el rango -(2^100) ≤ Q ≤ 2^100
, genera el número de dígitos en ese número (en base 10).
Reglas
Sí, puede tomar el número como una cadena y encontrar su longitud.
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 tendrá un punto decimal.
Cero puede tener uno o cero dígitos.
Suponga que la entrada siempre será un número entero válido.
Ejemplos
Input > Output
-45 > 2
12548026 > 8
33107638153846291829 > 20
-20000 > 5
0 > 1 or 0
Victorioso
El código más corto en bytes gana.
Taxi , 1118 bytes
Pruébalo en línea!
Sin golf:
Explicación:
fuente
Zoom Zoom
en cada ciclo deplan "r"
. Solo lo probé hasta 100,000 dígitos y nunca se quedó sin gasolina. No lo calculé, pero supongo que se necesita una tarifa más que suficiente para pagar el gas que está usando, por lo que llena el tanque en cada circuito.Mathematica, 13 bytes
Hay un incorporado ... vuelve
0
para0
.fuente
There's a built-in
: ¿Cuándo no está allí?dc, 3
Tenga en cuenta que normalmente
dc
requiere que se den números negativos en_
lugar de los más habituales-
. Sin embargo, en este caso, cualquiera puede ser utilizado. Si-
se da, entoncesdc
trata esto como una resta en una pila vacía, tiradc: stack empty
y luego continúa con el resto del número; Por lo tanto, el resultado no es diferente.Pruébalo en línea .
fuente
Z
como una presentación de función?dc
Es un lenguaje concatenante con operadores quote + dup + eval, por lo tanto, puede reutilizar cadenas de código arbitrarias.Retina , 2 bytes
Pruébalo en línea!
Retina realmente no sabe qué son los números, por lo que la entrada se trata como una cadena y simplemente contamos los caracteres de los dígitos.
fuente
05AB1E , 2 bytes
Pruébalo en línea! o prueba todas las pruebas!
fuente
Ä
¿eh? Noþ
? Lo suficientemente justo.Ä
primero, peroþ
manejaría un punto decimal, así que supongo que es un poco mejor.Alice , 16 bytes
Pruébalo en línea!
Explicación
Encontrar un diseño medio decente para esto fue bastante complicado. Todavía no estoy muy contento con él debido a los espacios, el
<
y el;
, pero esto es lo mejor que puedo hacer por ahora.La longitud de la cadena es una de esas incorporaciones muy comunes que no existen en Alice, porque su entrada es una cadena y su salida es un entero (y todos los comandos de Alice son estrictamente enteros a enteros o cadenas a cadenas). Podemos medir la longitud de una cadena escribiéndola en la cinta en modo Ordinal y luego encontrando su final en modo Cardinal.
También intenté cuidar el signo menos en modo Cardinal con
H
(valor absoluto), pero el cambio de modo adicional siempre terminó siendo más costoso en mis intentos.fuente
PHP, 23 bytes
Pruébalo en línea!
log de base 10 del valor absoluto más un elenco a int
para cero como entrada log10 devuelve lo
INF
que se interpreta como falsoLa mejor manera es reemplazar
$argn
con$argn?:1
+3 bytesPHP, 27 bytes
la longitud de la cadena menos booleana es menor que cero
+2 bytes para comparar cadenas
$argn<"0"
Pruébalo en línea!
PHP, 32 bytes
Pruébalo en línea!
Regex cuenta todos los dígitos
35 bytes
Pruébalo en línea!
longitud de cadena menos recuento
-
strspn
fuente
10
, porque^
tiene menor prioridad. Puedes arreglarlo con-~
.<?=strlen(abs($argn));
?$argn?:1
? Sería 26 bytes conlog10()
yabs()
.-~$x
es equivalente a((int)$x)+1
.<?=-~log10(abs($argn?:1));
parece funcionar.Fortran 95 (gfortran),
1219695 bytesExplicación:
Resta el índice del signo '-' de la longitud del argumento.
Las matrices comienzan en 1 en Fortran, e index () devuelve 0 si no se encuentra el símbolo.
Editar: Cambiado al entero implícito "i", también argumento consolidado getter.
Editar: -1 byte gracias a @Tsathoggua
fuente
PowerShell, 24 bytes
convierte el valor "absoluto" de los argumentos de entrada en una cadena y obtiene la propiedad "longitud" de la misma.
1 byte más corto que
"".Length
hasta que alguien encuentre una mejor manera de obtener los abdominales de un número en PS, esto probablemente sea lo más breve posible.
fuente
"$args".trim('-')|% Le*
? :)05AB1E , 2 bytes
Pruébalo en línea!
fuente
brainfuck , 37 bytes
La salida es por valor de byte.
Pruébalo en línea!
Explicación
fuente
Ruby,
1511 + 1 =1612 bytesUsa la
-n
bandera.Pruébalo en línea!
Explicación
fuente
Jalea , 2 bytes
Pruébalo en línea!
Esto hace literalmente lo que se le pidió:
fuente
D
funciona en decimales? Would-1.2
salida[-1,-0.2]
? Lo intenté yo mismo, no lo hace.654.321D
produciría[6,5,4.321]
(bueno, en realidad[6.0,5.0,4.321000000000026]
)[-6.0, -5.0, -4.321000000000026]
, en realidad, aparentemente.CJam , 5 bytes
Basado en cadenas.
Pruébalo en línea!
9 bytes para una solución puramente matemática:
O otros 5 con conversión de base:
fuente
rizs,
.Japt , 5 bytes
Pruébalo en línea!
Explicación
fuente
RProgN 2 , 2 bytes
Pruébalo en línea!
Simplemente obtiene el valor absoluto de la entrada y cuenta los dígitos.
fuente
JavaScript (ES6),
27262524 bytesToma la entrada como una cadena.
fuente
s=>`${s>0?s:-s}`.length
:!JavaScript (ES6), 23 bytes
Enfoque diferente a la respuesta de Shaggy .
fuente
s=>s.length-(s<0)
ahorra 6 bytesJava,
3024 bytesAsume que
i
es aBigInteger
. Además, el tipo está contextualizado, por lo que no se requieren importaciones, como se muestra en el código de prueba.Prueba
Ahorra
fuente
+""
en lugar de.toString()
?i
en su respuesta. Creo que más respuestas lambda deberían hacer esto.Python 2 ,
3122 bytes-9 bytes gracias a Rod.
Pruébalo en línea!
fuente
len(`abs(s)`)
con número ya que la entrada es más cortalen∘repr∘abs
.Brain-Flak , 63 bytes
Pruébalo en línea!
Esto es 62 bytes de código y +1 byte para la
-a
bandera.Intenté otros dos enfoques, pero desafortunadamente ambos fueron más largos:
Esta debería ser una respuesta muy corta. De hecho, si no tuviéramos que soportar números negativos, podríamos hacer:
Pero primero tenemos que comparar la primera entrada con 45 (ASCII
-
), que es la mayor parte del recuento de bytes de esta respuesta.Una solución aritmética podría ser más corta.
fuente
([{}]((((()()()()())){}{})){}{})({(<()>)}{}[]<>)
Rubí, 20 bytes
fuente
->a{a.abs.to_s.size}[-95]
->a{a.abs.to_s.size}.call(-92)
Pyth, 4 bytes
Pruébalo en línea!
Todos los casos de prueba
fuente
R, 18 bytes
fuente
Alice , 10 bytes (no competitiva)
Pruébalo en línea!
Esta es una solución no competitiva, porque en el momento en que se publicó este desafío, el comando
c
estaba en el intérprete oficial (y solo: D). Martin Ender lo arregló mientras tanto, así que esto ahora funciona.Explicación
El puntero de instrucciones pasa a través de los dos espejos (
/
) varias veces, por lo que puede ser un poco difícil de seguir. Trataré de explicarlo lo más claramente posible, usando direcciones cardinales (por ejemplo, N está arriba, SW está abajo a la izquierda ...). Llamaré/1
al espejo más a la izquierda y/2
al más a la derecha.fuente
Marca GNU , 78 bytes
Estilo imperativo:
Estilo funcional, 113 bytes:
Pure Make, 83 bytes:
fuente
C ++,
8076 bytesImprime la longitud del argumento, menos 1 si el primer carácter es un menos porque
bool
garantiza la conversión a1
sitrue
o0
sifalse
<46
lugar de=='-'
, y para deferenciar la matriz en lugar de[]
fuente
c[1][0]=='-'
con,*c[1]<46
ya que podemos suponer que la entrada siempre será un número entero válido. (A menos que se permitan prefijos que no sean '-' ...)TI-Basic (TI-84 Plus CE, OS 5.2+), 6 bytes
TI-Basic es un lenguaje tokenizado;
length(
ytoString(
son dos bytes cada uno.Ans
se usa como entrada implícita; el último (solo) valor de la línea se devuelve implícitamente.Bastante simple, toma el valor absoluto para deshacerse de un signo menos, convierte a cadena, devuelve la longitud de la cadena.
Un enfoque matemático de 6 bytes que no funciona para 0:
fuente
toString(
?Pari / GP , 13 bytes
Pruébalo en línea!
fuente