タグ付けされた質問 「fastest-code」

最速のコードチャレンジの勝者は、提出物の実行時のパフォーマンスによって決まります。公平を期すために、すべての提出物は同じマシンでベンチマークする必要があります。これは通常、すべての提出物をチャレンジのホストがテストする必要があることを意味します。漸近的な時間の複雑さによるスコアリングには、代わりに[fastest-algorithm]を使用します。

2
いくつかのビットを削除してカウントする
2^n長さのすべての異なるバイナリ文字列を考慮しn、仮定しn > 2ます。b < n/2各バイナリ文字列からビットを正確に削除して、n-b残りの長さの文字列を残すことができます。残っている個別の文字列の数は、削除するビットによって異なります。残りの異なる文字列をできる限り少なくすることが目的であると仮定すると、この課題は、の関数として残すことができる文字数を計算するコードを記述することですn。 例、n=3およびb = 1。2つの文字列11とのみを残すことができます00。 ためn=9とb = 1,2,3,4、私たちは持っています70,18,6,2 ためn=8とb = 1,2,3、私たちは持っています40,10,4 ためn=7とb = 1,2,3、私たちは持っています20,6,2 ためn=6とb = 1,2、私たちは持っています12,4 ためn=5とb = 1,2、私たちは持っています6,2 この質問は、元々、MOに関する別の形式で2014年に私によって提起されました。 入出力 コードは整数nを取り込んで、b開始b = 0から増加する各値に対して単一の整数を出力する必要があります。 スコア あなたのスコアは、私のLinuxベースのPCで1分以内にnすべてのコードが完了する最大のものb < n/2です。タイブレークの場合b、コードが獲得できる最大の値は、共同で最大の値をn獲得します。、あまりにもその基準にタイブレークの場合の最大値のための最速のコードnとbを決定します。時間が1〜2秒以内であれば、最初に投稿された回答が優先されます。 言語とライブラリ 任意の言語のライブラリを使用できます。私はあなたのコードを実行しなければならないので、それが無料で(ビールのように)Linuxで動作する場合に役立ちます。

2
最速のミニフラッククイン
ミニフラックはのサブセットである脳高射砲の言語、<>、<...>および[]操作が禁止されています。厳密に言えば、次の正規表現と一致してはなりません。 .*(<|>|\[]) Mini-Flakは、Brain-Flakの最小の既知のチューリング完全サブセットです。 少し前、私は作ることができたクワインの中でミニフラックが、宇宙の一生の間に実行するには遅すぎました。 それで、あなたへの私の挑戦は、より速いQuineを作ることです。 得点 コードをスコアリングするに@cyは、コードの最後にフラグを付け、そのフラグを使用してRubyインタープリターで実行します(オンラインで試すにはrubyインタープリターを使用し-dます)。スコアは次のようにSTDERRに出力されます。 @cy <score> これは、プログラムが終了するまでのサイクル数であり、実行間で同じです。各サイクルの実行にはほぼ同じ時間がかかるため、スコアはプログラムの実行にかかる時間と直接相関する必要があります。 Quineが長すぎてコンピューターで適切に実行できない場合は、手動でサイクル数を計算できます。 サイクル数の計算はそれほど難しくありません。サイクル数は、実行されるモナドの数の2倍に実行されるニラドの数を加えたものに相当します。これは、すべてのniladを単一の文字に置き換え、実行される文字の総数をカウントすることと同じです。 スコアリングの例 (()()()) モナドが1つ、ニラドが3つあるため、スコアは5です。 (()()()){({}[()])} ループには6モナドと2ニラドのスコア8が含まれるが、ループは3回実行されるため、スコアを3回カウントします。 1*5 + 3*8 = 29 必要条件 あなたのプログラムは... 少なくとも2バイトである -Aフラグを使用してBrain-Flakで実行されると、ソースコードを出力します 正規表現と一致しません .*(<|>|\[]) ヒント クレーン、高射砲のインタプリタは、より高速なRubyインタプリタより断定的であるが、いくつかの機能を欠いています。最初にCrane-Flakを使用してコードをテストし、それが機能することがわかったらルビーインタープリターでスコアを付けることをお勧めします。また、プログラムをTIOで実行しないことを強くお勧めします。TIOはデスクトップインタープリターよりも遅いだけでなく、約1分でタイムアウトします。TIOがタイムアウトする前にプログラムを実行するのに十分な低得点を獲得できた場合、非常に印象的です。 [(...)]{}と(...)[{}]と同じように動作する<...>が、制限されたソースの要件を壊しません この課題への取り組み方を知りたい場合は、Brain-FlakとMini-Flak Quines をチェックしてください。

