タグ付けされた質問 「balanced-string」

バランスのとれた文字列では、文字または部分文字列の特定のペアが常に同じ量で表示されます。多くの場合、これらのペアも注文する必要があるという追加の制限があります。最も一般的な例は、正しく括弧で囲まれた文字列です。[palindrome]および[syntax]タグも参照してください。

8
配列を自動ネストする
誰もがネストされたリストを愛しています!ただし、ネストされたリストを作成するのが難しい場合があります。深くネストするか、浅くネストするかを決定する必要があります。したがって、あなたの挑戦のために、リストを「自動ネスト」する必要があります。リストを自動ネストするには、リスト内のアイテムのすべてのペアを比較します。 2番目の項目が小さい場合は、次のように2つの要素の間に閉じ括弧と開き括弧を挿入して、2つの要素を分離します。 } { {2 , 1} たとえば、に{2, 1}なり{2}, {1}、に{3, 2, 1}なります{3}, {2}, {1} 2番目の項目が同じ場合、何も変更しません。たとえば{1, 1, 1}、同じままでに{2, 1, 1, 1}なり{2}, {1, 1, 1}ます。 2番目の項目が大きい場合、次のすべての項目を1レベル深くネストします。例えば、{1, 2}なる{1, {2}}と{1, 2, 3}なります{1, {2, {3}}} チャレンジ 数値のリストを受け取り、自動ネスト後に同じリストを返すプログラムまたは関数を作成する必要があります。ご使用の言語のネイティブリスト形式(または最も近い代替形式)または文字列として、この入力を取得してください。私の例のように中括弧を使用する必要はありません。一貫性がある限り、言語で最も自然な括弧を使用できます。リストには整数のみが含まれると仮定しても安全です。また、リストには少なくとも2つの数字が含まれると想定することもできます。サンプルIOを次に示します。 {1, 3, 2} --> {1, {3}, {2}} {1, 2, 3, 4, 5, 6} --> {1, {2, {3, {4, …

1
変装した括弧はありますか?
誰かが文字列を与えてくれましたが、すべての括弧のような文字が通常の文字に変更されており、どれがどれだけあるか、さらには何個あるかさえわかりません。私たちが知っているのは、L1,L2,L3,...,LN異なる種類のR1,R2,R3,...,RN左角かっこであり、対応する種類の右角かっこであり、すべてが異なる場合(2N個の異なる角かっこ文字)、それが次のいずれかである場合に文字列が有効になることです(+は通常の文字列連結): L1+X+R1、L2+X+R2、...、LN+X+RNここで、X有効な文字列であり、 X+Y、どこXでYは有効な文字列、 ブラケット文字ではない任意の単一文字。 空の文字列 かっこを変更する前に有効な文字列から始めたことがわかっており、文字列に既に存在する文字には変更していません。各ブラケットにも少なくとも1つのペアが存在しました。どの文字が元々左右のブラケットペアであったかを再構築できますか(特定の条件を見つけて、LiそれにRi従ってください)? 大括弧であった文字のペアを出力します。たとえば、(){}[]実際にブラケット文字だった場合(){}[]、{}[]()または[](){}、などを出力する可能性があります。文字列に対してこれを行う方法は複数ある場合があり、より多くのペアでブラケットが割り当てられない方法を1つ返すだけです(例を参照)。出力文字列は常に偶数の長さであることに注意してください。 例: abcc- c2回出現して他の文字がないので、ブラケットすることはできませんが、abあなたは正確にそう、出力しまうブラケットペアすることができab。 fffff -最大で1文字の文字列には角括弧を使用できないため、空の文字列を返すか、何も出力しません。 aedbedebdcecdec -1 a、2 bs、3 cs、4 ds、および5 esがあるため、この文字列に角括弧を含めることはできません。したがって、同じ文字数で2つの文字が発生することはありません。 abcd-可能な割り当てがあるab、cd、abcd、cdab、adbc、bcad、ac、ad、bcおよびbd、(だけでなく、それらのすべてが持っている空の割り当て、)しかし、あなたは、あなたが返さなければならないので、最長の割り当てのいずれかを返す必要がありabcd、cdab、adbc、またはbcad。 aabbcc、abc-これらは両方持っているab、acと、bc有効なペアとして。これらのペアのいずれかを返す必要がありますが、どちらでもかまいません。 abbac-aとbの文字カウントは同じですが、実際には機能しません。これらの1つは、他のすべてのオカレンスの左右の両方で発生するためです。何も返しません。 aabcdb- cdおよびabは正確な2つのブラケットペアであるため、cdabまたはのいずれかを出力しますabcd。 abcdacbd-唯一のペアを一度に実現することができますが、ab、ac、bd、cd、とadあなたは、可能なペアのすべてを返すことができています。どのペアを選択しても、その中に他の単一のキャラクターがいるインスタンスがあり、他のペアを禁止します。ただし、の場合を除きad、他のペアbcとcbは単独では不可能であり、不可能ですでad。 これはコードゴルフであるため、バイト単位の最短コードが優先されます。ご使用の言語で可能な場合、入力はSTDINからのものです。それが不可能な場合は、回答に入力方法を記載してください。

1
整数操作によりIEEE 754 64ビットのバイナリ浮動小数点数を実装します
(とりあえず質問「C」にタグを付けましたが、共用体をサポートする別の言語を知っている場合は、それも使用できます。) あなたの仕事は+ - * /、次の構造体の4つの標準的な数学演算子を作成することです。 union intfloat{ double f; uint8_t h[8]; uint16_t i[4]; uint32_t j[2]; uint64_t k; intfloat(double g){f = g;} intfloat(){k = 0;} } 演算自体は整数部分のみを操作またはアクセスするため(演算中にdoubleと比較することはありません)、結果はまったく同じです(またはのような非数値の結果の場合は機能的に同等ですNaN)対応する数学演算がdouble代わりに直接適用されたかのように。 操作する整数部分を選択できます。おそらく、異なる演算子間で異なる部分を使用することもできます。(ユニオンのフィールドのいずれかから「unsigned」を削除することもできますが、それを実行するかどうかはわかりません。) スコアは、4つの演算子のそれぞれの文字のコードの長さの合計です。最低スコアが勝ちます。 IEEE 754規格に慣れていない私たちの人のために、ここではウィキペディアにそれについての記事です。 編集: 03-06 08:47 intfloat構造体にコンストラクタを追加しました。double /などを手動で設定するのではなく、テストに使用できます。

4
デコードファクターツリー
ファクターツリーのエンコードに失敗した場合のファクターツリーの定義は次のとおりです。 空の文字列は1です。 連結は乗算を表します。 括弧(またはペア文字)で囲まれた数値nは、n番目の素数を表し、2が最初の素数です。 これは再帰的に行われることに注意してください。n番目の素数は、括弧内のnの因子ツリーです。 数値の因子は、最小から最大の順に並べる必要があります。 たとえば、2〜10の因子ツリーを次に示します。 () (()) ()() ((())) ()(()) (()()) ()()() (())(()) ()((())) この課題では同様の形式を使用します。ただし、この課題はこれらの構造をデコードすることです。 テストケース 臆面もなく盗まは、 再利用、最後のチャレンジから。 上記9に加えて… ()()((()))((())) => 100 (()(()(()))) => 101 (()())(((())))(()(())) => 1001 (((((((()))))))) => 5381 (()())((((()))))(()()(())(())) => 32767 ()()()()()()()()()()()()()()() => 32768 ルール 入力内のペアの文字は、かっこ、角かっこ、中かっこ、または山かっこから選択します。質問があれば、他の形式(XMLタグなど)を許可する場合があります。 2から2 15または32768 までの任意の数の因子ツリーを処理できるはずです。 これはcode-golfであるため、バイト単位の最短回答が優先されます。

2
完全に括弧で囲まれた式
今日、あなたの課題は、式のすべての可能な完全な括弧を生成することです。 入力は、演算子で区切られた1つ以上の用語を含む1行の印刷可能なASCIIです。入力にはスペースも含まれる場合があります。これらは無視する必要があります。用語は[a-zA-Z0-9]、演算子は[^ ()a-zA-Z0-9]です。入力は常に有効であると仮定することができます。 指定された式を完全に括弧で囲むすべての可能な方法を出力し、オプションの末尾の改行で改行で区切られます。 しないでください: 用語を括弧で囲む-演算子の周りのみを括弧で囲みます。 用語を並べ替えます。 スペースを出力します。 入出力の例: N N a * b (a*b) x_x_0 (x_(x_0)) ((x_x)_0) a * b|c|d (a*(b|(c|d))) (a*((b|c)|d)) ((a*b)|(c|d)) ((a*(b|c))|d) (((a*b)|c)|d) バイト単位の最小コードが優先されます。

1
バランスの取れた近所を見つける
あなたの仕事は、バランス文字列とレーベンシュタイン距離を表す整数(ある文字列を別の文字列にするために挿入、削除、または変更する必要のある文字数)を取得することであり、その距離の平衡文字列の数を見つける必要があります元の文字列(つまり、その文字列の近傍)から。 規定 バランスのとれた文字列は文字のみで構成されます ()<>[]{} あなたは正の等距離の近隣を見つけるように求められます 入力と出力は柔軟です。適切なデータをすべて取り込んで、抜け穴に違反することなく正しい答えを出力する限り、私はあなたの答えに満足しています。 必要に応じて、すべての整数入力を2で除算することもできます。 これはコードゴルフなので、目的は回答のバイト数を最小限に抑えることです これはこのCMCとこの答えに触発されました テストケース Case | Distance | Size of Neighborhood -------------------------------------------- () | 2 | 18 ({}) | 2 | 33 (()) | 2 | 32 <> | 4 | 186 [][] | 4 | 688 <(){}> | 4 | 1379 {} | …

4
プレリュード構文チェッカー
Preludeは難解なプログラミング言語であり、有効なプログラムを構成するものに対する制限はほとんどありませんが、珍しいものです。印刷可能なASCIIテキストの任意のブロック(「ブロック」は、印刷可能なASCIIの行が改行で区切られることを意味します-0x0A)は、次の条件が満たされている場合に有効です: テキストのすべての(垂直)列には、(およびのいずれかが含まれます)。 垂直位置を無視して、(と)はバランスがとれています。つまり、それぞれ(と)その右側の1つだけがペアになり、その逆も同様です。 印刷可能なASCIIと改行を含む文字列を指定して、それが有効なPreludeプログラムを構成するかどうかを決定するプログラムまたは関数を記述します。STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を受け取ることができます。選択した2つの固定された 真偽値を使用して、結果をSTDOUTに返したり、出力したりできます。 入力が長方形であると想定してはいけません。 これはコードゴルフなので、最短の提出(バイト単位)が勝ちます。 例 以下は有効な Preludeプログラムです(実際、これらは実際の Preludeプログラムです): ?1-(v #1)- 1 0v ^(# 0)(1+0)#)! (#) ^#1-(0 # 1(# 1) v # - 1+) vv (##^v^+ ? v-(0 # ^ #) ? 1+ 1-! そして、ここにいくつかの入力がありますが、すべて無効です: #(#(##)##)##( )##(##(##)#)# #(#) )### #(## (##) (##) (#)# (##) (### #(#) (##) #(#) …

3
一連のマスクのいずれかに一致するバランスの取れたバイナリ文字列をカウントする
バイナリ文字列がから引き出された文字のみを含む文字列である01。バランスバイナリ文字列が正確に多くのように含むバイナリ文字列である0としてS 1 S。 正の整数nと任意の数のマスクが与えられます。各マスクの長さは2n文字で、012から描画された文字のみが含まれます。バイナリ文字列とマスクは、長さが同じで、マスクに2がないすべての位置の文字と一致する場合に一致します。例えば、マスク011022試合バイナリ文字列011000、011001、011010、011011を。 与えられたN及び(改行で区切られた)入力としてマスクは、出力マスクの一つ以上に一致する別個の平衡バイナリ文字列の数をしなければなりません。 例 入力 3 111222 000112 122020 122210 102120 推論 唯一バランスバイナリ文字列マッチング111222である111000。 000112に一致する唯一のバランスのとれたバイナリ文字列は000111です。 マッチングバランスバイナリストリング122020がある111000(既にカウント)、110010及び101010。 122210に一致するバランスのとれたバイナリ文字列は、110010(既にカウント済み)、101010(すでにカウント済み)、および100110です。 102120に一致するバランスのとれたバイナリ文字列は、101100と100110です(すでにカウントされています)。 したがって、出力は 6 入力 10 22222222222222222222 推論 20があり、長さ20の10個のバランスのとれたバイナリ文字列があります。 出力 184756 勝者 勝者は、競争の入力を最も速く計算し、もちろん他の入力と同じように扱います。(私は明確な勝者を持ち、異なる入力が異なる勝者を与えるケースを避けるために決定されたコードを使用します。最速のコードを見つけるためのより良い方法を考えたら、そう教えてください)。 コンテスト入力 http://pastebin.com/2Dg7gbfV

14
辞書式順序の括弧シーケンス
ここからもここからも挑戦 n個の括弧配列は、から成り、N (、S及びN ) S。 有効な括弧シーケンスは、次のように定義されています。 隣接する括弧「()」が空になるまで繰り返し消去する方法を見つけることができます。 たとえば、(())は有効な括弧であり、2番目と3番目の位置のペアを消去して()それをにしてから、空にすることができます。 )()(は有効な括弧ではありません。2番目と3番目の位置のペアを消去すると、ペアになり、それ)(以上消去できなくなります 仕事 番号nを指定すると、辞書式順序ですべての正しい括弧シーケンスを生成する必要があります 出力は、配列、リスト、または文字列(この場合は行ごとのシーケンス)です。 あなたは括弧などの異なるペアを使用することができ{}、[]、()または任意の開閉サイン 例 n = 3 ((())) (()()) (())() ()(()) ()()() n = 2 (()) ()()

1
ゴミを集める
あなたは通りを見ていて、誰かがゴミを残しました!ゴミ箱にゴミ箱を置くことによって、問題を解決するのを助けるプログラムを書く必要があります。 タスク アベニューは、印刷可能なASCII文字列で構成されています。例: [[](dust)[]] car ((paper)vomit) (broken(glass)) [[] (rotten) fence (dirty) ここにあるブラケットのいくつかは、他に類を見ません。それらはおとりです。私たちが気にするのは、対応する括弧のセットです。 ゴミ箱は始まる文字列で、[で終わる]、そして内部で一致したブラケットと括弧で。例えば、[]および[[](dust)[]]上記の文字列でゴミ箱です。 ゴミ袋はで始まる文字列で、(で終わる)、そして内部で一致したブラケットと括弧で。たとえば(dust)、上の文字列のゴミ袋です。 ゴミ袋の一部がすでにゴミ箱に入っている可能性があります。ただし、少なくとも1つは除外されるため、ゴミ箱をすべてゴミ箱に入れるようにゴミ箱を移動する必要があります。具体的には、現在ゴミ箱の中にない各ゴミ袋(つまり、そのゴミ箱の部分文字列)について、それを文字列の現在の場所から削除し、代わりにゴミ箱の中にある場所に挿入する必要があります。 。 ここに追加のルールがあります。ガベージコレクターにあまりお金をかけたくないため、ガベージコレクターのルートは通りに沿って右から左に移動するので、各ゴミ袋を左に移動します(最も重要な基準は、すべて)および可能な最短距離(左に移動している限り)。したがって、たとえば、唯一の正しい出力 [can1](bag)[can2] です [can1(bag)][can2] (バッグを1文字左に移動)。さらに、バッグは同じ相対的順序にとどまる必要があります。 [can](bag1)(bag2) になる必要があります [can(bag1)(bag2)] (つまり(bag2)、の左側に置くことはできません(bag1)。) 明確化 一番左のゴミ箱の左側にゴミ袋はありません。ゴミ箱を左に動かすと、いつでもゴミ箱をすべて開けます。 移動するバッグは常に少なくとも1つあります。複数あるかもしれません。 ゴミ袋の中にゴミ箱は決してありません(缶は価値がありすぎて捨てることができません)。 バッグがすでに缶に入っている場合は、そのままにしておきます。 入力と出力の末尾の空白(改行を含む)が異なっていても問題ありません。 例: 入力: [[](dust)[]] car ((paper)vomit) (broken(glass)) [[] (rotten) fence (dirty) 出力: [[](dust)[]((paper)vomit)(broken(glass))] car [[(rotten)(dirty)] fence 入力: []] (unusable) door …

4
等しいアウトブラケットタイプ
この質問に基づいてい ます。 文字列が与えられたら、各ブラケット()[]{}<>を適切なタイプのブラケットに置き換えて、ブラケットが一致し、ネストされたブラケットが次のように循環するようにします。 一番外側のものは () 直接の中にある()はずです[] 直接の中にある[]はずです{} 直接の中にある{}はずです<> 直接の内側に<>なり()、再び(サイクル) ブラケット以外の文字はすべて、そのままにしておく必要があります。開き角括弧は、あるタイプの開き角括弧にのみ置き換えられ、閉じ角括弧は閉じ角括弧に置き換えられます。 入力は常にこれを可能にします。これは、タイプが無視された場合にブラケットが正しく一致することを意味します。だから、{ab<)c]有効な入力ですが、ab)(cdかab((cdではありません。 例: 2#jd {¤>. = 2#jd (¤). abcdef = abcdef (3×5+(4-1)) = (3×5+[4-1]) <<<>><<>><<<<<<>>>>>>> = ([{}][{}][{<([{}])>}]) この方法での入力のネイティブ変換(言語の自動構文)の使用は許可されていません。 いつものように:最短のコードが優先されます。

16
2つのセットは等しいですか
{}空のセットです。使用する()か[]、選択した場合。 「セット」を厳密に定義することはしませんが、セットはすべて次のプロパティを満たします。 セットは通常の数学的構造に従います。ここにいくつかの重要なポイントがあります: セットは注文されていません。 セット自体は含まれていません。 要素はセットに含まれるかどうか、これはブール値です。したがって、セット要素は多重度を持つことができません(つまり、要素はセットに複数回存在することはできません)。 セットの要素もセットで{}あり、唯一のプリミティブ要素です。 仕事 2つのセットが等しいかどうかを判別するプログラム/関数を記述します。 入力 stdinまたは関数引数を介した2つの有効なセット。入力フォーマットが理由で緩いです。 有効な入力は次のとおりです。 {} {{}} {{},{{}}} {{{{{},{{}}}}}} {{},{{},{{}}}} {{{},{{}}},{{{{{},{{}}}}}}} 無効な入力: {{} {} Brackets will always be balanced. {{},{}} {} Set contains the same element twice 出力 入力が等しい場合は真の値、それ以外の場合は偽。 テストケース あなたの提出物は、テストケースだけでなく、すべての有効な入力に対して正しく答えるべきです。これらはいつでも更新できます。 真実: {} {} {{},{{}}} {{{}},{}} {{},{{},{{{}},{}}}} {{{{},{{}}},{}},{}} 偽物: {} {{}} {{},{{},{{{}},{}}}} {{{{}}},{},{{}}} …

2
この番号をデコードしてください!
この課題は、整数nを別の整数としてエンコードするアルゴリズムを提起しましたr。以下はn=60、例として使用して、そのアルゴリズムの簡潔な説明です。 オリジナルのアルゴリズム まず、括弧の文字列として数値をエンコードします。 の場合n = 1、空の文字列を返します。 それ以外の場合は、n昇順でソートされたの素数分解を取り、各要素を角括弧内のその素数インデックス(1インデックス付き)で置き換えます。60 = 2*2*3*5 => [1][1][2][3] ブラケットがすべて揃うまでこれを再帰的に行います。 [1][1][2][3] => [][][[1]][[2]] => [][][[]][[[1]]] => [][][[]][[[]]] ブラケットの文字列を取得したら、次のプロセスでそれを整数に変換します。 各開始ブラケットをaに1、各終了ブラケットをaに変換します0。[][][[]][[[]]] => 10101100111000 末尾0のと最後のをすべて削除します1。10101100111000 => 1010110011 0sと1sの最後の文字列をバイナリから整数に変換します。1010110011 => 691 このエンコーディングをデコードする このアルゴリズムの興味深い特性は、全射的ではないことです。すべての整数がこのエンコードの結果であるとは限りません。 まず、結果のバイナリ表現はr、でなければならないbalance-able多くのことで0sは数超えてはならない1のです。短い偽のテストケースはで4、これは100バイナリです。 次に、バイナリ表現の角かっこは、sorted ascending最後のs 1と末尾0のsがもう一度追加されるときでなければなりません。短い誤ったテストケースは12 <= 1100 <= 110010 <= (())()です。 ただし、この方法で数値がデコード可能かどうかを判断するだけでは、短い課題が生じます。代わりに、課題は、デコードできない数値またはサイクルに到達するまで所定の入力を繰り返しデコードし、結果として得られる数値のシーケンスを返すことです。 チャレンジ 数与えられ1 <= r <= 2**20 = 1048576、戻り数列r …

3
2シンボル数学
前書き 次の事実により、4つの基本的な数学演算子(+、-、*、/)を2つに減らすことができます。 x + y = x - (-y) x * y = x / (1/y), y != 0 x * 0 = 0/x チャレンジ 課題は、以下を含む「文字列」として入力を受け取ることです。 数字 単一文字変数( "x"、 "y") 4つの基本的な数学演算子(+、-、*、/) 括弧 入力と同じ数学的な結果を生成するように操作された文字列を出力しますが、数学記号「-」と「/」のみを含みます 詳細 入力は任意の受け入れ可能な形式(ファイル、STDINなど)にすることができ、文字列または文字配列(配列の配列ではない)として表すことができます。 出力は、任意の受け入れ可能な形式(ファイル、STDINなど)にすることができ、文字列または文字配列(配列の配列ではない)として表すことができます。 括弧を認識して維持する必要があります 標準の抜け穴は許可されていません またはx + yとして表現したい場合は、あなたの選択ですx - -yx - (-y) 操作の順序を維持する必要があります 無効な入力を処理する必要はありません 入力は空でも、単一の数値/変数でもかまいません。その場合、プログラムは入力を出力する必要があります 注:あなたはしていない限り、導入に置換を使用する必要がありinput = …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.