タグ付けされた質問 「fewest-operations」

最小操作は、実行時に実行される指定された「操作」の数を測定します。

6
ターザンのオリンピックつるスイングル​​ーチンを記録する
オリンピックのツルを振る人は、標準の木でルーチンを実行します。特に、標準ツリーにnは、0アップスルーのn-1頂点aと、各非ゼロ頂点をそのn % a下の頂点にリンクするエッジがあります。したがって、たとえば、標準ツリー5は次のようになります。 3 | 2 4 \ / 1 | 0 5を3で割ったときの剰余は2であるため、5を2で割ったときまたは4で割ったときの剰余は1であり、5を1で割ったときの剰余は0です。 今年、ターザンは頂点から始まり、頂点へn - 1とスイングし、頂点へn - 2と続きn - 3、最終的に頂点に降りるまで、新しいルーチンで金を守ります0。 ルーチンのスコアは、各スイング(降車を含む)のスコアの合計であり、スイングのスコアは、ツリー内の開始点と終了点の間の距離です。したがって、標準ツリー5のターザンのルーチンのスコアは6です。 から4までのスイングが33点(ダウン、アップ、アップ)を獲得し、 から3にスイングして21ポイント(ダウン)を獲得し、 から2までのスイングが11ポイント(ダウン)を獲得し、 から降車し1て01ポイント(下)を獲得します。 正の整数nを指定すると、標準ツリー上のターザンのルーチンのスコアを計算するプログラムまたは関数を記述しnます。サンプルの入力と出力: 1 -> 0 2 -> 1 3 -> 2 4 -> 6 5 -> 6 6 -> 12 7 -> 12 8 -> 18 …
32 code-golf  math  number  number-theory  code-golf  code-golf  restricted-source  programming-puzzle  css  code-golf  parsing  code-golf  random  encryption  code-golf  ascii-art  fractal  code-golf  math  code-golf  sorting  graph-theory  path-finding  permutations  code-golf  tetris  code-golf  card-games  code-golf  math  sequence  rational-numbers  code-golf  chess  code-golf  string  geometry  grid  code-golf  ascii-art  grid  code-golf  sequence  integer  code-golf  math  number-theory  packing  polyomino  code-golf  math  code-golf  string  quine  permutations  code-golf  math  code-golf  image-processing  optical-char-recognition  code-golf  string  kolmogorov-complexity  sequence  integer  code-golf  number  permutations  palindrome  code-golf  kolmogorov-complexity  code-golf  number  sequence  string  fewest-operations  code-golf  string  kolmogorov-complexity  sequence  primes  code-golf  string  ascii-art  code-golf  string  number  alphabet  code-golf  counting  code-golf  number  sequence  number-theory  primes  code-golf  subsequence  word-search 

