Introdução
Este é um dos meus quebra-cabeças matemáticos favoritos.
Dado um dígito (digamos 3) e o número de vezes para usá-lo (digamos 5), gere 10 expressões que resultam em 1, 2, 3, 4, 5, 6, 7, 8, 9 e 10 usando apenas +, -, ×, ÷, ^ e √ (raiz) (colchetes são permitidos para agrupar operações).
Por exemplo:
(3^3 + 3)/(3 + 3) = (33 - 3)/(3 + 3) = 3 + 3/3 + 3/3 = 5
Observe que todas as opções acima usam cinco 3 e as operações matemáticas e resultam em 5. Você também pode usar um 3 antes de √ para indicar uma raiz do cubo. O mesmo vale para o uso de 4 antes de √ para denotar uma quarta raiz.
Observe também que dois 3 podem ser usados para formar 33 ou três 3 podem ser usados para formar 333 e assim por diante.
Desafio
- Você receberá dois números (ambos variando de 1 a 5) como argumento de função, STDIN ou argumento de linha de comando.
- O primeiro número indica qual dígito usar e o segundo número indica o número de vezes que esse dígito deve ser usado na expressão.
- Seu programa deve gerar uma matriz de tamanho 10 (ou 10 números separados por espaço), em que cada elemento indica se uma expressão matemática (usando apenas os operadores permitidos) resultante do
(index + 1)
número é possível ou não usando um valor de verdade / falsidade.
Por exemplo, se a entrada for
1 3
Então a saída deve ser
[1, 1, 1, 0, 0, 0, 0, 0, 0, 1]
porque apenas 1, 2, 3 e 10 podem ser expressos usando três 1s.
Ponto
- Este é um código-golf, portanto o comprimento mínimo do código em bytes vence.
Bônus
Imprimir em tudo [-50]
Subtraia 50 da sua pontuação se os elementos da matriz de saída forem iguais ao número total de combinações plausíveis para obter o (index + 1)
valor em vez de valores verdadeiros ou falsos.
Por exemplo, se há apenas três possíveis combinações de cinco 3 de que resultam a 5, em seguida, a matriz de saída de 4 th entrada deve ser de 3.
Matemática Extrema [-100]
Subtraia 100 da sua pontuação se os elementos da matriz de saída contiverem pelo menos uma das expressões reais que resultam no (index + 1)
valor.
Por exemplo, se usando cinco de 3, 4 da matriz de saída th entrada pode ser qualquer um (3^3 + 3)/(3 + 3)
, (33 - 3)/(3 + 3)
ou3 + 3/3 + 3/3
Excesso de habilidades [-200]
Subtraia 200 da sua pontuação se os elementos da matriz de saída contiverem todas as combinações possíveis (separadas por |
). Este bônus é adicionado sobre o bônus Extreme Maths , para que você obtenha -300 no total.
Por exemplo, se usando cinco de 3, 4 da matriz de saída th elemento deve ser(3^3 + 3)/(3 + 3)|(33 - 3)/(3 + 3)|3 + 3/3 + 3/3
Nota: Quaisquer duas expressões para obter o mesmo resultado devem ser logicamente diferentes, com uma abordagem diferente em ambas.
Por exemplo, obter 5 usando cinco 3 3 + 3/3 + 3/3
é igual 3/3 + 3 + 3/3
ou 3/3 + 3/3 + 3
porque a mesma abordagem é adotada para cada um deles. (3^3 + 3)/(3 + 3)
e (33 - 3)/(3 + 3)
diferem, pois os 30 no numerador são alcançados por diferentes abordagens.
ATUALIZAÇÃO : Após analisar todas as respostas, verificou-se que todas as respostas apresentavam imperfeições devido a casos extremos de unários -
e √. Assim, a falta desses casos extremos foi considerada aceitável, na medida em que as respostas estejam completas.
Essa é uma pergunta difícil, mas interessante.
Feliz golfe!
1
segundos?