シリーズについて
まず、これを他のコードゴルフチャレンジと同様に扱い、シリーズについてまったく心配することなく答えることができます。ただし、すべての課題にリーダーボードがあります。最初の投稿では、リーダーボードとシリーズに関する詳細情報を見つけることができます。
このシリーズにはたくさんのアイデアが並んでいますが、将来の課題はまだはっきりしていません。何か提案があれば、関連するサンドボックスの投稿でお知らせください。
穴4:バートランドパラドックス
バートランドパラドックスが示す円内にランダムコードを選ぶための方法の異なる方法が和音、その中点とその長さの異なる分布をもたらすことができる興味深い問題です。
この課題では、「正しい」方法、つまりスケーリングと変換の下で不変なコードの分布を生成する方法を使用して、単位円のランダムなコードを生成することになっています。リンクされたウィキペディアの記事では、「方法2」はそのような方法です。
正確なルールは次のとおりです。
- 返される和音の数
N
を指定する1つの正の整数を取る必要があります。出力はN
、ラジアン単位の極角で指定された単位円上の2点としてそれぞれ指定されたコードのリストである必要があります。 - コードは、2つの角度のそれぞれに対して少なくとも2 20の異なる値を返すことができるはずです。使用可能なRNGの範囲が狭い場合、最初に組み込みのRNGの上に十分に大きい範囲のRNGを構築するか、独自の適切なRNGを実装する必要があります。このページはそのために役立ちます。
- 和音の分布は、リンクされたウィキペディアの記事の「方法2」で作成されたものと見分けがつかない必要があります。別のアルゴリズムを実装してコードを選択する場合は、正確性の証明を含めてください。どのアルゴリズムを実装する場合でも、理論的には単位円で有効なコードを生成できる必要があります(基礎となるPRNGの制限または精度の制限されたデータ型を除く)。
- 実装では、浮動小数点数(少なくとも32ビット幅)または固定小数点数(少なくとも24ビット幅)を使用して返す必要があり、すべての算術演算は16 ulp以内で正確でなければなりません。
完全なプログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、STDOUT(または最も近い代替)、関数の戻り値または関数(出力)パラメーターを介して出力を生成できます。
出力は、個々の数字が明確に区別可能であり、それらの合計数が常に偶数である限り、任意の便利なリスト形式または文字列形式にすることができます。
これはコードゴルフであるため、最短の提出(バイト単位)が優先されます。そしてもちろん、ユーザーごとの最短投稿もシリーズの総合リーダーボードに入ります。
可視化
次のスニペットを使用して、生成された行をレンダリングし、それらの分布を検査できます。角度のペアのリストをテキスト領域に貼り付けるだけです。スニペットは、数値が単純な10進数(科学表記法ではない)である限り、ほぼすべてのリスト形式を処理できる必要があります。分布をよく理解するには、少なくとも1000行を使用することをお勧めします。また、以下の記事に記載されているさまざまな方法のサンプルデータも提供しました。
リーダーボード
回答が表示されるようにするには、次のマークダウンテンプレートを使用して、すべての回答を見出しで開始してください。
# Language Name, N bytes
N
提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(言語は現在表示されていませんが、スニペットはそれを必要とし、解析します。将来、言語ごとのリーダーボードを追加するかもしれません。)