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

このタグは、入力を解析することが課題の大部分/主要な部分である課題を示します。

25
C配列を展開する
Cプログラミング言語では、配列は次のように定義されます。 int foo[] = {4, 8, 15, 16, 23, 42}; //Foo implicitly has a size of 6 配列のサイズは、初期化要素(この場合は6)から推測されます。この方法でC配列を記述し、明示的にサイズを変更してから各要素を順番に定義することもできます。 int foo[6]; //Give the array an explicit size of 6 foo[0] = 4; foo[1] = 8; foo[2] = 15; foo[3] = 16; foo[4] = 23; foo[5] = 42; チャレンジ 最初の方法から2番目の方法に配列を拡張するプログラムまたは関数を作成する必要があります。コードを長くするプログラムを作成していて、皮肉が大好きなので、コードをできるだけ短くする必要があります。 入力は元の配列を表す文字列になり、出力は拡張された配列定義になります。入力は常に次のように見えると安全に仮定できます。 <type> …
36 code-golf  string  parsing  c 

8
ASCIIアートテキストを読む
Golf meからインスパイアされたASCIIアルファベットで、このチャレンジは(ほぼ)直接の逆です。 仕事: ASCIIアートテキストの文字列を取得し、テキストの内容を通常のASCIIテキストとして出力します。 入力: ASCIIアートテキストの文字列。 入力には、ASCII文字#、スペース、および4つまたは5つの改行のインスタンスのみが含まれます(末尾の改行はオプションです)。すべての行の長さは同じです。(つまり、最後のASCIIアート文字の末尾にスペースが埋め込まれます。)#必要に応じて、入力ではなく他の印刷可能なASCII文字を使用できます。 入力には、ASCIIアート文字A-ZとASCIIアートスペース(空白の5x5ブロック)が含まれます。句読点はありません。ASCIIアートテキストは1行のみです(実際の5行)。末尾または先頭のASCIIアートスペースはなく、隣接するASCIIアートスペースもありません。 文字サイズは5x5文字です。各文字の間には1x5のスペースがあります。単語間のスペースは、5x5の空白ブロックです(もう1つの文字であるため、両側に1x5のスペースがあります)。ASCIIアート文字の間にのみ、末尾または先頭に1x5のスペースはありません。 出力: ASCII文字A-Z+スペースとしてテキストを含む文字列。あなたのソリューションにとって何らかの形で簡単であれば、出力も小文字にすることができます。大文字と小文字を混在させることもできます。 ASCIIアート文字: ### #### ### #### ##### ##### ### # # ##### ##### # # # # # # # # # # # # # # # # # # # # # # # ## ## ##### #### …

28
解放してください!
コードゴルファーとして、私たちは(確かに)リリースすることに慣れていません。そのためには、いくつかのツールが必要になります。 もちろん、新しいリリースのマーケティングを支援するには、素敵で光沢のあるリリースバージョンが必要です。バージョン3.0.0を聞いても興奮しないのは誰ですか? 仕事 あなたの仕事はプログラム/ルーチン/ ...を書いてバージョン番号を増やすことです。 バージョン番号を増やし、「重要度の低い」もの(つまり、パッチバージョン)をリセットする必要があります。 2つの引数を取得します。文字列としての現在のバージョン(「1.0.3」など)と、どちらを更新するかを知るためのインデックス(0または1のインデックス)。 例、0インデックス付き: next-version("1.0.3", 0) # 2.0.0 next-version("1.2.3.4.5", 2) # 1.2.4.0.0 next-version("10.0", 0) # 11.0 next-version("3", 0) # 4 next-version("1", 7) # ERROR next-version("01", 0) # ERROR バージョンは文字列で、各部分は数字で、ドットで区切られています。先頭、末尾、または連続するドット(および数字/ドット以外)は存在できません。バージョン文字列のサイズに制限はありません。 ^[1-9]\d*(\.[1-9]\d*)*$ エラーの場合(最後の2つの例)は未定義の動作です。入力を間違えた場合に起こることは、この課題とは無関係です。 いつものように、標準的な抜け穴は禁止されています。文字列を印刷または返すことができます。