9
できるだけ早くパーマネントを計算します
課題は、行列のパーマネントを計算するために可能な限り速いコードを書くことです。 永久n行列のn行列A=( ai,j)は以下のように定義されます ここでS_nのすべての順列の集合を表します[1, n]。 例として(wikiから): この質問では、行列はすべて正方形で、値-1と1その中のみを持ちます。 例 入力: [[ 1 -1 -1 1] [-1 -1 -1 1] [-1 1 -1 1] [ 1 -1 -1 1]] 永久: -4 入力: [[-1 -1 -1 -1] [-1 1 -1 -1] [ 1 -1 -1 -1] [ 1 -1 1 -1]] 永久: 0 …

6
プライム封じ込め番号(スピード版)
これはシーケンスA054261です nnn素数封じ込め番号番目は、第含ま最小数であるnnnのサブストリングとして素数を。たとえば、番号235235235は、サブストリングとして最初の3つの素数を含む最小の番号であり、3番目の素数格納番号になります。 最初の4つの素数封じ込め番号があることを把握することは簡単です222、232323、235235235および235723572357、しかし、それはより面白いです。次の素数は11であるため、次の素数包含番号は235711235711235711でが、プロパティで最小の数として定義されているため、112357112357112357です。 ただし、11を超えると実際の課題が発生します。次の主な包含番号は113257113257113257です。この番号では、部分文字列11と 13が重複していることに注意してください。番号3も番号と重複しています13。 次の番号は、その前にある番号のすべての基準を満たし、さらに1つのサブストリングを持つ必要があるため、このシーケンスが増加していることを証明するのは簡単です。ただし、n=10との結果が示すように、シーケンスは厳密には増加していませんn=11。 チャレンジ あなたの目標は、できるだけ多くの素数の収容番号を見つけることです。プログラムは、2から始まり上に向かって、順序付けられた形式で出力する必要があります。 ルール あなたは許可されていますハードコード素数に。 素数包含番号をハードコーディングすることはできません(2唯一の例外)、またはチャレンジを簡単にするマジック番号。どうぞよろしくお願いします。 任意の言語を使用できます。コードを実行する環境を準備するためのコマンドのリストを含めてください。 CPUとGPUの両方を自由に使用でき、マルチスレッドを使用できます。 得点 公式の採点は私のラップトップ(dell XPS 9560)から行われます。あなたの目標は、5分以内にできるだけ多くの素数の包含番号を生成することです。 スペック 2.8GHz Intel Core i7-7700HQ(3.8GHzブースト)4コア、8スレッド。 16GB 2400MHz DDR4 RAM NVIDIA GTX 1050 Linux Mint 18.3 64-ビット これまでに見つかった数字と、最後に追加された素数: 1 => 2 ( 2) 2 => 23 ( 3) 3 => 235 ( 5) 4 …

