一年で一番長い日-余分な時間を無駄にするものがあります...
概要
これは人気コンテストでもグラフィック出力チャレンジでもないことに注意してください。65,536個のゼロと1の文字列を出力するだけです。質問の下部にあるスタックスニペットは、これを256 x 256の白黒画像として表示し、公式スコアを計算します。その後、画像を保存し、コードと一緒に回答にアップロードできます(文字列出力が30,000文字のStack Exchange回答に収まらないため)。
得点
画像のスコアは、個々のピクセルのスコアの合計です。個々の画素のスコアは、それぞれについてサブスコアの合計である非直交、プライム距離である画素反対色獲得される画素。このような各画素についてサブスコアは、1/p
ここでp
素数の距離です。
この質問の文脈では、用語には次の定義があります。
非直交:ピクセルは、同じ行になく、同じ列にない場合、スコアリングされるピクセルに非直交です。
素数距離:ピクセルは、正確に素数であるユークリッド距離で区切られている場合、スコアリングされるピクセルから素数距離にあります。特に、距離はトロイダルに測定された最小距離です。左上のピクセルは
sqrt(2)
右下のピクセルからの距離です(4つのエッジすべてがラップします)。反対の色:値が1になった場合、ピクセルはスコアリングされるピクセルと反対の色です。つまり、最初のピクセルが0で2番目のピクセルが1であるか、最初のピクセルが1で2番目のピクセルが0です。
Stack Snippetには、画像のスコアリング方法を示すサンプルコードが含まれていますが、最適化や効率的なアプローチは含まれておらず、最終画像のスコアリングが一貫して行われるようにコードを修正するだけです。
コードに誤りがある場合は、コメントまたはチャットでお知らせください。
JavaScriptは、この特定の課題に答えるのに必ずしも最適な言語であるとは限りません。スニペットコードは、より高速なアプローチに関する手がかりを意図的に与えていないことに注意してください。既存の回答ですでに実証されている効率のみが導入されます。
可視化
スコアリングピクセル
スコアリングピクセルの分布の直感的な感覚のために、ここ(紫色)は256 x 256の画像のピクセル(128、128)の非直交プライムピクセルです。
ランダム画像
これは、Python 3の回答例からランダムに生成された画像です。138,267.64のスコアがあり、勝つために何かを与えます。
入力
コードは入力を必要としません。
出力
コードは、黒と白の256 x 256画像のピクセルを表す65,536個の0と1の文字列を出力する必要があります。数字は、区切り文字のない連続した文字列でなければなりません。ファイルに出力すると、コピーと貼り付けが簡単になりますが、これはユーザー次第です。
コードは、文字列をコピーしてStack Snippetに貼り付けることができる限り、他の有用な情報も出力する場合があります。たとえば、最高の文字列をファイルに出力し、最高のスコアを定期的にSTDOUTに出力して、ユーザーが検索を停止するタイミングを選択できるようにすることができます。
スタックスニペット
Sp3000が指摘したように、スニペットはスコアを計算するのに10分かかっていましたが、意図的に非効率的なリファレンス実装であっても、少し遅すぎます。Sp3000で提案されているスコアリングのピクセルオフセットの事前計算の改善を編集しましたが、スコアの計算には数秒かかります。
自分のコードの出発点として別の回答の出力またはコードを使用する場合は、クレジットとサポート回答へのリンクを忘れないでください。この質問への回答は、回答例または質問内のコードに入金する必要はありません。