タグ付けされた質問 「restricted-complexity」

特定の時間の複雑さの制限を満たすためにすべての回答を必要とする仕様の課題。これは、特定のもの(「あなたの答えはO(n ^ 2)である必要があります。ここで、nは入力の項目数です」)、または複雑度クラスのレベル(「あなたの答えは、入力")。

5
パワープログラミング:O(1 ^ N)、O(N ^ 1)、O(2 ^ N)、O(N ^ 2)をすべて1つに
実行方法に応じて、4つの一般的な大きなO 時間の複雑さを示すプログラム(または関数)を作成します。どのような形式でも、正の整数Nを取りますが、これは2 31より小さいと仮定できます。 プログラムを元の形式で実行する場合、一定の複雑さが必要です。つまり、複雑度はΘ(1)または同等にΘ(1 ^ N)でなければなりません。 プログラムを反転して実行すると、線形の複雑さが生じるはずです。つまり、複雑さはΘ(N)または同等にΘ(N ^ 1)でなければなりません。 (これN^1は1^N逆になっているので理にかなっています。) プログラムが2倍になった場合、つまり、プログラム自体に連結されて実行される場合、指数関数的な複雑さ、特に2 Nが必要です。つまり、複雑さはΘ(2 ^ N)でなければなりません。 (ので、これは理にかなっている2では2^N二重のある1中1^N)。 プログラムを2倍にして反転して実行すると、多項式の複雑さ、特にN 2が必要になります。つまり、複雑さはΘ(N ^ 2)でなければなりません。 (これN^2は2^N逆になっているので理にかなっています。) これらの4つのケースは、処理する必要がある唯一のケースです。 プログラムの実行時間は必要な複雑さによって上下に制限される必要があるため、正確さのために、大きなOではなく大きなシータ(Θ)表記を使用していることに注意してください。それ以外の場合、O(1)で関数を記述するだけで、4つのポイントがすべて満たされます。ここでニュアンスを理解することはそれほど重要ではありません。主に、プログラムが定数kに対してk * f(N)操作を実行している場合、Θ(f(N))にある可能性があります。 例 元のプログラムが ABCDE 実行には一定の時間がかかります。つまり、入力Nが1でも2147483647(2 31 -1)でも、その間の値でも、ほぼ同じ時間で終了するはずです。 プログラムの逆バージョン EDCBA つまり、終了にかかる時間はNにほぼ比例する必要があります。したがって、N = 1が最も時間がかかり、N = 2147483647が最も時間がかかります。 プログラムの倍増バージョン ABCDEABCDE Nに関して2からN時間かかるはずです。つまり、終了するのに要する時間は2 Nにほぼ比例するはずです。したがって、N = 1が約1秒で終了する場合、N = 60は宇宙の年齢よりも長い時間がかかります。(いいえ、テストする必要はありません。) プログラムの二重化および反転バージョン EDCBAEDCBA つまり、終了にかかる時間は、N * Nにほぼ比例するはずです。したがって、N …

1
線形時間の最長共通部分文字列
この課題は、次の問題を解決するコードを記述することです。 2つの文字列AとBを指定すると、コードはAの部分文字列の開始インデックスと終了インデックスを次のプロパティで出力する必要があります。 Aの部分文字列もBの部分文字列と一致する必要があります。 最初のプロパティを満たすAの部分文字列はもうないはずです。 例えば: A = xxxappleyyyyyyy B = zapplezzz appleインデックス付きの部分文字列4 8(1からのインデックス)は有効な出力になります。 機能性 入力は、ローカルディレクトリ内のファイルまたはローカルディレクトリ内のファイルにあると想定できます。これが選択です。ファイル形式は、新しい行で区切られた2つの文字列になります。答えは、単なる機能ではなく、完全なプログラムでなければなりません。 最終的には、http://hgdownload.cse.ucsc.edu/goldenPath/hg38/chromosomes/の文字列から取得した2つの部分文字列でコードをテストしたいと思います。 スコア これはひねりを加えたコードゴルフです。コードはO(n)時間内に実行する必要がnあります。これは入力の全長です。 言語とライブラリ 自由に利用できるコンパイラー/インタープリター/などを備えた任意の言語を使用できます。Linuxの場合。このタスクを解決するように設計されていない標準のオープンソースライブラリのみを使用してください。論争の場合、これはあなたの言語に標準で付属しているライブラリ、またはデフォルトのリポジトリからデフォルトのubuntuマシンにインストールできるライブラリとしてカウントします。 有用な情報 この問題を線形時間で解決するには、少なくとも2つの方法があります。1つは最初にサフィックスツリーを計算することで、2つ目は最初にサフィックス配列とLCP配列を計算することです。 ここに、線形時間接尾辞ツリー構築の完全な(おそらく多すぎる)詳細な説明があります(残念ながら、図の一部が台無しになっています)。https://stackoverflow.com/questions/9452701/ukkonens-suffix-tree-algorithm-in-plain-englishには、線形時間サフィックスツリーの構築に関する非常に良いSO回答もあります。ソースコードへのリンクも含まれています。別の詳細な説明がここにあります。今回はCで完全なソリューションを提供します。 http://www.cs.cmu.edu/~guyb/realworld/papersS04/KaSa03.pdfのセクション2は線形時間接尾辞配列構築アルゴリズムを示し、付録AにはC ++ソースコードがあります。この回答は、最長の共通部分文字列https://cs.stackexchange.com/questions/9555/computing-the-longest-common-substring-of-two-strings-using-suffix-arraysを計算する方法を示しています。関連するビデオ講義もあるhttps://courses.csail.mit.edu/6.851/spring12/scribe/lec16.pdfのセクション5 https://courses.csail.mit.edu/6.851/spring12/lectures/L16 .htmlは1:16:00から始まる同じアルゴリズムについても説明しています。

22
基本的なASCIIタリー
代替タイトル:壁にあなたの刑務所の文を集計します numberを指定するとn、出力はグループごとに従来の5に、行ごとに50にグループ化されます。 例 1 | | | | 4 |||| |||| |||| |||| 5 |||/ ||/| |/|| /||| 6 |||/ | ||/| | |/|| | /||| | 50 |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| |/|| |/|| …
36 code-golf  ascii-art  number  code-golf  number  integer  binary  base-conversion  code-golf  array-manipulation  code-golf  chemistry  code-golf  number  sequence  fibonacci  code-golf  matrix  optimization  code-golf  number  code-golf  math  number  sequence  code-golf  math  array-manipulation  matrix  linear-algebra  code-golf  kolmogorov-complexity  cops-and-robbers  cops-and-robbers  code-golf  tips  basic  code-golf  decision-problem  binary  tiling  game  king-of-the-hill  python  code-golf  c  code-golf  ascii-art  code-golf  string  kolmogorov-complexity  alphabet  code-golf  number  code-golf  string  code-golf  number  sequence  integer  code-golf  number  permutations  restricted-complexity  restricted-time 

29
プレフィックスコードですか?
情報理論では、「プレフィックスコード」とは、どのキーも別のキーのプレフィックスではない辞書です。言い換えれば、これは、文字列が他の文字列で始まらないことを意味します。 たとえば、{"9", "55"}はプレフィックスコードですが、そうで{"5", "9", "55"}はありません。 これの最大の利点は、エンコードされたテキストを区切り文字なしで書き留めることができ、一意に解読できることです。これは、常に最適なプレフィックスコードを生成するHuffmanコーディングなどの圧縮アルゴリズムに現れます。 タスクは簡単です。文字列のリストが与えられたら、それが有効なプレフィックスコードかどうかを判断します。 あなたの入力: 妥当な形式の文字列のリストになります。 印刷可能なASCII文字列のみが含まれます。 空の文字列は含まれません。 出力は、真/偽の値になります。有効なプレフィックスコードの場合はTruthy、そうでない場合はfalseyです。 真のテストケースを次に示します。 ["Hello", "World"] ["Code", "Golf", "Is", "Cool"] ["1", "2", "3", "4", "5"] ["This", "test", "case", "is", "true"] ["111", "010", "000", "1101", "1010", "1000", "0111", "0010", "1011", "0110", "11001", "00110", "10011", "11000", "00111", "10010"] いくつかの誤ったテストケースを次に示します。 ["4", "42"] ["1", "2", …

30
賢い人のMira気楼
むかしむかし、Quoraでこの質問/回答を読んでいた FizzBu​​zzテストに合格できないコンピューターサイエンスの学位を持つプログラマーは本当にいますか このコードは明白な答えとして与えられます for i in range(1, 100): if i % 3 == 0 and i % 5 == 0: print "FizzBuzz" elif i % 3 == 0: print "Fizz" elif i % 5 == 0: print "Buzz" else: print i もちろん、FizzBu​​zzは死ぬまでゴルフにかけられましたが、それはこの質問の目的ではありません。あなたはコメントで、4の倍数の印刷「ジャズ」などの追加条件を簡単に追加できるので、この明白な答えは素晴らしいと誰かが言及していることがわかります(同意しません。このスキームを拡張するにはO(2 ** n )コード行。) あなたの挑戦は、仲間によって判断されるようにFizzJazzBuzzの最も美しいバージョンを書くことです。 投票者が考慮すべき事項: ドライ 除算/モジュラス演算の効率 Quoraに関する回答の多くはPythonを使用していましたが、ここではそのような言語の制限はありません。 …
29 popularity-contest  code-challenge  word  popularity-contest  string  grid  language-design  code-golf  source-layout  math  fastest-algorithm  assembly  code-golf  json  code-golf  arithmetic  array-manipulation  code-golf  ascii-art  code-golf  crossword  code-golf  string  restricted-complexity  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  decision-problem  balanced-string  syntax  code-golf  grid  puzzle-solver  hexagonal-grid  code-golf  math  number  sequence  code-golf  string  decision-problem  code-golf  cryptography  king-of-the-hill  code-challenge  fastest-code  code-golf  number  code-golf  code-golf  string  code-golf  cryptography  king-of-the-hill  java  code-golf  number-theory  base-conversion  code-golf  code-golf  array-manipulation  code-golf  array-manipulation  sorting  code-challenge  restricted-source  quine  code-golf  tips  python  king-of-the-hill  code-golf  source-layout  fractal  code-golf  tips  game  king-of-the-hill  path-finding  grid  code-golf  kolmogorov-complexity  natural-language  code-golf  tips  python  code-golf  number  arithmetic  sequence  array-manipulation  code-golf  number  combinatorics  random  integer-partitions  code-golf  string  code-golf  vim  comment  code-golf  combinatorics  counting  code-challenge  rosetta-stone  code-golf  combinatorics  sequence  subsequence  code-golf  code-challenge  restricted-source  primes  printable-ascii  popularity-contest  graphical-output  image-processing 

3
簡易カーニングを実装する
前書き カーニングとは、テキストの文字間の間隔を調整することを意味します。例として、Top次の3つのグリフで書かれた単語を考えます。 ##### ..... ..... ..#.. ..... ..... ..#.. ..##. .###. ..#.. .#..# .#..# ..#.. .#..# .#..# ..#.. ..##. .###. ..... ..... .#... ..... ..... .#... グリフ間のギャップをドットで埋めて完了させることもできますが、ギャップはどうやら広すぎるように見えます。代わりに、グリフを左にスライドさせて、ほとんど触れないようにします。 #####........ ..#.......... ..#..##..###. ..#.#..#.#..# ..#.#..#.#..# ..#..##..###. .........#... .........#... これはずっと良く見える!のバーがTの左の境界線の上にあることに注意してくださいo。この課題では、このような長方形のグリフに簡単なカーニングプログラムを実装することがタスクです。 カーニングプロセス 二長方形の2次元文字配列考える.と#同じ形状を。単純なカーニングプロセスでは、最初に1列の.sを挟んで配列を並べて配置します。次に、#右と左の配列のいくつか#が直交または斜めに隣接するまで、右の配列のそれぞれを左に1ステップ移動します。カーニングの結果は、隣接するを導入する前のステップ#です。あなたの仕事は、このプロセスを実装することです。 例を見てみましょう: Inputs: ..### #.... #.... ..##. ...#. ...## ..### ....# Process: ..###....#. …
24 code-golf  grid  code-challenge  atomic-code-golf  code-golf  combinatorics  probability-theory  card-games  code-golf  number  geometry  code-golf  decision-problem  chess  code-golf  math  number  sequence  code-golf  string  regular-expression  code-golf  arithmetic  integer  code-golf  math  array-manipulation  code-golf  number  decision-problem  integer  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  decision-problem  graph-theory  binary-matrix  code-golf  string  parsing  code-golf  string  code-golf  morse  code-golf  code-golf  string  code-golf  ascii-art  cellular-automata  code-golf  binary  base-conversion  code-golf  arithmetic  decision-problem  integer  checksum  code-golf  matrix  linear-algebra  code-golf  code-golf  game  code-golf  sequence  binary  code-golf  combinatorics  optimization  code-golf  decision-problem  quine  code-golf  rational-numbers  bitwise  code-golf  string  permutations  code-golf  kolmogorov-complexity  unicode  code-golf  ascii-art  number  code-golf  number  integer  binary  base-conversion  code-golf  array-manipulation  code-golf  chemistry  code-golf  number  sequence  fibonacci  code-golf  matrix  optimization  code-golf  number  code-golf  math  number  sequence  code-golf  math  array-manipulation  matrix  linear-algebra  code-golf  kolmogorov-complexity  cops-and-robbers  cops-and-robbers  code-golf  tips  basic  code-golf  decision-problem  binary  tiling  game  king-of-the-hill  python  code-golf  c  code-golf  ascii-art  code-golf  string  kolmogorov-complexity  alphabet  code-golf  number  code-golf  string  code-golf  number  sequence  integer  code-golf  number  permutations  restricted-complexity  restricted-time 

2
インシデントトークナイザーを書く
バックグラウンド インシデントは、トークンのリストが事前に決定されておらず、入力から推測されるという点で、かなり珍しいプログラミング言語です。そのため、インシデントプログラムのトークン化は、特に効率的に行う場合は特に困難です。このタスクは、それを自分で行うことです。 タスク プログラムには入力として文字列が与えられます。インシデントがトークン化に使用するアルゴリズムは次のとおりです。 入力の部分文字列として発生するすべての文字列を正確に3つの方法で識別します(つまり、入力内にその文字列が正確に3回出現します)。 別のそのような文字列の部分文字列であり、これらのいずれかの文字列を破棄し(例えば、入力のためにababab、唯一の残りの文字列は次のようになりabません、aまたはbので、aとbの両方のサブストリングですab)。 入力内で重複する文字列を破棄します。(たとえば、のaaaa3つのコピーが含まれていますaaが、これらのコピーは2番目と3番目の文字で重複しているため、破棄されます。同様に、のabababa3つのコピーabと3つのコピーがbaありますが、2番目から6番目の文字はそれぞれ重なりabとba、両方そうabとba)は廃棄されるであろう。 この時点で残っている文字列は、プログラムで使用されるトークンです。元の入力をこれらのトークンのシーケンスにトークン化します(前のステップでの破棄のため、それを行う方法は1つしかありません)。トークンの一部ではない入力の文字はコメントとして扱われ、破棄されます。 プログラムは入力として文字列を受け取り、出力として文字列の対応するトークン化(それぞれが文字列として表されるトークンのリスト)を返す必要があります。さらに、これは少なくとも中程度の効率で実行する必要があります。具体的には、プログラムは2次時間( "O(n²)")以上で実行する必要があります。(ちなみに、2次よりも速くなることはほぼ確実に可能ですが、これは最高速のアルゴリズムではないため、複雑な範囲内に収まる最高のアルゴリズムを自由に使用してください。) 明確化 理論上、インシデントプログラムには256オクテットのいずれかを含めることができますが、このチャレンジの目的では、プログラムが印刷可能なASCII(スペースを含む)、および改行とタブから形成された入力のみを処理することは許容されます。(すべての既知のインシデントプログラムは、このサブセットに制限されています)。スペース/改行/タブは特別ではなく、トークンの途中に表示されることに注意してください。インシデントは256オクテットすべてを不透明として扱います。 「二次時間」の定義は、「入力のサイズが2倍になった場合、プログラムは定数に4倍を加えただけ遅くなります」、つまりt(x)がプログラムにかかる最大時間サイズxの入力を処理する場合、すべてのxに対してt(2 x)<4 t(x)+ kとなるような定数kが必要です。文字列の比較には、文字列の長さに比例した時間がかかることに注意してください。 あなたのプログラムは理論的には無制限のメモリを持ち、無制限の整数を使用するあなたの言語の(おそらく仮定の)バリアントで実行される場合、任意の長さの入力プログラムを処理できるはずです言語の整数またはメモリは実際には有限の大きさです)。(複雑さを計算する目的で)入力の長さ以下の整数を一定時間で比較できると仮定することができます(たとえば、入力を単一の整数、彼らは持っている桁数に比例して比較するのに時間がかかります)。 上記のアルゴリズムと同じ手順に従わない場合でも、同じ結果が得られる限り、複雑性の範囲内に収まる任意のアルゴリズムを使用できます。 このパズルは、実際に出力をフォーマットすることではなく、入力をトークン化することに関するものです。ご使用の言語でリストを出力する最も自然な方法があいまいな形式を含む場合(たとえば、文字列にリテラル改行が含まれる場合は改行で区切られ、文字列間に区切り文字がない場合)、出力があいまいになるという事実を心配しないでください(リストが実際に構築されている限り)。テストを支援するために、明確な出力を生成するサブミッションの2番目のバージョンを作成することもできますが、元のバージョンはスコアリングにカウントされるバージョンです。 テストケース 次の入力文字列の場合: aaabcbcbcdefdfefedghijghighjkllkklmmmmonono-nonppqpq-pqprsrsrstststuvuvu プログラムは次の出力リストを生成する必要があります。 a a a bc bc bc d e f d f e f e d gh gh gh k l l k k l pq pq pq …

3
順列平方根
数学では、次数nの順列 σは、整数1 ... nからそれ自体への全単射関数です。このリスト: 2 1 4 3 は、σ(1)= 2、σ(2)= 1、σ(3)= 4、σ(4)= 3のような置換σを表します。 順列σの平方根は、それ自体に適用されるとσを与える順列です。たとえば、2 1 4 3平方根はτ = 3 4 2 1です。 k 1 2 3 4 τ(k) 3 4 2 1 τ(τ(k)) 2 1 4 3 なぜなら、すべての1≤k≤nに対してτ(τ(k))= σ(k)だからです。 入力 順列を表す、n > 0の整数(すべて1〜nを含む)のリスト。順列は常に平方根を持ちます。 入力と出力が一貫している限り、0 ... n-1のリストを代わりに使用できます。 出力 配列としての順列の平方根。 制限事項 アルゴリズムはnの多項式時間で実行する必要があります。つまり、n個すべてをループすることはできません。次数nの順列。 …

2
ブックスタックソート
本を積み重ねるときは、通常、一番大きいものを一番下に、一番小さいものを一番上に置きます。しかし、潜在的なOCDのおかげで、2冊の本があり、一方の本の高さは短く、他方の本よりも幅が広い場合、非常に不安になります。どの順序で配置しても、一番上の本は一番下の本を超えて一面に広がります。 例として、ある本には次元が(10,15)あり、別の本には次元があるとしましょう(11,14)。どのように配置しても、オーバーハングが発生します。ただし、寸法が(4,3)、の書籍がある場合は(5,6)、前者の下に後者を配置することで張り出しを回避できます。 この挑戦の目的のために、私たちはすぐ下の本に関してオーバーハングを考えるでしょう。例えば、私は、スタックを持っている場合は(5,5)、(3,3)、(4,4)(まともな人はそれを行うだろうということではない)、オーバーハングなどのトップ帳の数は、それが下の本を超えて拡張しませんが。同様に、スタックは(3,3)、(3,3)、(4,4)また、下の1を越えて延びるトップ帳にもかかわらず、唯一のオーバーハングを有します。 チャレンジ ブックの寸法の整数ペアのリストが与えられたら、オーバーハングの数が最小になるようにそれらのペア/ブックをソートします。本を回転させてはいけません-すべてのスパインを同じ方向に向けてください。オーバーハングの数が同じソリューションが複数ある場合は、そのような順序を選択できます。ソートアルゴリズムは安定している必要はありません。実装では、ブックの寸法がそれぞれ2 16未満であると想定する場合があります。 時間の複雑さ:これをもう少し面白くするには、アルゴリズムの漸近的な最悪の複雑さをスタックのサイズの多項式にする必要があります。そのため、可能なすべての順列をテストすることはできません。アルゴリズムの最適性と複雑さの簡単な証明と、オプションで大きなランダム入力のスケーリングを示すプロットを含めてください。もちろん、O(1)でコードを実行する引数として入力の最大サイズを使用することはできません。 プログラムまたは関数を作成し、STDIN、ARGV、または関数引数を介して任意の便利な(前処理されていない)リスト形式で入力し、結果を出力または返すことができます。 これはコードゴルフなので、最短の回答(バイト単位)が勝ちです。 多項式解が存在すると確信していますが、間違いを証明できる場合は、ゴルフの提出の代わりにそのような証明を提出できます。この場合、P≠NPと仮定できます。私は最初の正しいそのような証明を受け入れ、それに賞金を授与します。 例 In: [[1, 1], [10, 10], [4, 5], [7, 5], [7, 7], [10, 10], [9, 8], [7, 5], [7, 5], [3, 1]] Out: [[10, 10], [10, 10], [9, 8], [7, 7], [7, 5], [7, 5], [7, 5], [4, 5], [3, …

3
1つが上がり、もう1つが下がる
前書き この課題では、与えられた数字のシーケンスを2つのサブシーケンスに分割できるかどうかを決定します。1つは増加し、もう1つは減少します。例として、シーケンスを考えます8 3 5 5 4 12 3。次のように、2つのサブシーケンスに分割できます。 3 5 5 12 8 4 3 最初の行のサブシーケンスは増加しており、2番目の行のサブシーケンスは減少しています。さらに、このタスクを効率的に実行する必要があります。 入力 入力は、L0〜99999の範囲の整数の空でないリストです。言語のネイティブ形式で指定されるか、単にスペースで区切られます。 出力 出力はL、増加するサブシーケンスと減少するサブシーケンスに分割できる場合は真の値であり、そうでない場合は偽の値です。サブシーケンスは厳密に増加または減少する必要はなく、いずれかが空でもかまいません。 ルールとボーナス 完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。さらに、このチャレンジではブルートフォーシングは禁止されています。入力の長さの多項式時間でプログラムを実行する必要があります。 2つのサブシーケンスを実際に返す必要はありませんが、返すと-20%のボーナスがあります。静的に型付けされた言語でボーナスを請求しやすくするために、偽のインスタンスに対して空のリストのペアを返すことは許容されます。 テストケース input -> None偽の入力および真実の入力の形式で与えられますinput -> inc dec。ここでは、可能な1つのサブシーケンスのペアのみを示します。もっとあるかもしれません。 [4,9,2,8,3,7,4,6,5] -> None [0,99999,23423,5252,27658,8671,43245,53900,22339] -> None [10,20,30,20,32,40,31,40,50] -> None [49,844,177,974,654,203,65,493,844,767,304,353,415,425,857,207,871,823,768,110,400,710,35,37,88,587,254,680,454,240,316,47,964,953,345,644,582,704,373,36,114,224,45,354,172,671,977,85,127,341,268,506,455,6,677,438,690,309,270,567,11,16,725,38,700,611,194,246,34,677,50,660,135,233,462,777,48,709,799,929,600,297,98,39,750,606,859,46,839,51,601,499,176,610,388,358,790,948,583,39] -> None [0,1,2,3,4] -> [0,1,2,3,4] [] [4,3,2,1,0] -> [] [4,3,2,1,0] …

11
二乗差を最大化する
整数値の順列を検討1するがN。たとえば、次の例N = 4: [1, 3, 4, 2] このリストは循環的である1と見なし、そのように、および2隣接として扱われます。そのようなリストについて計算できる1つの量は、隣接する値の差の2乗の合計です。 (1-3)² + (3-4)² + (4-2)² + (2-1)² = 10 あなたの仕事は、正の整数を与えられて、この量を最大にする順列を見つけることNです。N = 4上記の例の場合、最適ではありません(実際、最小限です)。18次の順列(および他のいくつかの順列)の合計平方差を達成できます。 [1, 4, 2, 3] アルゴリズムは(のN)多項式時間で実行する必要があります。特に、すべての順列の差の合計を単純に計算することはできません。 プログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、STDOUT(または最も近い代替)、関数の戻り値または関数(out)パラメーターを介して結果を出力できます。 出力は、任意の便利で明確なフラットリストまたは文字列形式にすることができます。0toのN-1代わりに1toの値を持つリストを返すことを選択できますN。 標準のコードゴルフ規則が適用されます。 テストデータ この問題に対する優れた分析ソリューションがあります。たとえば、すべての有効なソリューションN = 10は次のリストと同等です(巡回シフトおよび反転まで)。 [7, 5, 6, 4, 8, 2, 10, 1, 9, 3] 私は(それがパターンを把握する、おそらく十分ですが)それを超えてあまりにも明らかにし、その代わりに任意のより多くの例を与える、あなたは結果が与えられたため、次の総乗違いがあることを確認することができますしたくありませんN。 N Total squared difference 1 0 2 …
19 code-golf  array-manipulation  permutations  restricted-complexity  code-golf  geometry  grid  code-golf  string  sorting  code-golf  simulation  code-golf  string  code-golf  arithmetic  code-golf  sorting  code-golf  string  code-golf  sorting  code-golf  interpreter  code-golf  number  kolmogorov-complexity  natural-language  conversion  code-golf  random  internet  code-golf  board-game  code-golf  number  sequence  code-golf  math  number  code-challenge  image-processing  classification  test-battery  code-golf  ascii-art  code-golf  tips  code-golf  arithmetic  code-golf  tips  code-golf  tips  javascript  code-golf  array-manipulation  code-golf  ascii-art  code-golf  string  binary  code-golf  arithmetic  linear-algebra  matrix  code-golf  sequence  code-golf  math  number  arithmetic  code-golf  primes  code-golf  math  code-golf  array-manipulation  counting  code-golf  arithmetic  code-golf  quine  code-generation  polyglot  code-golf  math  kolmogorov-complexity  trigonometry  code-golf  string  encryption 

20
2つの連続した整数が隣接しない順列を与える
チャレンジ 整数n≥4の場合、2つの連続する整数(絶対差1の整数)が互いに隣接しないという性質を持つ整数[0、n-1]の順列を出力します。 例 4 → [1、3、0、2] 5 → [0、2、4、1、3] 6 → [0、2、4、1、3、5] 7 → [0、2、4、1、5、3、6] 代わりに1インデックスを使用できます([0、n-1]の代わりに整数[1、n]を使用)。 コードはnの多項式時間で実行する必要があるため、すべての順列を試して、それぞれをテストすることはできません。

10
昇順行列
「昇順行列」は、任意の要素がそれぞれの行と列で以前に使用されていない最小の利用可能な要素である整数の無限行列(0を含む)です。 | 1 2 3 4 5 6 ... --+---------------- 1 | 0 1 2 3 4 5 ... 2 | 1 0 3 2 5 4 ... 3 | 2 3 0 1 6 7 ... 4 | 3 2 1 0 7 6 ... 5 | 4 5 …
17 code-golf  math  matrix  programming-puzzle  code-golf  music  code-challenge  programming-puzzle  code-golf  fastest-code  code-golf  number  game  code-golf  combinatorics  code-golf  math  sequence  restricted-complexity  code-golf  number  random  code-golf  array-manipulation  code-golf  math  matrix  code-golf  number  sequence  counting  code-golf  math  number  sequence  popularity-contest  number  sequence  code-golf  music  code-golf  number  code-golf  ascii-art  arithmetic  code-golf  code-golf  number  code-golf  code-challenge  array-manipulation  code-golf  grammars  code-challenge  polyglot  code-golf  game  math  python  programming-puzzle  code-challenge  king-of-the-hill  code-challenge  fastest-code  primes  number-theory  number-theory  primes  fastest-code  factoring  popularity-contest  compile-time  code-golf  math 

6
リアルタイムの文字列照合
仕事 タスクは、選択したリアルタイムの正確な文字列照合アルゴリズムをゴルフすることです。 入力 新しい行で区切られた、標準入力で提供される2行のテキスト。最初の行には「パターン」が含まれており、単にcharactersから描かれたASCII文字列になりますa-z。 2行目にはより長い「テキスト」が含まれ、文字から単にASCII文字列が描画されa-zます。 出力 完全に一致する場所のインデックスのリスト。発生した各一致の開始位置を出力する必要があります。 仕様 アルゴリズムは、パターンの前処理に線形時間を費やすことができます。次に、テキストを左から右に読み取り、テキスト内のすべての文字に対して一定の時間をかけて、新しい一致が発生するとすぐに出力する必要があります。もちろん、試合は互いに重なり合うことができます。 アルゴリズム 多くのリアルタイム完全一致アルゴリズムがあります。1つは、たとえばKMPのwikiで言及されています。好きなものを使用できますが、常に正しい答えを出力する必要があります。 人気のある言語を好む人も独自の方法で勝つことができるように、言語ごとのリーダーテーブルを保持します。実装したアルゴリズムを説明してください。 リアルタイム リアルタイムの意味については多くの混乱があったようです。それは単に線形時間を意味するものではありません。そのため、標準のKMPはリアルタイムではありません。質問のリンクは、KMPのリアルタイムバリアントに関するKMPのWikiページの一部を明示的に指し示しています。ボイヤー・ムーア・ガリルもリアルタイムではありません。このcstheoryの質問/回答では問題について説明しますが、「リアルタイム完全一致」または類似の用語をGoogleで検索することもできます。

4
ax + bの最大値を見つける
(a、b)のリストとxのリストが与えられます。各xの最大ax + bを計算します。a、b、およびxが非負の整数であると仮定できます。 (あなたのコードがそれを必要とする場合は、入力、ランダムにではない)あなたのプログラムや機能が期待される中で実行する必要がありますO(NログN)時間、nは入力長の合計(両方のリストの長さの合計または最大値)です。 これはコードゴルフです。最短のコードが優先されます。 例 [[2 8] [4 0] [2 1] [1 10] [3 3] [0 4]] [1 2 3 4 5] 出力: [11 12 14 16 20] 説明: 11 = 1*1 + 10 12 = 1*2 + 10 = 2*2 + 8 14 = 2*3 + 8 16 …

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