Ada dukungan yang cukup kuat pada meta untuk pertanyaan-pertanyaan penulisan tantangan yang menjadi topik utama, asalkan pertanyaan-pertanyaan ini spesifik dan dapat dijawab. Namun, kami belum memiliki pertanyaan seperti itu, jadi saya pikir saya akan menguji air. Pertanyaan ini mungkin memasuki wilayah subyektif yang baik, wilayah subyektif yang buruk , tetapi saya pikir itulah kemungkinan pertanyaan penulisan tantangan. Untuk memastikan bahwa mereka masih menghasilkan konten berkualitas tinggi, jangan hanya memposting ide spekulatif liar di jawabannya. Jelaskan mengapa mereka menghindari masalah yang disebutkan di bawah ini, atau idealnya menunjuk tantangan yang ada yang telah berhasil menggunakan teknik yang disarankan di masa lalu.
Untuk tantangan pengoptimalan tertentu, parameter gratis dalam menetapkan tantangan adalah ukuran masalah yang akan dioptimalkan. Dengan "tantangan pengoptimalan", saya tidak bermaksud hal-hal seperti genre kode tercepat kami , di mana jawaban biasanya dituntut tepat / optimal, dan tantangan diberi skor baik pada ukuran masalah tetap atau pada ukuran masalah terbesar yang dapat ditangani dalam jumlah waktu yang tetap. Maksud saya secara khusus tantangan di mana solusi suboptimal untuk masalah yang mendasarinya diizinkan dan bahkan mungkin, dan tujuannya adalah untuk melakukan sebaik mungkin.
Demi kepastian, pertimbangkan tantangan berang-berang yang sibuk , meskipun pada prinsipnya ini berlaku untuk jenis tantangan lain tanpa solusi optimal yang diketahui juga (Saya hanya menggunakan berang-berang yang sibuk di sini karena mereka memperburuk masalah yang disebutkan di bawah). Katakanlah, saya ingin membuat tantangan tentang menemukan berang-berang Brainfuck tersibuk. Parameter gratis dalam masalah berang-berang yang sibuk adalah ukuran kode. Saya tidak dapat mengatur tantangan tanpa membuat referensi ke ukuran kode dalam beberapa cara. Di satu sisi, setiap nilai parameter ukuran masalah N
memberikan tantangan yang terpisah (semakin sulit). Pertanyaan utama saya adalah bagaimana saya bisa membuat tantangan seperti itu berhasil tanpa mengalami masalah keseimbangan.
Solusi yang jelas adalah untuk memperbaiki N
: "Temukan program Brainfuck penghentian dengan N
byte kode sumber yang mencetak karakter sebanyak mungkin / berjalan untuk kutu sebanyak mungkin." Ini menyebabkan masalah balancing besar: jika saya memilih ukuran terlalu kecil, seseorang mungkin cepat menemukan yangberang-berang tersibuk dan tantangannya sudah berakhir. Jika saya memilih ukuran terlalu besar, solusi optimal akan mencetak sejumlah karakter astronomi sebelum mengakhiri, yang berarti bahwa itu mungkin sepele untuk menemukan program seperti itu dan tantangannya menjadi tugas / latihan dalam kesabaran - ini juga meninggalkan wilayah di mana berang-berang yang sibuk dapat ditemukan secara programatik, dan sebagai gantinya orang-orang perlu mulai membuktikan hasil mereka secara resmi yang mungkin dianggap tidak menyenangkan oleh banyak orang. Tentu saja, masalah ini lebih menonjol dalam tantangan berang-berang yang sibuk daripada jenis lainnya, karena pertumbuhan solusi yang optimal, tetapi itu berlaku untuk tantangan lain.
Pilihan selanjutnya adalah membiarkan N
tidak dibatasi dan menjadikannya bagian dari penilaian melalui beberapa fungsi. Bahkan untuk tantangan "normal" untuk menyeimbangkan skor gabungan dengan benar sangat sulit, tetapi dalam kasus berang-berang yang sibuk, pada dasarnya mustahil, karena solusi optimal tumbuh lebih cepat N
daripada fungsi yang dapat dihitung. Itu berarti saya selalu bisa mengalahkan jawaban terbaik yang ada dengan pergi ke yang cukup besar di N
mana saya dapat dengan mudah menemukan program yang berjalan begitu lama sehingga saya bisa mendapatkan skor yang lebih baik tanpa banyak usaha.
Saya juga telah mempertimbangkan menetapkan fix N
dan memungkinkan orang untuk juga mengirimkan berang-berang untuk yang lebih besar N
yang akan digunakan sebagai pemutus dasi berturut-turut. Ini memiliki masalah yang sama, di mana seseorang dapat "kebetulan menemukan berang-berang yang sama-sama baik" untuk sebuah N
, sehingga menciptakan dasi dan kemudian hanya mengirimkan apa saja untuk selanjutnya di N
mana menemukan skor besar lebih mudah (bahkan jika menemukan skor optimal semakin sulit). Dalam kasus ini, bagaimana Anda akan berurusan dengan banyak orang menggunakan solusi yang sama? Melarang itu juga akan aneh kalau-kalau itu optimal.
Mungkin orang bisa menemukan jalan tengah, dengan membuat tebakan yang berpendidikan dengan wajar N
dan kemudian meminta berang-berang yang sibuk untuk semua ukuran dalam (katakanlah) 5 byte N
, sehingga ada beberapa kelonggaran di kedua arah (dan kemudian Anda kombinasikan skor ~ 10) menjadi satu per satu teknik atau lainnya). Ini tidak terasa cukup memuaskan juga karena tebakan awal saya N
masih bisa jauh dari jangkauan yang membuat tantangan menarik.
TL; DR: dalam kasus di mana tantangannya adalah (memecahkan secara optimal dan) mengoptimalkan masalah yang ukurannya variabel, bagaimana cara saya memasukkan ukuran ke dalam tantangan? Idealnya saya ingin orang dapat bekerja dengan nilai N
yang dekat dengan ujung atas kisaran ukuran traktat. Tapi kalau-kalau ternyata solusi optimal adalah mungkin untuk itu N
, akan lebih bagus jika solusi untuk sedikit lebih besar N
akan mulai membebani, sehingga tantangan bisa berlanjut dengan ukuran masalah yang lebih menarik.
sumber
Jawaban:
Temukan N berikutnya
Tantangan akan mengindikasikan
N
bahwa pengiriman harus dimulai.Kemudian, orang akan mengirimkan jawaban saat ini
N
. Jika pengiriman yang diberikan terbukti optimal, makaN
ditambah 1, dan prosesnya berulang.Ada beberapa cara untuk menilai ini:
N
N
, ditambah satu poin untuk setiap solusi optimalsumber
Berikan poin untuk solusi dalam N terbatas
Izinkan
N
berada dalam batas tetap. Batas bawah harus mengecualikan jawaban yang jelas sepele, dan bahwa batas atas tidak boleh terlalu jauh dari batas bawah.Lalu, beri 1 poin untuk setiap orang yang memiliki solusi terbaik untuk masing-masing
N
dalam batas. Jika lebih tinggiN
berarti bahwa solusinya lebih sulit, maka berikan N poin kepada mereka. (atau rumus berdasarkan N).Metode ini mirip dengan bagaimana AZsPC melakukannya, tetapi sebagian poin tidak diberikan.
sumber