18
コードのローマ字化
課題は、選択した言語でローマ数字を有効なコードにすることです。 それらは文字列または同様のものの内部に表示されるべきではありませんが、他のトークン、(アラビア語)数字などのリテラル、文字または文字列とまったく同じように機能します。または変数/メソッド/関数識別子など たとえば、Javaでは、次のようiに初期化されたかのようにコンパイルして実行する必要があります42。 int i = XLII; 数字の実際の解析は二次的なものなので、必要に応じてライブラリを使用できますが、これは人気のコンテストなので、創造性が奨励されます。 そのようなことがある場合、実際にローマ数字を使用する言語は使用できません。 がんばろう。

1
Pyramid Schemeコードを生成する
Pyramid Schemeは@ ConorO'Brienによって開発されている言語です。Pyramid Schemeでは、作成するコードは次のようになります。 ^ ^ / \ /3\ / \ --- / + \ ^-------^ /9\ /3\ /123\ --- ----- さて、このコードには2つの明らかな性質があります。解析するのが難しく、書くのが難しいということです。Conorは最初の問題を解決しましたが、2番目の問題を解決するのはあなたの仕事です。 上記のコードは、PyramidSchemeインタープリターによって、次のようにネストされた文字列配列に処理されます。 [["+", ["9123", "3"]], "3"] あなたの仕事は、ネストされた文字列の配列を与え、再作成されたPyramidSchemeコードを出力または返すプログラムまたは関数を書くことです。入力配列は常に有効であると想定できます。 ピラミッドは二等辺三角形です。上部は、^斜めに離れると辺傾き、/及び\、下です-。下の2つの角は空であるか、引数である他のピラミッドの開始点を含んでいます。中央には、改行を無視してピラミッドの名前が表示されます。 パーサーがコードを使用可能な形式に変換する方法を次に示します。まず、最上位のピラミッドをスキャンします。引数をとらない場合、単一の文字列でそれを表し、先に進みます。それ以外の場合は、配列["name",[arg1,arg2]]またはとして表現され["name",[arg1]]ます。引数は、ピラミッドの左下および右下のピラミッドです。これは、上記の文字列または複数の配列のいずれかです。これはLispにやや似ていることに気付くかもしれません。その場合、言語名であるひどいしゃれに気づいたかもしれません。ピラミッドが完全に表示された後、パーサーは次のピラミッドに進みます。 これはcode-golfで、最短のコードが勝ちます! テストケース:これらは有効な出力だけではなく、有効な出力の例です。 [["+", ["9123", "3"]], "3"] ^ ^ / \ /3\ / \ --- / + \ ^-------^ /9\ /3\ …

