ここでのタスクは、正の整数の順列(正の整数から自身への全単射)を形成する関数1を実装することです。これは、各正の整数が順列で1回だけ現れることを意味します。キャッチは、関数が偶数よりも奇数を出力する確率が大きいことです。
今、これは奇妙または不可能に見えるかもしれません。確かに偶数と同じくらい多くの奇数がありますか?そして、この直観は有限集合に対しては正しいが、実際には無限集合に対しては成り立たない。たとえば、次の順列を取ります。
1 3 2 5 7 4 9 11 6 13 15 8 17 19 10 21 23 12 25 27 14 29 31 16 33 35 18 37 39 20 41 43 22 45 47 24 49 51 26 53 55 ...
サイズがを超えるシーケンスのサブセクションを使用すると、少なくとも偶数と同じ数の奇数があります。したがって、ランダム項が奇数である確率は偶数である確率よりも大きいようです。また、すべての数字の奇数または偶数が最終的にシーケンスに表示され、一度しか表示できないことに注意してください。したがって、シーケンスは真の順列です。
確率の定義
混乱やあいまいさを避けるために、この質問で確率が意味するものを明確に説明します。
関数があるとしましょう。数の確率は、奇数セットのサイズに設定さの比奇数メンバーの限界として定義されているとして無限大に向かう傾向があります。
たとえば、前述の関数の確率は奇数になります。
これはコードゴルフであるため、回答はバイト単位でスコアリングされ、バイト数が少ない方が優れています。
追加の課題
ここでは、遊んでみて、おそらく実装しようとするいくつかの楽しいアイデアを紹介します。これらは単なる楽しみのためであり、スコアリングには影響しません。これらのいくつかは、このチャレンジに対する有効なソリューションでさえありません。チャレンジ2または3に対するソリューションのみを含む回答は有効な回答ではなく、削除される可能性があります。
奇数確率で順列を記述します。(これは可能です)
任意のについて、に偶数よりも奇数の数が多いが、確率が順列を記述します。
定義された確率のない順列を記述します(つまり、制限はありません)。
1:ここでは、関数はプログラムまたは関数を意味します。入力を受け取り、出力を生成するコードの一部にすぎません。