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

再帰的関数、またはそれ自体を直接または間接的に呼び出す関数またはプログラムを含む課題。

3
ジャガイモの皮をむく
これはジャガイモです: @@ @@@@ @@@@@@ @@@@@@ @@@@ @@ より一般的には、サイズNのジャガイモは次の形状として定義されます。 Nが偶数の場合、2個の中央@記号、4個の中央@記号、6 @個の中央@記号が、N個までの中央記号まで続きます。次に、N個の中央@記号に続いてN-2個の中央@記号が2まで続きます 。Nが奇数の場合、サイズNポテトは上記と同じ方法で生成されますが@、2個ではなく1個の記号で始まります。。 ジャガイモの皮をむくには、右上隅から開始@し、反時計回りに1ステップずつ標識を外します。たとえば、サイズ3のジャガイモの皮は次のようになります。 @ @@@ @@@ @ ​ @@@ @@@ @ ​ @@ @@@ @ ​ @@ @@ @ ​ @@ @@ ​ ​ @@ @ ​ ​ @ @ ​ ​ ​ @ ​ チャレンジ 整数入力が与えられると、そのサイズのジャガイモの皮をむくすべてのステップを表示するプログラムを書きます。 末尾の空白/改行は許可されます。 得点 これはcode-golfです。バイト単位の最短コードが優先されます。 サンプルテストケース …

