Dado 3 enteros positivos a
, b
y n
(cuyos valores máximos son el valor entero máximo representable en su idioma), un valor de salida Truthy si a ≡ b (mod n)
, y Falsey- lo contrario. Para aquellos que no están familiarizados con las relaciones de congruencia, a ≡ b (mod n)
es cierto iff a mod n = b mod n
(o, equivalentemente (a - b) mod n = 0
).
Restricciones
- Los métodos de prueba de congruencia incorporados están prohibidos
- Las operaciones de módulo
divmod
integradas están prohibidas (esto incluye operaciones como la función de Python , que devuelve tanto el cociente como el resto, así como las funciones de divisibilidad, funciones del sistema de residuos y similares)
Casos de prueba
(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
Este es el código de golf , por lo que gana el código más corto (en bytes), con el envío más temprano como desempate.
code-golf
math
arithmetic
Mego
fuente
fuente
/
?Respuestas:
Jalea, 5 bytes
Se permite hacer un uso intensivo de cualquier otra cosa que no esté prohibida.
Pruébalo en línea!
Cómo funciona
fuente
Python 2, 27 bytes
Comprueba si
a-b
es un múltiplo den
dividiendo entren
, lo que automáticamente hace pisos, y viendo si multiplicar de nuevo porn
da el mismo resultado.fuente
Julia, 24 bytes
Esta es una función que acepta tres enteros y devuelve un valor booleano.
Simplemente probamos si a - b entero dividido por n es igual a a - b flotante dividido por n . Esto será cierto cuando no haya resto de la división, es decir, a - b | n , lo que implica que a - b (mod n ) = 0.
fuente
Pyth, 7 bytes
Utiliza la indexación cíclica de Pyth.
fuente
Haskell, 23 bytes
Ejemplo de uso:
(28#78)5
->True
.El mismo método que en la respuesta de @ xnor .
fuente
Minkolang 0.15 ,
1411 bytesPruébalo aquí! La entrada se espera como
a b n
.Explicación:
fuente
MATL , 9 bytes
El formato de entrada es
Pruébalo en línea!
fuente
Retina , 20
La entrada se da en unario, separados por espacios, en orden
n a b
. Salida 1 para la verdad y 0 para falsey.Pruébalo en línea.
Si prefiere la entrada decimal, puede hacer esto:
Pruébalo en línea.
fuente
APL, 15 bytes
Esta es una función diádica que acepta n a la izquierda y a y b como una matriz a la derecha.
El enfoque aquí es básicamente el mismo que en mi respuesta de Julia . Probamos si a - b / n es igual al piso de sí mismo, lo que será cierto cuando a - b (mod n ) = 0.
fuente
d=⌊d←⎕÷⍨-/⎕
JavaScript (ES6), 27 bytes
@ CᴏɴᴏʀO'Bʀɪᴇɴ publicó una versión que no funciona; Aquí está el "algoritmo común" que las personas están usando en una forma que "funciona":
La palabra "funciona" está entre comillas porque el atajo que estamos usando para
Math.floor()
truncar implícitamente un número para estar en el rango de 32 bits con signo, por lo que esto no puede manejar el espacio completo de enteros de 52 bits o lo que sea que JavaScript pueda describir.fuente
(2, 150, 3) :: (Word8, Word8, Word8)
; el criterio que especifique es explícitamente "si teóricamente existe una entrada que invalida la respuesta, la respuesta debería considerarse inválida")(a - b) == a
para ciertos valores dea
. Una respuesta que tiene que ser válida en esas tierras fronterizas es casi imposible incluso si tomo la penalización de bytes y la reemplazo(0|...)
conMath.floor(...).
CJam, 7 bytes
El orden de entrada es
n a b
.Pruébalo aquí.
Explicación
fuente
Python 3, 27 bytes
pow(x,y,n)
calcula(x**y)%n
, así que esto es justo(a-b)**1%n
.fuente
ES6, 28 bytes
Funciona buscando un punto decimal en (ab) / n que espero esté permitido.
fuente
En serio, 10 bytes
Toma entrada como
N\nA\nB\n
(letras mayúsculas usadas para distinguir de las nuevas líneas).Pruébalo en línea
Utiliza el mismo método que la respuesta de @AlexA
Explicación (letras mayúsculas usadas como nombres de variables con fines explicativos):
fuente
F #, 24 bytes
Implementa la misma verificación que la respuesta de @ xnor .
fuente