Desafío
Calcule la extraña suma de dos números naturales (también conocida como suma lunar):
Dado A=... a2 a1 a0
y B=... b2 b1 b0
dos números naturales escritos en la base decimal, la suma extraña se define, en función de la operación máxima , como:
A+B=... max(a2,b2) max(a1,b1) max(a0,b0)
... a2 a1 a0
+ ... b2 b1 b0
----------------------------------------
... max(a2,b2) max(a1,b1) max(a0,b0)
Entrada
Dos números naturales
Todo lo siguiente está permitido:
- Cuerdas con relleno cero (misma longitud)
- Cuerdas acolchadas en el espacio izquierdo
- Cuerdas acolchadas en el espacio derecho
- Matriz de dos cuerdas acolchadas
- Matriz de caracteres 2D rellena de espacio
Salida
A números naturales
Ejemplo
1999+2018-->2999
17210+701-->17711
32+17-->37
308+250-->358
308+25-->328
Reglas
- La entrada y la salida se pueden proporcionar en cualquier formato conveniente (elija el formato más apropiado para su idioma / solución).
- No es necesario manejar valores negativos o entradas inválidas
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Si es posible, incluya un enlace a un entorno de prueba en línea para que otras personas puedan probar su código.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
code-golf
math
arithmetic
mdahmoune
fuente
fuente
Respuestas:
Python 2 , 20 bytes
Pruébalo en línea!
E / S como listas de dígitos rellenadas con 0.
fuente
Gelatina , 1 byte
Pruébalo en línea!
E / S como listas de dígitos rellenadas con 0.
fuente
R ,
6865 bytesPruébalo en línea!
Entrada como enteros, salida como lista de dígitos.
Si se permitieran listas de dígitos con relleno cero, entonces simplemente
pmax
sería suficiente.fuente
MATL , 2 bytes
El formato de entrada es: matriz de caracteres 2D de dos filas, cada una correspondiente a una línea, con el número más corto con espacios a la izquierda. Por ejemplo
que en MATL se define como
Pruébalo en línea!
Explicación
fuente
Python 2 ,
736056 bytesPruébalo en línea!
Toma la entrada como dos cadenas y devuelve una lista de dígitos
Alternativa:
Toma la entrada como dos enteros; misma salida
Python 2 ,
6059 bytesPruébalo en línea!
fuente
Java 10,
7857 bytesIngrese como dos matrices de caracteres con espacio.
Modifica la primera matriz de entrada en lugar de devolver una nueva para guardar 21 bytes (gracias a @ OlivierGrégoire ).
Pruébalo en línea.
Explicación:
fuente
a->b->{for(int i=a.length;i-->0;)if(a[i]<b[i])a[i]=b[i];}
( 57 bytes ). Reutilicea
como salida para ganar mucho, mucho bytes.J ,
1412 bytes-2 bytes gracias a Jonás
Pruébalo en línea!
Entrada y salida como lista (s) de dígitos
fuente
(>./@,:)&.|.
. Pruébalo en línea!Japt,
987 bytesToma la entrada como una matriz de matrices de dígitos.
Intentalo
Si se permiten las matrices rellenas con ceros como entrada (actualmente estaría en un "formato conveniente" pero sospecho que esa no es la intención del retador), entonces esto puede ser de 3 bytes.
Intentalo
fuente
y
ahora? No sabía eso. Aquí hay otra forma , también 8 bytes.'
. No sé si eso alguna vez ahorraría bytes, pero definitivamente es genial.Perl 6 , 37 bytes
Pruébalo en línea!
Toma la entrada como una lista de listas de dígitos.
fuente
05AB1E ,
9 65 bytes-3 gracias a Emigna
-1 gracias a Shaggy
Toma datos como una lista de listas de dígitos
Pruébalo en línea! o Pruebe todos los casos de prueba
fuente
€R
puede serí
. Además, no creo que necesites€þ
comonumber > space
€þ
y no funcionó, pero ahora sí ...J
al final?Perl 6 , 15 bytes
Pruébalo en línea!
Toma la entrada como una lista de matrices de caracteres rellenas de espacio, aunque para este desafío el formato de entrada laxa lo hace bastante aburrido. Alternativamente, aquí está el programa que toma una lista de dos enteros en su lugar:
Perl 6 , 41 bytes
Pruébalo en línea!
Si no le importa una gran cantidad de espacio en blanco, también puede eliminar el
+
desde el frente.Explicación:
fuente
Haskell , 40 bytes
Entrada / salida como cadenas, pruébelo en línea!
Explicación
La función
p
reemplaza cada carácter por un espacio, utilizandop b++a
y, porp a++b
lo tanto, tienen la misma longitud. De esta manera podemos usarzipWith
sin perder ningún elemento, usarlomax
funciona porque un(espacio) tiene un punto de código más bajo que cualquiera de los caracteres
['0'..'9']
.fuente
JavaScript (ES6),
5149 bytesNB: esta respuesta se publicó antes de que se permitieran explícitamente los formatos de E / S sueltos. Con matrices de dígitos con relleno de cero, esto se puede hacer en 33 bytes (en mi humilde opinión, es mucho menos interesante).
Toma la entrada como dos enteros. Devuelve un entero.
Pruébalo en línea!
Comentado
Versión alternativa
Mismo formato de E / S.
Pruébalo en línea!
fuente
Tcl , 156 bytes
Pruébalo en línea!
No es muy golfista, pero tuve que probarlo. ¡Lo jugaré más tarde!
fuente
Lote de 120 bytes
Toma datos como parámetros de línea de comandos. La versión de 188 bytes funciona en enteros de longitud arbitraria:
Toma entrada en STDIN.
fuente
Ramita , 125 bytes
Cuando vi este desafío, pensé: "¡permítanme usar un lenguaje de plantilla! Seguro que encaja bien"
Estaba equivocado ... tan equivocado ... ¡Pero fue divertido!
Esto requiere que "estrictas_variables" esté establecido en
false
(valor predeterminado).Para usar esta macro, puede hacer lo siguiente:
Debería mostrar 167.
Puede probar esto en https://twigfiddle.com/rg0biy
("estrictas_variables" está desactivado, está activado de forma predeterminada en el sitio web)
fuente
Casco , 5 bytes
Convenientemente toma entrada / salida como una lista de dígitos, ¡ pruébelo en línea o verifique todo!
Explicación
fuente
Stax , 5 bytes
Ejecutar y depurarlo
Este programa toma la entrada como una matriz de cadenas.
Ejecute este
Esta es la primera vez que veo un uso para la instrucción de superposición "en estado salvaje".
fuente
SNOBOL4 (CSNOBOL4) , 153 bytes
Pruébalo en línea!
fuente
Pyth, 5 bytes
Toma la entrada como una matriz de dos cadenas de espacio.
Probarlo aquí .
fuente
Japt , 4 bytes
La entrada se toma como una matriz de dos matrices de números con relleno de 0.
Pruébalo en línea!
fuente
Ceilán, 55/99
Con cadenas de 0 o espacio de la misma longitud (que devuelven un iterable de caracteres)
Con cadenas de 0 o de espacio (devolviendo una cadena):
Con cadenas de longitud posiblemente diferente (devolviendo una cadena):
fuente
C # (.NET Core) , 57 bytes
-1 bytes agregando curry
Pruébalo en línea
fuente
Rubí , 25 bytes.
Pruébalo en línea!
Lista acolchada, bla, bla. (Aunque se siente un poco como hacer trampa).
fuente
Retina 0.8.2 , 39 bytes
Pruébalo en línea! El enlace incluye un conjunto de pruebas. La versión anterior de Retina 1 de 45 bytes acepta cadenas sin relleno:
Pruébalo en línea! El enlace incluye un conjunto de pruebas. Explicación:
Rellene ambos valores a la misma longitud. (Retina 1 solamente. Hay formas de emular esto en Retina 0.8.2 pero no son muy golfosas).
Transponer los valores.
Ordenar cada par en orden.
Elimine todos los dígitos bajos y las líneas nuevas excedentes.
fuente
Carbón de leña , 8 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
La versión de 10 bytes "agrega" cualquier número de cadenas acolchadas:
Pruébalo en línea! El enlace es a la versión detallada del código. La versión anterior de 14 bytes acepta cadenas sin relleno:
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
La versión de 17 bytes "agrega" cualquier número de cadenas:
Pruébalo en línea! El enlace es a la versión detallada del código.
fuente
Mathematica 50 bytes
a = 543; b = 791;
(* 793 *)
fuente