6
ターザンのオリンピックつるスイングル​​ーチンを記録する
オリンピックのツルを振る人は、標準の木でルーチンを実行します。特に、標準ツリーにnは、0アップスルーのn-1頂点aと、各非ゼロ頂点をそのn % a下の頂点にリンクするエッジがあります。したがって、たとえば、標準ツリー5は次のようになります。 3 | 2 4 \ / 1 | 0 5を3で割ったときの剰余は2であるため、5を2で割ったときまたは4で割ったときの剰余は1であり、5を1で割ったときの剰余は0です。 今年、ターザンは頂点から始まり、頂点へn - 1とスイングし、頂点へn - 2と続きn - 3、最終的に頂点に降りるまで、新しいルーチンで金を守ります0。 ルーチンのスコアは、各スイング(降車を含む)のスコアの合計であり、スイングのスコアは、ツリー内の開始点と終了点の間の距離です。したがって、標準ツリー5のターザンのルーチンのスコアは6です。 から4までのスイングが33点(ダウン、アップ、アップ)を獲得し、 から3にスイングして21ポイント(ダウン)を獲得し、 から2までのスイングが11ポイント(ダウン)を獲得し、 から降車し1て01ポイント(下)を獲得します。 正の整数nを指定すると、標準ツリー上のターザンのルーチンのスコアを計算するプログラムまたは関数を記述しnます。サンプルの入力と出力: 1 -> 0 2 -> 1 3 -> 2 4 -> 6 5 -> 6 6 -> 12 7 -> 12 8 -> 18 …
32 code-golf  math  number  number-theory  code-golf  code-golf  restricted-source  programming-puzzle  css  code-golf  parsing  code-golf  random  encryption  code-golf  ascii-art  fractal  code-golf  math  code-golf  sorting  graph-theory  path-finding  permutations  code-golf  tetris  code-golf  card-games  code-golf  math  sequence  rational-numbers  code-golf  chess  code-golf  string  geometry  grid  code-golf  ascii-art  grid  code-golf  sequence  integer  code-golf  math  number-theory  packing  polyomino  code-golf  math  code-golf  string  quine  permutations  code-golf  math  code-golf  image-processing  optical-char-recognition  code-golf  string  kolmogorov-complexity  sequence  integer  code-golf  number  permutations  palindrome  code-golf  kolmogorov-complexity  code-golf  number  sequence  string  fewest-operations  code-golf  string  kolmogorov-complexity  sequence  primes  code-golf  string  ascii-art  code-golf  string  number  alphabet  code-golf  counting  code-golf  number  sequence  number-theory  primes  code-golf  subsequence  word-search 

9
不要な括弧を削除する
文字で構成された文字列が与えられます0123456789+*()。文字列は常に有効な数式であると想定できます。 あなたの仕事は、乗算が加算よりも優先されると仮定して、不要な括弧を削除することです。 構造的に必要でない場合にのみ、括弧を削除する必要があります。 乗算の優先度が高いため:3+(4*5)=>3+4*5 乗算または加算の結合性のため:3*(4*5)=>3*4*5 式の周りで冗長な場合:3*((4+5))=>3*(4+5) 括弧は、特定の数値のために簡略化できる場合は保持する必要があります。 1*(2+3) に単純化されるべきではない 1*2+3 0*(1+0) に単純化されるべきではない 0*1+0 例: (4*12)+11 ==> 4*12+11 (1+2)*3 ==> (1+2)*3 3*(4*5) ==> 3*4*5 ((((523)))) ==> 523 (1+1) ==> 1+1 1*(2*(3+4)*5)*6 ==> 1*2*(3+4)*5*6 1*(2+3) ==> 1*(2+3) 0*(1+0) ==> 0*(1+0) (((2+92+82)*46*70*(24*62)+(94+25))+6) ==> (2+92+82)*46*70*24*62+94+25+6

