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

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

4
長さnのマジックシーケンス
マジックシーケンスとは、負ではない整数のシーケンスでx[0..n-1]ありx[i]、i たとえば、6,2,1,0,0,0,1,0,0,0は、6個の0、2個の1などがあるため、マジックシーケンスです。 nを指定すると、長さnのすべてのマジックシーケンスを出力する関数を作成します 10秒以内に最高値nの正しい出力を生成できるプログラムが勝ちます。(ただし、すべてのプログラムは大歓迎です) たとえば、Aliceのプログラムは10秒以内にn = 15まで処理できますが、Bobのプログラムは同じ時間内にn = 20まで処理できます。ボブが勝ちます。 プラットフォーム:Linux 2.7GHz @ 4 CPU

1
直交対角グレコラテン正方形の構築
Nx個のN一意の要素のグリッドを考えます。各要素には、文字(AからNth文字まで)と数字(1からN包括的)があります。したがって、各数字/文字のペアはグリッドに1回だけ存在します。 あなたの仕事は、次のようにグリッドを配置することです: 各行、列、および対角線(折り返しを含む)には、各文字と数字が1回だけ含まれています。 ラッピングとは、つまり * * * # * * * # * * * # * * * # * * * * * * * * # は、対角線であり、エッジに当たるすべての同様の対角線です。 5x5グリッドの例は次のとおりです。 A1 B2 C3 D4 E5 C4 D5 E1 A2 B3 E2 A3 B4 C5 D1 B5 C1 D2 E3 …

2
Xが3より大きく、XとYの間に少なくとも2つの差がある
私はいくつかのC ++をゴルフしようとしています。この条件を短くすることは可能ですか? X > 3 & X - Y > 1 (もちろん、空白の削除は別として。) だから、X少なくともです4がX >= Y + 2。 XおよびYは、[0,5]間隔の整数です。 ビット単位の数式を見つけようとしましたが、失敗しました。
11 code-golf  number  tips  c++  code-golf  popularity-contest  obfuscation  code-golf  c  code-golf  board-game  hexagonal-grid  code-golf  game  grid  code-golf  number  permutations  popularity-contest  math  graphical-output  number-theory  king-of-the-hill  code-challenge  compression  code-challenge  fastest-code  code-golf  math  ascii-art  animation  code-golf  popularity-contest  generation  counting  fastest-code  fastest-code  popularity-contest  image-processing  king-of-the-hill  code-golf  conversion  binary-tree  code-golf  math  number  rational-numbers  division  code-golf  restricted-source  hashing  atomic-code-golf  logic-gates  code-golf  function  code-challenge  puzzle-solver  ai-player  test-battery  popularity-contest  music  compression  code-golf  number  stack  atomic-code-golf  logic-gates  ascii-art  popularity-contest  code-golf  date  grid  code-challenge  game  code-golf  parsing  code-golf  math  geometry  sequence  popularity-contest  code-trolling  code-golf  string  restricted-source  code-golf  quine  king-of-the-hill  code-golf  math  code-golf  simulation  code-golf  ascii-art  code-challenge  sorting  optimization 

5
高速トップスウォップ計算
AZSPCSから: n枚のカードを含むデッキがあるとします。各カードには1〜nの数字が含まれており、各数字は1枚のカードにのみ表示されます。一番上のカードの番号を見て(kだとしましょう)、一番上のkのカードの順序を逆にします。一番上のカードが1になるまで、この手順を続けます。 特定のデッキの反転回数を計算するための最速のプログラムを作成します。コンテストに参加している場合、コードを投稿することはできません(したがって、まだコードを投稿しません)。

8
大きなファイルをすばやくフィルタリングする
大きなファイルをすばやくフィルタリングすることが課題です。 入力:各行には、スペースで区切られた3つの正の整数があります。 出力:すべての入力行A B、T満足は、以下のいずれかの基準のこと。 別の入力ラインが存在するC、D、UどこD = Aと0 <= T - U < 100。 別の入力ラインが存在するC、D、UどこB = Cと0 <= U - T < 100。 テストファイルを作成するには、テストにも使用される次のPythonスクリプトを使用します。1.3Gファイルを作成します。もちろん、テストのnolinesを減らすことができます。 import random nolines = 50000000 # 50 million for i in xrange(nolines): print random.randint(0,nolines-1), random.randint(0,nolines-1), random.randint(0,nolines-1) ルール。コンピューターで上記のスクリプトを使用して作成した入力ファイルでテストした場合の最速のコードが優先されます。締め切りは最初の正しいエントリーの時から1週間です。 私のマシンタイミングは私のマシンで実行されます。これは、AMD FX-8350 8コアプロセッサへの標準8GB RAM Ubuntuインストールです。これは、コードを実行できる必要があることも意味します。 関連するタイミング情報 各テストの前に以下を実行するようにタイミングが更新されました。 sync && sudo …

