Expandir un número
Su tarea es expandir un número entero mayor que 0 de la siguiente manera:
Divida el número en dígitos decimales y para cada dígito genere una lista de acuerdo con estas reglas:
- si el dígito es impar, la lista comienza con el dígito y baja a 1;
- si el dígito es par, la lista comienza con el dígito y sube a 9.
- Si el dígito es 0, la lista está vacía.
Escriba las listas para los números impares debajo de los dígitos y arriba para los pares. Luego alinee las columnas y junte los dígitos en cada fila para formar enteros. Como paso final, sume los números para encontrar la expansión del número.
Aquí hay un ejemplo de las reglas anteriores aplicadas a 34607:
9
8
79
68
57
346 7 -> 399 7 -> 3997 -> 9418
2 6 288 6 2886
1 5 177 5 1775
4 66 4 664
3 5 3 53
2 4 2 42
1 1 1
Aquí están los casos de prueba:
1: 1
2: 44
3: 6
44: 429
217: 1270
911: 947
2345: 26114
20067: 3450
34875632: 70664504
9348765347634763: 18406119382875401
Este es el código de golf , por lo que ganan las respuestas más cortas en bytes en cada idioma.
Respuestas:
Jalea , 13 bytes
Un enlace monádico que toma y devuelve enteros positivos.
Pruébalo en línea! o ver el conjunto de pruebas .
¿Cómo?
fuente
Perl 6 ,
6866 bytesIntentalo
Intentalo
Expandido:
fuente
APL (Dyalog) , 39 bytes
Programa completo del cuerpo. Solicita la entrada de STDIN. Imprime el resultado en STDOUT.
Pruébalo en línea!
Para mostrar el último caso de prueba correctamente,
⎕FR
( F loating punto R ePresentation) se ha establecido en 128 bits decimal y⎕PP
( P rint P recision) ha sido ajustada a 34 dígitos.⍞
solicitud de ingreso de texto desde STDIN⍎¨
ejecutar cada uno (obtiene cada dígito como un número){
…}¨
Para cada elemento, aplique la siguiente función donde el argumento está representado por⍵
:2|⍵:
si es impar (iluminado "resto" de división si se divide entre 2), entonces:⌽
marcha atrás⍳
los dedos desde 1 hasta⍵
el argumento⋄
más×⍵:
si el argumento es positivo (literalmente, "if" signum), entonces:⌽
marcha atrás⍵
el argumento,
seguido por⍵
argumento↓
elementos caídos de⍳9
los los Ɩ ntegers desde 1 hasta 9⋄
más⍬
lista vacía↑
mezclar (combinar) esta lista de listas en una única matriz, rellenando con ceros a la derecha⍉
transponer↓
dividir esta matriz en una lista de listas0~⍨¨
eliminar todos los ceros de cada lista10⊥¨
Convierta cada uno de base-10 a números normales (esto recoge los dígitos)+/
suma los númerosfuente
JavaScript (ES6),
888382 bytesNota
9 - k < x || 9
guarda un byte encima9 - k >= x && 9
pero genera en1
lugar de0
si se verifica la desigualdad. Sería un problema si condujera a1 > k
, desencadenando el camino equivocado en el ternario externo. Pero significaría esok = 0
y9 - k = 9
, por lo tanto , no podemos tenerlo9 - k < x
al mismo tiempo.Casos de prueba
Nota: Se eliminó el último caso de prueba que excede la precisión del número JS.
Mostrar fragmento de código
fuente
Japt , 18 bytes
Pruébalo en línea!
fuente
Java 11,
210209191181 bytesOk, esto tomó bastante tiempo (principalmente porque cometí un error al principio, así que tuve que escribir cada paso para comprender mejor lo que hice mal). Lo más probable es que se pueda jugar más al golf.
-18 bytes gracias a @ceilingcat .
Explicación:
Pruébalo aquí.
fuente
Pip , 28 bytes
Pruébalo en línea!
Explicación
Cómo proceden los pasos
34607
como argumento:fuente
Pyth - 23 bytes
Test Suite .
fuente
Haskell ,
106104bytesPruébalo en línea!
fuente
R ,
153146bytesPruébalo en línea!
A veces, no puedo decir si solo soy basura en el golf, o si R es ...Definitivamente soy yo, ahorré 7 bytes gracias al usuario2390246, quien me recordó otra forma de extraer dígitos (que me sugerí) .Puede reemplazar
strtoi
conas.double
para obtener18406718084351604
el último caso de prueba (que está mal); R solo tiene enteros de 32 bits.fuente
character->int
cuando llamé:
y luego lo usé destrtoi
todos modos.Perl 5 , 120 + 1 (
-a
) = 121 bytesPruébalo en línea!
fuente
Python 2 , 131 bytes
Pruébalo en línea!
fuente
05AB1E , 16 bytes
Pruébelo en línea o verifique todos los casos de prueba .
O alternativamente:
Explicación:
fuente
Burlesque , 39 bytes
Pruébalo en línea!
fuente