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

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

6
韻律の列挙
「押韻構成は、」文字の文字列であるaとzから出発して文字の最初の発生が(隙間なく)昇順になるように、、 a。例(最初の出現がマークされている): abccdbebdcfa ^^^ ^ ^ ^ 長さの韻体系の数はベル番号Nによって与えられます B(N)。(OEIS A000110) チャレンジ あなたの仕事は、これらの韻律体系の列挙、すなわち整数から韻律体系への全単射マッピングを実装することです。正の整数N <= 26と負でない整数が与えられます0 <= i < B(N)。または、範囲を使用できます1 <= i <= B(N)。Nすべてiが異なる文字列を生成するように、lengthの韻体系を出力する必要があります。 プログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、STDOUT(または最も近い代替)、関数の戻り値または関数(out)パラメーターを介して結果を出力できます。 小文字または大文字を(一貫して)使用できます。 あなたのコードは、妥当な時間内で有効な任意の入力を処理できなければなりません(例えば、数時間を超えないためN = 26、最悪の場合、i)。これによりN、遅い言語でも指数関数的にスケーリングするソリューション(小さなベースの場合)を許可しますが、線形にスケーリングするソリューションi(つまりB(N))を禁止する必要があります。特に、スキームをN破棄するまで、長さのあるすべての有効なライムスキームを繰り返し処理することはできませんi。 標準のコードゴルフ規則が適用されます。 例 iスキームへの正確な割り当て(つまり、特定のスキームの順序N)はユーザー次第です。ただし、辞書式順序を選択した場合、ソリューションは次の表に対応する必要があります(-無効な入力を示します)。 N\i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 a - - …

2
ATMで現金をゴルフしてください
タスクは簡単です。私にいくつかの取得1000、500および100ノートを。 どうやって ?あなたが尋ねるかもしれません。心配しないでください。クレジットカードを受け入れるATMが近くにあるので、銀行を強奪する必要はありません。ただし、クレジット限度額はタスクに十分であるため、引き出しには注意する必要があります。 チャレンジ 数を考えると1000、500そして100ノートが必要な、少なくともそれらの多くのノートを取得するために必要な特定の引き出しを計算します。各引き出しで、ATMは次のルールに基づいて各メモを吐き出すことができます。 引き出し金額(A)は以下5000 の場合A%1000 == 0、ATMは1 500音、5 100音、休符を吐き出し1000ます それ以外の場合A%500 == 0、ATMは5つの100ノート、残りの1000ノートを吐き出します それ以外の場合A%1000 < 500、ATMはfloor(A/1000) 1000メモと休符を吐き出し100ます それ以外の場合A%1000 > 500、ATMはfloor(A/1000) 1000ノート、1 500および残りの100ノートを吐き出します 引き出し金額が等しい 5000 の場合A%1000 == 0、ATMは2つの500ノートと残りの1000ノートを吐き出します それ以外の場合、A%500 == 0ATMは1つの500メモと休符を吐き出し1000ます それ以外の場合A%1000 < 500、ATMはfloor(A/1000) 1000メモと休符を吐き出し100ます それ以外の場合A%1000 > 500、ATMはfloor(A/1000) 1000ノート、1 500および残りの100ノートを吐き出します 明確にするために、ここにすべての可能な金額まで引き出されたノートの完全な表があります7000(さらに引き出せますが、パターンはその後変更されません)。順序は<1000> <500> <100>次のとおりです。 100 => 0 0 1 2500 => …

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 

1
Androidロック画面
イントロ 長いテーブルの端にある会議室に座っています。周りを見てみると、ティムクック、アップルの取締役会、スティーブジョブズの幽霊、ジャックドナギーが見えます。Appleがこの会議を呼び出したのは、Androidのロック画面がどれほどクールであるかを認識しており、それらを1アップにしたいからです。ゴーストスティーブが叫ぶように、部屋の誰もがあなたを見つめます。「助けてくれ、CodeGolf Man!あなたは私の唯一の希望です!」 問題 Androidのロック画面は3 x 3のドットグリッドで、1つのドットから次のドットに指をスワイプしてパスを作成することで接続できます。パスワードは、任意の数のドットを含む可能性のあるパスと見なされ、任意の数のドットを除外します。(実際の電話では、パスは少なくとも4ドットである必要があります。このチャレンジでは、その制限を無視してください。)Appleは、3 x 3グリッドを(M * N)/ 9であるM x Nグリッドに置き換える予定です倍良い! ルール: ゼロドットパスはパスワードではありませんが、1ドットパスはパスワードです パスはそれ自身を横断できます パスは、ドットを含めずにドットを直接越えることはできません ドットは1回しか使用できません ローテーションによって同一のパスは同じパスワードではありません 同一であるが逆の順序のパスは同じパスワードではありません たとえば、1〜9の番号が付けられた3x3グリッドの場合: 1 2 3 4 5 6 7 8 9 有効なパスは次のとおりです。 1 3 7,2,3 1,5,9,2 1,8,6,5,4 4,2,3,5,6,7,8,9 5,9,6,4 そして、いくつかの無効なパスは次のとおりです。 1,3 1,9,5 7,5,4,7 4,6 入力は3つの数字になります。 (M,N,d) ここで、グリッドはM x N、dはパスの長さです 1 …