3
任意のランダム性(スピード版)
与えられたinteger nで、セットの合計が以下に等しくなるようにn、範囲1..n^2(両端を含む)でランダムな一意の整数のセットを計算しますn^2 この場合のランダムとは、有効な出力間で一様にランダムであることを意味します。特定の有効な出力ごとnに、生成される可能性が一定でなければなりません。 例えば、n=33分の1のチャンスに出力のそれぞれを持っていなければならない6, 1, 2、3, 5, 1または4, 3, 2。これが設定される、順序は、無関係で4, 3, 2同一であります3, 2, 4 得点 勝者はn60秒未満で最高を計算できるプログラムです。 注:部分的なハードコーディングの可能性を防ぐには、すべてのエントリが4000バイト未満である必要があります テスト中 すべてのコードはローカルのWindows 10マシン(Razer Blade 15、16GB RAM、Intel i7-8750H 6コア、4.1GHz、GPUを悪用したい場合はGTX 1060)で実行されるので、コードを実行するための詳細な手順を提供してください私のマシン。 リクエストに応じて、WSL上のDebianまたはXubuntu仮想マシン(どちらも上記と同じマシン上)でエントリを実行できます。 提出は連続して50回実行され、最終スコアは50件すべての結果の平均になります。

1
転がしてすべての面を見てください!
あなたが20面のサイコロを持っているとしましょう。あなたはそのサイコロを転がし始め、最終的に20個すべての値を転がす前に数十回転がさなければなりません。20個すべての値が50%の確率で表示されるまでに、いくつのロールが必要ですか。そして、n私がすべてのn面を転がす前に、何面のサイコロを振る必要がありますか? いくつかの調査の結果、ロール後にすべての値をロールする可能性を計算するための式が存在することがわかりました。nr P(r, n) = n! * S(r, n) / n**r ここで、は第2種のスターリング数をS(a, b)示し、n個のオブジェクト(各ロール)のセットをk個の空でないサブセット(各サイド)に分割する方法の数を示します。 また、が50%以上の最小のに対応するOEISシーケンス(これをと呼びます)も見つかります。課題は、このシーケンスのth項をできるだけ速く計算することです。R(n)rP(r, n)n チャレンジ 与えられn、検索最小 r場所P(r, n)以上で0.550%。 コードは理論的には負でない整数nを入力として処理する必要がありますが、テストするのはの範囲でのみ1 <= n <= 1000000です。 スコアリングのために、我々は実行するために必要な合計時間かかりなりますR(n)入力に1スルー10000。 あなたのソリューションは、私たちのバージョンを実行して、正しいかどうかをチェックするR(n)かどうかを確認するために、あなたの出力にP(your_output, n) >= 0.5し、P(your_output - 1, n) < 0.5あなたの出力は、実際に最も小さいすなわちことを、r与えられたためn。 S(a, b)ソリューションでは任意の定義を使用できます。ウィキペディアには、ここで役立ついくつかの定義があります。 S(a, b)計算P(r, n)するものや直接計算するものを含め、ソリューションに組み込みを使用できます。 最大1000個の値R(n)と100万個のスターリング数をハードコードできますが、どちらもハードリミットではなく、値を上げたり下げたりする説得力のある引数を作成できる場合は変更できます。 と探しているのr間nで可能な限りすべてをチェックする必要はありませんが、どこかだけでなくr、最小のものを見つける必要があります。rrP(r, n) >= 0.5 プログラムでは、Windows 10で自由に実行できる言語を使用する必要があります。 ソリューションをテストするコンピュータの仕様は次のとおりi7 4790k, 8 GB …

