Desafío
Dando una suma aritmética válida con algunos números faltantes, genera la expresión completa.
Ejemplo:
1#3 123
+ 45# => + 456
-------- --------
579 579
Entrada
- El formato de expresión puede ser una matriz
["1#3", "45#", "579"]
, una cadena"1#3+45#=579"
o 3 entradasf("1#3","45#","579")
Salida
- Igual que la entrada
- No necesita dar salida al resultado
Notas
- Los números que faltan se representarán utilizando
#
o cualquier otro carácter no numérico constante que desee - Suponga que el resultado no tendrá un número faltante
- Suponga que la entrada / salida consta de 2 términos y un resultado final
- Suponga que ambos términos> 0 y resultado> = 2
- Puede haber múltiples soluciones. Puede enviar a cualquiera siempre que el resultado de la suma coincida
Casos de prueba con posibles salidas (formato bonito)
#79 879
+ 44# => + 444
-------- --------
1323 1323
5#5 555
+ 3#3 => + 343
-------- --------
898 898
# 1
+ # => + 1
-------- --------
2 2
### 998
+ ### => + 1 PD: there are a lot of possible outputs for this one
-------- --------
999 999
123 123
+ # => + 1
-------- --------
124 124
9 9
+ #6 => + 46
-------- --------
55 55
#123651 1123651
+ #98# => + 7981
------------ -----------
1131632 1131632
Aplican reglas estándar de código de golf
code-golf
arithmetic
integer
Luis felipe De jesus Munoz
fuente
fuente
=
intercambiados? por ejemplo579=1#3+45#
Respuestas:
Brachylog ,
2216 bytesPruébalo en línea!
-6 bytes gracias a @Fatelize
Explicación
fuente
{"#"∧Ị∋|}ᵐ²ịᵐ.k+~t
es 4 bytes más corto. No estoy seguro de por qué hiciste algo tan complicado en tu mapa.Ṣ
lugar del"#"
cual ahorrará dos bytes más.JavaScript (ES6),
7457 bytesToma la entrada como
(a)(b)(result)
, donde a y b son cadenas con.
dígitos desconocidos y el resultado es un entero. Devuelve una matriz de 2 enteros.Pruébalo en línea!
Comentado
fuente
-~n
no podía ser juston+1
y cómoF=(c,n)=>
se usaba. Ahora que agregó una explicación, todo tiene sentido.c
es la tercera entrada,n
no está definida (y se~undefined
vuelve-1
diferenteundefined+1
). Todo está claro ahora (y desafortunadamente no es algo que pueda portar a Java, que fue principalmente por lo que intenté entenderlo xD). PD: Ya voté ayer, así que voté por una de sus otras respuestas (que ya no voté, no hay muchas disponibles ...); pnull
, convirtiéndolo manualmente-1
. Sin embargo, Java tiene un límite recursivo (muy) limitado de StackOverflow, por lo que usar un método recursivo con aleatoriedad con la esperanza de que termine correctamente dentro de aproximadamente 1024 llamadas recursivas no funcionará de todos modos en Java. Ah bueno. He votado tu propina. ¡Ten un buen fin de semana! :)###+###=999
, sus probabilidades son de 1 en 1000. Por lo tanto, con 1024 iteraciones, debería tener éxito un poco más de lo que falla. :)Matlab,
143134132119115 bytes-4 bytes gracias a @Luismendo
Pruébalo en línea
Bastante grande y bastante estúpido. Simplemente reemplaza todo
#
con dígitos aleatorios hasta que encuentra los correctos.fuente
R ,
6751 bytesRock simple y escalas horriblemente, simplemente grep todas las combinaciones de suma. Utilizar "." para dígitos desconocidos. No encontrará la misma respuesta que el caso de prueba número 4, pero dará una posible respuesta, que sigue la letra de las reglas tal como se indica.
-16 bytes mediante grepping después de formar la salida y reemplazar
paste
con el?
operador.Pruébalo en línea!
fuente
?
... Creo que esta es la primera vez. Por cierto, olvidé si ya te lo dije, pero estamos tratando de que R sea nominado para el idioma de septiembre del mes . Puedes votar si aún no lo has hecho.Carbón , 32 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Empuje dos cadenas
0
a la lista vacía predefinidau
para que el ciclo while continúe.Repita mientras la suma de convertir los valores en
u
entero no es igual al resultado deseado.Crea una matriz de las dos entradas y mapea sobre ella.
Reemplace cada uno
#
con un dígito aleatorio y asigne el resultado nuevamenteu
.Imprime el resultado justificado a la derecha. (La izquierda justificada sería solo
υ
para un ahorro de 4 bytes).fuente
Jalea , 20 bytes
Pruébalo en línea!
fuente
05AB1E (heredado),
2320 bytes-3 bytes gracias a @Emigna .
Los dígitos desconocidos son espacios (
). El orden de entrada debe ser: resultado esperado; cuerda más larga; cuerda más corta
Pruébalo en línea .
Explicación:
fuente
Perl 6 ,
8174 bytes-7 bytes gracias a nwellnhof!
Pruébalo en línea!
Bloque de código anónimo que toma la entrada como una cadena que contiene una expresión aritmética, por ejemplo, "12 # + 45 # = 579". Sustituye cada uno
#
con posibles permutaciones de dígitos, sustituye el=
con==
y encuentra el primer resultado válido.Explicación:
fuente
S:g[\#]=$a[$++]
en lugar detrans
a 74 bytes .S///
ese tipo de sintaxis! ¡Gracias!APL (Dyalog Unicode) , 22 bytes
Pruébalo en línea!
fuente
Java 10,
203198193 bytesPruébalo en línea.
Explicación:
fuente
C (gcc) ,
228213203172170 bytes-15 Bytes gracias a @ceilingcat . Nunca he usado
index
antes.-10 Bytes gracias a @Logem . Magia de preprocesador
llamada refactorizada
exit(0)
con pone como parámetro.Pruébalo en línea!
fuente
-DX=c=index(v
, con el-DX=(c=index(v
enlace TIO en mi último comentario.C # .NET,
225220196 bytesPuerto de mi respuesta Java 10 .
(Estoy muy oxidado en el golf C # .NET, por lo que definitivamente puedo jugar al golf ...)
-3 bytes implícitamente gracias a @ user82593 y este nuevo consejo de C # que agregó .
-29 bytes gracias a @hvd .
Pruébalo en línea.
Explicación:
fuente
using System;
en su lugar, es más corto quenamespace System{}
.using System.*;
similar a las importaciones en Java, pero eso no funcionó. Olvidé que tenía que quitar la.*
parte. Gracias por los 5 bytes.int.Parse
(-4), usarnew System.Random()
(+7) y soltarusing System;
(-13) para guardar otros 10 bytes. :) Además, no es necesario.ToCharArray()
, eso quita 14 bytes más.int.Parse
vsSystem.Int32.Parse
... Es básicamente lo mismo queSystem.String
ystring
... Y no sabía que era posible recorrer los personajes sin el.ToCharArray()
. Gracias por otros -24 bytes. : DPython 3 ,
121155152149 bytesPruébalo en línea!
+34 Nueva solución con expresiones regulares para eludir el hecho de que Python no admite números con ceros a la izquierda.
-3 gracias a @Jonathan Frech
La solución anterior no funciona si # es el primer carácter de cualquier número (porque eval no acepta ceros iniciales) y, por lo tanto, no es válido :(
Pruébalo en línea!
fuente
PHP, 112 bytes
solución de fuerza bruta poco convincente
toma una cadena como entrada, se detiene en la primera solución. Ejecutar como tubería
-nR
o probarlo en línea .fuente
Powershell, 91 bytes
El script encuentra todas las soluciones. El número total de iteraciones es 10 potencia el número de caracteres
#
. La profundidad de recursión es igual al número de caracteres#
.Script de prueba:
Powershell, 'Asume que ambos términos> 0' es obligatorio, 110 bytes
fuente