7
チーズを探す
更新: 6つの迷路があります。これらはコントローラーに含まれています。迷路のtar.gz形式とそれらの.bmpファイルがあり、ここで(Dropboxが)。そのリンクで迷路を増やすためのユーティリティもあります(アーカイブ内のmaze_4.txtファイルは正しくありません)。この時点で、自由に独自のエントリを実行し、スコアを更新してください。その方法の詳細は、下部に記載されています。質問やトラブルがある場合は、チャットで私にpingを送ってください。 あなたはマウスです。あなたは迷路にいます。チーズを探します。 概念 あなたは長方形のグリッド上に存在する迷路にいます。グリッドの各スペースには、次のいずれかが含まれます。 ! -通行不能な壁 -横断可能な空のスペース O -あなた、マウス + -チーズ、あなたの目標 同じ文字を使用して、コントローラーを変更する必要がないようにしてください。 各ターンで、あなたはあなたの現在の位置の北、南、東、西にあるタイルを与えられます。次に、移動する方向を出力する必要があります。チーズに着いたら勝ちます。少ないステップが良いです。 入力 次のように、stdinを介して入力が行われますnesw。各文字は、そのコンパスポイントのタイルを表します。たとえば、現在の状態が次のように見える場合 ! <--- Wall !O <--- You + <--- Cheese その後、文字列が与えられます! +!。 ゲームの終わりに、コントローラーは4つのゼロのストリングを送信します0000。この文字列を受信すると、プログラムは終了します。他の入力には0文字は含まれません。 他のすべての入力を無視してください。 出力 あなたは出力1文字にあるn、s、e、またはw、あなたが旅行したい方向を示すため、改行文字が続きます。 得点 各テストのスコアは、チーズを見つけるために必要なステップの数です。 総合スコアは、さまざまなサイズの一連の迷路にわたる迷路ごとの平均スコアの合計になります。すべての迷路は、長さ50の正方形内に収まります。 たとえば、6つの迷路のそれぞれを完了するのにボット100の移動が必要な場合、スコアは600です。 ボットが決定論的でない場合は、各迷路を10回試行し、その迷路のスコアとして平均を使用してください。最終スコアは、すべての平均の合計になります。 ルール 各迷路は50x50の正方形に収まります。 各迷路には、開始からチーズまでの有効なパスが少なくとも1つあります。 各迷路は完全に壁で囲まれますが、チーズは常に外壁にあり、本質的に迷路の出口として機能します。 壁にぶつかると、応募は失格となります。 提出に時間がかかりすぎる場合(私が判断したとおり、テストを開始すると)、失格となります。これは、主に無限ループを防ぐためです。ソフト制限は迷路ごとに1分になりますが、私はこれをいつでもどちらの方向にも変更する権利を留保します。 エントリーは確定的である必要はありませんが、ランダムすぎると、上記の点で失格になる可能性があります。 ある時点で、一連の迷路が解放され、将来の回答がそれらに向かって最適化されない可能性があり、それらは変更される可能性があります。 提出: 提出は、stdinを介して入力を受け取り、stdoutを介して出力を行う完全なプログラムです。提出物が迷路コントローラーと対話するため、これは重要です。自由に利用できない言語を禁止するつもりはありませんが、その言語にアクセスできない場合、他の誰かがテストを実行する時間を提供しなければならないことを知っています。 提出の実行方法に関する指示を含めてください。 あなたの提出物が決定論的であるかどうかを述べてください。そうすれば、複数回実行する必要があるかどうかがわかります。 テスト迷路 テスト迷路では、.キャラクターはチーズへの最短ルートを概説します。それらは(スペース)文字と同じです。これらは提出物には表示されません。コントローラはそれらをスペースに置き換えます。 …

9
すべてのサブセットの積を取る最速のアルゴリズム
n配列内の数値が与えられた場合(整数であるとは想定できません)、sizeのすべてのサブセットの積を計算したいと思いますn-1。 これは、すべての数値を乗算してから、数値がゼロでない限り、各数値で順番に除算することで実行できます。ただし、分割を行わずにこれをどのくらい迅速に行うことができますか? 除算を許可しない場合、サイズn-1のすべてのサブセットの積を計算するために必要な算術演算(乗算や加算など)の最小数はどれくらいですか? 明らかに(n-1)*n乗算で行うことができます。 明確にするために、出力はn異なる製品であり、許可されるメモリへの読み取りと書き込み以外の操作は乗算、加算、減算のみです。 例 入力は、3つの数字を持っている場合2,3,5、出力は3つの数字である15 = 3*5、10 = 2*5と6 = 2*3。 勝利基準 回答は、コードが使用する算術演算の数の正確な式を与える必要がありnます。人生をシンプルにするために、私はn = 1000あなたのフォーミュラにプラグインしてそのスコアを判断します。低いほど良い。 コードの正確な式を作成するのが難しすぎる場合は、それを実行してn = 1000、コード内の算術演算をカウントできます。ただし、正確な式が最適です。 n=1000簡単に比較できるように、回答にスコアを追加してください。