24
並べ替えられた!Combinatorics:Subfactorialの計算
subfactorial又はrencontres番号(A000166は)置換の組合せ論に表示階乗番号と同様の番号のシーケンスです。特に、n番目の階乗!nは、n個の要素のセットの混乱の数を示します。混乱とは、同じ位置に要素が残っていない順列です。サブ階乗は、次の繰り返し関係を介して定義できます。 !n = (n-1) (!(n-1) + !(n-2)) 実際、階乗についても同じ再帰関係が成り立ちますが、下位階乗については次から始まります。 !0 = 1 !1 = 0 (階乗の場合、もちろん1!= 1になります。) あなたの仕事は計算することである!nは、与えられたn個。 ルール 階乗のように、階乗も非常に速く成長します。プログラムが入力nのみを処理でき、!nが言語のネイティブの数値型で表現できる場合は問題ありません。ただし、アルゴリズムは理論的には任意のnに対して機能する必要があります。つまり、積分結果と中間値は、言語で正確に表現できると仮定できます。定数eが有限精度で保存または計算される場合、これは定数eを除外することに注意してください。 結果は正確な整数である必要があります(特に、科学表記法で結果を近似することはできません)。 プログラムまたは関数を作成し、入力を受け取って出力を提供する標準的な方法を使用できます。 任意のプログラミング言語を使用できますが、これらの抜け穴はデフォルトでは禁止されています。 これはcode-golfであるため、バイト単位で測定された最短の有効な回答が勝ちます。 テストケース n !n 0 1 1 0 2 1 3 2 4 9 5 44 6 265 10 1334961 12 176214841 13 2290792932 14 32071101049 20 895014631192902121 …

30
サインスワップ和
正の整数空でないリストが与えられた場合、あなたの仕事はの一意の値の数を決定することです± x ± y ± z ± …(x,y,z,…)(x,y,z,…)(x, y, z, \dots)±x±y±z±…±x±y±z±…\pm x \pm y \pm z \pm \dots たとえば、リスト 1、2、2)を考えます。合計を作成するには8つの方法があります。(1,2,2)(1,2,2)(1, 2, 2) +1+2+2→+5+1+2+2→+5+ 1 + 2 + 2 \to +5 +1+2−2→+1+1+2−2→+1+ 1 + 2 − 2 \to +1 +1−2+2→+1+1−2+2→+1+ 1 − 2 + 2 \to +1 +1−2−2→−3+1−2−2→−3+ 1 − 2 …

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 

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
ホイールの数を決定する
数学以外の説明 これは、背景に関係なく親しみやすい説明です。残念ながら数学が含まれていますが、中学校レベルの理解を持つほとんどの人が理解できるはずです ポインターシーケンスは、a(n + 1)= a(na(n))のようなシーケンスです。 この式を少し分解して、その意味を理解しましょう。これは、最後の用語を見るシーケンスの次の用語を見つけ、その多くのステップを取り戻し、見つかった用語をコピーすることを意味します。たとえば、これまでにシーケンスがあった場合 ... 3 4 4 4 3 ? 私たちは3つのステップから戻ります 3 ... 3 4 4 4 3 ? ^ 私たちの結果を作ります4。 通常、このゲームは両方向に無限のテープでプレイしますが、一定のステップ数を経てシーケンスの先頭に戻るホイールでプレイすることもできます。 たとえば、ここにシーケンスの視覚化があります [1,3,1,3,1,3] 今、私たちは、任意の数は、ことに気づくかもしれないのx、ホイール内のセルの数を超えたホイールで、nは、同様であるかもしれないX mod nをホイールの周りのすべての完全な回路は、何もしないと同じですので。したがって、すべてのメンバーがホイールのサイズよりも小さいホイールのみを考慮します。 数学の説明 ポインターシーケンスは、a(n + 1)= a(na(n))のようなシーケンスです。通常、これらは整数から整数に定義されますが、この定義で必要なのは後継関数と逆関数のみであることに気付くかもしれません。すべてのサイクリックグループにはこれらの両方があるため、実際には任意のサイクリックグループのポインターシーケンスを考慮することができます。 これらのタイプの関数を探し始めると、各関数に類似した関数がいくつかあることに気付くでしょう。たとえば、Z 3では、次の3つがすべて要件に適合する関数です。 f1 : [1,2,2] f2 : [2,1,2] f3 : [2,2,1] (ここでは、入力を使用してリストにインデックスを付けるだけで結果を取得する関数を表すためにリストが使用されます) これらの関数はすべて互いに「回転」していることに気付くかもしれません。私は回転によって何を意味するのか正式には、関数Bはの回転であるIFF 私たちはここに関与数学の少しを得れば今、私たちは、実際にあればことを示すことができるポインタ配列であるの回転ごとにもポインタ配列です。したがって、実際には、互いの回転であるシーケンスは同等であると見なされます。 …