22
再帰的な文字列置換
タスク 3つの文字列を指定してA, B, C、Binの各インスタンスがでA再帰的に置換された出力文字列を生成するプログラムまたは関数を記述しCます。再帰的に置換とは、各ステップで重複しないBinのすべてのインスタンスA(左から右に貪欲に選択)がに含まれなくなるCまで置換を繰り返すことを意味BしAます。 入出力 I / Oにはデフォルトのメソッドを使用できます。 文字列には、印刷可能なASCII文字のみが含まれます(また、それらのいずれかが含まれることもあります)。 B一方で、空の文字列になることはありませんAし、Cかもしれません。 文字列はプレーンテキストとみなされます。たとえば、扱うことはできません B。、正規表現パターンとして。 入力の一部の組み合わせは終了しません。これらの場合、プログラムは何でもできます。 テストケース これらは次の形式です。 A/B/C\nOutput Hello, world!/world!/PPCG Hello, PPCG Uppercase is up/up/down Uppercase is down ababababa/aba/ccc cccbcccba delete/e/{empty string} dlt {empty string}/no/effect {empty string} llllrrrr/lr/rl rrrrllll +-+-+-+/+-+/+ + ababababa/aba/bada badabbadbada abaaba/aba/ab abb ((())())())/()/{empty string} ) 終了しない例: grow/ow/oow loop/lo/lo
25 code-golf  string  substitution  code-golf  math  code-golf  string  set-theory  code-golf  code-golf  compile-time  code-golf  kolmogorov-complexity  binary  code-golf  sequence  cops-and-robbers  code-golf  subsequence  card-games  code-golf  sequence  primes  code-golf  code-golf  number  graphical-output  music  code-golf  ascii-art  code-golf  string  lambda-calculus  code-golf  string  code-generation  code-golf  unicode  code-golf  math  combinatorics  code-golf  balanced-string  code-golf  sequence  cops-and-robbers  code-golf  sequence  cops-and-robbers  code-challenge  fastest-code  chess  code-golf  math  graphical-output  code-golf  string  hello-world  animation  code-golf  number  arithmetic  code-golf  integer  code-golf  code-golf  combinatorics  code-golf  kolmogorov-complexity  graphical-output  code-golf  string  code-golf  code-golf  game  code-golf  math  combinatorics  code-golf  ascii-art  popularity-contest  random  code-golf  arithmetic  number-theory  integer  code-golf  tips  underload  code-golf  math  sequence  primes  code-golf  math  path-finding  code-golf  ascii-art  primes  code-golf  kolmogorov-complexity  alphabet 

2
可能な限り大きな文字列に対して可能な最大実行回数を計算します
[この質問は、文字列の実行を計算するためのフォローアップです] 期間p文字列はw任意の正の整数であるpようなw[i]=w[i+p] ときはいつでも、この式の両辺が定義されています。per(w)の最小周期のサイズを示しましょうw。文字列wは周期的であると言うper(w) <= |w|/2。 したがって、非公式には、定期的な文字列は、少なくとも1回繰り返される別の文字列から構成される単なる文字列です。唯一の問題は、文字列の最後で、少なくとも1回全体が繰り返される限り、繰り返される文字列の完全なコピーを必要としないことです。 たとえば、文字列を考えますx = abcab。per(abcab) = 3としてx[1] = x[1+3] = a、x[2]=x[2+3] = bより短い期間はありません。abcabしたがって、文字列は周期的ではありません。ただし、文字列ababaはとして周期的per(ababa) = 2です。 より多くの例としては、abcabca、ababababaとabcabcabcも周期的です。 正規表現が好きな人のために、これは文字列が周期的かどうかを検出します: \b(\w*)(\w+\1)\2+\b タスクは、より長い文字列内のすべての最大周期部分文字列を見つけることです。これらは文献ではランと呼ばれることもあります。 部分文字列wは、周期的であり、w[i-1] = w[i-1+p]でもない場合、最大の周期的部分文字列(実行)ですw[j+1] = w[j+1-p]。非公式には、同じ期間のより大きな「実行」に「実行」を含めることはできません。 2回の実行は、文字列全体の異なる場所で発生する同じ文字列を表すことができるため、実行を間隔で表します。上記の定義を間隔で繰り返します。 文字列内のラン(又は最大周期サブストリング)がT間隔である [i...j]とj>=i、このような、 T[i...j] 周期のある周期的な単語です p = per(T[i...j]) それは最大です。正式には、T[i-1] = T[i-1+p]でもありませんT[j+1] = T[j+1-p]。非公式には、同じ期間のより大きな実行に実行を含めることはできません。 表すRUNS(T)文字列の実行のセットT。 実行の例 文字列の4つの最大の周期ストリング(実行)がT = atattattありT[4,5] = tt、T[7,8] = tt、T[1,4] …