2
「サブベクトル反転」を使用してソートを最適化する
これは、最小の反転を使用してベクトルを昇順でソートすることを目的とする、操作が最も少ないチャレンジです。アルゴリズムは「サブベクトル反転」1を使用してのみベクトルをソートできますが、算術演算、ループ、ソートされているかどうかの確認などに他の演算を使用できます。アルゴリズムが実行するサブベクトル反転の数はスコアです。 1 「サブベクトル反転」: ベクトル内の数値の範囲を選択し、その範囲内の要素を逆にします。 簡単な例を挙げると、vector {4,3,2,1}から始める場合、さまざまな方法で並べ替えることができます。 ベクトル全体を反転します。これは、1回の反転のみを必要とするため、明らかに最短のアプローチです。{4,3,2,1} -> {1,2,3,4} バブルソートのバージョンを実行できます。これには、6回の取り消しが必要です。 {4,3,2,1} -> {3,4,2,1} -> {3,2,4,1} -> {2,3,4,1} -> {2,3,1,4} -> {2,1,3,4} -> {1,2,3,4} 最初の3つの要素から始めて、最後に3つ、最後に最初の2つと最後の2つで、4つのスワップが必要です。 {4,3,2,1} -> {2,3,4,1} -> {2,1,4,3} -> {1,2,4,3} -> {1,2,3,4} ... 等々。使用可能なオプションは無限にあります(必要に応じて、任意の操作を繰り返すことができます)。 ルールと要件: 100個の数字を含むリストの場合、コードは1分未満で終了する必要があります。これは自分で時間を計ることができますが、フェア2をプレイしてください。 ソリューションを検証できるように、実行するすべてのスワップの開始インデックスと終了インデックスを保存する必要があります。(これの意味を以下で説明します)。 コードは確定的でなければなりません。 数値ベクトル、リンクリスト、長さの配列など、任意の形式で入力を取得できます。 ベクターのコピーで何でもできます。これには、さまざまな反転の試行と、最も効率的なチェックが含まれます。総当たり攻撃はまったく問題ありませんが、制限時間を守ってください。 スコアは、5つのテストベクトルのフリップの総数です。タイブレーカーは日付スタンプになります。 例: 4 1 23 21 49 2 7 …

15
幾何学的な挑戦
誰もがジオメトリを愛しています。では、なぜゴルフをコーディングしてみませんか?この課題には、文字や数字を取り入れ、それに応じた形を作ることが含まれます。 入力 入力はの形式になり(shapeIdentifier)(size)(inverter)ます。 しかし、shapeIdentifier、サイズ、およびインバーターは何ですか? 形状識別子は、*s で作成する形状のタイプの識別子です。形状識別子は次のとおりです。 s - 平方 t -三角形 サイズはの間1-20になり、それは図のサイズです。 インバーターは、形状が逆さまになるかどうかであり、a +またはaで示され-ます。注: s3-==(等しい)s3+正方形は対称であるため。ただし、t5-!=(等しくない)t5+。 出力では末尾の空白は問題ありませんが、先頭の空白はそうではありません。 出力例 Input: s3+ Output: *** *** *** Input: t5+ Output: * *** ***** Input: t3- Output: *** * 特記事項 三角形の入力は常に奇数になるため、三角形は常に*上部が1 で終わります。 三角形のサイズは、インバーターの場合は底辺 +のサイズであり、インバーターの場合は上部のサイズです-。
23 code-golf  string  ascii-art  geometry  code-golf  ascii-art  subsequence  fewest-operations  test-battery  code-golf  array-manipulation  bitwise  code-golf  interactive  code-golf  music  code-golf  string  kolmogorov-complexity  code-golf  string  decision-problem  simulation  code-golf  string  classification  code-golf  sequence  base-conversion  palindrome  code-golf  kolmogorov-complexity  code-golf  date  astronomy  code-golf  sequence  base-conversion  code-golf  geometry  combinatorics  code-golf  string  code-golf  math  array-manipulation  code-challenge  math  code-golf  card-games  code-challenge  array-manipulation  sorting  code-golf  code-golf  math  abstract-algebra  polynomials  code-golf  palindrome  factoring 

