概要
この課題の課題は、2つのセット間で単調な数学関数をランダムに生成することです。
入力
入力は2つの正の整数s
とn
です。
これらの入力を取得した後、プログラムはへのセットからランダムな数学関数を生成します。換言すれば、取り込み「ルール」であるとの間の整数のタプルと、戻るそのような整数です。さらに、次の意味で単調でなければなりません。もしおよび2つのです、このようなタプルすべての座標についても同様で、その後、。f
{0,1,...,s-1}n
{0,1,...,s-1}
f
n
0
s-1
f
A
B
n
A[i] ≥ B[i]
i
f(A) ≥ f(B)
単調関数の正確な分布は、f
そのような各関数が生成される正の確率を持っている限り、問題ではありません(完全なRNGを想定)。
出力
出力は、の入力と出力の列挙ですf
。それはすべて含まなければならないn
との間の整数のタプルを0
し、s-1
それぞれが、対応する出力に続いている、いくつかのためにf
。正確な出力形式は柔軟です(理由の範囲内)。
例
入力s = 3
およびn = 2
出力を生成する場合があります
(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
セットのすべてのペアが{0, 1, 2}
1回だけ含まれ、各ペアの後にはf
-value が続きます。単調性条件も満たされます。タプルはここでは辞書式順序で示されていますが、これは必須ではありません。
別の例として、s = 2
そしてn = 4
かもしれないプロデュース
(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
以下は、s = 2
およびn = 2
(タプルの並べ替えまで)のすべての可能な出力です。あなたのプログラムはそれらの一つをランダムに出力するはずです:
(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
ルールとスコアリング
完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。説明付きのコードが推奨されます。
時間の複雑さに制限はありませんが、ソリューションが常に一定の時間内に終了することが保証されている場合、入力に応じて、一定の時間で実行される完全なRNGを想定して、-15%のボーナスを提供します。