25
ピジョンホールの原理とコードゴルフ
鳩の巣原理と述べています N > Mの場合、N個のアイテムをM個のボックスに入れる場合、少なくとも1つのボックスに複数のアイテムを含める必要があります。 多くの人にとって、この原則は他の数学的発表と比較して特別な地位にあります。EWダイクストラが書いたように、 それはいくつかの神秘に囲まれています。それを使用する証明は、しばしば特別なもの、特に独創的なものと見なされます。 チャレンジ この課題の目的は、ASCIIアート表現を使用して鳩の巣の原理を説明することです。具体的には: 入力N(アイテムの数)およびM(ボックスの数)として、N非負とM正を取ります。Nより小さい場合がありますM(その場合、原則が適用されない場合でも)。 ボックスへのアイテムの可能な割り当ての1つをランダムに選択します。各割り当てには、選択される確率がゼロ以外である必要があります。 次のように、割り当てのASCIIアート表現を作成します。 M行があり、それぞれがボックスに対応しています。 各行は、などの非空白文字で始まり|ます。 その文字に続いて、などの別の非空白文字が続き#、そのボックス内のアイテムの数だけ繰り返されます。 たとえばN = 8、考慮してくださいM = 5。ボックスへのアイテムの選択assigmentである場合に4、1、0、3、0、表現であります |#### |# | |### | 同じプログラムの異なる実行(異なる割り当てをもたらす)は、 |# |## |# |# |### 表現に関してある程度の柔軟性があります。下記参照。 特定のルール コードはおよびの値に対して理論的に実行する必要がNありMます。実際には、メモリサイズまたはデータ型の制限によって制限される場合があります。 出力を観察するだけでは、すべての割り当てにゼロ以外の確率があるかどうかを判断するのに十分ではないため、各サブミッションでは、コードがどのようにそれを達成するかを説明する必要があります。 次の表現バリエーションが許可されます。 異なる非空白文字の任意のペアを選択できます。これらは、プログラムの実行全体で一貫している必要があります。 リプレゼンテーションの90度回転は許容されます。繰り返しますが、選択は一貫している必要があります。 末尾または先頭の空白は許可されます。 異なる表現形式と、のための一例としてN = 15、M = 6プログラムの2つの実行の結果は、可能性が VVVVVV @@@@@@ @@ @@@ @ @@ @ …