3
64ビット整数の因数分解
書き込みゴルフ STDOUT上の末尾の改行に続く(最後の改行が続く)標準入力から整数を読み取り、出力の素因数は改行で区切らアセンブリプログラムを、。 素因数は特定の順序である必要はありません。1素因数ではありません。 あなたのゴルフ(組み立て後)バイナリが8192バイトに収まらなければなりません。 プログラムは、それぞれ次の入力のいずれかを使用して10回実行することによりスコアリングされます。 8831269065180497 2843901546547359024 6111061272747645669 11554045868611683619 6764921230558061729 16870180535862877896 3778974635503891117 204667546124958269 16927447722109721827 9929766466606501253 これらの数字は、難易度の観点から大まかに分類されています。最初のものは、試行分割によって簡単に解決できるはずです。 この数字のセットに対する最適化は、質問の精神に反します。数字のセットはいつでも変更できます。プログラムは、これらだけでなく、任意の正の64ビット入力番号に対して機能する必要があります。 スコアは、上記の数値を因数分解するために使用されるCPUサイクルの合計です。 GOLFは非常に新しいため、ここにいくつかのポインターを含めます。あなたは読むべきGOLFのすべての命令およびサイクルコストと仕様を。Githubリポジトリのサンプルプログラムにあります。特に、入力/出力を示す階乗のサンプルプログラムを見てください。 を実行して、プログラムをバイナリにコンパイルしますpython3 assemble.py your_source.golf。次に、を使用してプログラムを実行するとpython3 golf.py your_source.bin、サイクルカウントも出力されます。-dフラグを使用--helpして、プログラムの終了時にレジスタの内容の値を確認します- すべてのフラグを確認するために使用します。

4
部分文字列から文字列を特定します
前書き 以前に、できる限り少ないクエリタイプの操作を使用してオブジェクトを再構築するという考え方の2つの 課題を作成しました。これは3番目になります。 タスク 入力はSアルファベットabcとその長さの空でない文字列であり、出力はですS。制限なしで、これはもちろん簡単な作業です。問題は、S直接アクセスすることが許可されていないことです。できるのは、他の文字列でSあるfunctionを呼び出すことだけです。in の出現回数をカウントします。重複するオカレンスは個別としてカウントされるため、実際には次のようなインデックスの数を返します。num_occur(T, S)Tnum_occurTSnum_occur(T, S)i S[i, i+1, …, i+length(T)-1] == T たとえば、num_occur("aba", "cababaababb")を返し3ます。num_occur(S, S)を返すことにも注意してください1。の結果num_occur("", S)は未定義であり、空の文字列で関数を呼び出さないでください。 要するに、あなたが取る関数やプログラムを書く必要がありますSし、length(S)入力として、呼び出し、num_occurいくつかの短い文字列とにS何回か、再構築しS、その情報を返すことから。 ルールとスコアリング あなたの目標はnum_occur、できるだけ少ない呼び出しを行うプログラムを書くことです。ではこのリポジトリは、という名前のファイルを見つけますabc_strings.txt。このファイルには、長さ50〜99の100行の文字列が含まれています。スコアはこれらの入力に対する呼び出しnum_occurの合計数であり、スコアが低いほど優れています。ソリューションは、実行中にこの番号を追跡し、終了時に印刷することが望ましいです。文字列は、から一様にランダムな文字を選択して生成されabcます この文字列生成方法に対して最適化することはできますが、文字列自体は最適化できません。 提出する前にテストケースでソリューションを実行する必要があることを除いて、時間制限はありません。ソリューションはS、テストケースだけでなく、有効な入力に対して機能する必要があります。 num_occur他の人を使用していない場合は、実装も共有することをお勧めします。ボールを転がすために、Pythonでの実装を次に示します。 def num_occur(needle, haystack): num = 0 for i in range(len(haystack) - len(needle) + 1): if haystack[i : i + len(needle)] == needle: num += 1 return …