2
OEIS A005434を計算する
タスクは、OEIS A005434をできるだけ迅速に計算することです。 S長さのバイナリ文字列を考えnます。からインデックスを作成すると1、からまでの順序ですべてに対して完全にS[1..i+1]一致するかどうかを判断できます。例えば、S[n-i..n]i0n-1 S = 01010 与える [Y, N, Y, N, Y]. これは、ある0試合0、01一致しない場合10、010一致は010、0101一致していない1010 し、最終的に01010自分自身にマッチします。 長さの考えられるすべての異なるビット文字列を繰り返し処理するときに取得するsとsのf(n)個別の配列の数になるように定義します。YN2^nSn 観察者は、この質問が私の最近の別の質問の簡単な変形であることに気付くでしょう。しかし、私は巧妙なトリックがこれをはるかに速く簡単にすることを期待しています。 仕事 でn開始を増やすに1は、コードで出力する必要がありますn, f(n)。 回答例 のn = 1..24正解は次のとおりです。 1, 2, 3, 4, 6, 8, 10, 13, 17, 21, 27, 30, 37, 47, 57, 62, 75, 87, 102, 116, 135, 155, 180, 194 得点 あなたのコードは順番n = …

2
確率-どのくらい高くできますか?
以前に確率をすばやく正確に計算する方法について質問しました。しかし、明らかに、閉じた形のソリューションが与えられたので、それはあまりにも簡単でした!これはより難しいバージョンです。 このタスクは、確率を正確かつ迅速に計算するコードを記述することです。出力は、最も縮小された形式で分数として記述された正確な確率でなければなりません。つまり、出力んです4/8けど、むしろ1/2。 いくつかの正の整数の場合n、1と-1の長さの一様にランダムな文字列を検討し、nそれをAと呼びます。次にA、それ自体のコピーに連結します。これはA[1] = A[n+1]、1からインデックスを作成する場合A[2] = A[n+2]などです。 A今長さがあり2nます。ここでn、最初のn値が-1、0、または1であり、確率がそれぞれ1 / 4、1 / 2、1 / 4 である長さの2番目のランダムな文字列についても検討し、Bと呼びます。 今の内積考えるBとA[1+j,...,n+j]異なるためにj =0,1,2,...。 たとえば、を検討してくださいn=3。以下のための可能な値Aとは、B可能性A = [-1,1,1,-1,...]とB=[0,1,-1]。この場合、最初の2つの内積は0および2です。 仕事 それぞれについて、jで始まるj=1コードは、すべての最初のj+1内積がすべてゼロになる確率を出力する必要がありますn=j,...,50。 MartinBüttnerが作成したテーブルをコピーするj=1と、次のサンプル結果が得られます。 n P(n) 1 1/2 2 3/8 3 7/32 4 89/512 5 269/2048 6 903/8192 7 3035/32768 8 169801/2097152 スコア あなたのスコアは、j私のコンピューターでコードが1分で完了する最大のスコアです。少し明確にするために、それぞれjに1分を与えます。前のリンクされた質問の動的プログラミングコードは、これを簡単に実行しj=1ます。 タイ・ブレーカー 2つのエントリが同じjスコアを取得した場合n、私のマシンで1分間で最高のスコアを獲得したエントリが勝者となりますj。2つの最高のエントリがこの基準でも等しい場合、勝者が最初に送信された回答になります。 言語とライブラリ 自由に利用できる言語とライブラリを使用できます。私はあなたのコードを実行できなければならないので、可能であればLinuxでコードを実行/コンパイルする方法の完全な説明を含めてください。 私のマシンタイミングは私のマシンで実行されます。これは、AMD FX-8350 8コアプロセッサへの標準のUbuntuインストールです。これは、コードを実行できる必要があることも意味します。 …

4
チェス盤のポーンが多すぎる
整数2nを指定して、2n ^ 2の黒のポーンと2n ^ 2の白のポーンを2n x 2nのチェス盤に配置して、ポーンが他のポーンを攻撃しないようにする方法の数を見つけます。 黒のポーンは白のポーンのみを攻撃でき、その逆も可能です。 通常のチェスの攻撃ルールは次のとおりです。つまり、白いポーンは正面の対角線のすぐ後ろの正方形を攻撃し、黒いポーンはすぐ後ろの斜めの正方形を攻撃します(白い観察者が見るように)。 すべての回転、反射は個別としてカウントされます。 120秒で2nの最高値のすべての可能な構成を出力できるプログラムが勝利します。(ただし、すべてのプログラムを歓迎します) たとえば、アリスのプログラムは120秒以内に最大n = 16を処理でき、ボブのプログラムは同じ時間内に最大n = 20を処理できます。ボブが勝ちます。 プラットフォーム:Linux 2.7GHz @ 4 CPU

