In Anbetracht 3 positive ganze Zahlen sind a
, b
und n
(deren Maximalwerte sind der maximal darstellbare Integer - Wert in Ihrer Sprache), Ausgang eines truthy Wert , wenn a ≡ b (mod n)
und Falsey anders. Für diejenigen, die mit Kongruenzbeziehungen nicht vertraut sind, a ≡ b (mod n)
gilt iff a mod n = b mod n
(oder gleichwertig (a - b) mod n = 0
).
Beschränkungen
- Eingebaute Kongruenztestmethoden sind verboten
- Eingebaute Modulo-Operationen sind verboten (dies schließt Operationen wie die Python-
divmod
Funktion ein, die sowohl den Quotienten als auch den Rest zurückgeben, sowie Teilbarkeitsfunktionen, Restsystemfunktionen und dergleichen).
Testfälle
(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
Dies ist Code-Golf , also gewinnt der kürzeste Code (in Bytes) mit der frühesten Einreichung als Tiebreaker.
code-golf
math
arithmetic
Mego
quelle
quelle
/
?Antworten:
Gelee, 5 Bytes
Macht die starke Nutzung von sonst noch etwas , das nicht verboten ist , ist erlaubt.
Probieren Sie es online aus!
Wie es funktioniert
quelle
Python 2, 27 Bytes
Überprüft, ob
a-b
es sich um ein Vielfachesn
von handelt, indem durch dividiert wirdn
, wodurch automatisch Stockwerke gebildet werden, und ob das Multiplizieren mitn
das gleiche Ergebnis ergibt.quelle
Julia, 24 Bytes
Dies ist eine Funktion, die drei Ganzzahlen akzeptiert und einen Booleschen Wert zurückgibt.
Wir testen einfach, ob eine durch n geteilte a - b- Ganzzahl gleich a - b float geteilt durch n ist . Dies gilt, wenn kein Rest der Teilung vorhanden ist, dh a - b | n , was impliziert, dass a - b (mod n ) = 0 ist.
quelle
Pyth, 7 Bytes
Verwendet die zyklische Indizierung von Pyth.
quelle
Haskell, 23 Bytes
Anwendungsbeispiel:
(28#78)5
->True
.Gleiche Methode wie in der Antwort von @ xnor .
quelle
Minkolang 0,15 ,
1411 BytesProbieren Sie es hier aus! Eingabe wird erwartet als
a b n
.Erläuterung:
quelle
MATL , 9 Bytes
Eingabeformat ist
Probieren Sie es online aus!
quelle
Netzhaut , 20
Die Eingabe erfolgt in unärer, durch Leerzeichen getrennter Reihenfolge
n a b
. Ausgabe 1 für wahr und 0 für falsch.Probieren Sie es online aus.
Wenn Sie eine Dezimaleingabe bevorzugen, können Sie dies tun:
Probieren Sie es online aus.
quelle
APL, 15 Bytes
Dies ist eine dyadische Funktion, die links n und rechts a und b als Array akzeptiert .
Der Ansatz hier ist im Grunde der gleiche wie in meiner Antwort von Julia . Wir testen, ob a - b / n gleich dem Boden von sich selbst ist, was wahr ist, wenn a - b (mod n ) = 0 ist.
quelle
d=⌊d←⎕÷⍨-/⎕
JavaScript (ES6), 27 Byte
@ CᴏɴᴏʀO'Bʀɪᴇɴ hat eine Version gepostet, die nicht funktioniert; Hier ist der "allgemeine Algorithmus", den Menschen in einer Form verwenden, die "funktioniert":
Das Wort "funktioniert" steht in erschreckenden Anführungszeichen, da die Verknüpfung, die wir verwenden,
Math.floor()
implizit eine Zahl abschneidet, die im vorzeichenbehafteten 32-Bit-Bereich liegt. Daher kann dies nicht den gesamten 52-Bit- oder beliebigen Bereich von Ganzzahlen verarbeiten, den JavaScript verwenden kann beschreiben.quelle
(2, 150, 3) :: (Word8, Word8, Word8)
; das von Ihnen angegebene Kriterium ist explizit "Wenn theoretisch eine Eingabe existiert, die die Antwort ungültig macht, sollte die Antwort als ungültig angesehen werden.")(a - b) == a
für bestimmte Werte von sehr wahrscheinlich wirda
. Eine Antwort , die gültig ab in den Grenzländern sein muss , ist fast unmöglich , selbst wenn ich die Byte Strafe nehmen und ersetzen(0|...)
mitMath.floor(...).
CJam, 7 Bytes
Eingabereihenfolge ist
n a b
.Testen Sie es hier.
Erläuterung
quelle
Python 3, 27 Bytes
pow(x,y,n)
rechnet(x**y)%n
, also ist das gerecht(a-b)**1%n
.quelle
ES6, 28 Bytes
Funktioniert, indem nach einem Dezimalpunkt in (ab) / n gesucht wird, von dem ich hoffe, dass er zulässig ist.
quelle
Im Ernst, 10 Bytes
Nimmt die Eingabe als
N\nA\nB\n
(Großbuchstaben zur Unterscheidung von Zeilenumbrüchen).Probieren Sie es online aus
Dies verwendet dieselbe Methode wie die Antwort von @ AlexA
Erläuterung (Großbuchstaben, die zu Erklärungszwecken als Variablennamen verwendet werden):
quelle
F #, 24 Bytes
Implementiert die gleiche Prüfung wie die Antwort von @ xnor .
quelle