Usando nuestros símbolos matemáticos familiares: +, x, paréntesis y cualquier número racional, es fácil crear expresiones que evalúen algún número deseado. Por ejemplo: 1+(2x3)=7
, (1+2)+(3x6.5)=22.5
y así sucesivamente. Bastante aburrido.
En este desafío, vamos a utilizar un nuevo operador: ±
. El uso de ±
en una expresión significa que necesita evaluar la expresión reemplazando la ±
's por +
o -
de todas las formas posibles, y devolver el conjunto de todos los valores posibles. Por ejemplo:
1±2±3 = {-4,0,2,6}
porque1±2±3
puede ser cualquiera de1+2+3
,1+2-3
,1-2+3
y1-2-3
y sus valores son6,0,2,-4
respectivamente.(±2)x(2±3) = {-10,-2,2,10}
por razones similares
Ahora bien, como resulta que, dado cualquier conjunto de números reales distintos, es posible crear una expresión con +
, x
, (
, )
, ±
, y los números reales que se evalúa como el conjunto dado.
Tarea
Su tarea es escribir un programa o función en un idioma de su elección, que lleva una secuencia (lista / serie / cualquier formato conveniente) de números enteros y da salida a una expresión (como una cadena) que consiste en +
, x
, (
, )
, ±
, y los números racionales que evalúa el conjunto de los números dados.
- Tenga en cuenta que el carácter exacto
±
no importa; puedes usar cualquier otro personaje de tu elección siempre que sea distinguible de los otros personajes que estás usando. Pero debe mencionar qué personaje está utilizando en su presentación. - Se permite que la entrada consista en aproximaciones decimales (hasta una precisión razonable) de los números racionales utilizados.
- La entrada y salida se pueden tomar de cualquiera de las formas estándar.
- Las lagunas estándar están prohibidas.
- Puede suponer que los enteros dados serán distintos y se proporcionarán en orden creciente.
- La salida puede contener espacios y líneas nuevas.
Criterio ganador
Este es el código de golf , por lo que gana el código más corto en bytes.
Ejemplos
Entrada | Salida posible ------------- + ----------------------------- [1,2,3] | 2 ± 0.5 ± 0.5 [-7, -3,1,21] | (1 ± 2) x (3 ± 4)
Idea tomada de una pregunta en el Torneo de Ciudades, Otoño 2015 .
fuente
Respuestas:
Python 2 , 56 bytes
Pruébalo en línea!
Los
?
soportes para±
. Ejemplo de uso:La idea es que podemos tomar una expresión
E
y unir un nuevo valorh
a su conjunto de valores haciendo(.5±.5)*(E+-h)+h
.fuente
+-h
y no solo-h
? Es decir, ¿por qué no hacer que la+
una-
y retire la-
que está actualmente en el programa?-
operador en la expresión.Haskell , 52 bytes
Pruébalo en línea!
Usos
?
para±
. Ejemplo:La función
shows
síshows a b=(show a)++b
, un truco que aprendí de Lynn.fuente
Haskell , 58 bytes
Usando
#
para±
, ya que es un byte menos.f
toma una lista de enteros y devuelve una cadena.El resultado es de la forma
n+(.5#.5)x(rest)
, donden
es el primer elemento de la lista yrest
es la representación de todos los demásn
restados de cada uno.Pruébalo en línea!
fuente
Jalea , 29 bytes
Imprime v + (0.5¤0.5) × (i 1 + (0.5¤0.5) × ((i 2 + (0.5¤0.5) × (... (i n ) ...))) donde v es el primer número en la matriz de entrada y i n es el n º diferencia incrementales entre elementos de la matriz de entrada.
Pruébalo en línea!
¿Cómo?
fuente
05AB1E , 25 bytes
Pruébalo en línea!
Explicación
Desafortunadamente, construir la expresión desde la derecha termina en que el mismo byte cuenta
0¸«¥¤s¨RvX;Dy"ÿ+(ÿ±ÿ)*(ÿ)
. Los 8 bytes utilizados para la configuración son el gran desperdicio aquí.fuente
Haskell, 54 bytes
el signo + - es
'?'
. ejemplo:fuente
JavaScript (ES6),
5651 bytesBasado en la fórmula de @ JonathanAllan.
@
representa±
.fuente