Set perbedaan siklik adalah seperangkat bilangan bulat positif dengan properti unik:
- Membiarkan
n
menjadi bilangan bulat terbesar di set. - Membiarkan
r
bilangan bulat apa pun (tidak harus di set) lebih besar dari 0 tetapi kurang dari atau sama dengann/2
. - Membiarkan
k
menjadi sejumlah solusi ke(b - a) % n = r
manaa
danb
ada anggota set. Setiap solusi adalah pasangan yang dipesan(a,b)
. (Juga perhatikan bahwa versi modulo ini membuat angka negatif menjadi positif dengan menambahkannyan
, tidak seperti implementasi dalam banyak bahasa.) - Akhirnya, jika dan hanya jika ini adalah set perbedaan siklik, nilai
k
tidak tergantung pada pilihan Andar
. Yaitu, semua nilair
memberikan jumlah solusi yang sama untuk kongruensi di atas.
Ini dapat diilustrasikan dengan contoh berikut:
Cyclic difference set: {4,5,6,8,9,11}
0 < r <= 11/2, so r = 1,2,3,4,5
r=1: (4,5) (5,6) (8,9)
r=2: (4,6) (6,8) (9,11)
r=3: (5,8) (6,9) (8,11)
r=4: (4,8) (5,9) (11,4) since (4-11)%11=(-7)%11=4
r=5: (4,9) (6,11) (11,5)
Setiap nilai r
memiliki jumlah solusi yang sama, 3 dalam hal ini, jadi ini adalah set perbedaan siklik.
Memasukkan
Input akan menjadi daftar bilangan bulat positif. Karena ini adalah properti yang disetel, anggap bahwa input tidak diurutkan. Anda dapat menganggap itu n
setidaknya 2
, meskipun k
mungkin nol.
Keluaran
Program / fungsi Anda harus menampilkan nilai kebenaran jika set adalah set perbedaan siklik, atau nilai falsey sebaliknya.
Uji Kasus
Set perbedaan siklik yang valid:
10,12,17,18,21
7,5,4
57,1,5,7,17,35,38,49
1,24,35,38,40,53,86,108,114,118,135,144,185,210,254,266,273
16,3,19,4,8,10,15,5,6
8,23,11,12,15,2,3,5,7,17,1
( sumber data , meskipun konvensi mereka berbeda)
Set perbedaan siklik tidak valid:
1,2,3,4,20
57,3,5,7,17,35,38,49
3,4,5,9
14,10,8
code-golf
number
decision-problem
number-theory
PhiNotPi
sumber
sumber
a
danb
menjadi anggota yang sama (tidak harusa ≠ b
)?b
dana
adalah angka yang sama(b-a)%n = 0
, tetapi 0 bukanlah salah satu nilai yang Anda cari solusi. Jadi tidak ada larangan eksplisit bahwa mereka memiliki nomor yang sama, tetapi mereka tidak akan pernah melakukannya.7 7 7
input tidak valid. Satu set tidak mengulangi nilai7 7 7
telah diminta oleh pengguna lain, tetapi saya telah menghapusnya karena itu bukan set.r
oleh0 < r <= max(input)/2
, melainkan0 < r < max(input)
karena kita dapat memperolehr > max(input)/2
kasus dengan hanya membalik pengurangan dalamr <= max(input)/2
kasus.Jawaban:
Jelly ,
147 byteCobalah online!
Bagaimana itu bekerja
sumber
Sekam , 13 byte
Cobalah online!
Tiga 1 superskrip tampaknya boros ...
Penjelasan
sumber
Bahasa Wolfram (Mathematica) ,
5352 byteCobalah online!
Catatan, kita tidak perlu membagi elemen max dengan dua karena simetri (kita dapat memeriksa jumlah semua modulos
1
kemax(input) - 1
).Penjelasan
Ambil semua permutasi panjang-2 input.
Temukan perbedaan masing-masing
Mod hasilnya dengan elemen maksimal input.
Temukan frekuensi setiap elemen.
Kembalikan apakah semua angkanya sama.
sumber
Python 3 ,
868481 byte-3 byte byte ke JungHwan Min
Cobalah online!
sumber
JavaScript (ES6), 87 byte
Mengembalikan 0 atau 1 .
Uji kasus
Tampilkan cuplikan kode
sumber
Perl,
686766 byteTermasuk
+2
untukap
sumber
Python 3 , 74 byte
Cobalah online!
sumber
Ruby , 81 byte
Cobalah online!
Tidak Disatukan:
sumber
Haskell, 84 byte
l adalah fungsi yang melakukan pemeriksaan. Itu hanya menghitung semua perbedaan dan jumlah.
sumber
let
di penjaga pola bukannyawhere
menyimpan byte: Cobalah secara online!