Me di cuenta de que cierto juego tenía un contador de vida peculiar, que en lugar de detenerse 999
, ganó un nuevo dígito: el siguiente número era corona cien o 👑00
. Después 👑99
vino la corona cien coronas ( 👑👑0
) y el último número, después 👑👑9
, fue la corona cien coronas o 👑👑👑
, que sería 1110 en decimal.
Su tarea es escribir un programa o una función que genere este contador.
Dado un entero del rango [0,1110]
(incluido en ambos extremos), genera una cadena de tres caracteres donde
- cada personaje es de la lista
0123456789👑
- la corona (👑) solo puede aparecer como el carácter más a la izquierda o cuando hay una corona a la izquierda
- cuando este número se lee como un número decimal pero con la corona contando como
10
, se obtiene el número original
Casos de prueba
0 → "000"
15 → "015"
179 → "179"
999 → "999"
1000 → "👑00"
1097 → "👑97"
1100 → "👑👑0"
1108 → "👑👑8"
1110 → "👑👑👑"
Puede usar cualquier carácter no decimal en lugar de la corona. Para fomentar una impresión bonita, el carácter de la corona (secuencia de bytes UTF8 "\ 240 \ 159 \ 145 \ 145") cuenta como un byte en lugar de cuatro. Su programa no tiene que funcionar para números fuera del rango válido.
Este es el código de golf , por lo que gana la respuesta más corta, medida en bytes.
Respuestas:
05AB1E ,
2018 bytesUtiliza espacios para coronas.
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
JavaScript (Node.js) , 50 bytes
Pruébalo en línea!
TIO se basó en la respuesta de Arnauld. Mostrar 👑 como
#
.fuente
JavaScript (ES6),
62 4644 bytesGuardado 2 bytes gracias a @nwellnhof
Emite coronas como
x
caracteres.Pruébalo en línea!
¿Cómo?
/1+0/
xxx
. Finalmente, devolvemos los 3 caracteres finales.Ejemplos:
fuente
s.replace(/./g,`#`)
está ordenado ... lo tuveArray(s.length+1).join`#`
, ¡y mi expresión regular también fue más larga! Buen trabajo, +1Lenguaje de programación Shakespeare ,
763692690689683 bytesPruébalo en línea!
Utiliza en
" "
lugar de coronas. A costa de 4 bytes más, esto podría modificarse para mostrar un carácter "visible" en su lugar.Explicación:
fuente
Python 2 , 53 bytes
Me quito el sombrero ante Arnauld por -22 bytes . Sin embargo, la recursión aún gana.
Pruébalo en línea!
Python 2 , 51 bytes
Esto implementa el método recursivo de tsh . Guardado 2 bytes gracias a los ovs .
Pruébalo en línea!
fuente
1+0
. De ahí esta versión de 53 bytes .Python 2 , 52 bytes
Pruébalo en línea!
fuente
Retina 0.8.2 , 41 bytes
Pruébalo en línea! Utiliza
#
s en lugar de👑
s. El enlace incluye casos de prueba. Explicación:Rellene números de 1 y 2 dígitos a tres dígitos.
Cambie los primeros
1
s de números de 4 dígitos a#
sy elimine el siguiente0
.fuente
Jalea , 19 bytes - 0 = 19
Un programa completo que imprime el resultado utilizando un carácter de espacio como corona.
(Como enlace monádico, se obtiene una lista mixta de dígitos enteros y caracteres espaciales)
Pruébalo en línea! O vea el conjunto de pruebas .
... tal vez una implementación recursiva sea más corta.
¿Cómo?
fuente
Python 2 , 40 bytes
Pruébalo en línea!
Implementa una idea similar a la respuesta basada en expresiones regulares del Sr. Xcoder pero sin una expresión regular. Eliminamos los primeros 1
10000+n
y el siguiente carácter, luego rellenamos con espacios a la longitud 3. El resultado es similar a la solución de ovs usandolstrip
pero sin necesidad de dos casos.fuente
Limpio , 87 bytes
No emite coronas (usos
c
).Pruébalo en línea!
Limpiar , 99-3 = 96 bytes
Este tiene coronas.
Pruébalo en línea!
fuente
Japt, 20 bytes
Un puerto ingenuo (¡y un poco borracho!) De la solución de Arnauld. Usos
"
para corona.Intentalo
fuente
Java 10,
8483 bytesPuerto de @tsh 'C comentario .
Usos
.
lugar de coronas.Pruébalo en línea.
Enfoque alternativo (84 (87-3) bytes):
Puerto de la respuesta de @tsh 'JavaScript .
Pruébalo en línea.
fuente
APL (Dyalog Unicode) , 32 bytes
Pruébalo en línea!
Función directa de prefijo.
Port of @ tsh's JS Answer .
Cómo:
fuente
PHP, 71 bytes
estampados
C
para la corona. Ejecutar como tubería con-nR
o probarlo en línea .fuente
Haskell , 48 bytes
Pruébalo en línea!
fuente
C,
8458 bytes¡Gracias a @tsh por guardar 25 bytes y gracias a @ceilingcat por guardar un byte!
Pruébalo en línea!
fuente
f(n,p){for(p=1000;p/=10;)n-=putchar(n/p>9?46:48+n/p)%12*p;}
sed , 39
48 bytes, pero la puntuación es 39, ya que cada 👑 cuenta como 1.
Pruébalo en línea!
fuente
Perl 6 , 38 - 9 = 29 bytes
-2 bytes gracias a Jo King
Pruébalo en línea!
Inspirado en la solución JavaScript de Arnauld.
fuente
Limpio , 96 bytes
Creo que Super Mario 3D Land, New Super Mao Bros.2 y Super Mario 3D World tienen este contador de vida.
Estoy de acuerdo con Clean .
fuente