26
単語のランクを見つける
定義 単語のランクは、単語が意味のあるかどうかに関係なく、辞書のように、文字の可能なすべての順列(または配置)がアルファベット順に配置されるときの単語の位置として定義されます。 「青」と「見える」という2つの単語を考えてみましょう。そもそも、これらの単語の文字のすべての可能な配置をアルファベット順に記述します。 "blue": "belu","beul","bleu","blue","buel","bule","eblu","ebul","elub","elbu","eubl", "eulb","lbeu","lbue","lebu","leub","lube","lueb","ubel","uble","uebl","uelb", "ulbe","uleb" "seen": "eens","eesn","enes","ense","esen","esne","nees","nese","nsee","seen", "sene","snee" 次に、左から見て、必要な単語の位置を見つけましょう。「blue」という単語が4番目の位置にあり、「seen」という単語が10番目の位置にあることがわかります。したがって、単語「blue」のランクは4、「seen」のランクは10です。これは、単語のランクを計算する一般的な方法です。必ず1からカウントを開始してください。 仕事 あなたの仕事は、入力として任意の単語を取り、そのランクを表示するコードを書くことです。ランクが出力になります。繰り返し文字を含む単語には注意してください。 例 "prime" -> 94 "super" -> 93 "bless" -> 4 "speech" -> 354 "earth" -> 28 "a" -> 1 "abcd" -> 1 "baa" -> 3 入力は完全に小文字であると想定でき、入力にはアルファベット文字のみが含まれます。また、空白または無効な文字列が入力された場合は、何でも返すことができます。 得点 これはcode-golfなので、最短のコードが優先されます!

10
自然ログのアリ
これは良い初心者の挑戦であり、良い時間のキラーです。 タイトルが短すぎたため、自然対数だけを言いました。これは対数とは関係ありません。 与えられた2つの変数: アリの数n。 ログの幅w。 幅のログwをnアリで出力します(例はw=3、n=6) | | | \O/ \O/ \O/ | | -O- -O- -O- | | /o\ /o\ /o\ | | ^ ^ ^ | | | | \O/ \O/ \O/ | | -O- -O- -O- | | /o\ /o\ /o\ | | ^ ^ ^ | …

14
コードを再利用してください!
この課題では、2つの重要な問題を一度に解決しようとします。彼らです: 整数aおよびbを指定すると、a b -1が素数であるかどうかがわかります。 整数aおよびbを指定すると、nCr(a、b)を返します。 具体的には、2つのプログラムを作成する必要があります。1つは最初のタスクを実行し、もう1つは他のタスクを実行します。両方の問題を一度に解決したいので、両方のプログラムで同じコードを使用することをお勧めします。 得点 回答のスコアは、2つのプログラム間のレーベンシュタイン距離です。スコアが低いほど優れています。同点の場合、2つのプログラムの最短の組み合わせコードでの答えが勝ちです。このスクリプトを使用して、ソリューションのスコアを計算できます。 ルール 上記のタスクを解決する2つのプログラムを同じ言語で作成する必要があります。任意のI / Oメソッドを使用できます。タスク1では、真偽値を返すか、2つの値を選択してtrueとfalseを意味し、それに応じて返すことができます。例えば。あなたはそれが"prime"真を"not prime"意味し、偽を意味することを選ぶことができます。 使用するアルゴリズムは、可能なすべての入力に対して機能する必要がありますが、使用される数値タイプの制限のために大きな数値に対してコードが失敗しても問題ありません。入力が有効であると想定できます。 プログラムのどのサブセットも問題を解決してはなりません。文字が削除された場合、コードは機能しません。たとえば、次のコードは無効です。プログラムを中断せずに未使用のelse-blockを削除できるためです。 if (1) { /* change to 0 to get the second program*/ ... } else { ... } 標準の抜け穴は許可されていません。 テストケース a b -1は素数ですか? a b 1 1 false 2 3 true 5 2 false 2 …

