タグ付けされた質問 「combinatorics」

組み合わせ論を伴う課題に。

4
川に石を投げるスパイのペアを構築します
最近、新しくリリースされたPuzzling.SEで、スパイが川に石を投げ入れるという問題がありましたが、実際には非常に困難でした。 2人のスパイは、敵に気付かれずに2つの秘密の番号(スパイごとに1つの番号)を渡す必要があります。彼らは前もってわずか26個の区別できない石を使用してこれを行う方法に同意しました。 彼らは26の石の山がある川で会います。最初のスパイから始めて、彼らは交互に石のグループを川に投げます:最初のスパイはいくつかの石を投げ、次に2番目のもの、そして最初のものを再び投げます... すべての石がなくなるまで、各スパイは自分のターンに少なくとも1つの石を投げなければなりません。 彼らはすべての投球を観察し、石がなくなると発散します。彼らは常に沈黙を保ち、各ターンに投げられる石の数を除いて情報は交換されません。 番号が1からMまでの場合、どうすれば番号を正常に交換できますか? あなたの仕事はプログラムのペアを構築することです、spy1そしてspy2可能な限り最高のために、この問題を解決することができ、M。 あなたのプログラムはそれぞれ、入力として1選択さMれた番号を受け取ります。次に、spy1川に投げる石の数を表す数値を出力します。これは、入力されるspy2数値も出力しspy1、数値出力が合計されるまで続き26ます。スローが終了すると、各プログラムは、他のプログラムが持っていると信じている番号を出力します。これは、他のプログラムに実際に入力された番号と一致する必要があります。 プログラムは(i, j)、両方のiおよびjから1に変化する可能性のあるすべての可能な番号のペアに対して機能する必要がありますM。 最大の規模で機能するプログラムがM勝者となり、最初の回答が同点になります。さらに、私は、機能することが証明された最初のソリューションに対して+100の評価賞金を、機能することが証明さM >= 2286れた最初のソリューションに対して+300を授与しM >= 2535ます。