5
確率を正確かつ迅速に計算する
[これは正確に確率を計算するためのパートナーの質問です ] このタスクは、確率を正確かつ迅速に計算するコードを記述することです。出力は、最も縮小された形式で分数として記述された正確な確率でなければなりません。つまり、出力んです4/8けど、むしろ1/2。 いくつかの正の整数についてn、1と-1の長さの一様にランダムな文字列を考え、nそれをAと呼びます。次にA、最初の値に連結します。これはA[1] = A[n+1]、1からのインデックスAが長さを持っている場合 n+1です。ここでn、最初のn値が-1、0、または1であり、確率がそれぞれ1 / 4、1 / 2、1 / 4 である長さの2番目のランダムな文字列についても検討し、Bと呼びます。 今の内積考えるA[1,...,n]とBとの内積をA[2,...,n+1]してB。 たとえば、を検討してくださいn=3。以下のための可能な値Aとは、B可能性A = [-1,1,1,-1]とB=[0,1,-1]。この場合、2つの内積は0および2です。 コードは、両方の内積がゼロである確率を出力する必要があります。 MartinBüttnerが作成したテーブルをコピーすると、次のサンプル結果が得られます。 n P(n) 1 1/2 2 3/8 3 7/32 4 89/512 5 269/2048 6 903/8192 7 3035/32768 8 169801/2097152 言語とライブラリ 自由に利用できる言語とライブラリを使用できます。私はあなたのコードを実行できなければならないので、可能であればLinuxでコードを実行/コンパイルする方法の完全な説明を含めてください。 タスク コードは、先頭がn=1nで、別の行にnが増えるたびに正しい出力を与える必要があります。10秒後に停止します。 スコア スコアはn、コンピューターで実行したときにコードが10秒後に停止する前に到達した最高点です。同点の場合、勝者が最も早く最高スコアに到達する人になります。 エントリの表 n = 64Python。Mitch Schwartzによるバージョン1 n …

3
Manufactoriaですばやく分割
バックグラウンド Manufactoriaはゲームとして販売されてきましたが、コードゴルファーはそれが実際に何であるか、つまり2次元プログラミング言語でそれを見ることができます。Manufactoriaプログラミング言語は、一連のカラフルなマーカーを含む単一のキューをベースにしています。命令ポインターは、コンベヤーベルトを使用してゲームボード内を移動し、キューからの読み取りとキューへの書き込みを行う一連のライターとブランチに遭遇します。 言語は非常に理解しやすいので、習得する最も早い方法は、ゲームの最初の数レベルをプレイすることです(上記のリンク)。 チャレンジ あなたの課題は、最短時間である数値を別の数値で割ることができるプログラムを作成することです。 プログラムへの入力は、Xの青のマーカーとそれに続くYの赤のマーカーの文字列になります。必要な出力は、X / Yの長さの赤いマーカーの文字列になります。 使用するゲームボードは、この公式コンテストレベルにあります。 http://pleasingfungus.com/Manufactoria/?ctm=Divide_and_Conquer;Input_will_be_X_blues_followed_by_Y_reds,_output_X/Y_reds;bbbbbbrr:rrr|bbbrrr:r|bbbbr:rrrr|r:|bbbbbbbbbbbbrrrrbbbbrbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbrr rrrrr; 13; 3; 0 これは13x13(最大サイズ)で、適切なテストが事前に設定されています(スコアリングのセクションを参照)。 得点 プログラムのスコアは、プログラムが公式コンテストレベルのすべてのテストに合格するのにかかる合計時間です。合計時間はレベル完了画面に表示されます。 テストの実行中は、結果をすばやく受け取るために、左下の50x加速スライダーを使用する必要があります(時間の加速はスコアに影響しません)。 以下は、テストに関係する分割問題のリストです。 6/2 = 3 3/3 = 1 4/1 = 4 0/1 = 0 12/4 = 3 12/3 = 4 9/3 = 3 10/2 = 5 I / Oの例 12/3=4 in: BBBBBBBBBBBBRRR out: …

