Nesta variante do quebra-cabeça de quatro quatros, você deve usar até x
x's
(e nenhum outro número) e um conjunto definido de operações para atingir todos os números de 0 a 100. Se x = 4
você pode usar até quatro 4s
e essa pergunta se torna o clássico quatros quebra-cabeça (exceto que você pode usar até quatro 4s em vez de precisar usar exatamente quatro deles). Nós assumimos 1 < x <= 9
.
Nesta versão, apenas os seguintes operadores são permitidos:
- Adição (
+
), Subtração (-
), Multiplicação (*
), Divisão (/
). Note que esta é uma divisão real, de modo que5/2 = 2.5
. - Exponenciação (por exemplo, 4 ^ 4), pois isso não envolveria símbolos extras se escrito normalmente à mão.
- Você pode criar novos números inteiros concatenando
xs
. Por exemplo, você pode fazer os números inteiros4, 44, 444, 4444
.
Você também pode usar parênteses para agrupar números simplesmente para controlar a ordem de avaliação dos operadores. Você não pode, por exemplo, combinar parênteses com concatenação como em (4/4)(4/4) = (1)(1) = 11
.
Nenhum outro símbolo pode ser usado e a ordem padrão de operações se aplica.
Seu programa deve gerar, considerando um x
intervalo definido e um n
entre 0
e 100
inclusive, uma solução correta para essa entrada, se existir. Caso contrário, seu código deve gerar algo para indicar que não existe essa solução.
Você deve poder executar seu envio até a conclusão em sua máquina para quaisquer valores de entrada x
e n
dentro do intervalo permitido. Isso é código de golfe, então a solução mais curta vence.
Essa antiga pergunta relacionada usa mais operadores (e apenas 4s) e, portanto, todos os números de 0 a 100 são solucionáveis, o que não será verdadeiro para esse desafio.
Entrada e saída
Seu código usa dois números inteiros x
e n
como entrada e deve gerar uma solução (ou uma indicação de que não há solução) em qualquer formato legível por humanos que você achar conveniente. A entrada 4 6
significaria "Usando até quatro 4s, faça o número 6", por exemplo. Então, se a entrada é 4 6
a saída poderia ser (4+4)/4+4
.
Respostas:
Python 3 , 265 bytes
Experimente online!
Funciona para todos os números na referência vinculada pelo Engineer Toast.
Funciona
x=8
,x=9
demora alguns minutos na minha máquina.A função
g
retorna um conjunto de todas as combinações com no máximox
número dex
's.f
depois percorre-os e retorna o primeiro que é avaliado como o númeron
.O número de valores possíveis que encontrei para cada um deles
x
são:Todos os números acima pode ser gerado a partir de
(a+b)
,(a-b)
,(a+b)
,a*b
,a/b
,(a/b)
, ea^b
.a+b
ea-b
não dê mais números.a^b
também é usado apenas uma vez, caso contrário, grandes números são criados (isso também é verificado no documento de referência acima)Uma versão alternativa que causa um curto-circuito assim que encontra uma solução (não como golfe):
Isso é muito mais rápido, pois
x=7..9
todos os números podem ser criados.Python 3 ,
338289 bytesExperimente online!
fonte
(4/4**(4-4))
para4
), mas acontece que não é o caso.exit(e)
é menor quereturn e