Dado 3 inteiros positivos a
, b
e n
(cujos valores máximos são o valor máximo inteiro representável na sua língua), saída de um valor truthy se a ≡ b (mod n)
e Falsey contrário. Para aqueles que não estão familiarizados com as relações de congruência, a ≡ b (mod n)
é verdadeiro se a mod n = b mod n
(ou, equivalentemente (a - b) mod n = 0
).
Restrições
- Métodos de teste de congruência incorporados são proibidos
- As operações internas do módulo são proibidas (isso inclui operações como a
divmod
função do Python , que retorna o quociente e o restante, bem como funções de divisibilidade, funções do sistema de resíduos e similares)
Casos de teste
(1, 2, 3) -> False
(2, 4, 2) -> True
(3, 9, 10) -> False
(25, 45, 20) -> True
(4, 5, 1) -> True
(83, 73, 59) -> False
(70, 79, 29) -> False
(16, 44, 86) -> False
(28, 78, 5) -> True
(73, 31, 14) -> True
(9, 9, 88) -> True
(20, 7, 82) -> False
Esse é o código-golfe , pelo que o código mais curto (em bytes) vence, com o envio mais antigo como desempate.
code-golf
math
arithmetic
Mego
fonte
fonte
/
?Respostas:
Gelatina, 5 bytes
Fazer uso pesado de qualquer outra coisa que não seja proibida é permitido.
Experimente online!
Como funciona
fonte
Python 2, 27 bytes
Verifica se
a-b
é um múltiplo den
, dividindo porn
, que é automaticamente nivelado e ver se a multiplicação de volta porn
dá o mesmo resultado.fonte
Julia, 24 bytes
Esta é uma função que aceita três números inteiros e retorna um booleano.
Nós simplesmente testar se a - b inteiro divded por n é igual a um - b flutuante dividido por n . Isso será verdade quando não houver resto da divisão, ou seja, a - b | n , o que implica que a - b (mod n ) = 0.
fonte
Pitão, 7 bytes
Usa a indexação cíclica de Pyth.
fonte
Haskell, 23 bytes
Exemplo de uso:
(28#78)5
->True
.O mesmo método da resposta do @ xnor .
fonte
Referência 0.15 ,
1411 bytesExperimente aqui! A entrada é esperada como
a b n
.Explicação:
fonte
MATL , 9 bytes
O formato de entrada é
Experimente online!
fonte
Retina , 20
A entrada é fornecida em ordem unária, separada por espaço
n a b
. Saída 1 para verdade e 0 para falsey.Experimente online.
Se você preferir a entrada decimal, poderá fazer o seguinte:
Experimente online.
fonte
APL, 15 bytes
Esta é uma função que aceita dyadic n do lado esquerdo e um e b como uma matriz no lado direito.
A abordagem aqui é basicamente a mesma que na minha resposta Julia . Testamos se a - b / n é igual ao próprio piso, o que será verdadeiro quando a - b (mod n ) = 0.
fonte
d=⌊d←⎕÷⍨-/⎕
JavaScript (ES6), 27 bytes
@ CᴏɴᴏʀO'Bʀɪᴇɴ postou uma versão que não funciona; aqui está o "algoritmo comum" que as pessoas estão usando de uma forma que "funciona":
A palavra "funciona" está entre aspas, porque o atalho que estamos usando para
Math.floor()
trunca implicitamente um número no intervalo assinado de 32 bits, portanto, não é possível lidar com o espaço total de 52 bits ou qualquer outro que o JavaScript possa descrever.fonte
(2, 150, 3) :: (Word8, Word8, Word8)
; o critério que você especificar é explicitamente "se teoricamente existir uma entrada que invalide a resposta, a resposta deve ser considerada inválida.")(a - b) == a
para certos valores dea
. Uma resposta que tem de ser off válida nessas fronteiras é quase impossível, mesmo se eu tomar a pena de byte e substituir(0|...)
comMath.floor(...).
CJam, 7 bytes
A ordem de entrada é
n a b
.Teste aqui.
Explicação
fonte
Python 3, 27 bytes
pow(x,y,n)
calcula(x**y)%n
, então isso é justo(a-b)**1%n
.fonte
ES6, 28 bytes
Funciona procurando um ponto decimal em (ab) / n que, espero, seja permitido.
fonte
Sério, 10 bytes
Recebe a entrada como
N\nA\nB\n
(letras maiúsculas usadas para distinguir das novas linhas).Experimente online
Utiliza o mesmo método da resposta da @ AlexA
Explicação (letras maiúsculas usadas como nomes de variáveis para fins explicativos):
fonte
F #, 24 bytes
Implementa a mesma verificação que a resposta do @ xnor .
fonte