10
最短の一意に識別する部分文字列
文字列のリストが与えられたら、各文字列を、空でない部分文字列の1つで置き換えます。これは、リスト内の他の文字列の部分文字列ではなく、できるだけ短くします。 例 リストを考えると["hello","hallo","hola"]、"hello"ただで置き換える必要があり"e"、この部分文字列がに含まれていないとして、"hallo"そして"hola"、それはできるだけ短くしています。"hallo"いずれかで置き換えることができる"ha"か、"al"と"hola"のいずれかによって"ho"、"ol"または"la"。 ルール 文字列は空ではなく、同じ大文字と小文字のアルファベットのみを含むと想定できます。 このような部分文字列はリスト内の各文字列に存在すると仮定できます。つまり、リスト内の文字列は他の文字列の部分文字列にはなりません。 入力と出力は任意の合理的な形式にすることができます。 これはcode-golfなので、選択した言語でできるだけ少ないバイトを使用するようにしてください。 テストケース ほとんどの場合、可能な出力は1つだけです。 ["ppcg"] -> ["p"] (or ["c"] or ["g"]) ["hello","hallo","hola"] -> ["e","ha","ho"] ["abc","bca","bac"] -> ["ab","ca","ba"] ["abc","abd","dbc"] -> ["abc","bd","db"] ["lorem","ipsum","dolor","sit","amet"] -> ["re","p","d","si","a"] ["abc","acb","bac","bca","cab","cba"] -> ["abc","acb","bac","bca","cab","cba"] 関連:最短識別サブストリング -同様のアイデアですが、より複雑なルールと扱いにくい形式です。
23 code-golf  string  code-golf  string  code-golf  array-manipulation  code-golf  quine  code-golf  array-manipulation  integer  matrix  classification  code-golf  quine  code-golf  string  matrix  conversion  code-golf  string  number  code-golf  string  code-golf  number  sequence  integer  code-golf  decision-problem  matrix  code-golf  string  code-golf  math  code-golf  math  array-manipulation  combinatorics  code-golf  random  code-golf  code-golf  alphabet  code-golf  python  c  code-golf  base-conversion  code-golf  string  counting  code-challenge  code-generation  fastest-code  code-golf  kolmogorov-complexity  matrix  code-golf  string  code-golf  array-manipulation  decision-problem  random  sudoku  code-golf  chess  code-golf  card-games  encode  code-golf  decision-problem  code-golf  code-golf  math  array-manipulation  matrix 

5
最速のホームプライムジェネレーター
ホームプライムとは何ですか? 例として、HP(4)を取り上げます。まず、素因数を見つけます。4の素因数(最小から最大の順、常に)は2、2です。これらの要素をリテラル数として取ります。2、2は22になります。素因数分解のこのプロセスは、素数に達するまで続きます。 number prime factors 4 2, 2 22 2, 11 211 211 is prime 素数に達すると、シーケンスは終了します。HP(4)= 211。14の長い例を次に示します。 number prime factors 14 2, 7 27 3, 3, 3 333 3, 3, 37 3337 47, 71 4771 13, 367 13367 13367 is prime あなたの課題は、与えられたxでHP(x)を計算するプログラムを作成し、できるだけ早くそれを行うことです。既知のホームプライムのリスト以外の任意のリソースを使用できます。 注意してください、これらの数値は非常に速く非常に大きくなります。x = 8では、HP(x)は3331113965338635107にジャンプします。HP(49)はまだ見つかりません。 プログラム速度はRaspberry Pi 2でテストされ、次の入力を平均します。 16 20 …