15
私の後に繰り返して!
引数として文字列を指定すると、重複しない最長の重複部分文字列の長さ、またはそのような文字列がない場合はゼロを出力します。 入力文字列が空ではないと仮定できます。 例 abcdefabc:部分文字列abcは位置1と7で繰り返されるため、プログラムは3を出力する必要があります abcabcabcabcab:abcabcまたはbcabcaまたはcabcab繰り返されるため、プログラムは6を出力します。(サブストリングabcabcabcabも繰り返されますが、オカレンスは重複するため、受け入れません)。 aaaaaaa:aaaたとえば、位置1と4で繰り返されるため、プログラムは3を出力します。 abcda:aが繰り返されるため、プログラムは1を出力します。 xyz:繰り返し文字列なし→ 0 ababcabcabcabcab:6を返す必要があります これはcode-golfなので、バイト数が最も少なくなります。
23 code-golf  string  code-golf  code-golf  kolmogorov-complexity  primes  code-golf  kolmogorov-complexity  hexadecimal  code-golf  code-golf  string  code-golf  string  random  code-golf  array-manipulation  code-golf  ascii-art  kolmogorov-complexity  random  code-golf  array-manipulation  code-golf  stateful  code-golf  hello-world  code-golf  string  code-golf  interpreter  lisp  code-golf  restricted-source  quine  palindrome  code-golf  ascii-art  random  generation  challenge-writing  ascii-art  random  polyglot  maze  answer-chaining  string  cops-and-robbers  whitespace  code-golf  string  cops-and-robbers  whitespace  code-golf  number  sequence  code-golf  date  code-golf  ascii-art  decision-problem  code-golf  combinatorics  chemistry  code-golf  kolmogorov-complexity  source-layout  radiation-hardening  code-golf  ascii-art  path-finding  maze  code-golf  string  ascii-art  game  animation  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  restricted-source  new-years 

27
nのすべての順序付けられたパーティションをリスト
課題は、特定の正の整数のすべての順序付けられたパーティション(組成(組み合わせ))をリストすることnです。これらは、から1までの数字のリストnですn。たとえば、inputを指定するn = 4と、結果は次のようになります。 4 1、3 3、1 2、2 2、1、1 1、2、1 1、1、2 1、1、1、1 結果は任意の順序にすることができますが、順序付けされた各パーティションを1回ずつ含める必要があります。この手段そのためn = 4、[1, 1, 2]、[1, 2, 1]および[2, 1, 1]すべての結果の一部でなければなりません。 これを実現するJavaScriptコードは次のとおりです。 function range(n) { for (var range = [], i = 0; i < n; range.push(++i)); return range; } function composition(n) { return n < 1 ? [[]] : range(n).map(function(i) …

12
順列のサイクル数
次のような整数の順列1、...、を考えてみましょう。nn = 6 [5,2,4,3,6,1] 順列をから[1,2,3,4,5,6]へのマッピングとして表示する場合[5,2,4,3,6,1]、順列は互いに素なサイクルに分解できます。サイクルは、相互にマッピングされる要素のサブセットです。たとえば、1にマッピングされます5。これはにマッピングされ6、にマッピングされ1ます。したがって、1サイクルは[1,5,6]です。他のサイクルがある[2]と[3,4]。したがって、この順列のサイクル数は3です。 一般に、順列のサイクルは一意で(最大)、サイズの順列のサイクル数nはから1に変化しnます。 チャレンジ 空でない順列が与えられた場合、そのサイクル数を出力します。 入力によって形成された配列であるn整数1、2、...、nどこ、n > 0。各整数は1回だけ出現します。上記の例のように、それらが現れる順序は順列を定義します。 配列の代わりに、リスト、数字の間の区切り文字を持つ文字列、各数字の個別の入力、または妥当なものを使用できます。 サイズの順列でnは、1から始まる整数のセット1...の代わりにn、0から始まるセット0... を一貫して使用できますn-1。もしそうなら、あなたの答えでそれを示してください。 コードは、のために働く必要がありますnまで20、妥当な時間で1分未満を言います。 コードゴルフ。すべてのビルトインが許可されます。 テストケース これは、1ベースの配列入力を前提としています。 [1] -> 1 [3,2,1] -> 2 [2,3,4,5,1] -> 1 [5,2,4,3,6,1] -> 3 [8,6,4,5,2,1,7,3] -> 2 [4,5,11,12,7,1,3,9,10,6,8,2] -> 1 [4,2,5,11,12,7,1,3,9,10,6,8] -> 5 [5,8,6,18,16,9,14,10,11,12,4,20,15,19,2,17,1,13,7,3] -> 3 [14,5,17,15,10,18,1,3,4,13,11,16,2,12,9,7,20,6,19,8] -> 7 関連する この関連する課題は、実際の順列のサイクルではなく、それらの数を求めます。サイクル数のみを要求すると、実際のサイクルを回避するアルゴリズムが短くなる可能性があります。

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