Mengingat 3 bilangan bulat positif a
, b
dan n
(yang maksimum nilai adalah nilai integer representable maksimum dalam bahasa Anda), output nilai truthy jika a ≡ b (mod n)
, dan falsey sebaliknya. Bagi mereka yang tidak terbiasa dengan hubungan kongruensi, a ≡ b (mod n)
adalah benar iff a mod n = b mod n
(atau, setara, (a - b) mod n = 0
).
Batasan
- Metode pengujian kongruensi bawaan dilarang
- Operasi modulo bawaan dilarang (ini termasuk operasi seperti
divmod
fungsi Python , yang mengembalikan baik hasil bagi dan sisanya, serta fungsi pembagian, fungsi sistem residu, dan sejenisnya)
Uji Kasus
(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
Ini adalah kode-golf , jadi kode terpendek (dalam byte) menang, dengan pengiriman paling awal sebagai tiebreak.
code-golf
math
arithmetic
Mego
sumber
sumber
/
?Jawaban:
Jelly, 5 byte
Menggunakan berat hal-hal lain yang tidak dilarang diperbolehkan.
Cobalah online!
Bagaimana itu bekerja
sumber
Python 2, 27 byte
Memeriksa apakah
a-b
kelipatann
dengan membaginya dengann
, yang secara otomatis lantai, dan melihat apakah mengalikan kembali dengann
memberikan hasil yang sama.sumber
Julia, 24 byte
Ini adalah fungsi yang menerima tiga bilangan bulat dan mengembalikan boolean.
Kami hanya menguji apakah suatu - b bilangan bulat divded oleh n adalah sama dengan sebuah - b mengambang dibagi dengan n . Ini akan menjadi benar ketika tidak ada sisa dari divisi, yaitu a - b | n , yang menyiratkan bahwa a - b (mod n ) = 0.
sumber
Pyth, 7 byte
Menggunakan pengindeksan siklus Pyth.
sumber
Haskell, 23 byte
Contoh penggunaan:
(28#78)5
->True
.Metode yang sama dengan jawaban @ xnor .
sumber
Minkolang 0,15 ,
1411 byteCoba di sini! Input diharapkan sebagai
a b n
.Penjelasan:
sumber
MATL , 9 byte
Format input adalah
Cobalah online!
sumber
Retina , 20
Masukan diberikan secara unary, dipisahkan oleh ruang, secara berurutan
n a b
. Output 1 untuk truey dan 0 untuk falsey.Cobalah online.
Jika Anda lebih suka input desimal maka Anda dapat melakukan ini:
Cobalah online.
sumber
APL, 15 byte
Ini adalah fungsi diadik yang menerima n di sebelah kiri dan a dan b sebagai larik di sebelah kanan.
Pendekatan di sini pada dasarnya sama dengan jawaban Julia saya . Kami menguji apakah a - b / n sama dengan lantai itu sendiri, yang akan benar ketika a - b (mod n ) = 0.
sumber
d=⌊d←⎕÷⍨-/⎕
JavaScript (ES6), 27 byte
@ CᴏɴᴏʀO'Bʀɪᴇɴ memposting versi yang tidak berfungsi; di sini adalah "algoritma umum" yang digunakan orang dalam bentuk yang "berfungsi":
Kata "berfungsi" dalam tanda kutip karena pintasan yang kami gunakan untuk
Math.floor()
secara terpotong memotong angka yang berada dalam kisaran 32-bit yang ditandatangani, jadi ini tidak dapat menangani ruang penuh bilangan bulat 52-bit-atau-apa pun yang JavaScript dapat menggambarkan.sumber
(2, 150, 3) :: (Word8, Word8, Word8)
; kriteria yang Anda tentukan secara eksplisit "jika secara teoritis input yang ada membuat jawaban tidak valid, jawabannya harus dianggap tidak valid.")(a - b) == a
untuk nilai tertentua
. Sebuah jawaban yang harus valid di perbatasan itu hampir tidak mungkin bahkan jika saya mengambil penalti byte dan menggantinya(0|...)
denganMath.floor(...).
CJam, 7 byte
Urutan input adalah
n a b
.Uji di sini.
Penjelasan
sumber
Python 3, 27 byte
pow(x,y,n)
menghitung(x**y)%n
, jadi ini adil(a-b)**1%n
.sumber
ES6, 28 byte
Bekerja dengan mencari titik desimal di (ab) / n yang saya harap diizinkan.
sumber
Serius, 10 byte
Mengambil input sebagai
N\nA\nB\n
(huruf besar yang digunakan untuk membedakan dari baris baru).Cobalah online
Ini menggunakan metode yang sama dengan jawaban @ AlexA
Penjelasan (huruf kapital digunakan sebagai nama variabel untuk tujuan penjelasan):
sumber
F #, 24 byte
Menerapkan pemeriksaan yang sama dengan jawaban @ xnor .
sumber