30
ASCIIの三角形
あなたの仕事は、ASCII三角形を印刷するプログラムまたは関数を書くことです。次のようになります。 |\ | \ | \ ---- プログラムはn、制約付きの単一の数値入力を受け取ります0 <= n <= 1000。上記の三角形の値はでしたn=3。 ASCIIの三角形にはnバックスラッシュ(\)と垂直バー(|)、n+1行とダッシュ(-)があり、各行には最終的な行のほかに行番号(0から始まる、つまり最初の行は行0)と等しいスペースがあります。 。 例: 入力: 4 出力: |\ | \ | \ | \ ----- 入力: 0 出力: このテストケースでは、出力は空でなければなりません。空白なし。 入力: 1 出力: |\ -- 入力と出力は、私が指定したとおりでなければなりません。 これはcode-golfなので、できるだけ短いコードを目指してください!
30 code-golf  ascii-art  code-golf  rubiks-cube  code-golf  path-finding  maze  regular-expression  code-golf  math  rational-numbers  code-golf  kolmogorov-complexity  graphical-output  code-golf  tips  code-golf  string  permutations  code-golf  sorting  base-conversion  binary  code-golf  tips  basic  code-golf  number  number-theory  fibonacci  code-golf  date  code-golf  restricted-source  quine  file-system  code-golf  code-golf  math  code-golf  ascii-art  code-golf  math  primes  code-golf  code-golf  math  matrix  code-golf  string  math  logic  factorial  code-golf  palindrome  code-golf  quine  stateful  code-golf  interactive  code-golf  board-game  code-golf  math  arithmetic  code-golf  string  code-golf  math  matrix  code-golf  math  abstract-algebra  polynomials  code-golf  date  code-golf  string  array-manipulation  sorting  code-golf  game  code-golf  string  code-golf  ascii-art  decision-problem  code-golf  number  sequence  code-golf  code-golf  code-golf  sequence  fibonacci  code-golf  math  geometry  random  code-golf  code-golf  math  decision-problem  fractal  rational-numbers  code-golf  number  number-theory  code-golf  combinatorics  permutations  card-games  code-golf  math  sequence  array-manipulation  fibonacci  code-golf  sequence  decision-problem  graph-theory  code-golf  ascii-art  parsing  lisp  code-golf  string  math  natural-language  logic  code-golf  math  logic  code-golf  string  alphabet  code-golf  string  code-golf  string 

26
デジタル合計フィボナッチ
私たちは皆、フィボナッチ数列に精通しています: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765 ただし、代わりに、前の2つのエントリのデジタル合計をf(n) = f(n-1) + f(n-2)取得します。 シーケンスは引き続きで始まる必要があり0, 1、その後、違いはすぐに明らかになります。このリストには0のインデックスが付いていますが、1のインデックスも使用できます。 f(0) = 0 f(1) = 1 f(2) = 1 # 0 + 1 f(3) = 2 # 1 + 1 f(4) …

20
難解なコードからコメントを解析する
今週初め、私たちはどのように 、コメント用に難解な言語フォーマット。今日は、その逆を行います。よくコメントされた難解なコードを解析し、コメントを解析して、コードだけを返すプログラムまたは関数を作成する必要があります。前の課題からのいくつかの例を使用して、ここによくコメントされたコードがどのように見えるかを示します: a #Explanation of what 'a' does bc #Bc d #d e #Explanation of e fgh #foobar ij #hello world k #etc. l #so on mn #and op #so forth コードを抽出するために必要なことは次のとおりです。最初に、コメント文字(#)、その前のスペース、およびコメント文字の後のすべてをます。 a bc d e fgh ij k l mn op 次に、各行を上に折り畳んで単一の行にします。たとえばb、2行目の2列目にあるため、折りたたむと、1行目の2列目になります。同様に、c1行目の3列目に配置され、dに配置され、4行目に配置されます。すべてのキャラクターについてこれを繰り返して、これを取得します: abcdefghijklmnop 重要な注意:コメントを削除し、すべてのスペースを削除し、すべての行を結合することが簡単な解決策のようです。これは有効なアプローチではありません!元のコードにはスペースが含まれている可能性があるため、このアプローチではスペースが削除されます。たとえば、これは完全に有効な入力です。 hello #Line one #Line two …

