Ini didasarkan pada tantangan ini dan ide Geobits / CarpetPython untuk memperbaikinya:
Untuk tantangan ini, jarak antara dua angka diukur pada satu lingkaran, jadi, misalnya, jarak antara 0 dan 999 adalah 1. Ini harus mencegah strategi seperti selalu memilih angka terendah atau tertinggi dari kemenangan hampir setiap waktu. Satu-satunya perubahan lainnya adalah bahwa angka terendah yang dapat dipilih sekarang adalah 0 bukannya 1.
Saya akan meringkasnya di sini:
- Tulis fungsi dalam Java, Python, atau Ruby yang mengambil tiga argumen:
- jumlah putaran yang dimainkan sejauh ini
- jumlah pemain
- nomor dipilih pada putaran sebelumnya, sebagai array string yang dipisahkan oleh ruang
- Seharusnya mengembalikan bilangan bulat dari 0 hingga 999, inklusif
- Skor untuk suatu program setiap putaran adalah jumlah dari akar kuadrat dari jarak ke angka yang dipilih masing-masing program
- Program dengan skor tertinggi setelah 100 putaran menang.
- Satu jawaban per orang
Program kontrol ada di sini:
https://github.com/KSFTmh/src/
Papan peringkat
NumberOne, oleh TheBestOne, menang.
- NumberOne - 9700
- NumberOnePlusFourNineNine - 9623
- AncientHistorian - 9425
- FindCampers - 9259
- WowThisGameIsSoDeep - 9069
- Sampler - 9014
- SabotageCampers - 8545
Rupanya, sabotase karavan saya ... eh (?) Tidak bekerja dengan baik.
Inilah hasil lengkapnya: https://github.com/KSFTmh/src/blob/master/result-3
Saya pikir ini cukup berbeda untuk tidak menjadi duplikat.
Ngomong-ngomong, ini adalah pertama kalinya saya mengajukan pertanyaan di Stack Exchange, jadi beri tahu saya jika saya melakukan sesuatu yang salah.
sumber
Jawaban:
Python 2, Sampler
Entri ini didasarkan pada kode yang sama untuk Jaga jarak Anda, entri Sampler . Saya harap ini akan lebih baik di sini di mana keunggulan 1 dan 999 tidak ada.
Di luar daftar tempat, pilih salah satu yang paling jauh dari angka yang baru digunakan, abaikan belokan sebelumnya (karena entri lain dapat memprediksi berdasarkan belokan sebelumnya).
sumber
Nomor OnePlusFourNineNine, Jawa
Logikanya sangat sederhana. Kecuali jika seseorang menemukan algoritma nyata yang mempertimbangkan skor sebelumnya, jawaban ini cukup dioptimalkan.
Sekarang kita menghitung jarak dalam lingkaran, jarak maksimum dua titik bisa menjadi 500. Sekarang jika semua entri menghasilkan angka acak (atau pseudo acak berdasarkan beberapa algoritma), jawaban ini tidak akan menguntungkan sama sekali . Tetapi setidaknya ada 1 entri yang menghasilkan jawaban konstan yang jaraknya hampir maksimal. Yang membuat skor mendukung 500 karena ada sumber tetap jarak maksimum yang mungkin di setiap putaran :)
sumber
AncientHistorian - Python
Ini adalah algoritma yang sama dari yang sebelumnya, kecuali ketika menghitung skor potensial menggunakan jarak melingkar. Karena saya kalah hebat dan tidak bisa dikompilasi oleh pengontrol, saya hanya mencoba strategi baru, di mana saya menggunakan yang terburuk dari putaran sebelumnya.
sumber
i
adalah elemen dariscores.split(' ')
, yang berarti string, bukan int.SabotageCampers - Python
Para berkemah masih menang. Beri tahu saya jika Anda memiliki saran untuk ini.
sumber
FindCampers - Python 2
Temukan semua berkemah dari 10 putaran terakhir dan menjauhlah dari mereka. Saya berharap bahwa prediktor akan lari dari saya. Sekarang saya akan mengabaikan pilihan lama saya.
sumber
Nomor Satu, Jawa
Jawaban pertama Disalin dari jawaban saya sebelumnya .
sumber
WowThisGameIsSoDeep, Java
Saya telah menganalisis permainan selama 10 tahun pada kluster 1 juta inti dan menemukan solusi optimal.
sumber
Random.nextInt(int)
.Circilinear Extrapolator, Ruby
sumber
NoMethodError: undefined method `split' for #<Array:0x720f56e2> choose at CircilinearExtrapolator.rb:2
previous_choices
array nilai seperti["1 6 500","2 8 503"]
?