23
アスキーアートオクタゴン
入力整数を指定するとn > 1、n文字で構成される辺の長さのASCIIアートオクタゴンを出力します。以下の例を参照してください。 n=2 ## # # # # ## n=3 ### # # # # # # # # # # ### n=4 #### # # # # # # # # # # # # # # # # #### n=5 ##### # # # # # # …
22 code-golf  ascii-art  code-golf  geometry  code-golf  balanced-string  code-golf  cops-and-robbers  code-challenge  cops-and-robbers  code-golf  code-golf  random  cryptography  code-golf  array-manipulation  number  code-challenge  integer  code-golf  math  integer  code-golf  math  math  parsing  image-processing  test-battery  math  number  combinatorics  fastest-code  code-golf  code-golf  math  number-theory  rational-numbers  polynomials  code-golf  math  geometry  code-golf  code-golf  number-theory  primes  factoring  code-golf  restricted-source  code-golf  string  decision-problem  counting  code-golf  math  sequence  fibonacci  code-golf  array-manipulation  counting  code-golf  array-manipulation  number-theory  code-golf  array-manipulation  code-golf  random  code-golf  string  hexadecimal  code-golf  string  code-challenge  sorting  code-golf  number  floating-point  code-golf  sorting  code-golf  decision-problem  fibonacci  code-golf  number  combinatorics  code-golf  string  code-golf  math  code-golf  electrical-engineering  code-golf  javascript  code-golf  base-conversion  code-golf  array-manipulation  matrix  binary-matrix  code-golf  kolmogorov-complexity  python  perl  ruby  code-golf  number  code-golf  optimization  integer-partitions  code-golf  string  code-golf  ascii-art 

28
シンプルなワードラッパーを作成する
(注:これは私の初めてのコードゴルフの質問ですが、私が知る限り、誰もこれを正確に行っていないので、私は良いはずです。) あなたの仕事は、文字列sと整数を取り込んで、n複数の行に折り返されたテキストを返すか出力するプログラムまたは関数を作成することです。各単語は完全に1行である必要があります。つまり、途中で単語が分割されません。各行はn文字より長くすることはできません。また、各行にできるだけ多くの単語を収める必要があります。 例: s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a …
22 code-golf  string  code-golf  string  parsing  apl  math  primes  integer  fastest-code  code-golf  math  primes  integer  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  array-manipulation  code-golf  number  code-golf  sequence  code-golf  math  arithmetic  code-golf  date  conversion  code-golf  geometry  combinatorics  grid  code-golf  string  code-golf  counting  java  code-golf  chess  code-golf  path-finding  conversion  atomic-code-golf  logic-gates  code-golf  fibonacci  code-golf  ascii-art  fractal  code-golf  quine  code-golf  string  code-golf  array-manipulation  decision-problem  code-golf  quine  code-golf  code-challenge  array-manipulation  code-challenge  word-search  code-golf  binary  conversion  code-golf  code-golf  restricted-source  code-golf  kolmogorov-complexity  restricted-source  code-golf  kolmogorov-complexity  random  animation 