20
見つけて回転
タスク これは簡単な挑戦です。入力は、数字0123456789とハッシュのみを含む単一の空ではない文字列#です。これには、非負の整数をエンコードし、文字列の終わりを囲む可能性のある1桁の数字と、少なくとも1桁が含まれます#。整数には先行ゼロが含まれる場合があります。たとえば、##44##、013####および23###1有効な入力、しばらくしている###、0099と#4#4はありません。 あなたの仕事はn、文字列から整数を抽出し、文字列をn右に回転させて出力することです。 例 入力#1##は右に1ステップ回転する必要があるため、正しい出力は##1#です。 #026###先頭の0は無視されるため、入力は26ステップ右に回転する必要があります。正しい出力は26####0です。 入力1####2には最後に整数21がラップされているため、21ステップ右に回転する必要があります。正しい出力は##21##です。 ルールとスコアリング 完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 あなたは、その数があなたの言語のn標準的なintタイプに適合すると仮定することができます。逆に、その標準int型が任意精度の整数を実装する場合、(理論上)任意の大きなをサポートする必要がありますn。 テストケース #1## -> ##1# ##4## -> #4### 1####1 -> ####11 1####2 -> ##21## #026### -> 26####0 #000### -> #000### ###82399 -> ##82399# 51379#97 -> #9751379 #98##### -> ###98### #######4## -> #4######## 60752#1183 -> 8360752#11 ####99366800## -> 366800######99 ########9##### -> ###9########## …

25
はしご上のロボット
バックグラウンド 壁にはしごがあり、それを登ることができる遠隔操作ロボットがあります。ロボットに3つの異なるコマンドを送信できます。 UP:ロボットは1ステップ上に移動します。それが最高のステップにあった場合、それはつまずき、倒れ、爆発します。 DOWN:ロボットは下に1歩進みます。それが最下段にあった場合、何も起こりません。 RESET:ロボットは最下段に戻ります。 一連のコマンドを送信することもでき、ロボットはそれらを1つずつ実行します。あなたの仕事は、その動きを予測することです。 入力 あなたの入力は正の整数であるN梯子のステップの数を表すと、非空の文字列Cの上にUDR私がロボットに送信したコマンドを表します、。あなたはそれを仮定することができN < 1000ます。ロボットは、はしごの最下段で初期化されます。 出力 ある時点で、ロボットが最高のステップを乗り越えて爆発することが保証されています。出力は、これが発生する前に実行するコマンドの数です。 例 入力N = 4を考慮し、C = "UDDUURUUUUUUUDDDD" で示されるロボットは、@次のように4ステップの梯子に沿って移動します。 |-| |-| |-| |-| |-| |-| |-| |-| |-| |@| |-|| |-| |-| |-| |-| |-| |@| |-| |-| |@| |-| |-|| |-| |@| |-| |-| |@| |-| |-| |@| |-| …