1
複数のファイルをデフラグする最少ディスク書き込み
前書き ディスクがインデックスブロックを有する直鎖状の容器である0介しsize-1。 ファイルは、そのファイルで使用されるブロックインデックスの名前付きリストです。 ファイルシステムの例は次のように表されます。 15 ALPHA=3,5 BETA=11,10,7 「ディスクには15ブロックあります。ファイルALPHAの最初のブロックは、インデックス3のディスクブロックです...」 ディスクマップは次のように描画できます。 Block Index 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 Contents | | | |A0 | |A1 | |B2 | | |B1 |B0 | | | | ディスクは、ディスク内のすべてのファイルが連続して保存されている場合、最適化されていると見なされます。 あなたの目標: 特定のディスクを最適化する、法的措置の最短シーケンスを発行します。 法的な動き 移動には、ファイルの名前、移動するファイル内のブロックのインデックス、移動先のディスクブロックのインデックスの3つの情報が含まれます。 例えば ALPHA:1>4 …

1
サブシーケンスでシーケンスを知る
前書き あなたとあなたの友人がゲームをプレイしているとします。あなたの友人はいくつかの特定のシーケンスを考えていますnビットのおり、あなたの仕事は彼らに質問することによってシーケンスを推測することです。ただし、質問できる唯一のタイプの質問は、S「シーケンスの最も長い共通サブシーケンスの長さ」と、Sビットのシーケンスです。必要な質問が少ないほど良い。 タスク あなたの仕事は、入力として正の整数nとR長さのバイナリシーケンスを取るプログラムまたは関数を書くことですnです。シーケンスは、整数の配列、文字列、または選択した他の合理的なタイプです。プログラムはシーケンスを出力しますR。 プログラムがシーケンスに直接アクセスすることは許可されていませんR。唯一行うことが許可されています事は、R関数への入力としてそれを与えるためにあるlen_lcs別のバイナリ・シーケンスと一緒にS。関数は、len_lcs(R, S)の最長共通サブシーケンスの長さを返すRとS。これは、両方に(必ずしも連続していない)サブシーケンスとして生じるビットの最長の配列を意味Rし、S。入力のlen_lcs長さは異なる場合があります。プログラムは、この関数Rと他のシーケンスを何度か呼び出してから、Rその情報に基づいてシーケンスを再構築する必要があります。 例 入力n = 4とを考慮してくださいR = "1010"。まず、我々は評価するかもしれないlen_lcs(R, "110")与える、3以来、"110"の最長共通部分列である"1010"と"110"。それRから"110"、ある位置に1ビットを挿入することで得られることがわかります。次に、を試してみることができます。これは、最も長い共通サブシーケンスがとであるため、正しくないためにlen_lcs(R, "0110")戻ります。それから、戻ります。今、私たちはそれを知っています3"110""010""0110"len_lcs(R, "1010")4R == "1010"ので、正しい出力としてそのシーケンスを返すことができます。これには、への3つの呼び出しが必要でしたlen_lcs。 ルールとスコアリング ではこのリポジトリは、ファイルと呼ばれる見つけることができますsubsequence_data.txt彼らは、0と1の間の3つのランダムな浮動小数点数を取って彼らの平均をとることによって生成された75と124の間の長さの100のランダムなバイナリ配列を含むa、その後、フリップa-biasedコインn回。スコアは、これらのシーケンスに対する平均呼び出し回数でありlen_lcs、スコアが低いほど優れています。提出には、呼び出し回数を記録する必要があります。時間制限はありませんが、送信する前にファイルでプログラムを実行する必要があります。 あなたの提出は決定論的です。PRNGは許可されますが200116、ランダムシードとして今日の日付(またはそれに最も近い日付)を使用する必要があります。これらの特定のテストケースに対して提出を最適化することはできません。これが発生していると思われる場合は、新しいバッチを生成します。 これはコードゴルフではありませんので、読みやすいコードを書くことをお勧めします。Rosetta Codeには、最も長い共通サブシーケンスに関するページがあります。これを使用してlen_lcs、選択した言語で実装できます。

