Introducción
Este es uno de mis acertijos matemáticos favoritos.
Dado un dígito (digamos 3) y la cantidad de veces que se usará ese dígito (digamos 5), genere 10 expresiones que resulten en 1, 2, 3, 4, 5, 6, 7, 8, 9 y 10 usando solo +, -, ×, ÷, ^ y √ (raíz) (los paréntesis pueden agrupar operaciones).
Por ejemplo:
(3^3 + 3)/(3 + 3) = (33 - 3)/(3 + 3) = 3 + 3/3 + 3/3 = 5
Tenga en cuenta que todo lo anterior usa cinco 3 y las operaciones matemáticas y el resultado a 5. También puede usar un 3 antes de √ para denotar una raíz cúbica. Lo mismo ocurre con el uso de 4 antes de √ para denotar una cuarta raíz.
También tenga en cuenta que se pueden usar dos 3 para formar 33, o tres 3 para formar 333 y así sucesivamente.
Desafío
- Se le darán dos números (ambos del 1 al 5) como argumento de función, STDIN o argumento de línea de comando.
- El primer número denota qué dígito usar y el segundo número denota el número de veces que ese dígito se usará en la expresión.
- Su programa debería generar una matriz de tamaño 10 (o 10 números separados por espacios) donde cada elemento denota si una expresión matemática (usando solo los operadores permitidos) que resulta en el
(index + 1)
número es posible o no usando un valor verdadero / falso.
Por ejemplo, si la entrada es
1 3
Entonces la salida debería ser
[1, 1, 1, 0, 0, 0, 0, 0, 0, 1]
porque solo 1, 2, 3 y 10 se pueden expresar usando tres 1's.
Puntuación
- Este es un código de golf, por lo que gana la longitud mínima del código en bytes.
Prima
Print-em-all [−50]
Reste 50 de su puntaje si los elementos de la matriz de salida son iguales al número total de combinaciones plausibles para obtener el (index + 1)
valor en lugar de valores verdaderos o falsos.
Por ejemplo, si sólo hay 3 posibles combinaciones de cinco 3 de que resultan a 5, a continuación, de la matriz de salida 4 º entrada debe ser 3.
Matemáticas extremas [−100]
Reste 100 de su puntaje si los elementos de la matriz de salida contienen al menos una de las expresiones reales que resultan del (index + 1)
valor.
Por ejemplo, si el uso de cinco 3'S, 4 de la matriz de salida ésimo entrada puede ser (3^3 + 3)/(3 + 3)
, (33 - 3)/(3 + 3)
o3 + 3/3 + 3/3
Overkilled [−200]
Resta 200 de tu puntaje si los elementos de la matriz de salida contienen todas las combinaciones posibles (separadas por |
). Este bono se agrega además del bono Extreme Maths , por lo que obtienes −300 en total.
Por ejemplo, si usa cinco 3, el 4º elemento de la matriz de salida debe ser(3^3 + 3)/(3 + 3)|(33 - 3)/(3 + 3)|3 + 3/3 + 3/3
Nota: Cualquiera de las dos expresiones para lograr el mismo resultado debe ser lógicamente diferente con un enfoque diferente en ambas.
Por ejemplo, obtener 5 usando cinco 3 3 + 3/3 + 3/3
es igual 3/3 + 3 + 3/3
o 3/3 + 3/3 + 3
porque se toma el mismo enfoque para cada uno de ellos. (3^3 + 3)/(3 + 3)
y (33 - 3)/(3 + 3)
difieren, ya que el 30 en el numerador se logra a través de diferentes enfoques.
ACTUALIZACIÓN : Después de revisar todas las respuestas, se descubrió que todas las respuestas tenían imperfecciones debido a los casos límite de unario -
y √. Por lo tanto, perder esos casos límite se consideró correcto en lo que respecta a la integridad de las respuestas.
Esta es una pregunta difícil, pero bastante interesante.
¡Feliz golf!
1
s?