3
助けて!電卓が壊れた!(整数式を電卓のキーストロークに変換します)
前書き 助けて!誤ってTI-84計算機を窓から落とし(方法は聞かないでください)、壊れました。明日は数学のテストがありますが、見つけることができるのはこれらのボタンを備えた計算機だけです。 7 8 9 + 4 5 6 - 1 2 3 * 0 = / 私の数学のテストは、式の評価に関するレビューテストです。などの式を取得1+(5*4)/7し、予備の計算機でそれを解決するために必要なキーストロークに変換するプログラムが必要です。(そして、あなたが疑問に思っている場合、これは実際に私に起こりました)。 チャレンジ 含有する非空の入力文字列が与えられた唯一の文字0-9、(、)、+、-、*、および/、出力スペースで区切られた文字列内のキーストローク(例えば。1 + 3 / 3 =)。出力の最後には常に等号が必要です。標準の抜け穴は許可されていません。 例: 入力:1+(5*4)/7、出力:5 * 4 / 7 + 1 = 入力:6*(2/3)、出力:2 / 3 * 6 = 入力:(7-3)/2、出力:7 - 3 / 2 = この課題を簡単にするには: 入力には、計算機をクリアする必要のない一連のキーストロークが入力されていると想定1-(7*3)できます(計算する必要があるため無効です。7 * 3実行するには計算機をクリアします1 …

10
サンタの決断
サンタの決定: このチャレンジでは、サンタクロースがリストの誰かがいたずらか素敵かを判断し、続いてcoalまたはを取得するのを手伝いますtoys。 しかし残念ながら、サンタは、彼のエントリの一部では、未組織でnaughty、nice そしてnameフィールドが間違った順序です。 入力 入力は、次の互換性のある形式で提供されます。 人の名前(コロンを含めることはできません、のみa-zA-Z0-9) 単語のnaughty直後にコロンと、サンタがあなたをいたずらさせた回数を表す負でない整数が続きます 単語のnice直後にコロンが続き、サンタがあなたを素敵に捕まえた回数を表す負でない整数 すべては、それぞれの間に単一の空白(ASCII 32)で区切られています。 さらに、名前の名前の部分の間に空白はありませんSanta Claus-> SantaClaus。 ボーナス: (25%):彼はサンタクロースなので、リストを2回チェックし、重複がないことを確認する必要があります。(その場合、ユーザーが持っている最初のスコアを取得するだけです) 例: Quill naughty:4 nice:0 naughty:0 Doorknob nice:3 naughty:2 Quill nice:6 nice:3 balpha naughty:3 pops nice:4 naughty:2 出力: 出力は次のもので構成される必要があります。 人の名前に続いて: にさらにポイントがnaughtyある場合coal: にさらにポイントがあるnice場合、toys。 しかし、naughtyとniceが等しい場合、needs more data 出力例: 組織ボーナスと重複削除ボーナスの場合: Quill coal Doorknob toys balpha needs more data …

1
テキストのスペルミスを数えます。コード内のスペルミスの数を最小限に抑える
2つの入力を取るプログラムまたは関数を作成します。 テキストメッセージ この Githubファイルに表示される英語の辞書(約60000語を含む) メッセージのスペルエラーの数を出力します(定義とテストケースについては以下を参照)。 辞書は、関数へのパラメーターとして、プログラムが検出することを予期する事前定義ファイルとして、コード内のハードコーディングされたデータとして、またはその他の適切な方法で受け取ることができます。 コード自体はテキストメッセージのように見えるはずで、スペルミスは最小限です。そのため、コードを入力としてコード自体に渡すことで、コードのスコアを計算します。 勝者は、スコアが最も低いコードです(可能な最小スコアは0です)。同じスコアの回答が複数ある場合、勝者はコードサイズ(文字数)によって決定されます。それでも2つの答えが結びついている場合、勝者は早い方です。 必要に応じて、入力メッセージはASCII(バイト32 ... 126)であり、改行は従来の方法(1バイト "10"または2バイト "13 10")でエンコードされ、空ではないと想定できます。ただし、コードに非ASCII文字が含まれている場合は、非ASCII入力もサポートする必要があります(したがって、独自のスコアを計算できます)。 キャラクターは次のクラスに分類されます。 文字 a ... zおよびA ... Z 空白(ここではスペース文字または改行文字として定義されます) 句読点 . , ; : ! ? 文末 . ! ? ごみ(その他すべて) 言葉は(つまり、どちらも先行していないにも文字が続く)最大となる文字の配列として定義されます。 文は文末でない文字の最大の配列として定義されます。 文字は、次のいずれかのスペル規則に違反している場合、スペルエラーです。 文字は辞書の単語に属している必要があります(または、言い換えると、辞書に表示されていない長さNの各単語はN個のスペルミスとしてカウントされます) 最初の空白文字を無視する文の最初の文字は大文字でなければなりません 前のルールで指定された文字を除き、すべての文字は小文字でなければなりません 句読点は、文字またはゴミの後にのみ使用できます 改行文字は、文末文字の後にのみ許可されます 空白文字は、メッセージの先頭および空白文字の後には使用できません ガベージはありません(つまり、各ガベージ文字のカウントはスペルミスです) さらに、最後の文は空にするか、改行文字1つだけで構成する必要があります(つまり、メッセージは文末文字とオプションの改行で終了する必要があります-ルール8と呼びましょう)。 テストケース(各文字の下に違反するルールがあります。=>必要な答えは後です): Here is my 1st …

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