4
奇妙なコインによる最適化の課題
あなたは持っているn、それぞれがそれぞれのからラベル付けされているいずれかの重量を量る-1または1コイン0にn-1あなたが離れてコインを伝えることができるようにします。1つの(魔法の)計量装置もあります。最初のターンでは、負の重量と正の重量の両方を測定できる計量装置に好きなだけコインを置くことができます。 しかし、計量装置には本当に奇妙なことがあります。x_1, x_2, ..., x_j初めてデバイスにコインを置いた場合、次回(x_1+1), (x_2+1) , ..., (x_j+1)よりも大きい番号のコインを置くことができないことを除いて、次にスケールにコインを置く必要がありますn-1。それだけでなく、新しい計量ごと0に、スケールにコインを入れたいかどうかを選択できます。 このルールでは、どのコインの重さが1で、どのコインの重さが-1であるかを常に示す最小計量値は何ですか? 明らか0に、最初のターンでデバイスにコインを置くだけでn問題を解決するには正確な計量が必要です。 言語とライブラリ 好きな言語やライブラリを使用できます(このチャレンジ用に設計されたものではありません)。ただし、可能であればコードをテストできるようにしたいので、Ubuntuでコードを実行する方法について明確な指示を提供できれば非常にありがたいです。 スコア 与えられたnスコアに対してn、最悪の場合に必要な計量の回数で割られます。したがって、スコアが高いほど優れています。このパズルへの入力はありませんが、あなたの目標はn、最高のスコアを獲得できるものを見つけることです。 同点の場合、最初の答えが勝ちです。誰かが無限のスコアを得る方法を見つけるという非常にまれな状況では、その人がすぐに勝ちます。 仕事 あなたの仕事は、最高のスコアを獲得するコードを書くことです。コードはnを賢く選択し、そのために計量回数を最適化する必要がありnます。 主要なエントリー Sarge BorschによるPythonの4/3 7/5 ピーターテイラーによるJavaの 26/14

