Penguasa Golomb adalah himpunan bilangan bulat non-negatif sehingga tidak ada dua pasang bilangan bulat dalam himpunan yang sama jaraknya.
Misalnya, [0, 1, 4, 6]
adalah penggaris Golomb karena semua jarak antara dua bilangan bulat di set ini unik:
0, 1 -> distance 1
0, 4 -> distance 4
0, 6 -> distance 6
1, 4 -> distance 3
1, 6 -> distance 5
4, 6 -> distance 2
Demi kesederhanaan dalam tantangan ini (dan karena penerjemahannya sepele), kami memaksakan bahwa penguasa Golomb selalu berisi angka0
(seperti contoh sebelumnya).
Karena set ini panjang 4
, kami mengatakan bahwa ini adalah penguasa ordo Golomb 4
. Jarak terbesar di set ini (atau elemen, karena 0
selalu di set) adalah 6
, oleh karena itu kami mengatakan bahwa ini adalah Penguasa Golomb panjang 6
.
Tugas Anda
Cari Golomb penguasa agar 50
ke 100
(inklusif) yang memiliki kecil panjang seperti yang Anda dapat menemukan. Penguasa yang Anda temukan tidak perlu optimal (lihat di bawah).
Optimalitas
Penguasa Golomb N
, dikatakan optimal jika tidak ada pengatur Golomb lain N
yang memiliki panjang lebih kecil.
Penguasa Golomb optimal dikenal untuk pesanan kurang dari 28 , meskipun menemukan dan membuktikan optimalitas semakin sulit saat pesanan meningkat.
Oleh karena itu, tidak diharapkan bahwa Anda menemukan penguasa Golomb optimal untuk salah satu perintah di antara 50
dan 100
(dan bahkan kurang diharapkan bahwa Anda dapat membuktikan mereka optimal).
Tidak ada batasan waktu dalam pelaksanaan program Anda.
Baseline
Daftar di bawah adalah daftar panjang penguasa Golomb dari 50
ke 100
(agar) dievaluasi dengan strategi pencarian naif (Terima kasih kepada @PeterTaylor untuk daftar ini):
[4850 5122 5242 5297 5750 5997 6373 6800 6924 7459 7546 7788 8219 8502 8729 8941 9881 10199 10586 10897 11288 11613 11875 12033 12930 13393 14046 14533 14900 15165 15687 15971 16618 17354 17931 18844 19070 19630 19669 20721 21947 22525 23290 23563 23880 24595 24767 25630 26036 26254 27218]
Jumlah dari semua panjang itu adalah 734078
.
Mencetak gol
Skor Anda akan menjadi jumlah dari panjang semua penguasa Golomb Anda di antara 50
dan 100
, dibagi dengan jumlah panjang penguasa Golomb antara 50
dan 100
di baseline:734078
.
Jika Anda tidak menemukan penggaris Golomb untuk pesanan tertentu, Anda harus menghitung skor Anda dengan cara yang sama, menggunakan gandakan panjang dalam garis dasar untuk pesanan tertentu.
Jawaban dengan skor terendah menang.
Dalam kasus seri, panjang urutan terbesar di mana dua jawaban berbeda dibandingkan, dan yang terpendek menang. Jika kedua jawaban memiliki panjang yang sama untuk semua pesanan, maka jawaban yang diposting pertama kali menang.
sumber
n
adalahn(n-1)/2
, karena itulah berapa banyak perbedaan positif yang ada. Karena itu, skor sekecil mungkin dalam tantangan ini adalah147050/734078 > 0.2003193
.Jawaban:
C #, 259421/734078 ~ = 0.3534
Metode
Saya akhirnya menemukan penjelasan yang lebih atau kurang dapat dibaca dari metode bidang proyektif (metode Singer) dalam Konstruksi Set Sidon Generalized , meskipun saya masih berpikir itu bisa sedikit ditingkatkan. Ternyata lebih mirip dengan metode bidang affine (metode Bose) daripada makalah lain yang saya baca telah dikomunikasikan.
Perhatikan bahwa metode ini di antara mereka memberikan nilai paling dikenal untuk setiap panjang lebih besar dari 16. Tomas Rokicki dan Gil Dogon menawarkan hadiah $ 250 untuk siapa saja yang mengalahkan mereka untuk panjang 36 hingga 40000. Oleh karena itu siapa pun yang mengalahkan jawaban ini untuk uang hadiah.
Kode
C # tidak terlalu idiomatis, tetapi saya perlu mengkompilasi dengan versi Mono yang lama. Selain argumen yang memeriksa, ini bukan kode kualitas produksi. Saya tidak senang dengan tipenya, tapi saya rasa tidak ada solusi yang sangat bagus untuk itu di C #. Mungkin dalam F # atau C ++ dengan templating gila.
Hasil
Sayangnya menambahkan penggaris akan membawa saya sekitar 15k karakter melewati batas ukuran posting, jadi mereka menggunakan pastebin .
sumber
Python 3, skor 603001/734078 = 0.82144
Pencarian naif dikombinasikan dengan konstruksi Erd – Turan:
Untuk bilangan prima p, ini memberikan penguasa golomb optimal asimptotik.
sumber
p
dan panjang sekitar2p^2
, sedangkan ada penguasa Golomb ketertibann
dan panjang tentangn^2
asimptotik.2p^2
danp^2
.Mathematica, skor 276235/734078 <0,376302
Fungsi
ruzsa
mengimplementasikan konstruksi penguasa Golobm (juga disebut set Sidon) yang ditemukan di Imre Z. Ruzsa. Memecahkan persamaan linear dalam satu set bilangan bulat. I. Acta Arith., 65 (3): 259–282, 1993 . Diberikan primap
, konstruksi ini menghasilkan penguasa Golomb denganp-1
elemen yang terkandung dalam bilangan bulat modulop(p-1)
(itu adalah kondisi yang bahkan lebih kuat daripada menjadi penguasa Golomb dalam bilangan bulat itu sendiri).Keuntungan lain dari bekerja dalam bilangan bulat modulo
m
adalah bahwa setiap penguasa Golomb dapat diputar (konstanta yang sama ditambahkan ke semua elemen modulom
), dan diskalakan (semua elemen dikalikan dengan konstanta yang sama, selama konstanta itu relatif primam
), dan hasilnya masih penguasa Golomb; terkadang bilangan bulat terbesar berkurang secara signifikan dengan melakukannya. Jadi fungsiscaledRuzsa
mencoba semua pengukuran ini dan mencatat hasilnya.manyRuzsaSets
berisi hasil melakukan konstruksi ini dan penskalaan untuk semua 32 bilangan prima pertama (dipilih sedikit sewenang-wenang, tetapi perdana ke-32, 131, jauh lebih besar dari 100); ada hampir 57.000 penguasa Golomb di set ini, yang membutuhkan beberapa menit untuk dihitung.Tentu saja,
k
elemen pertama penguasa Golomb itu sendiri membentuk penguasa Golomb. Jadi fungsinyatryGolomb
melihat penggaris yang dibuat dari set yang dihitung di atas. Baris terakhirTable...
memilih penguasa Golomb terbaik yang dapat, dari setiap urutan dari50
hingga100
, dari semua penguasa Golomb yang ditemukan dengan cara ini.Panjang yang ditemukan adalah:
Saya awalnya akan menggabungkan ini dengan dua konstruksi lainnya, yaitu Singer dan Bose; tetapi tampaknya jawaban Peter Taylor telah menerapkan ini, jadi mungkin saya hanya akan memulihkan panjang itu.
sumber
m
Anda dapat memutar / skala secara bebas. Lihatlah[0, 1, 4, 6]
mod 7. Jika saya menambahkan 1 kita dapatkan[0, 1, 2, 5]
, yang bukan merupakan penguasa Golomb.[0, 1, 4, 6]
bukan penguasa mod-7 Golomb karena1 – 0
sama dengan0 – 6
modulo 7, misalnya.