En este desafío, escribirá un programa para generar cuántos decimales hay en la cadena de entrada y recortará la entrada si es necesario.
Ejemplos
-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
Reglas
- La entrada será una cadena que se puede tomar, STDIN, argumentos de función o el equivalente más cercano
- La salida puede ser a través de la función return, STDOUT o el equivalente más cercano.
- No hay límite en el tamaño para el entero de entrada, excepto para la longitud máxima de cadena de sus idiomas .
- Si la entrada tiene ceros innecesarios (iniciales o finales):
- Deberías sacarlos
- Salida de la cantidad de lugar decimal en el nuevo número
- Salida del nuevo número separado por un separador (por ejemplo, espacio, nueva línea, coma)
- La entrada siempre coincidirá con este RegEx:
-?\d+(\.\d+)?
o si no habla RegEx :- No podría ser una
-
al principio lo que implica un número negativo. Entonces habrá al menos un dígito. Entonces podría haber ....
ay algunos dígitos más. - Para verificar si una entrada es válida, marque aquí
- No podría ser una
- Sin expresiones regulares
Este es el código de golf, por lo que el código más corto en bytes gana
0
.Respuestas:
PHP 7, 142 bytes
De alguna manera logré exprimir todo en una sola declaración de impresión:
Se ejecuta desde la línea de comandos, como:
Manifestación
Vea todos los casos de prueba, incluido uno muy largo (62 caracteres) en acción:
Probar antes de comprar 1
1 Desplácese sobre el cuadro debajo de " Salida para 7.0.0 " para ver todos los resultados.
fuente
Python 2,
165180 bytesAl principio estaba pensando en escribir mi primer programa Pyth, conseguí contar los dígitos después de la coma potencial. Pero luego me molesté bastante, no sé cómo disfrutarías ese idioma, supongo que es solo para ganar. De todos modos, aquí está mi solución (editado ya que no funcionó para grandes cantidades):
En caso de que alguien quiera desarrollar mi trabajo en Pyth:
~b@+cz"."" "1Wq@b_1"0"~b<b_1)plrb6
para ver dónde se encuentra, puede insertar un punto intermedio@+
.fuente
05AB1E , 23 bytes (no competitivo)
Maldición, estaba tan cerca. Python analiza flotadores muy grandes usando notación científica, así que arreglé este error en el intérprete. Sin embargo, esto se hizo después del desafío y, por lo tanto, mi presentación no es competitiva.
Código:
Explicación:
Utiliza la codificación ISO 8859-1 .
fuente
JavaScript (ES6), 156
162Editar error corregido para '-0' - thx @Fez Vrasta Edit 2 6 bytes guardados thx @Neil
Es un desastre, pero está 100% basado en cadenas: sin límite debido a los tipos numéricos
Menos golf
Prueba
fuente
-0
entrada ... deberíamos dar salida0
, no0 0
c=='.'?p=t:+c&&(l=t,k=k||t)
Funciona para ahorrarte un byte?t=l=k=p=0
y++t&&c=='.'
etc.ES6,
102180177 bytesEditar: Guardado 3 bytes gracias a @ edc65; guardado 1 byte gracias a insertusernamehere.
fuente
t=[...s]
t[--l]==0
cont[--l]<1
.C ++, 180 bytes
Este es C ++ portátil, que no hace suposiciones de codificación de caracteres e incluye bibliotecas (ni siquiera la Biblioteca estándar).
La entrada se pasa
s
. Se devuelve el número de decimales; la cadena se modifica en el lugar y se devuelve el nuevo iniciop
.Por derecho, debería devolver un
size_t
, pero en su lugar voy a afirmar que debe compilar esto para un sistema operativo que limita el tamaño de las cadenas a la mitad del rango deint
. Creo que eso es razonable; Cuenta con más de 2 mil millones de decimales en arquitecturas de 32 bits.Explicación
Programa de prueba
Prueba de salida
fuente