Usando nossos familiares símbolos matemáticos: +, x, parênteses e qualquer número racional, é fácil criar expressões que sejam avaliadas para um número desejado. Por exemplo: 1+(2x3)=7, (1+2)+(3x6.5)=22.5e assim por diante. Chato o suficiente.
Neste desafio, usaremos um novo operador: ±. O uso de ±em uma expressão significa que você precisa avaliar a expressão substituindo os ±'s por +ou -de todas as maneiras possíveis e retornando o conjunto de todos os valores possíveis. Por exemplo:
1±2±3 = {-4,0,2,6}porque1±2±3pode ser qualquer um1+2+3,1+2-3,1-2+3e1-2-3e os seus valores são6,0,2,-4respectivamente.(±2)x(2±3) = {-10,-2,2,10}por razões semelhantes.
Agora, como se vê, dado qualquer conjunto de números reais distintos, é possível criar uma expressão com +, x, (, ), ±, e números reais que avalia o conjunto dado.
Tarefa
Sua tarefa é escrever um programa ou função em um idioma de sua escolha, que leva uma seqüência (lista / array / qualquer formato conveniente) de números inteiros e produz uma expressão (como uma string), constituído por +, x, (, ), ±, e números racionais que avalia o conjunto dos números fornecidos.
- Observe que o caractere exato
±não importa; você pode usar qualquer outro caractere de sua escolha, desde que seja distinguível dos outros caracteres que estiver usando. Mas você deve mencionar qual personagem está usando em sua submissão. - É permitido que a entrada consista em aproximações decimais (até precisão razoável) dos números racionais utilizados.
- A entrada e a saída podem ser obtidas de qualquer uma das maneiras padrão.
- As brechas padrão são proibidas.
- Você pode assumir que os números inteiros fornecidos serão distintos e fornecidos em ordem crescente.
- A saída pode conter espaços e novas linhas.
Critério vencedor
Isso é código-golfe , então o código mais curto em bytes vence.
Exemplos
Entrada | Saída possível ------------- + ----------------------------- [1,2,3] 2 ± 0,5 ± 0,5 [-7, -3,1,21] | (1 ± 2) x (3 ± 4)
Ideia tirada de uma pergunta no Torneio das Cidades, outono de 2015 .