Dados 2 números inteiros não negativos como entrada, produza um número inteiro não negativo que não pode ser criado através de nenhum operador matemático nas 2 entradas.
Por exemplo, dadas entradas 2
e 3
,6, 0, 5, 1, 9, 8, 23, 2
são todas saídas inválidas.
As operações que devem ser levadas em consideração são:
Addition (a + b)
Subtraction (a - b) and (b - a)
Multiplication (a * b)
Division (a / b) and (b / a)
Modulus (a % b) and (b % a)
Exponentiation (a ** b) and (b ** a)
Bitwise OR (a | b)
Bitwise XOR (a ^ b)
Bitwise AND (a & b)
Concatenation (a.toString() + b.toString()) and (b.toString() + a.toString())
Nos casos em que uma operação levaria a um não inteiro (como 2/3), sempre use floor. tão2 / 3 = 0
Suponha que qualquer operação inválida (como dividir por 0) resulte em 0.
Entrada
2 números inteiros não negativos.
Métodos de E / S padrão são aceitos
Você pode supor que a entrada sempre estará dentro de um intervalo que pode ser manuseado para o seu idioma, no entanto, lembre-se de que ainda existem brechas padrão .
Saída
Qualquer número inteiro não negativo que não possa ser criado por meio de nenhuma das operações acima nas 2 entradas.
Casos de teste
Input -> Invalid outputs
2, 3 -> 0, 1, 2, 3, 5, 6, 8, 9, 23, 32
0, 0 -> 0
17, 46 -> 0, 2, 12, 17, 29, 63, 782, 1746, 4617, 18487710785295216663082172416, 398703807810572411498315063055075847178723756123452198369
6, 6 -> 0, 1, 6, 12, 36, 66, 46656
1, 1 -> 0, 1, 2, 11
Pontuação
Este é o código-golfe, pois o menor número de bytes vence!
Respostas:
Retina , 3 bytes
Experimente online!
Pega entradas separadas por espaço (ou qualquer caractere que não seja de nova linha)
Substitui todos os dígitos por
1
e une os números resultantes por outro1
.Prova de correção
Cortesia de Martin Ender
Esta operação calcula um resultado com mais um dígito que o número de dígitos dos dois números juntos; a única operação que poderia produzir um resultado tão grande é a exponenciação.
O resultado é uma repunit (um número cujos dígitos são todos 1).
"Sabe-se [...] que um repunit na base 10 não pode [...] ser um poder perfeito". Isso significa que esse resultado também não pode ser produzido por exponenciação.
fonte
1
, é simplesmente aceitar a entrada como uma sequência de 2 números separados por espaço e substituir cada caractere por um 1. Mas, dito isso, não consigo encontrar exemplos que provem que você está errado. .. aindaGelatina , 3 bytes
Experimente online!
Explicação:
fonte
Python 2 , 8 bytes
Experimente online!
Pega uma lista de duas seqüências numéricas como entradas, produz uma única sequência numérica. Concatena os números com um
1
no meio.O resultado tem muitos dígitos para qualquer coisa, exceto expoente. Note-se que a saída para
(x,y)
tem mais um dígito quex
ey
combinado, a menos quex
ouy
é 0. Para expoente, verificamos verificamos que isso significa quex**y
não corresponde.x
é 0 ou 1, também éx**y
, o que é muito pequenoy<=1
entãox**y<=x
é muito pequenoy==2
, entãox**2
deve ter mais dois dígitos quex
. Isso acontecex=316
, e não podemos verificar nenhum desses trabalhos.y==3
, entãox**3
deve ter mais dois dígitos quex
. Isso acontece atéx=21
. Podemos verificar se nenhum deles funciona.3<y<13
, entãox**y
rapidamente fica muito tempo. Apenas plausível tem o número certo de dígitos parax<=25
, e podemos verificá-los.y>=14
, entãox**y
é muito longo, mesmo para o menor possívelx==2
.fonte
CJam (7 caracteres)
Isso cria um número
(a+b+2)!
maior que o maior número relacionado em quase todos os casos.É bastante óbvio que o maior número relacionado deve ser um dos
a ** b
,b ** a
,concat(a, b)
,concat(b, a)
.Se considerarmos logaritmos, descobrimos que
log(a ** b) = b log a
log(concat(a, b)) ~= (log a) + log (b)
log((a + b + 2)!) ~= (a + b + 2) log (a + b + 2) - (a + b + 2)
Assim, assintoticamente, é maior e precisamos nos preocupar apenas com alguns casos pequenos. De fato, o único caso em que o valor de saída não é maior que todos os números relacionados é
0, 1
(ou1, 0
), para o qual ele fornece6
e o maior número relacionado é10
.fonte
JavaScript (ES6), 15 bytes
Recebe entrada na sintaxe de currying.
a² + b² + 1 falharia em muitas entradas, como 3² + 5² + 1 = 35 ou 7² + 26² + 1 = 726 (concatenação). a² + b² + 2 deve ser seguro. Isso foi exaustivamente testado para 0 ≤ a ≤ b ≤ 50000 .
Demo
Mostrar snippet de código
fonte
Python,
1159579 bytesSolução simples e estúpida. Sinta-se livre para me superar.
+12 bytes por causa de estúpido
x/0
.-20 bytes graças a @RobinJames
-16 bytes graças a @tehtmi
fonte
Python, 27 bytes
Produz um número maior que todos os números relacionados.
Experimente online!
-1 byte graças a Kevin Cruijssen.
-2 bytes graças ao Dead Possum.
fonte
:
se não me engano.f=
- lambda sem nome é aceitável+
), mas não tenho certeza.Python 2, 25 bytes
Concatena e adiciona 3
Experimente online
fonte
JS (ES6), 12 bytes
O mesmo algoritmo que esta resposta em python . Recebe a entrada como uma matriz de entradas.
fonte
Braingolf , 4 bytes
Experimente online! (Cabeçalho e rodapé são intérpretes, código é o código braingolf real, args são entradas)
Saídas
(a+b+9)**(a+b+9)
Nos meus testes, não consegui encontrar pares nos quais isso não funcionasse.
fonte
Python 2 , 19 bytes
Experimente online!
Tenho certeza de que a mudança de bits funciona para todos os casos, mas não estou 100% nisso. De qualquer forma, ele salva alguns bytes sobre a versão de exponenciação.
fonte
J , 5 bytes
Apenas uma tradução de geléia .
Experimente online!
fonte
APL (Dyalog) , 4 bytes
Algoritmo retirado daqui .
Experimente online!
!
fatorial de2+¨
mais dois+
a somaTrabalha em J também.
fonte
QBIC , 8 bytes
Cara, existem muitas maneiras legais de pegar esses números e obter um número não relacionado. Eu só tinha que tentar alguns, para ver como o QBIC se manteria. A mais curta é uma porta da resposta Python do xnor, concatenando os números com um 1 no meio:
Todos, um porto da resposta de Retina de Leo:
Encontrando o próximo maior primo:
fonte
sed, 6 bytes
Try it online!
Input is via stdin in the form "x y", output is to stdout.
Port of this python answer, which includes the proof of correctness. Many thanks to xnor for such a simple method.
fonte
Java 8, 15 bytes
Port from @Arnauld's amazing JavaScript (ES6) answer.
Try it here.
Straight-forward approach (
177170 bytes):Try it here.
fonte
05AB1E,
24 bytesTry it online!
Same as the Jelly answer, finds a prime after the sum. One byte shorter :)
EDIT: Now raises it to its own power to suffice for the exception.
fonte
a+b
'th prime, while mine finds the smallest prime larger thana+b
.Brachylog, 3 bytes
Try it online!
Nothing new here.
Now, to figure out how to find an unrelated string...
fonte