3
文字列内のパターンを検索
この挑戦では、あなたの仕事は、与えられた構造を持つ部分文字列を見つけることです。 入力 入力は、空ではない2つの英数字文字列、パターン p、およびテキスト tです。の考え方は、の各文字がp連続して空でない部分文字列を表し、その部分文字列tが隣り合って出現し、pそれらの連結を表すことです。同一の文字は同一の部分文字列に対応します。たとえば、パターンaaは空でない正方形(短い文字列をそれ自体に連結することによって取得される文字列)を表します。したがって、パターンaaは部分文字列byebyeとa一致し、それぞれ一致しbyeます。 出力 テキストtにp一致する部分文字列が含まれている場合、出力はその部分文字列になり、の文字に:対応する文字列の間にコロンが挿入されますp。例えば、我々が持っている場合t = byebyenowとp = aa、その後、bye:bye許容出力されます。一致する部分文字列にはいくつかの選択肢がありますが、そのうちの1つだけを出力します。 t一致する部分文字列が含まれていない場合、出力は悲しい顔になり:(ます。 規則と説明 の異なる文字はp同一の部分文字列に対応できるためp = aba、文字列と一致できますAAA。文字は空でない文字列に対応する必要があることに注意してください。特に、pがより長い場合t、出力はでなければなりません:(。 完全なプログラムまたは関数を記述できます。また、2つの入力の順序を変更することもできます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース 形式で与えられますpattern text -> output。他の受け入れ可能な出力が存在する可能性があることに注意してください。 a Not -> N aa Not -> :( abcd Not -> :( aaa rerere -> re:re:re xx ABAAAB -> A:A MMM ABABBAABBAABBA -> ABBA:ABBA:ABBA x33x 10100110011001 -> 10:1001:1001:10 …
17 code-golf  string  code-golf  ascii-art  geometry  code-golf  ascii-art  code-golf  sequence  stack  code-challenge  number  sequence  answer-chaining  code-golf  code-challenge  math  combinatorics  binary-matrix  code-golf  number  code-golf  cryptography  bitwise  code-golf  sudoku  code-golf  brainfuck  metagolf  code-golf  probability-theory  number-theory  primes  fewest-operations  factoring  golf-cpu  code-golf  restricted-source  code-golf  graphical-output  sequence  binary  code-golf  tips  c#  code-golf  geometry  code-golf  graphical-output  fractal  code-golf  number  sequence  code-golf  number  array-manipulation  popularity-contest  game  board-game  code-golf  puzzle-solver  grid  code-golf  ascii-art  geometry  grid  tiling  code-golf  ascii-art  whitespace  balanced-string  code-golf  card-games  king-of-the-hill  javascript  code-golf  whitespace  balanced-string  code-golf  code-golf  math  abstract-algebra  code-golf  java  code-golf  interpreter  stack  code-golf  base-conversion  code-golf  tips  code-golf  ascii-art  geometry  brainfuck  metagolf  code-challenge  math  quine  code-generation  code-golf  number  kolmogorov-complexity  arithmetic  expression-building  code-golf  string  code-golf  quine  popularity-contest  code-golf  base-conversion  code-challenge  image-processing  code-golf  conversion  coding-theory 

4
数値が正方形かどうかをテストする
レジスタに64ビット符号なし整数を指定してGOLFアセンブリプログラムを作成します。これは、正方形の場合はnレジスタにゼロ以外の値を入れ、それ以外の場合はに入れます。sn0s あなたのゴルフ(組み立て後)バイナリが4096バイトに収まらなければなりません。 プログラムは、次のPython3プログラム(GOLFディレクトリ内に配置する必要があります)を使用してスコア付けされます。 import random, sys, assemble, golf, decimal def is_square(n): nd = decimal.Decimal(n) with decimal.localcontext() as ctx: ctx.prec = n.bit_length() + 1 i = int(nd.sqrt()) return i*i == n with open(sys.argv[1]) as in_file: binary, debug = assemble.assemble(in_file) score = 0 random.seed(0) for i in range(1000): cpu = golf.GolfCPU(binary) if …

3
順列を再構築する
前書き nオブジェクトのランダムな順列が渡されたとします。順列はボックスに密封されているため、どの順列であるかわかりませんn!。順列をn個別のオブジェクトに適用できた場合、すぐにそのアイデンティティを推測できます。ただし、置換は長さnバイナリベクトルにのみ適用できます。つまり、それを認識するために数回適用する必要があります。明らかに、nたった1つでベクトルに適用することで1仕事はできますが、賢いのであれば、log(n)アプリケーションでそれを行うことができます。ただし、そのメソッドのコードは長くなります... これは実験的な課題であり、スコアはコード長とクエリの複雑さの組み合わせ、つまり補助プロシージャの呼び出し回数です。仕様は少し長いので、ご容赦ください。 タスク あなたの仕事は、0ベースまたは1ベースのインデックス付けを使用して、入力として正の整数と最初の整数の順列をとる名前付き関数(またはそれに最も近いもの) を書くことです。その出力は置換です。ただし、順列に直接アクセスすることはできません。これでできることは、ビットのベクトルに適用することだけです。この目的のために、順列とビットのベクトルを取り込んで、th座標がbitを含む順列ベクトルを返す補助関数を使用します。例えば:fnpnppnPpvp[i]v[i] P([1,2,3,4,0], [1,1,0,0,0]) == [0,1,1,0,0] 「ビット」は、3and -4、or 'a'、and などの任意の2つの異なる値に置き換えることができ、'b'修正する必要はありません。そのためP、[-4,3,3,-4]と[2,2,2,1]への同じ呼び出しで両方を呼び出すことができますf。の定義はPスコアにカウントされません。 得点 特定の入力に対するソリューションのクエリの複雑さは、補助関数を呼び出す回数ですP。この尺度を明確にするためには、解決策は決定的でなければなりません。疑似ランダムに生成された数値を使用できますが、ジェネレーターの初期シードも修正する必要があります。 ではこのリポジトリあなたはというファイル見つけることができますpermutations.txt(1ベースの場合の各番号をインクリメント)0ベースのインデックスを使用して、505個の順列、50と150までの間の各長さの5が含まれています。各順列は独自の行にあり、その番号はスペースで区切られています。スコアは、これらの入力のバイト数f+平均クエリの複雑さです。最低スコアが勝ちます。 追加ルール 説明付きのコードが推奨され、標準の抜け穴は許可されません。特に、個々のビットは区別できません(したがって、Integerオブジェクトのベクトルを与えてPそのアイデンティティを比較することはできません)。関数Pは入力を再配置する代わりに常に新しいベクトルを返します。fおよびの名前、およびPそれらが引数を取る順序を自由に変更できます。 プログラミング言語で最初に回答するP場合は、呼び出された回数もカウントする関数の実装など、テストハーネスを含めることを強くお勧めします。例として、Python 3のハーネスを次に示します。 def f(n,p): pass # Your submission goes here num_calls = 0 def P(permutation, bit_vector): global num_calls num_calls += 1 permuted_vector = [0]*len(bit_vector) for i in range(len(bit_vector)): permuted_vector[permutation[i]] = bit_vector[i] …

2
画像のかくれんぼ
この課題では、写真(実際のカメラで撮影)内の特定のピクセルを見つける必要があります。 (R、G、B)タプルと画像が渡され、指定されたRGBカラーに一致する画像内のポイント(x、y)を返す必要があります。画像には、色と一致する複数のポイントがある場合があります。あなただけを見つける必要があります1。 課題は、あなたがそれを行う必要があるということですできるだけ少数の画素として読みながら。スコアは、すべてのテストケースで読み取られたピクセルの総数になります。 必要に応じて、ピクセルで処理を行わない限り、画像全体をRGB値の配列に読み込むことができます。これは純粋に効率化の目的で許可しています。たとえば、Pythonではlist(Image.open("image_name+".jpg").convert("RGB").getdata())大丈夫です。 場所のハードコーディングは許可されていません。アルゴリズムは、以下にリストされているテストケース以外にも機能するはずです。テストケース間でデータを保存することはできません。<10画像にまれにしか表示されないRGB値()を選択しました(アルゴリズムに違いがある場合)。アルゴリズムでランダム性を使用している場合、スコアが一定になるようにシードを設定してください。 画像はGithubにあります テストケース: image_name: (r, g, b) [all possible answers] barn: (143,91,33) [(887,1096),(2226,1397),(2007,1402),(2161,1508),(1187,1702)] (53,35,59) [(1999,1260)] (20,24,27) [(1328,1087),(154,1271)] (167,148,176) [(1748,1204)] (137,50,7) [(596,1498)] (116,95,94) [(1340,1123)] (72,49,59) [(1344,857),(1345,858),(1380,926),(1405,974),(1480,1117)] (211,163,175) [(1963,745)] (30,20,0) [(1609,1462),(1133,1477),(1908,1632)] (88,36,23) [(543,1494),(431,1575)] daisy: (21,57,91) [(1440,1935),(2832,2090),(2232,2130),(1877,2131),(1890,2132)] (201,175,140) [(1537,1749),(2319,1757)] (169,160,0) [(2124,759)] (113,123,114) [(1012,994),(2134,1060),(1803,1183),(1119,1335)] (225,226,231) [(3207,829),(3256,889),(3257,889),(1434,981),(2599,1118),(2656,1348),(2656,1351)] (17,62,117) [(2514,3874),(2336,3885)] (226,225,204) [(3209,812)] …

2
ゴルフCPUゴルフチャレンジ:プライムパーティション
この課題は、GOLF CPUに書き込まれるべき一連の最も少ない操作の問題の最初のものです。ここで次のものを見つけることができます 数字のパーティションN、は、合計される数字のリストですN。プライムパーティションはまで追加素数のリストですN。 このチャレンジでは、単一の整数が与えられますN ≥ 2。の最短の素数パーティションを生成する必要がありNます。複数の可能なパーティションがある場合、それらのいずれかを印刷できます。 例: 9: [2, 7] 12: [5, 7] 95: [89, 3, 3] 337: [337] 1023749: [1023733, 13, 3] 20831531: [20831323, 197, 11] プログラムはGOLF CPUで作成する必要があります。入出力には、STDIOまたはレジスタを使用できます。リストは任意の順序にすることができ、STDOUTを使用している場合は、空白またはカンマで区切ることができます(括弧は不要です)。明らかに、ソリューションのハードコーディングは許可されておらず、最初のいくつかの素数以上のハードコーディングも許可されていません。 これは最も少ない操作の問題であるため、上記の例を最小限のサイクルで解決する答えが勝ちです!

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