Gambaran
Dalam tantangan ini, tugas Anda adalah secara acak menghasilkan fungsi matematika monoton antara dua set.
Memasukkan
Input Anda adalah dua bilangan bulat positif sdan n.
Setelah mendapatkan input ini, program Anda akan menghasilkan fungsi matematika acakf dari set ke . Dengan kata lain, adalah "aturan" yang mengambil -tuple bilangan bulat antara dan , dan mengembalikan satu bilangan bulat tersebut. Selain itu, harus monoton dalam pengertian berikut. Jika dan dua- tuple seperti itu berlaku untuk setiap koordinat , maka .{0,1,...,s-1}n{0,1,...,s-1}fn0s-1fABnA[i] ≥ B[i]if(A) ≥ f(B)
Distribusi tepat dari fungsi monotonik ftidak masalah, selama masing-masing fungsi tersebut memiliki probabilitas positif yang dihasilkan (dengan asumsi RNG sempurna).
Keluaran
Output Anda akan menjadi enumerasi input dan output dari f. Ini harus berisi semua n-tupel bilangan bulat di antara 0dan s-1dalam beberapa urutan, masing-masing diikuti oleh output yang sesuai dari f. Format output yang tepat fleksibel (sesuai alasan).
Contohnya
Input s = 3dan n = 2mungkin menghasilkan output
(0, 0) 0
(0, 1) 1
(0, 2) 2
(1, 0) 0
(1, 1) 1
(1, 2) 2
(2, 0) 1
(2, 1) 1
(2, 2) 2
Ini berisi semua pasangan di atas set {0, 1, 2}tepat sekali, dan masing-masing diikuti oleh nilai- fnya. Kondisi monotonisitas juga terpenuhi. Tupel diberikan di sini dalam urutan leksikografis, tetapi ini tidak perlu.
Sebagai contoh lain, s = 2dan n = 4mungkin menghasilkan
(0, 0, 0, 0) 0
(0, 0, 0, 1) 0
(0, 0, 1, 0) 0
(0, 0, 1, 1) 0
(0, 1, 0, 0) 1
(0, 1, 0, 1) 1
(0, 1, 1, 0) 1
(0, 1, 1, 1) 1
(1, 0, 0, 0) 0
(1, 0, 0, 1) 1
(1, 0, 1, 0) 0
(1, 0, 1, 1) 1
(1, 1, 0, 0) 1
(1, 1, 0, 1) 1
(1, 1, 1, 0) 1
(1, 1, 1, 1) 1
Berikut ini adalah semua output yang mungkin untuk s = 2dan n = 2(hingga penataan ulang tupel); program Anda harus secara acak menampilkan salah satunya:
(0,0) 0
(0,1) 0
(1,0) 0
(1,1) 0
-------
(0,0) 0
(0,1) 0
(1,0) 0
(1,1) 1
-------
(0,0) 0
(0,1) 0
(1,0) 1
(1,1) 1
-------
(0,0) 0
(0,1) 1
(1,0) 0
(1,1) 1
-------
(0,0) 0
(0,1) 1
(1,0) 1
(1,1) 1
-------
(0,0) 1
(0,1) 1
(1,0) 1
(1,1) 1
Aturan dan Penilaian
Anda dapat menulis program atau fungsi lengkap. Hitungan byte terendah menang, dan celah standar tidak diizinkan. Kode dengan penjelasan lebih disukai.
Tidak ada batasan pada kompleksitas waktu, tetapi saya akan memberikan bonus -15% jika solusi Anda selalu dijamin selesai dalam jumlah waktu tertentu (tergantung pada input, dan dengan asumsi RNG sempurna yang berjalan dalam waktu konstan) .