12
整数としての括弧と括弧の評価
()[]これらのポイントを満たす4文字の文字列を取り込むプログラムを作成します。 すべての左括弧(には対応する右括弧があり)ます。 すべての左角括弧に[は、対応する右角括弧があり]ます。 括弧とブラケットの一致するペアは重複しません。たとえば[(])、一致するかっこが一致するかっこに完全に含まれておらず、逆も同様であるため、無効です。 最初と最後の文字は、一致する括弧または括弧のペアです。したがって([]([]))、[[]([])]有効ですが、無効です[]([])。 (入力形式の文法は<input> ::= [<input>*] | (<input>*)です。) 一致する括弧と括弧の各ペアは、負でない整数に評価されます。 一致する括弧内のペアの値はすべて合計されます。空の一致に()はvalueがあります0。 一致する括弧内のペアの値はすべて乗算されます。空の一致に[]はvalueがあります1。 (1つの数値の合計または積は、その同じ数値です。) たとえば、次の([](())([][])[()][([[][]][][])([][])])ように分類して評価できます9。 ([](())([][])[()][([[][]][][])([][])]) <input> (1 (0 )(1 1 )[0 ][([1 1 ]1 1 )(1 1 )]) <handle empty matches> (1 0 2 0 [(1 1 1 )2 ]) <next level of matches> (1 0 2 0 [3 …

2
これらのリストは同等ですか?
ご存じのとおり、pythonにはリストがあります。知らないかもしれませんが、これらのリストには自分自身を含めることができます。 a = [] a.append(a) Python 2 Python 3 これらはクールで、あなたがそれらでできる面白いことがたくさんありますが、それらを比較することはできません。 a = [] a.append(a) b = [] b.append(b) a == b Python 2 Python 3 仕事 あなたの仕事は、Python(またはpythonオブジェクトを直接処理できる任意の言語)で関数を記述し、それ自体を含む2つのリストを取得して比較することです。 2つのリストが同じ長さであり、番号のシーケンスが存在しない場合、そのシーケンスで両方のリストにインデックスを付けると、2つのオブジェクトは、この等しいという定義の下で等しくなくなります。リストに含まれるすべての非リストオブジェクトは、簡単にするためにPython整数になります。整数のPythonの組み込みの同等性と比較する必要があります。 リストが無限に深いかどうかを判断するために、プログラムは Pythonの再帰の深さに依存してはなりません。あれは: def isInfinite(a,b): try: a==b return False except RunTimeError: return True 2つのリストが自己参照であるかどうかを判断する有効な方法ではありません。 テストケース 関数を定義すると仮定します equal a = [] a.append(a) b = …

12
一般化されたCantorセットのセグメント長
問題 単一の連続した間隔から開始して、まだ削除されていないすべての間隔の中間から合理的な長さのセグメントを繰り返し削除することにより、一般化されたCantorセットを定義しましょう。 削除するかどうかのセグメントの相対的な長さ、および実行する反復回数を考えると、問題は、反復後に削除された、またはされていないセグメントの相対的な長さを出力するプログラムまたは関数を作成することnです。 例:4番目と6番目の8番目を繰り返し削除する 入力: n – 0または1から始まるインデックス付きの反復回数 l-セグメントの長さのリストは、正の整数gcd(l)=1と奇数の長さで、削除されないセグメントから始まる、そのままの状態または削除される部分の相対的な長さを表します。リストの長さが奇数であるため、最初と最後のセグメントは削除されません。たとえば、通常のCantorセットの場合、これは3分の1が[1,1,1]になり、3分の1が削除され、3分の1が削除されます。 出力: 前の反復で削除されなかったセグメントがリストの縮小されたコピーで置き換えられるとき、th反復における相対セグメント長の整数リストo、。最初の反復はちょうどです。単項式であっても、明確な出力方法を使用できます。gcd(o)=1nl[1] 例 n=0, l=[3,1,1,1,2] → [1] n=1, l=[3,1,1,1,2] → [3, 1, 1, 1, 2] n=2, l=[3,1,1,1,2] → [9,3,3,3,6,8,3,1,1,1,2,8,6,2,2,2,4] n=3, l=[5,2,3] → [125,50,75,100,75,30,45,200,75,30,45,60,45,18,27] n=3, l=[1,1,1] → [1,1,1,3,1,1,1,9,1,1,1,3,1,1,1] 入力が有効であると想定できます。これはcode-golfであるため、バイト単位で測定される最短のプログラムが優先されます。

30
消える要素
文字列Sとインデックスのリストを指定すると、その結果をの新しい値として使用しながら、の各インデックスの要素を削除してX変更SしSますS。 例えば、与えられたS = 'codegolf'とX = [1, 4, 4, 0, 2]、 0 1 2 3 4 5 6 7 | c o d e g o l f | Remove 1 c d e g o l f | Remove 4 c d e g l f | Remove 4 c …
17 code-golf  string  array-manipulation  code-golf  string  ascii-art  code-golf  number  sequence  pi  code-golf  number  array-manipulation  code-golf  string  ascii-art  code-golf  math  number  game  code-golf  math  sequence  polynomials  recursion  code-golf  math  number  sequence  number-theory  code-golf  permutations  balanced-string  code-golf  string  ascii-art  integer  code-golf  decision-problem  hexagonal-grid  code-golf  ascii-art  kolmogorov-complexity  code-golf  number  code-golf  matrix  binary-matrix  code-golf  math  statistics  code-golf  string  polyglot  code-golf  random  lost  code-golf  date  path-finding  code-golf  string  code-golf  math  number  arithmetic  number-theory  code-golf  tetris  binary-matrix  code-golf  array-manipulation  sorting  code-golf  number  code-golf  array-manipulation  rubiks-cube  cubically  code-golf  grid  optimization  code-golf  math  function  code-golf  string  quine  code-golf  ascii-art  grid  code-golf  decision-problem  grid  simulation  code-golf  math  sequence  code-golf  path-finding  code-golf  ascii-art  grid  simulation  code-golf  number  whitespace  code-golf  sequence  code-golf  sequence  code-golf  sequence  integer  code-golf  math  game  code-golf  internet  stack-exchange-api  code-golf  sequence  code-golf  internet  stack-exchange-api  code-golf  math  factoring  code-challenge  sequence  polyglot  rosetta-stone  code-golf  string  browser  code-golf  date  code-golf  base-conversion  code-challenge  cops-and-robbers  hello-world  code-golf  cops-and-robbers  hello-world 

2
ファットアロー関数を短縮する方法はありますか?
ここPPCGで私が見てきたことから、太い矢印関数を含むほとんどのJavaScriptエントリは、2つの陣営のうちの1つである傾向があります。 単一のステートメントとして実行し、すぐに答えを返すことができるシンプルなもの x=(a,b)=>a*a+b ループを使用しているために通常中括弧があり、結果としてreturnステートメントを使用する必要がある、より複雑なもの。p=b=>{m=b;for(a=1;~-m;)--m,a*=m*m;return a%b} 概念実証として中括弧の概念を持つカテゴリ2から上記の例を取り上げreturnます。これは、JSゴルファーのコードから8バイトを削除できる可能性があるため(これが常に発生するというわけではない)、これを求めているだけです。このインスタンスで使用できるテクニックはありますか?私は再帰を試みましたが、このm=b声明は揺るがすことができないように思われるので、ちょっとしたバグであることが証明されました。 上記のコードの場合、returnゴルフが短くなるかどうかに関係なく、どのようにしてさらにゴルフがステートメントを削除するでしょうか?


15
論理ゲートを手動で
基本的な論理ゲートをシミュレートするプログラムを作成します。 入力:スペースなどで区切られた、2つの1桁の2進数が続く、すべて大文字の単語OR 1 0。門OR、AND、NOR、NAND、XOR、およびXNOR必要とされています。 出力:入力された論理ゲートの出力には、1または0の2つの数値が与えられます。 例: AND 1 0なります0 XOR 0 1なり1 OR 1 1ます1 NAND 1 1なります0 これはcodegolfなので、最短のコードが優先されます。
13 code-golf  logic-gates  hashing  code-golf  code-golf  number  array-manipulation  integer  code-golf  string  unicode  text-processing  cops-and-robbers  boggle  cops-and-robbers  boggle  code-golf  ascii-art  code-golf  word-puzzle  king-of-the-hill  python  code-golf  sequence  kolmogorov-complexity  code-golf  source-layout  code-golf  string  kolmogorov-complexity  math  number  code-golf  date  code-golf  combinatorics  recursion  game  king-of-the-hill  javascript  code-golf  array-manipulation  code-golf  radiation-hardening  self-referential  code-golf  integer  code-golf  number  code-golf  set-theory  code-golf  sequence  code-golf  string  sorting  natural-language  code-golf  decision-problem  number-theory  primes  code-golf  code-golf  ascii-art  code-challenge  array-manipulation  sorting  rubiks-cube  regular-expression  code-golf  counting  file-system  recursion  code-golf  string  kolmogorov-complexity  color  code-golf  game  code-challenge  permutations  encode  restricted-time  decode  code-golf  math  decision-problem  matrix  integer  palindrome  code-golf  matrix  statistics  king-of-the-hill  king-of-the-hill  python  card-games  code-golf  string  natural-language  code-golf  sequence  number-theory 

7
プレフィックスツリートラバーサル
(stdinまたはコマンドラインを介して)再帰形式の文字列を取り込むプログラムを作成します。 PREFIX[SUFFIXES] どこ PREFIX 空の文字列を含む、小文字(az)の任意の文字列を指定できます。 SUFFIXESPREFIX[SUFFIXES]空のシーケンスを含む、再帰形式が連結された任意の文字列シーケンスです。 各サフィックスの文字列のリストを再帰的に評価してプレフィックスに追加することにより、入力から小文字の文字列のリストを生成します。このリスト内の文字列を任意の順序で、1行に1つずつ(およびオプションの末尾の改行も)標準出力します。 例 入力が cat[s[up[][]][]ch[e[r[]s[]]]a[maran[]comb[]pult[[]ing[]]]] その後、接頭辞があるcatとし、接尾辞はs[up[][]]、[]、 ch[e[r[]s[]]]、とa[maran[]comb[]pult[[]ing[]]]。各サフィックスには、独自のプレフィックスとサフィックスが順番にあります。 出力は、これらの9ワードで任意の順序になります catsup cats cat catcher catches catamaran catacomb catapult catapulting 入力はこのツリーをエンコードするため そして、9つの出力ワードのそれぞれは、ルートからリーフへツリーを走査することによって形成できます。 ノート プレフィックスは空の文字列である可能性があることに注意してください。 [donut[][]cruller[]] 出力が(任意の順序で)有効な入力です donut cruller 空の行は、2番目のサフィックスが一致する空の文字列です。 接尾辞シーケンスも空にすることができるため、些細な入力の場合 [] 出力として単一の空行があります: 入力は一意の出力ワードのみを生成すると想定できます。 たとえば、2回エンコードされるhat[s[]ter[]s[]]ため、無効な入力になりますhats。 同様に、[[][]]空の文字列が2回エンコードされるため、無効です。 入力が可能な限り短い、または圧縮されていると想定することはできません。 たとえば、'e'上記の主な例の'ch'ノードはノードと組み合わせることができますが、それは入力が無効であることを意味しません。 同様に、[[[[[]]]]]空の文字列を次善の方法でエンコードしているにもかかわらず、有効です。 プログラムの代わりに、入力文字列を引数として受け取り、出力を通常どおり印刷するか、文字列またはリストとして返す関数を作成できます。 バイト単位の最短コードが優先されます。

15
繰り返される相互
あなたがする必要があるのは、入力として小数を取り、数が整数になるまで、小数部分の逆数を繰り返し取った結果を出力する関数/プログラムを作成することです。 より具体的には、プロセスは次のとおりです。 xを入力とします xが整数の場合、それを出力します。 そうでない場合:。2に戻ります。x←1frac(x)バツ←1frac(バツ)x \leftarrow \frac{1}{\mathrm{frac}(x)} frac(x)frac(バツ)\mathrm{frac}(x)はの小数成分であり、等しくなります。最大整数未満であるXのある床、。xバツxx−⌊x⌋バツ−⌊バツ⌋x - \left\lfloor x \right\rfloor⌊x⌋⌊バツ⌋\left\lfloor x \right\rfloorxバツx テストケース: 0 = 0 0.1 = 1/10 -> 10 0.2 = 1/5 -> 5 0.3 = 3/10 -> 10/3 -> 1/3 -> 3 0.4 = 2/5 -> 5/2 -> 1/2 -> 2 0.5 = 1/2 -> …

4
国際標準の用紙サイズの出力区分
定義されたISO用紙サイズ: Aシリーズの用紙サイズは、次の要件によって定義されます。 The length divided by the width is the square root of 2. The A0 size has an area of 1 unit. Each subsequent size A(n) is defined as A(n-1) cut in half parallel to its shorter sides. 仕事: 細分化f[n]された入力A0が与えられますn。 テストケース: f[1]にf[12]: ここで、A0はで与えられますが f[1]、このインデックスは必須ではありません。 受賞基準: バイト単位の最短コードが優先されます。

1
再帰スタイナーチェーン
スタイナーチェーンは、次の画像に示すように、各サークルがチェーンの前および次のサークルだけでなく、2つの他の交差しないサークルに接するN個のサークルのセットです。 この課題では、シュタイナーチェーンを再帰的に描画するプログラム/関数を作成します。つまり、特定のチェーンの円は、チェーンの別の反復の基本円になります。 チャレンジ 画像の寸法と、チェーンの各連続反復における円のレベルを示す整数のリストを受け入れるプログラム/関数を作成し、再帰シュタイナーチェーンが描画された画像を出力します。 入力 プログラム/関数は2つの引数を受け入れます。 s -画像の幅と高さ ls -チェーンの連続する各反復に存在する円の数を示す正の整数のリスト。最上位のチェーンから最下位のチェーンの順序 出力 プログラム/関数は、次元sxのイメージを出力しs、Resteinive Steinerチェーンを表示します。 最上位の基本円はs、画像の中心にある直径の画像と同じ大きさになります 物事を簡単にするために、シュタイナーチェーンの2つのベースサークルは同心になります。つまり、2つのベースラインサークルの中心点は同じになります。 外側の半径、Rおよびチェーン内の円の数が与えられると、内側の半径Nの式R'はR' = (R-R*sin(pi/N))/(sin(pi/N)+1) チェーンの円と内側の基本円は、チェーンの次の反復の外側の基本円になります チェーンサークルを再帰的に処理する間、次のチェーンの順序は次の値に対応する必要があります ls チェーンの内側の円を再帰的に処理するとき、順序はその親の順序と同じである必要があります(例[5,2]): すべてのチェーンは、再帰の長さの深さで終了する必要があります ls チェーンの回転は重要ではありません: ただし、親の中心点に対する再帰チェーンの回転は同じである必要があります。 すべての円は、アウトラインまたは塗りつぶしで描画する必要があります 色の選択は実装に任され、抜け穴を保存します(たとえば、すべてを同じ色で塗りつぶします) 実行例 次の例では、色はによって決定され(depth of the recursion)^4ます。 ここでソースを見つけることができます。 chain(600,[5,4,3]) chain(600,[11,1,1,1,1,1,1]) chain(600,[5,6,7,8,9])

7
ヤコビ行列を作成する
未知数のベクトルを取り、いくつかの一般的な微分可能関数を適用します。ヤコビアンは、次いで行列によって与えられるように。 たとえば、と仮定m=3しn=2ます。次に(0ベースのインデックスを使用) のヤコビアンfは この課題の目標は、このヤコビ行列を出力することです。 入力 プログラム/関数は、2つの正の整数mとを入力として受け取る必要nがfありuます。これらはそれぞれとのコンポーネントの数を表します。入力は、任意のソース(stdio、関数パラメーターなど)から取得できます。あなたはこれらが受け取られる順序を指示することができ、これはあなたの答えへのどんな入力でも一貫していなければなりません(あなたの答えで指定してください)。 出力 ヤコビ行列を表すもの。この表現は、ヤコビ行列のすべての要素を明示的に記述する必要がありますが、各項の正確な形式は、何が区別され、何が明確であり、すべてのエントリが論理的な順序で出力される限り、実装で定義されます。マトリックスを表すための受け入れ可能なフォームの例: 外部リストの各エントリがヤコビアンの行に対応し、内部リストの各エントリがヤコビアンの列に対応するリストのリスト。 各行がヤコビアンの行であり、行の各区切り文字で区切られたエントリがヤコビアンの列に対応する文字列またはテキスト出力。 マトリックスのグラフィック/ビジュアル表現。例:MatrixFormコマンドを使用したときにMathematicaによって表示されるもの 他のいくつかの密行列オブジェクト。すべてのエントリは既にメモリに格納されており、クエリできます(つまり、ジェネレータオブジェクトを使用できません)。例としては、Mathematicaが内部的にMatrixオブジェクトをどのように表すかが挙げられます エントリ形式の例: 形式の文字列。d f_i/d u_jここでi、およびjは整数です。例:d f_1/d u_2。dとf_1またx_2はの間のこれらのスペースはオプションであることに注意してください。また、アンダースコアもオプションです。 d f_i(u_1,...,u_n)/d u_jまたはの形式の文字列d f_i(u)/d u_j。つまり、関数コンポーネントの入力パラメーターf_iはオプションであり、明示的に指定するか、コンパクトな形式で残すことができます。 フォーマットされたグラフィック出力。例:式を評価したときにMathematicaが出力するものD[f_1[u_,u_2,...,u_n],u_1] 開始インデックスとその目的uを選択できますf(回答で指定してください)。出力は、必要なシンク(stdio、戻り値、出力パラメーターなど)への出力です。 テストケース 次のテストケースでは、この規則を使用していm,nます。インデックスは0ベースで表示されます。 1,1 [[d f0/d u0]] 2,1 [[d f0/d u0], [d f1/d u0]] 2 2 [[d f0/d u0, d f0/d u1], [d f1/d u0, d …

6
バイナリ繰り返しシーケンス
バイナリ再帰シーケンスは、次の形式の再帰的に定義されたシーケンスです。 これは、フィボナッチ(x = 1, y = 2, a = [1, 1], alpha = 1, beta = 1)シーケンスとルーカス(x = 1, y = 2, a = [2, 1], alpha = 1, beta = 1)シーケンスの一般化です。 チャレンジ 所与n、x、y、a、alpha、およびbeta、任意の合理的な形式で、出力n対応するバイナリ再発配列の第用語。 ルール シーケンスを1インデックス付きまたは0インデックス付きのどちらにするかを選択できますが、選択はすべての入力にわたって一貫している必要があり、回答ではその選択を記録する必要があります。 あなたは無効な入力が(そのような従来の終了シーケンスとして与えられないであろうことを仮定してもよいnの参照は次のように、用語を未定義こと、またはシーケンスF(-1)またはF(k)場所k > n)。この結果として、xそしてy常にポジティブになります。 入力と出力は常に整数であり、言語の自然な整数型の範囲内です。言語に制限のない整数がある場合、入力と出力は範囲[2**31, 2**31-1](つまり、32ビットの符号付き2の補数の整数の範囲)内にあります。 a常に正確にy値が含まれます(定義に従って)。 テストケース 注:すべてのテストケースのインデックスは0です。 x = 1, y = 2, …

12
さまざまな組み合わせが可能
問題 値nが与えられた場合、参照(0、0)から(2n、0)に内接する山の風景を想像してください。斜面の間に空白があってはならず、山はX軸の下に下りません。解決すべき問題は次のとおりです。n(ランドスケープのサイズを定義)とピークの数k(kは常にn以下)を前提として、kのピークで山の組み合わせはいくつ可能ですか? 入力 ランドスケープの幅を表すnおよびピークの数であるk。 出力 可能な組み合わせの数だけ。 例 n = 3およびk = 2の場合、答えは3つの組み合わせです。 視覚的な例を示すために、それらは次のとおりです。 /\ /\ /\/\ /\/ \ / \/\ / \ 6(3 * 2)の位置と2つのピークを使用して可能な3つの組み合わせです。 編集:-その他の例- n k result 2 1 1 4 1 1 4 3 6 5 2 10 当選条件 標準のコードゴルフ規則が適用されます。バイトでの最短の提出が優先されます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.