Ringkasan eksekutif: uji apakah urutan input bilangan bulat "dapat diterima", artinya tidak mencakup semua kelas residu untuk setiap modulus.
Apa itu urutan "diterima"?
Diberikan bilangan bulat m ≥ 2, kelas residu modulo m hanyalah m kemungkinan perkembangan aritmatika dari perbedaan umum m. Misalnya, ketika m = 4, 4 kelas residu modulo 4 adalah
..., -8, -4, 0, 4, 8, 12, ...
..., -7, -3, 1, 5, 9, 13, ...
..., -6, -2, 2, 6, 10, 14, ...
..., -5, -1, 3, 7, 11, 15, ...
Kelas residu kth terdiri dari semua bilangan bulat yang sisanya setelah dibagi dengan m sama dengan k. (selama seseorang mendefinisikan "sisa" dengan benar untuk bilangan bulat negatif)
Urutan bilangan bulat a1, a2, ..., ak dapat diterima modulo m jika gagal memotong setidaknya satu dari kelas residu. Misalnya, {0, 1, 2, 3} dan {-4, 5, 14, 23} tidak dapat diterima modulo 4, tetapi {0, 1, 2, 4} dan {0, 1, 5, 9} dan {0, 1, 2, -3} adalah modulo yang dapat diterima 4. Juga, {0, 1, 2, 3, 4} tidak dapat diterima modulo 4, sedangkan {0, 1, 2} adalah modulo yang dapat diterima 4.
Akhirnya, urutan bilangan bulat hanya dapat diterima jika dapat diterima modulo m untuk setiap bilangan bulat m ≥ 2.
Tantangan
Tulis program atau fungsi yang mengambil urutan bilangan bulat sebagai input, dan mengembalikan nilai (konsisten) yang benar jika urutan diterima dan nilai (konsisten) yang salah jika urutan tidak dapat diterima.
Urutan input bilangan bulat dapat dalam format apa pun yang masuk akal. Anda dapat mengasumsikan bahwa urutan input memiliki setidaknya dua bilangan bulat. (Anda juga dapat mengasumsikan bahwa bilangan bulat input berbeda jika Anda inginkan, meskipun mungkin tidak membantu.) Anda harus dapat menangani bilangan bulat positif dan negatif (dan 0).
Penilaian kode-golf biasa : jawaban terpendek, dalam byte, menang.
Input sampel
Urutan input berikut harus masing-masing memberikan nilai Kebenaran:
0 2
-1 1
-100 -200
0 2 6
0 2 6 8
0 2 6 8 12
0 4 6 10 12
-60 0 60 120 180
0 2 6 8 12 26
11 13 17 19 23 29 31
-11 -13 -17 -19 -23 -29 -31
Urutan input berikut harus masing-masing memberikan nilai Falsy:
0 1
-1 4
-100 -201
0 2 4
0 2 6 10
0 2 6 8 14
7 11 13 17 19 23 29
-60 0 60 120 180 240 300
Kiat
- Perhatikan bahwa urutan 3 atau lebih sedikit bilangan bulat secara otomatis dapat diterima modulo 4. Lebih umum, urutan panjang k secara otomatis diterima modulo m ketika m> k. Oleh karena itu pengujian untuk penerimaan benar-benar hanya memerlukan pengecekan sejumlah terbatas m.
- Perhatikan juga bahwa 2 membagi 4, dan bahwa setiap urutan yang dapat diterima modulo 2 (yaitu, semua genap atau semua ganjil) secara otomatis dapat diterima modulo 4. Lebih umum, jika m membagi n dan urutan dapat diterima modulo m, maka itu adalah modulo yang dapat diterima secara otomatis n. Untuk memeriksa penerimaan, oleh karena itu cukup untuk hanya mempertimbangkan prime m jika Anda inginkan.
- Jika a1, a2, ..., ak adalah urutan yang dapat diterima, maka a1 + c, a2 + c, ..., ak + c juga dapat diterima untuk bilangan bulat c (positif atau negatif) apa pun.
Relevansi matematis (bacaan opsional)
Biarkan a1, a2, ..., ak menjadi urutan bilangan bulat. Misalkan ada banyak bilangan bulat n sehingga n + a1, n + a2, ..., n + ak semuanya prima. Maka mudah untuk menunjukkan bahwa a1, a2, ..., ak harus diterima. Memang, misalkan a1, a2, ..., ak tidak dapat diterima, dan biarkan m menjadi angka sehingga a1, a2, ..., ak tidak dapat diterima modulo m. Maka tidak peduli apa pun n yang kita pilih, salah satu angka n + a1, n + a2, ..., n + ak harus merupakan kelipatan m, karenanya tidak dapat menjadi prima.
The prime k-tupel dugaan adalah kebalikan dari pernyataan ini, yang masih merupakan masalah terbuka lebar di nomor teori: itu menegaskan bahwa jika a1, a2, ..., ak adalah urutan diterima (atau k-tuple ), maka ada harus bilangan bulat tak terhingga banyaknya sehingga n + a1, n + a2, ..., n + ak semuanya prima. Sebagai contoh, urutan yang diterima 0, 2 menghasilkan pernyataan bahwa harus ada banyak bilangan bulat n sehingga kedua n dan n + 2 adalah prima, ini adalah dugaan kembar bilangan prima (masih belum terbukti).
sumber
[_60:0:60:120:180]
memberi saya benar; memang itu tidak berpotongan setidaknya satu kelas di setiapm
dari2
ke5
inklusif; selain itu, ia memotong hanya satu kelas di setiapm
dari2
ke5
inklusif.-60 0 60 120 180 240 300
memotong setiap kelas residu modulo 7, sehingga tidak dapat diterima.Jawaban:
Jelly, 10 byte
Cobalah online! atau jalankan semua test case .
sumber
Brachylog ,
252419 byte5 byte berkat Karl Napf.
Cobalah online!
Verifikasi semua testcases!
sumber
Python,
6160 byteSemua uji kasus pada ideone
Sunting: diganti logis dan dengan bitwise & untuk menyimpan satu byte
sumber
JavaScript (ES6), 59 byte
Menggunakan Trik Sisa sisa @ KarlNapf.
sumber
Python,
6764 byteSebagai lambda yang tidak disebutkan namanya:
set()
dengan{}
all(...)
range
harus naik kelen(N)+1
Kode lama sebagai fungsi (96 byte):
sumber
Mathematica, 51 byte
sumber
MATL , 11 byte
Truthy adalah array (vektor kolom) yang berisi semua itu. Falsy adalah array yang mengandung setidaknya satu nol. Anda dapat memeriksa definisi ini menggunakan tautan ini .
Cobalah online! Atau memverifikasi semua kasus uji: truthy , falsy (kode sedikit diubah, setiap kasus menghasilkan vektor horisontal untuk kejelasan).
Penjelasan
sumber