5
コイン問題
バックグラウンド Golfenistanの架空の国の公式通貨はfooであり、流通しているコインは3種類、3 foo、7 foo、8 fooのみです。これらのコインを使用して、4 fooなどの特定の金額を支払うことは不可能であることがわかります。それでも、十分な量をすべて形成できます。あなたの仕事は、コインでは形成できない最大量(この場合は5 foo)を見つけることです。これはコイン問題として知られています。 入力 入力は、流通しているコインの価値を表す正の整数のリストです。次の2つのことが保証されています。L = [n1, n2, ..., nk] の要素のGCD Lは1です。 L 番号1は含まれません。 ソートされていないか、重複している可能性があります(特別版のコインを考えてください)。 出力 のGCD Lは1 なので、十分に大きい整数mはすべて、その要素の非負の線形結合として表現できます。言い換えれば、 m = a1*n1 + a2*n2 + ... + ak*nk 一部の整数の場合。出力は、この形式では表現できない最大の整数です。ヒントとして、およびが(reference)の最大要素と最小要素である場合、出力は常により小さいことが知られています。ai ≥ 0(n1 - 1)*(nk - 1)n1nkL ルール 完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。あなたの言語がこのための組み込み操作を持っている場合、あなたはそれを使用してはいけません。回答を投稿する前にテストケースを評価できる必要があることを除いて、時間やメモリの効率に関する要件はありません。 このチャレンジを投稿した後、ユーザー@vihanはStack Overflowに完全な重複があることを指摘しました。このMetaディスカッションに基づいて、このチャレンジは重複として削除されません。ただし、SOバージョンの回答に基づくすべての回答は、オリジナルを引用し、コミュニティWikiのステータスを付与し、オリジナルの著者が回答をここに投稿したい場合は削除するようお願いします。 テストケース [3, 7, 8] -> 5 [25, …

11
ソケット-プラグの互換性
特に電子機器を充電するためにアダプターが必要なときは、電子機器を持ち歩くのはいつも楽しいです。あなたの課題は、特定のプラグが特定のソケットと互換性があるかどうかを確認することで、旅行の計画を少し簡単にすることです。 チャレンジ プラグタイプとソケットタイプを指定すると、それらが連動するかどうかを示す値を返します。 適合表 Socket Accepted plugs | Plug Accepting Sockets A A | A A, B B A, B | B B C C | C C, D, E, F, H, J, K, L, N, O D C, D, E, F | D D E C, E, F | …

14
シャッフルですか?
昨日、リフルシャッフルについてこの質問をしました。昨日の質問は少し難しすぎたようですので、この質問は関連しているものの、はるかに簡単なタスクです。 今日、あなたは順列が実際にリフルシャッフルであるかどうかを判断するように求められます。リフルシャッフルの定義は、最後の質問から変更されています。 シャッフルの最初の部分は分割です。分割では、カードのデッキを2つに分割します。2つのサブセクションは連続的で、相互に排他的かつ網羅的でなければなりません。現実の世界では、パーティションをできるだけ均等にしたいと考えていますが、この課題ではこれは考慮事項ではありません。縮退している(1つのパーティションが空である)パーティションを含むすべてのパーティションは等しく考慮されます。 それらが分割された後、カードは、それらがメンバーであるパー​​ティション内で相対的な順序を維持するような方法で一緒に接続されます。たとえば、カードAがデッキのカードBの前にあり、カードAとBが同じパーティションにある場合、カードAが最終結果のカードBの前にある必要があります。場合はAとBが異なるパーティションにある、彼らは最終的な結果に関係なく、自分の順番の、任意の順序にすることができます。 各リフルシャッフルは、カードの元のデッキの順列として見ることができます。たとえば、順列 1,2,3 -> 1,3,2 リフルシャッフルです。このようにデッキを分割すると 1, 2 | 3 のすべてのカード1,3,2は、パーティション内の他のすべてのカードと同じ相対的な順序を持っていることがわかります。 2まだ後1です。 一方、次の順列はリフルシャッフルではありません。 1,2,3 -> 3,2,1 これは、2つの(重要な)パーティションすべてに対して 1, 2 | 3 1 | 2, 3 相対的な順序を維持しないカードのペアがあります。最初のパーティション1で2順序を変更し、2番目のパーティション2で3順序を変更します。 仕事 合理的な方法で順列が与えられた場合、それが有効なリフルシャッフルを表すかどうかを判断します。「はい、これはリフルシャッフルです」と「いいえ、これはリフルシャッフルではありません」の2つの異なる定数値を出力する必要があります。 これはコードゴルフであるため、回答はバイト単位でスコアリングされ、バイト数が少ない方が優れています。 テストケース 1,3,2 -> True 3,2,1 -> False 3,1,2,4 -> True 2,3,4,1 -> True 4,3,2,1 -> False 1,2,3,4,5 -> …

19
三角法プログラムを有効にする
Triangularityは、Xcoder氏によって開発された新しいエソランであり、コード構造は非常に具体的なパターンに従う必要があります。 nコードのth行について2n-1は、プログラムの正確な文字がその上になければなりません。これにより、最初の行は1文字のみで、残りは2ずつ増加する三角形/ピラミッドの形状になります。 各行の.左右にsを埋め込み、文字が行の中央に配置され、すべての行が同じ長さで埋め込まれるようにする必要があります。lがプログラムの行数として定義されている場合、プログラムの各行の長さは2 * l - 1 たとえば、左側のプログラムは有効ですが、右側のプログラムは無効です。 Valid | Invalid | ...A... | ABCDE ..BCD.. | FGH .EFGHI. | IJKLMN JKLMNOP | OPQRS 有効な構造にレイアウトすると、名前が明らかになります。 仕事 あなたの仕事は、三角コードを表す単一行の文字列を入力として受け取り、それを上記のように有効なコードに変換して出力することです。 I / Oの仕様: 入力には、範囲内の文字のみが含まれます 0x20 - 0x7e 入力の長さは常に二乗数であるため、うまくパディング可能です。 出力パディングには、他のものではなくドットを使用する必要があります。 受け入れ可能な任意の方法で入力および出力できます。これはコードゴルフなので、バイト単位の最短コードが勝ちです! テストケース input ---- output g ---- g PcSa ---- .P. cSa DfJ0vCq7G ---- …
19 code-golf  string  code-golf  combinatorics  code-golf  math  number  code-golf  matrix  code-golf  string  decision-problem  code-golf  internet  code-golf  number  number-theory  integer  expression-building  code-challenge  primes  cops-and-robbers  obfuscation  code-challenge  primes  cops-and-robbers  obfuscation  code-golf  string  balanced-string  code-golf  quine  code-generation  code-golf  matrix  code-golf  tips  c#  code-golf  ascii-art  code-golf  ascii-art  source-layout  code-golf  quine  source-layout  popularity-contest  language-design  code-golf  array-manipulation  subsequence  code-golf  matrix  math  code-challenge  game  graph-theory  atomic-code-golf  code-golf  number  integer  polynomials  equation  code-golf  array-manipulation  sorting 

7
バイナリ展開の個別の空でないサブシーケンスの数
サブシーケンスとは、任意の数の文字を削除することで別のシーケンスから取得できるシーケンスです。明確な空でない部分配列100されています0、1、00、10、100。別個の空でない部分配列で1010あり0、1、00、01、10、11、010、100、101、110、1010。 正の整数を与え、そのプログラムまたは機能書き込みNのバイナリ膨張の異なる非空のサブシーケンスの数を返しnは。 例:since 4は100バイナリであり、上記の5つの異なる空ではないサブシーケンスがあることがわかりましたf(4) = 5。n = 1から始まり、シーケンスが始まります。 1, 3, 2, 5, 6, 5, 3, 7, 10, 11, 9, 8, 9, 7, 4, 9, 14, 17, 15, 16, 19, 17, 12 ただし、プログラムは、最新のマシンで1秒未満でn <2 50で動作する必要があります。いくつかの大きな例: f(1099511627775) = 40 f(1099511627776) = 81 f(911188917558917) = 728765543 f(109260951837875) = 447464738 f(43765644099) = 5941674

23
配列の単一スワップ
触発さから撮影スタックオーバーフローの問題。 チャレンジ 整数n>1を指定すると、配列内の正確に2つのエントリをスワップすることで取得できるすべての配列を出力します[1, 2, ..., n]。 配列は任意の順序で作成できます。 (1 [0, 1, ..., n-1]ベース)の代わりに一貫して(0ベース)を使用でき[1, 2, ..., n]ます。 追加のルール 入力と出力は通常どおり柔軟です。 すべてのプログラミング言語で、プログラムまたは機能が許可されます。標準的な抜け穴は禁止されています。 バイト単位の最短コードが優先されます。 テストケース 入力2は出力を与えます(1ベースと仮定) 2 1 入力3により出力が得られます(3つの配列の順序は任意です) 1 3 2 2 1 3 3 2 1 入力4は出力を与えます 1 2 4 3 1 3 2 4 1 4 3 2 2 1 3 4 …

6
アナグロットポリグラム
仕事 それぞれが1からnまでの異なる数を出力するnの異なる言語で、nの異なるプログラムに再配置できるコードを記述します。 2つの言語が同じであってはなりませんが、メジャーバージョン番号が異なる限り、「同じ言語」の異なるバージョンは異なる言語と見なされます。この課題に対して、REPL環境は親言語と区別されませんが、依然として言語です。各言語は、ソースコードの異なる順列で実行され、範囲内の異なる番号を出力する必要があります。 順列は、文字ではなくバイトでカウントされます。 テスト目的で実行される言語で実行される各順列を含める必要があります。 得点 あなたのスコアは ここで、Nは言語の数、Lはプログラムバイトの一意の順序の数です。 Lはプログラムの長さと等しくありません (プログラムが1または0バイトでない場合) 以下は、Conor O'Brienのご厚意によりLを計算するpythonスクリプトです。 Lは、プログラムに繰り返しバイトがない場合にのみ、プログラムの階乗の長さに等しくなります。 目標は、スコアを最大化することです。

5
ネックレス分割問題
バックグラウンド 3Blue1Brownのネックレス分割問題(または盗難ネックレス問題)とBorsuk-Ulam定理との関係に関する最近のビデオに触発されました。 この問題では、2人の泥棒がいくつかの異なる種類の宝石で構成される貴重なネックレスを盗みました。各タイプの宝石は偶数個あり、泥棒はそれぞれのタイプの宝石を2つに均等に分割したいと考えています。キャッチは、ネックレスをいくつかの連続したセグメントに分割し、それらの2つの間にセグメントを分配することによってそうしなければならないということです。 ここで示される4つの宝石の種類の一例でありS、E、D、およびR(それぞれ、サファイア、エメラルド、ダイヤモンド、ルビーのために)。ネックレスは次のようだとしましょう: [S,S,S,E,S,D,E,R,S,R,E,S,S,S,D,R,E,E,R,E,D,E,R,R,D,E,E,E] あり8サファイヤ、10エメラルド、4ダイヤモンド、そして6ルビーは。ネックレスは次のように分割できます。 [[S],[S],[S,E,S,D,E,R,S],[R,E,S,S,S,D,R,E,E,R,E,D,E],[R,R,D,E,E,E]] 次に、1番目の泥棒に1番目、3番目、5番目のセグメントを、もう1つの泥棒に2番目と4番目のセグメントを与えると、それぞれが4サファイア、5エメラルド、2ダイヤモンド、3ルビーになります。 [S], [S,E,S,D,E,R,S], [R,R,D,E,E,E] [S], [R,E,S,S,S,D,R,E,E,R,E,D,E], 0-indexing を使用すると、これらのカットはインデックスで発生します[1,2,9,22]。 ゴール そのような公正な分割は、多くのn場合、常にn宝石の種類の数であるカットを使用して行うことができます。あなたの仕事は、入力としてネックレスを取り、最小のそのような分割(最少のカット数)を出力する完全なプログラムまたは関数を書くことです。 入力 入力は任意の便利な形式にすることができます。ネックレスは一連の宝石である必要があります。たとえば、整数のリスト、宝石の種類を表すキーを持つ辞書、およびインデックスのリストである値。必要に応じて、ネックレスの長さや宝石の種類の数を含めることもできますが、他の入力を行わないでください。 入力ネックレスが有効であるとみなすことができます。特定の種類の宝石の数が奇数である場合や、ネックレスが空の場合に対処する必要はありません。 出力 繰り返しますが、出力は任意の便利な形式にすることができます。たとえば、セグメントのリスト、カット位置のリスト、2つの泥棒を表すキーを持つ辞書、セグメントのリストである値など。セグメントは、開始インデックス、終了インデックス、連続インデックスのリスト、宝石のリスト、それらの長さ、などあなたは使用することができます0-または1-インデックスを。順序がフォーマットにとって重要でない場合、出力は任意の順序になります。上記の出力をいくつかの異なる形式で示します。 list of segments: [[S],[S],[S,E,S,D,E,R,S],[R,E,S,S,S,D,R,E,E,R,E,D,E],[R,R,D,E,E,E]] list of cuts: [1,2,9,22] list of lengths: [1,1,7,13,6] dictionary: {'thief1' : [(R,R,D,E,E,E),(S),(S,E,S,D,E,R,S)], 'thief2' : [(S),(R,E,S,S,S,D,R,E,E,R,E,D,E)]} セグメントのリスト(泥棒の間で交互になっているセグメント)と長さのリスト(セグメントを識別するため)では順序が重要ですが、カットのリストや辞書では重要ではありません。編集:グレッグ・マーティンは、2つのカットで公正な分割が得られるため、これらは有効な出力ではないと指摘した。 テストケース [1,2,1,2,1,3,1,3,3,2,2,3] -> [[1,2,1],[2,1,3,1],[3,3,2],[2,3]] [1,1,1,1,2,2,3,3,3,3,3,3] -> [[1,1],[1,1,2],[2,3,3,3],[3,3,3]] [1,1,1,1,1,1,1,1,1,1,1,1] …

8
逆挿入ソート
目的 挿入ソートの動きから、元のスクランブルリストを生成しますするします。元のリストからすべての数字を持っているだろう0にN-1(包括的)N入力の大きさです。 入力 リストをソートするために必要な移動を含むリスト。各値は、元の(スクランブルされた)番号によって正しい位置に移動するスロットの量を表します。このプロセスは左から右であることに注意してください。入力リストの (0からインデックス付けされた)位置の値は、両端の値を含みます。 無効な入力を処理する必要はありません。この場合、どのような動作も許容されます(クラッシュ、無限ループなど)。i0i 出力 スクランブルリスト 動きを生成するためのステップバイステップ Scrambled List | Moves to sort [4,0,2,1,3,5] | [0, , , , , ] #4 stay in place [4,0,2,1,3,5] | [0,1, , , , ] #0 is moved 1 slot to the left [0,4,2,1,3,5] | [0,1,1, , , ] #2 is …
19 code-golf  array-manipulation  code-golf  code-golf  animation  code-golf  restricted-source  code-golf  java  code-golf  decision-problem  graph-theory  code-golf  conversion  electrical-engineering  code-golf  ascii-art  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 

11
デイ3のランダムゴルフ:整数分割
シリーズについて まず、これを他のコードゴルフチャレンジと同様に扱い、シリーズについてまったく心配することなく答えることができます。ただし、すべての課題にリーダーボードがあります。最初の投稿では、リーダーボードとシリーズに関する詳細情報を見つけることができます。 このシリーズにはたくさんのアイデアが並んでいますが、将来の課題はまだはっきりしていません。何か提案があれば、関連するサンドボックスの投稿でお知らせください。 穴3:整数分割 難易度を少し上げる時間です。 パーティション正の整数のは、nその和に正の整数のマルチセットとして定義されますn。例として、n = 5次のパーティションが存在します。 {1,1,1,1,1} {2,1,1,1} {2,2,1} {3,1,1} {3,2} {4,1} {5} これらはマルチセットであるため、順序はなく、{3,1,1}で{1,3,1}あり{1,1,3}、すべて同一であると見なされます。 あなたのタスクは、nのランダムなパーティションを生成することですn。詳細なルールは次のとおりです。 生成されるパーティションの分布は均一でなければなりません。つまり、上記の例では、各パーティションは1/7の確率で返される必要があります。 もちろん、PRNGの技術的な制限により、完全な均一性は不可能です。提出物の均一性を評価するために、次の操作は完全に均一な分布をもたらすと見なされます。 (ほぼ)均一であることが文書化されているPRNGから(任意の範囲で)数値を取得する。 モジュロまたは乗算(または値を均等に分散する他の演算)を介して、大きな数のセットにわたる均一な分布を小さなセットにマッピングします。大きいセットには、小さいセットの少なくとも1024倍の値が含まれている必要があります。 パーティションはマルチセットであるため、任意の順序でパーティションを返すことができ、この順序は一貫している必要はありません。ただし、ランダム分布の目的では、順序は無視されます。つまり、上記の例では{3,1,1}、{1,3,1}とが{1,1,3} 一緒に返される確率は1/7でなければなりません。 アルゴリズムには確定的なランタイムが必要です。特に、ランダムなマルチセットを生成し、合計がでない場合は拒否できませんn。 アルゴリズムの時間計算量はの多項式でなければなりませんn。特に、すべてのパーティションを単純に生成してランダムに選択することはできません(パーティションの数は指数関数的に増加するためn)。使用しているPRNGは、値ごとにO(1)で均一に分布した値を返すことができると仮定できます。 このタスクを解決する組み込み関数を使用しないでください。 完全なプログラムまたは関数を作成し、STDINまたは最も近い代替、コマンドライン引数または関数引数を介して入力を取得し、戻り値またはSTDOUT(または最も近い代替)に出力して出力を生成できます。 n ≤ 65(パーティションの数が2 21未満であると)仮定することができます。出力は、便利で明確なリスト形式または文字列形式です。 関数を送信する場合は、関数を何度も呼び出して結果を出力する小さなテストプログラムの提供も検討してください。コード内でパラメーターを調整する必要がある場合でも問題ありません。これは、ソリューションが少なくともほぼ均一であることを人々が確認できるようにするためです。 これはコードゴルフであるため、最短の提出(バイト単位)が優先されます。そしてもちろん、ユーザーごとの最短投稿もシリーズの総合リーダーボードに入ります。 リーダーボード シリーズの最初の投稿はリーダーボードを生成します。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、すべての回答を見出しで開始してください。 # Language Name, N bytes N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: # Ruby, <s>104</s> <s>101</s> 96 bytes (言語は現在表示されていませんが、スニペットはそれを必要とし、解析します。将来、言語ごとのリーダーボードを追加するかもしれません。)

2
2 ^ 2 ^…^ 2の括弧の可能な数値結果の数
演算子を使用した式2^2^...^2を考えます。演算子は、べき乗を意味します(「累乗」)。デフォルトの結合性がないため、式を完全に括弧で囲んで明確にする必要があります。式を括弧で囲む方法の数は、カタロニア語の数値で指定されます。n^^ C_n=(2n)!/(n+1)!/n! たとえば(2^2)^(2^2)=((2^2)^2)^2、異なる括弧で同じ数値結果が得られる場合があります。そのため、特定の数値の異なる数値結果の可能性は、all nよりも少なくなりC_nますn>1。1, 1, 2, 4, 8, ...カタロニア語番号とは対照的に、シーケンスは開始します1, 2, 5, 14, 42, ... 問題はn、入力として受け入れ2^2^...^2、n演算子を使用した式のさまざまな数値結果の数を返す最速のプログラム(または関数)を記述すること^です。パフォーマンスが大きくなってもパフォーマンスが大幅に低下nすることはないため、高出力タワーを直接計算するのはおそらく悪い考えです。

9
グリッドを三角形に分割する
ゴール この課題の目標は、次の機能を生成することです n、n X 1グリッドを三角形に分割する方法の数を計算する。三角形のすべての頂点がグリッドポイント上にあります。 例 たとえば、2 x 1グリッドを分割するには14の方法があるためf(2) = 14、次のパーティションを使用して して、それぞれ2、2、2、2、4、および2つの異なる方向に分割します。 得点 これはcode-golfなので、最短のコードが優先されます。

2
シャッフルの数
リフルシャッフルはシャッフルの一種で、デッキが2つのパーティションに分割された後、パーティションがスプライスされて新しいシャッフルデッキが作成されます。 カードは、カードがメンバーであるパー​​ティション内で相対的な順序を維持するように接続されます。たとえば、カードAがデッキのカードBの前にあり、カードAとBが同じパーティションにある場合、カードAが最終結果のカードBの前にある必要があります。場合はAとBが異なるパーティションにある、彼らは最終的な結果に関係なく、自分の順番の、任意の順序にすることができます。 各リフルシャッフルは、カードの元のデッキの順列として見ることができます。たとえば、順列 1,2,3 -> 1,3,2 リフルシャッフルです。このようにデッキを分割すると 1, 2 | 3 のすべてのカード1,3,2は、パーティション内の他のすべてのカードと同じ相対的な順序を持っていることがわかります。 2まだ後1です。 一方、次の順列はリフルシャッフルではありません。 1,2,3 -> 3,2,1 これは、2つの(重要な)パーティションすべてに対して 1, 2 | 3 1 | 2, 3 相対的な順序を維持しないカードのペアがあります。最初のパーティション1で2順序を変更し、2番目のパーティション2で3順序を変更します。 ただし3, 2, 1、2つのリッフルシャッフルを作成することで作成できることがわかります。 1, 3, 2 + 2, 3, 1 = 3, 2, 1 実際、証明すべき非常に単純な事実は、いくつかのリフルシャッフル順列を組み合わせて、順列を作成できることです。 仕事 あなたの仕事は、入力として(サイズNの)順列を取り、入力順列を形成するために組み合わせることができる(サイズNの)最小数のリフルシャッフル順列を出力するプログラムまたは関数を作成することです。リッフルシャッフル自体を出力する必要はありません。 これはコードゴルフであるため、回答はバイト単位でスコアリングされ、バイト数は少ない方が良いでしょう。 恒等置換の場合、1または0を出力できます。 テストケース 1,3,2 -> 1 …

17
最大不一致2シーケンスを圧縮する
長さ1160のこのバイナリシーケンスを出力します。 -++-+--++-++-+--+--++-+--+--++-+--++-++-+-++--++-+---+-++-+--+--++++--+--++-+--++-++----++-++-+-++--++-+-+---++-+--++-++-+--++-+--+---+-++-+--++-++-+--+--++-++-+--++-+--+++-+-+----+++-+--+--+++---++-++-+--+--+++--+-+-+--+-+++-++-+--+--++-+--++-++-+--+--++--+++---+++-+---++-+--++--+-+--+-+++-+--++-++-+--++-+--+--++-+--++--+-++-+-+--+-+-++-+--++-+--+--++-+-+-++-+-+-++---+-+--++++--+---++-+-++-+--++-+--+--++-+--++++--+---+-++++--+--++-++-+--++-+--+--++-+--++-++-+--++-+--+--++-++-+----+++-+--++--+++---+-++-+--+-++---+-++-++-+--+--++--++++-+--+--+--++++--+--+++---++-++-+--++--+-+--+--++-++-+--+--+-+++-++-+--+--++--+-++-++-+--+--+--++-++-+--+++---++-+--++-++---+++---++-++----+++--+-++-+--+--++-+--++-++-+-++--++--++----+++-++--++----++-+++--++---+++----+-+-++-++-++-+-+----+++--++-+--++-++-+--+--+--++-+--++-++-+--++--+-+--+-+-+-++++---+-+-++--+--+-+-+-++-+-+++--+-+--+--+-+++--+-+++---++-+--+--++-++--++---++-+-++--++-+---+-++-+--+-++--++-+--++-+--+-+++-+--++--+-+-+++--+-+--++-++-+--+--+-++---+-++-+-++--++-+--+++-+----++--+-++-+-++--++-+--++-+-++--++-+---+-++-+--+++----+-+-++--++-+--++-++-++-+--+--+--++++---++---+-+-++-+-+++--+-++--+-+--+-+-++---+++-++ シーケンス この有限なシーケンスは、圧縮のためのユニークな方法に役立つことを願って、しっかりと構造化されています。これは、以前の課題で取り上げられたエルドの矛盾の問題から生じます。 用語を+1および-1として扱うと、これは矛盾2の最大長のシーケンスであり、次のことを意味します。 すべての正のステップサイズでd、すべてのd'th項(th項から始まる)を取る場合d、結果のシーケンスの実行中の合計は-2から2までの範囲に残ります。 それぞれ+が右-へのステップを意味し、左へのステップを意味すると考える場合、これは、すべてのd命令のウォークが開始位置から2ステップ以上移動しないことを意味します。 たとえば、の場合、d=33項ごとに取得する+-++--+--+-...と、実行中の合計が[1,0,1,2,1,0,1,0,-1,0,1,...]-3または3にならないシーケンスが得られます。 -++-+--++-++-+--+--++-+--+--++-+--+... ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ + - + + - - + - - + - 1 0 1 2 1 0 1 0 -1 0 -1 ... このシーケンスは、コンピューター検索によって2014年に発見されました。シーケンスが付録Bに再現されているこのペーパーを参照してください。1160が不一致2シーケンスの最大長であることが証明されていますが、その長さのシーケンスは複数あります。2015年に証明されたエルドの不一致の問題は、そのようなシーケンスcは2の代わりに最大の不一致のために有限の長さを持たなければならないと述べています。 所要時間 コードは5秒以内に終了するはずです。これは、総当たり攻撃を制限するためです。 出力フォーマット あなたは、のために任意の2つの固定の異なる文字や値を使用することができます+し、-任意のリスト状または紐状の形式で。形式は、たとえばバイナリ表現を介して数値としてエンコードされたり、文字値を介して文字列としてエンコードされたりするのではなく、1160ビット値を直接読み取ることができる形式でなければなりません。文字列出力の場合、末尾の改行が許可されます。 リーダーボード コードスニペットを表示 …

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