3
修正された欠落番号
バックグラウンド: 私は昨晩この質問を最初に投稿し、その曖昧さに反発を受けました。それ以来、私は問題の言い回しだけでなく、その複雑さ(O(1)ではない)に関して多くの担当者に相談しました。このプログラミングの問題は、Amazonのインタビューの質問に対する悪スピンです。 質問: ランダムに連結された整数[0、250)の文字列(0〜250の排他的)を指定すると、シーケンスに1つの番号が欠落しています。あなたの仕事は、この足りない数を計算するプログラムを書くことです。シーケンスには、1つ以外に欠落している数値はありません。それが、この問題を非常に困難にし、おそらく計算上困難にするものです。 以下の例1や例2のように、この問題を小さな文字列で手作業で行うことは、明らかに非常に簡単です。逆に、3桁または4桁の数字が含まれる非常に大きなデータセットで欠落している数字を計算することは、非常に困難です。この問題の背後にある考え方は、このプロセスを実行するプログラムを構築することです。 重要な情報: 昨晩この問題を投稿したときにかなり混乱しているように思われたものの1つは、正確に欠落している数値とは何か、ということでした。欠落している数値は、上記で指定した範囲内の数値です。必ずしも数字ではありません。例3では、シーケンスに表示されているにもかかわらず、欠落している番号が9であることがわかります。DIGIT 9が一連の[0、30)に表示される場所は3つあります:「9」、「19」、および「29」。あなたの目的は、これらを区別し、9が欠落しているNUMBERであることを発見することです(例3の内部)。言い換えると、トリッキーな部分は、どの数字列が完全で、他の数字に属しているかを見つけることにあります。 入力: 入力は、0から249までの整数、または0から250までの整数(つまり、[0、250))を含む文字列Sです。前述のように、これらの整数はスクランブルされてランダムシーケンスが作成されます。区切り文字(「42、31、23、44」)やパディング0はありません(003076244029002)。問題は、例で説明されているとおりです。実際の問題には1つの解決策しかないことが保証されています。これらに対して複数のソリューションは許可されていません。 受賞基準: メモリ使用量が最速で最低の人が勝者になります。時間が結びつくという奇跡的なイベントでは、タイムブレーカーに使用されるメモリが少なくなります。可能であればBig Oをリストしてください! 例: 例1と2の範囲は[0、10) 例3と4の範囲は[0、30) (例1〜4はデモンストレーション用です。プログラムで処理する必要はありません。) 例5の範囲は[0、250) 1. 420137659 - Missing number => 8 2. 843216075 - Missing number => 9 3. 2112282526022911192312416102017731561427221884513 - Missing number => 9 4. 229272120623131992528240518810426223161211471711 - Missing number => 15 5. 11395591741893085201244471432361149120556162127165124233106210135320813701207315110246262072142253419410247129611737243218190203156364518617019864222241772384813041175126193134141008211877147192451101968789181153241861671712710899168232150138131195104411520078178584419739178522066640145139388863199146248518022492149187962968112157173132551631441367921221229161208324623423922615218321511111211121975723721911614865611197515810239015418422813742128176166949324015823124214033541416719143625021276351260183210916421672722015510117218224913320919223553222021036912321791591225112512304920418584216981883128105227213107223142169741601798025 - Missing …

9
電気グリッドを構築する
チャレンジ N個の都市が一直線に並んでいます。i番目の都市はA[i]、起点の右側に数キロメートルあります。2つの都市が同じ場所にあることはありません。 いくつかの発電所を備えた送電網を構築します。発電所は都市内に建設する必要があります。ただし、K発電所の建設は(<N)のみ許可されているため、発電所のない都市がいくつかあります。発電所のない都市ごとに、その都市と発電所がある最も近い都市との間にケーブルを構築する必要があります。 3時位置の都市がある場合たとえば、0, 1, 2で、そして唯一の都市を0発電所を持って、次の2本のケーブルから1構築する必要がある2の0から(2キロ)と他の1へ03キロの合計の長さを持っている(1キロ)、 。 与えられたK都市の位置(A)、あなたは、グリッドを構築するために必要なケーブルの最小キロを計算する必要があります。 テストケースの例 K = 1, A = [0, 2, 4, 6, 8] : 12 # build power plant in the city at position 4, total length = 4 + 2 + 0 + 2 + 4 = 12 K = 3, A = …

8
合計と等しい製品、またはその逆
等価の楽しいペアは1 + 5 = 2・3および1・5 = 2 + 3です。これらのような多くのものがあり、別のものは1 + 1 + 8 = 1・2・5と1・1・8 = 1 + 2 + 5です。一般に、生成物N正の整数の和に等しく、Nは正の整数、およびその逆。 このチャレンジでは、入力n> 1に対して、順列を除く正の整数のそのようなすべての組み合わせを生成する必要があります。これらは妥当な形式で出力できます。たとえば、n = 3の可能なソリューションはすべて次のとおりです。 (2, 2, 2) (1, 1, 6) (1, 2, 3) (1, 2, 3) (1, 3, 3) (1, 1, 7) (1, 2, 5) (1, 1, 8) 2GB …

9
超スピーディなトーティエント機能
目標は簡単です。10秒以内にできるだけ多くの数のトーティエント関数を計算し、その数を合計します。 最後に結果を印刷し、実際に計算する必要があります。自動化されたtotient関数は許可されていませんが、bignumライブラリは許可されています。1から開始し、すべての整数を連続してカウントアップする必要があります。番号をスキップすることはできません。 あなたのスコアはあなたのプログラムがあなたのマシンで計算できる数/私のプログラムがあなたのマシンで計算できる数です。私のコードはC ++での単純なプログラム(最適化オフ)です。うまくいけば実行できます。 使用できる重要なプロパティ! もし gcd(m,n) = 1, phi(mn) = phi(m) * phi(n) if pが素数の場合phi(p) = p - 1(for p < 10^20) 場合nでもあり、phi(2n) = 2 phi(n) 最初のリンクにリストされている他の 私のコード #include <iostream> using namespace std; int gcd(int a, int b) { while (b != 0) { int c = a % …