16
交換なしのランダムサンプリング
範囲から引き出された一連の個別の乱数を出力する関数を作成します。セット内の要素の順序は重要ではありません(ソートすることもできます)が、関数が呼び出されるたびにセットの内容が異なる可能性がある必要があります。 この関数は、3つのパラメーターを任意の順序で受け取ります。 出力セットの数のカウント 下限(両端を含む) 上限(両端を含む) すべての数値が0(両端を含む)から2 31(両端を含まない)の範囲の整数であると想定します。出力は任意の方法で返すことができます(コンソールに書き込む、配列としてなど)。 審査 基準には3つのRが含まれます ランタイム -クワッドコアWindows 7マシンでテストされ、自由にまたは簡単に利用できるコンパイラーを使用します(必要に応じてリンクを提供します) 堅牢性 -関数はコーナーケースを処理しますか、それとも無限ループに陥るか、無効な結果を生成しますか-無効な入力の例外またはエラーは有効です ランダム性 -ランダムな分布では容易に予測できないランダムな結果を生成するはずです。組み込みの乱数ジェネレータを使用しても問題ありません。しかし、明白なバイアスや明白な予測可能なパターンがあってはなりません。ディルバートの経理部門が使用する乱数ジェネレーターよりも優れている必要がある 堅牢でランダムな場合は、実行時になります。頑健またはランダムでないと、その立場は大きく損なわれます。

2
できるだけ早く交差する三目並べ
あたりとしてルークの要求とピーター・テイラーのほか、この課題へ。 前書き 誰もがゲームの三目並べを知っていますが、この課題では、少しひねりを加えます。クロスのみを使用します。3つの十字架を続けて配置した最初の人が負けます。興味深い事実は、誰かが負ける前の最大クロス数は6に等しいことです。 X X - X - X - X X つまり、3 x 3のボードの場合、最大数は6です。したがって、N = 3の場合、6を出力する必要があります。 N = 4または4 x 4ボードの別の例: X X - X X X - X - - - - X X - X これは最適なソリューションです。クロスの最大数が9に等しいことがわかります。12 x 12ボードの最適なソリューションは次のとおりです。 X - X - X - X X - …

3
一連のマスクのいずれかに一致するバランスの取れたバイナリ文字列をカウントする
バイナリ文字列がから引き出された文字のみを含む文字列である01。バランスバイナリ文字列が正確に多くのように含むバイナリ文字列である0としてS 1 S。 正の整数nと任意の数のマスクが与えられます。各マスクの長さは2n文字で、012から描画された文字のみが含まれます。バイナリ文字列とマスクは、長さが同じで、マスクに2がないすべての位置の文字と一致する場合に一致します。例えば、マスク011022試合バイナリ文字列011000、011001、011010、011011を。 与えられたN及び(改行で区切られた)入力としてマスクは、出力マスクの一つ以上に一致する別個の平衡バイナリ文字列の数をしなければなりません。 例 入力 3 111222 000112 122020 122210 102120 推論 唯一バランスバイナリ文字列マッチング111222である111000。 000112に一致する唯一のバランスのとれたバイナリ文字列は000111です。 マッチングバランスバイナリストリング122020がある111000(既にカウント)、110010及び101010。 122210に一致するバランスのとれたバイナリ文字列は、110010(既にカウント済み)、101010(すでにカウント済み)、および100110です。 102120に一致するバランスのとれたバイナリ文字列は、101100と100110です(すでにカウントされています)。 したがって、出力は 6 入力 10 22222222222222222222 推論 20があり、長さ20の10個のバランスのとれたバイナリ文字列があります。 出力 184756 勝者 勝者は、競争の入力を最も速く計算し、もちろん他の入力と同じように扱います。(私は明確な勝者を持ち、異なる入力が異なる勝者を与えるケースを避けるために決定されたコードを使用します。最速のコードを見つけるためのより良い方法を考えたら、そう教えてください)。 コンテスト入力 http://pastebin.com/2Dg7gbfV

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