8
最速の数独ソルバー
勝者が見つかりました 勝者がいるようです!誰もが世界最速の数独ソルバーと競う予定がない限り、ユーザー53x15は驚くほど高速なソルバーTdokuで勝ちます。まだソルバーに取り組んでいる人のために、時間があれば新しい提出物のベンチマークを行います。 チャレンジ 数独のゲームの目標は、各行、列、およびボックスに各番号が1回だけ含まれるように、各セルに1から9の数字をボードに入力することです。数独パズルの非常に重要な側面は、有効なソリューションが1つだけであることです。 このチャレンジの目標はシンプルです。数独パズルをできるだけ早く解決する必要があります。ただし、古い数独を解くだけでなく、現存する非常に難しい数独パズルである17-clue数独を解くことになります。以下に例を示します。 ルール 言語 任意の言語を自由に使用できます。ご使用の言語用のコンパイラーがインストールされていない場合は、Linuxでスクリプトを実行できる環境をインストールするために必要なコマンドライン命令のセットを提供できるはずです。 ベンチマーク機 ベンチマークは、Dell XPS 9560、2.8GHz Intel Core i7-7700HQ(3.8GHzブースト)4コア、8スレッド、16GB RAMで実行されます。GTX 1050 4GB。マシンはUbuntu 19.04を実行します。uname興味のある方のための出力を次に示します。 Linux 5.0.0-25-generic #26-Ubuntu SMP Thu Aug 1 12:04:58 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux 入力 入力はファイルとして提供されます。それは見つけることができるここに。ファイルには49151個の数独パズルが含まれています。ファイルの最初の行はパズルの数であり、その後の各行は81文字の長さで、パズルを表しています。未知のセルは0であり、既知のセルは1-9です。 プログラムは、ファイル名を引数として受け取るか、STDINからファイルを入力できるようにして、ソリューションの手動チェックを容易にする必要があります。プログラムがどのように入力を受け取るかについての指示を含めてください。 タイミング/スコアリング コメントの議論といくつかの考察から、採点基準はプログラム全体の時間になるように変更されました。プログラムは、公式のスコアリング中であっても、正しいハッシュを持つ出力ファイルを生成する必要があります。これは、既存のソリューションを妨害せず、現在のランキングを変更しません。スコアリングシステムに関するご意見をお待ちしています。 2つのソリューションの個々の実行のスコアが類似している場合、複数のベンチマークを実行し、平均時間が最終スコアになります。平均スコアの差が2%未満の場合、それを引き分けと見なします。 ソリューションの実行に1時間以上かかる場合、公式にスコアリングされません。そのような場合、それを実行したマシンとスコアを報告する責任があります。最適化されたソルバーの場合、これは問題になりません。 編集:難しいとはいえ、手元にある問題は最も難しい問題ではないということが私の注意を喚起しました。時間があれば、ここで紹介するソリューションをより難しいパズルセットに対してベンチマークし、各提出物にスコアを追加します。ただし、これは公式の得点ではなく、単なる楽しみです。 検証 ソリューションは、MD5 / SHA256チェックサムによって検証されます。スクリプトは、すべてのパズルとその解決策を含むファイルを生成できるはずです。ただし、ファイルも手動で検査されるため、ハッシュの衝突を取得しようとしないでください。出力ファイルは一致する必要があります。 MD5:41704fd7d8fd0723a45ffbb2dbbfa488 SHA256:0bc8dda364db7b99f389b42383e37b411d9fa022204d124cb3c8959eba252f05 ファイルは次の形式になります。 <num_puzzles> <unsolved_puzzle#1>,<solved_puzzle#1> …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.