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

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

19
URLフレンドリーなタイトル
このサイトの人々は、投稿タイトルを飾るのが大好きです... Stewie's sequence: + * - / + * - / ただし、このタイトルをページURLに含める必要がある場合、簡略化されます。 stewies-sequence チャレンジ あなたの仕事は、投稿のタイトルを表す文字列が与えられると、その「URLフレンドリー」変換を出力/返すプログラムまたは関数を作成することです。 アルゴリズムは次のとおりです。 小文字に変換(該当する場合) すべてのスペース()、ピリオド(.)、コンマ(,)またはスラッシュ(/)をダッシュ​​(-)に置き換えます ダッシュ以外の英数字以外の文字を削除します。 隣接するダッシュのグループを縮小し(a---b -> a-b)、先頭または末尾にあるダッシュを削除します。 このアルゴリズムは簡略化であり、サイトの実際の方法と同じ結果を常に生成するとは限らないことに注意してください。 ルール 次の入力を想定できます。 空になりません。 少なくとも1つの英数字が含まれます。 ASCII範囲32〜126の文字のみが含まれます(印刷可能) 完全なプログラムまたは機能が許可されています。 正確なタスク指定を行うビルトインは許可されていません。 これはcode-golfなので、最短の解決策(バイト単位)が勝ちです! テストケース このサイトのほとんどの投稿はテストとして機能しますが、便利なリストを次に示します。 Loading... Forever -> loading-forever N(e(s(t))) a string -> nest-a-string "Hello, World!" -> hello-world URL-Friendly titles -> url-friendly-titles …

27
C ++ 14整数リテラルを解析します
http://en.cppreference.com/w/cpp/language/integer_literalによると、整数リテラルは10進数/ 16進数/ 8進数/バイナリリテラルとオプションの整数接尾辞で構成されます。このチャレンジでは使用されません。 10進リテラルはa non-zero decimal digit (1, 2, 3, 4, 5, 6, 7, 8, 9), followed by zero or more decimal digits (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)です。 8進リテラルはthe digit zero (0) followed by zero or more octal digits (0, 1, 2, 3, 4, 5, …

30
12時間から24時間のタイムコンバーター
驚くべきことに、この単純なタスクはまだ存在していないようです... あなたの仕事は、入力として12時間の時間を取り、それを「軍事時間」または24時間の時間形式に変換するプログラムを書くことです。 入力は次の形式になります。 HH:MM am/pm わずかなバリエーションが許可されていますが: am / pmと残りの時間を区切るスペースはオプションです。 最後の部分は、「am」/「pm」または「a」/「p」のいずれかです。 大文字でも大丈夫です。 出力は、24時間形式に変換された入力時間になります。数値または文字列を指定できます。 入力と出力の両方について: 最初の0はオプションです。最後の3桁の0は必須です。 時間と分を区切る区切り文字は、「:」、「」(スペース)、またはなしです。 その他の注意事項: 真夜中は0000または2400のいずれかで表現できます。 真夜中は「午前」と見なされ、正午は「午後」と見なされます。 プログラムは関数または完全なプログラムであり、結果を返すか、標準出力に出力する必要があります。末尾の空白は問題ありません。 例(すべての形式をサポートする必要はありません): 12:00am -> 0000 1200 pm -> 1200 1234Am -> 00:34 134a -> 134 01:34PM -> 13 34 1234pm -> 1234 これはコードゴルフであるため、最小バイト数が優先されます。これはビルトインを使用して解決するのは非常に簡単なので、これを手動で解決するコードを見るといいでしょう(ただし、ビルトインの使用は問題ありません)。 明確にするために、考えられるすべての形式をサポートする必要はありません。(選択した)単一の入力および単一の出力形式のみをサポートすることは問題ありません。ただし、上記で概要を説明したようにフォーマットを制限したいと思います(これは既にかなり無料です)。{1134,'pm'}、たとえば、受け入れられません。

9
Microsoft MS-DOS 5.0 FATディレクトリエントリをデコードする
Microsoft FATファイルシステムには、ディスク上のどの "フォルダ"にどの "ファイル"があるかを表すディレクトリテーブルがあります。当分の間、これらのエントリは多くの情報を少量のビットに詰め込みました。好奇心the盛な人のためにWikiには多くの技術仕様がありますが、ここでの課題は、エントリの「単純な」デコードに焦点を当てることです。 各エントリは32バイトのバイナリワードで構成され、いくつかのセクションに分かれています。この課題に一貫性を持たせるために、MS-DOS 5.0バージョンを使用します。バイトはビッグエンディアンとして順序付けられ、バイト0x00を左端、バイト0x1Fを右端として呼び出します。 以下は、関連するセクションの簡単な概略図と、各セクションの出力(太字)を示しています。 最初の11バイトはASCII形式のファイル名です(これが有名な8.3ファイル名の由来です-ファイル名に8バイト、拡張子に3バイト)。これらは単純なASCIIエンコーディングであり、ピリオド(。)を含むASCIIとして出力する必要があります。 注:8部分と3部分の両方にスペースを埋めて、完全な長さのエントリを作成します。出力はスペースを無視する必要があります(つまり、出力しないでください)。 ファイル拡張子は空(つまり、すべてのスペース)である場合があります。その場合、出力はドットを出力しません。 ASCIIは下位7ビットのみを使用するため、バイトにはすべて先頭に0。が付きます。 次のバイト(0x0b)は、次のビットマスクです。 0x01読み取り専用-出力RO 0x02非表示-出力H 0x04システム-出力S 0x08ボリュームラベル-出力VL。ファイルサイズ(以下)は、実際のエントリに関係なく0として出力される必要があります。 0x10サブディレクトリ-出力SD。ファイルサイズ(以下)は、実際のエントリに関係なく0として出力される必要があります。 0x20アーカイブ-出力A 0x40デバイス-このチャレンジでは無視されます。 0x80予約済み-このチャレンジでは無視されます。 これはビットマスクであるため、複数のフラグが可能です-適用可能なすべての出力は、任意の順序で連結する必要があります。例えば、0xffとすることができるROHSVLSDA(または他の任意の組み合わせ)。 次の2バイト(0x0cおよび0x0d)は、MS-DOS 5.0では使用されません。 次の2バイト(0x0eおよび0x0f)は、次の作成時間です。 ビット15〜11は、24時間形式の時間である-出力00に23 ビット10から5は分である-出力00に59 ビット4から0は秒/ 2です-出力00から58(秒は2秒の解像度のみであることに注意してください) 明確にするために:hhhhhmmmmmmsssssビッグエンディアンで書かれたとき。 次の2バイト(0x10および0x11)は、次の作成日です。 ビット15から9は年です- 最大2107で1980を出力します0127 ビット8から5は月です-出力1から12(先行ゼロの有無にかかわらず) ビット4から0は日-出力0から31(先行ゼロの有無にかかわらず) 明確にするために:yyyyyyymmmmdddddビッグエンディアンで書かれたとき。 次の2バイト(0x12および0x13)は最終アクセス日です。MS-DOS 5.0で使用されていますが、この課題ではこの部分を無視しています。 次の2バイト(0x14および0x15)は、MS-DOS 5.0では使用されません。 次の2バイト(0x16および0x17)は最終更新時刻であり、上記の作成時刻と同じ形式に従います。 次の2バイト(0x18と0x19)は最終更新日で、上記の作成日と同じ形式に従います。 次の2バイト(0x1aおよび0x1b)は、ディスク上のファイルのクラスターの場所です。この課題ではこの部分を無視しています。 最後の4バイト(0x1c、0x1d、0x1e、および0x1f)は、VLまたはSDフラグが設定されている(上記)場合を除き、符号なし整数として出力されるファイルサイズです。0 視覚的表現 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \______________________________FILENAME________________________________________________/\_ATTR_/\___NOTUSED____/\_CREATIONTIME_/\_CREATIONDATE_/\__LASTACCESS__/\___NOTUSED____/\_MODIFIEDTIME_/\_MODIFIEDDATE_/\___NOTUSED____/\___________FILESIZE___________/ 入力 便利な形式の単一の32バイトワード(256ビット)。 これは、文字列としてかもしれない1と0、いくつかの符号なしとしてintS、ブール値のアレイ、等 入力に使用している形式を回答で指定してください。 …

10
クォータニオンの解析
まだ知らない場合、クォータニオンは基本的に4部構成の数字です。この課題のために、実コンポーネントと3つの虚コンポーネントがあります。虚数成分は、接尾辞i、jで表されkます。例えば、1-2i+3j-4kと四元数である1実数成分であり、かつ-2、3及び-4虚数成分です。 この課題では、文字列形式のクォータニオン(例"1+2i-3j-4k")を解析して、係数のリスト/配列(例[1 2 -3 -4])にする必要があります。ただし、クォータニオン文字列はさまざまな方法でフォーマットできます... それは正常かもしれません: 1+2i-3j-4k これは、不足している用語を持っている可能性があります1-3k、2i-4k(あなたが不足している用語を使用している場合は、出力0これらの用語について) これは、係数が欠落している可能性がありますi+j-k(この場合、これは、と等価である1i+1j-1k言い換えれば、。 、i、jまたはk前の数字を有するものとすることなく、1デフォルトで前方に) 正しい順序ではない可能性があります。 2i-1+3k-4j 係数は、単に整数または小数にすることができます。 7-2.4i+3.75j-4.0k 解析中に注意すべきことがいくつかあります。 常に用語+または-用語の間にあります 少なくとも1つの用語を含む有効な入力が常に渡され、文字は繰り返されません(j-jsはなし) すべての数値は有効であると想定できます あなたがしたい場合の解析後に別の形式に番号を変更することができます(例:3.0 => 3、0.4 => .4、7 => 7.0) 解析/クォータニオンのビルトインと標準の抜け穴は許可されていません。これにはevalキーワードと機能が含まれます。入力は単一の文字列で、出力はリスト、配列、空白で区切られた値などになります。 これはcode-golfであるため、バイト単位の最短コードが優先されます。 多数のテストケース 1+2i+3j+4k => [1 2 3 4] -1+3i-3j+7k => [-1 3 -3 7] -1-4i-9j-2k => [-1 -4 -9 -2] 17-16i-15j-14k => [17 -16 …

18
回転対称性のある数
整数、出力所与truthyのそれは同じ逆さまである場合、値または(180°回転)falsyそうでない場合、値を。 0、1、及び8回転対称性を持っています。6となり9、逆もまた同様です。 真実の結果を生み出す一連の数字:OEIS A000787 0, 1, 8, 11, 69, 88, 96, 101, 111, 181, 609, 619, 689, 808, 818, 888, 906, 916, 986, 1001, 1111, 1691, 1881, 1961, 6009, 6119, 6699, 6889, 6969, 8008, 8118, 8698, 8888, 8968, 9006, 9116, 9696, 9886, 9966, 10001, 10101, 10801, 11011, 11111, 11811, 16091, …
27 code-golf  number  sequence  decision-problem  code-golf  string  parsing  c  code-golf  sorting  integer  code-golf  number  sequence  rational-numbers  graphical-output  atomic-code-golf  assembly  box-256  code-golf  geometry  tips  python  code-golf  number  sequence  arithmetic  number-theory  code-golf  ascii-art  kolmogorov-complexity  geometry  code-golf  graphical-output  code-golf  math  code-golf  grid  cellular-automata  game-of-life  code-golf  string  subsequence  code-golf  arithmetic  rational-numbers  code-golf  tips  dc  code-golf  ascii-art  kolmogorov-complexity  date  code-golf  string  primes  code-golf  string  natural-language  conversion  code-golf  sequence  code-golf  number-theory  primes  base-conversion  code-golf  math  primes  base-conversion  code-golf  ascii-art  fractal  code-golf  matrix  code-golf  math  tips  geometry  python  string  code-challenge  keyboard  code-golf  graphical-output  code-golf  string  code-golf  number  sequence  cops-and-robbers  number  sequence  cops-and-robbers 

4
正規表現を逆にする
チャレンジ 有効な正規表現が与えられた場合、同じ文字列のセットに一致するが逆の正規表現を出力します。 タスク この課題は、最も基本的な正規表現の操作を使用しています:^、$、?、+、*、[]、{}、|。キャプチャグループなどの複雑なものはありません。特殊文字はエスケープできます。 サンプル入出力 注:無効な入力は決して与えられず、通常、与えられた入力に対して複数の可能な答えがあります! Input | Sample Output -----------|------------- abc | cba tuv? | v?ut a(b|c) | (c|b)a 1[23] | [23]1 a([bc]|cd) | (dc|[bc])a ^a[^bc]d$ | ^d[^bc]a$ x[yz]{1,2} | [yz]{1,2}x p{2} | p{2} q{7,} | q{7,} \[c[de] | [de]c\[ ab[c | <output undefined> a(?bc) | <output undefined> a[]]bc …

30
chmodをデコードします
チャレンジ 3桁の8進数の許可番号を指定し、付与する許可を出力します。 chmod UNIX OSでは、chmodコマンドを使用してファイル許可を変更します。chmodを使用する方法はいくつかありますが、今日注目するのは8進数のアクセス許可を使用することです。 許可番号の3桁は別の人を表しています: 最初の数字は、ユーザーの権限を表します 2桁目はグループの権限を表します 最後の数字は、他の人の許可を表します 次に、以下に示すように、各数字は許可を表します。 Key: number | permission 7 | Read Write and Execute 6 | Read and Write 5 | Read and Execute 4 | Read only 3 | Write and Execute 2 | Write only 1 | Execute only 0 | None …

15
Transpile WordMath
私たちは皆、このようなオンラインの「数学hax」を見てきました。 Think of a number, divide by 2, multiply by 0, add 8. そして、魔法によって、誰もが8番になります! 言語 「WordMath」と呼ばれる上記のテキストの構文を使用するプログラミング言語を定義しましょう。WordMathスクリプトは、次のテンプレートに従います。 Think of a number, <commandlist>. これは基本的に、最初のアキュムレーターとして(STDINからの入力として)数値を取得し、その数値に対してすべてのコマンドを実行し、結果を出力します。 コマンドは区切り文字,(コンマ+スペース)で区切られます。有効なコマンドは次のとおりです(#負でない整数を表すことに注意してください)。 add #/ subtract #-アキュムレーターから値を加算/減算します。 divide by #/ multiply by #- floordiv指定された値によって乗算/アキュムレータ。 subtract from #-に似てsubtractいますが、acc = # - acc代わりにacc = acc - # repeat-最後のコマンドを再度実行してください。これを最初のコマンドにすることはできませんが、複数の連続した繰り返しをサポートする必要があります。 チャレンジ あなたの仕事は、入力として有効なWordMathスクリプトを取り、プログラムや関数を作成することです transpilesあなたのコードが入っている同じ言語で-有効なフルプログラムにそれを。 たとえば、私のコードがPython …

5
2次元構文を解析する
バックグラウンド アリスとボブは、すべてのPPCGチャレンジに勝つためにゴルフ言語を作成しています。アリスは> <>のような2次元言語を作成したいと考えていますが、ボブはJのようなプレフィックスとインフィックスの構文を好みます。妥協として、2次元のプレフィックスとインフィックスの言語を作成することにしました。パーサーは書くのが面倒で、あなたの助けが必要です! 構文仕様 アリスとボブの言語には、小文字のASCII文字で表される変数と、大文字のASCII文字で表される関数があります。関数は、1つまたは2つの引数で呼び出すことができます。プログラムは、文字の矩形グリッドで、スペース、および左上隅には、スペースを含めることはできません。これは有効なプログラムの例です:a-zA-Za-zA-Z F Gy H R x プログラムが解析されると、1文字の変数と形式<func>(<arg>)またはの関数呼び出しを含むCスタイル言語(C、Java、Python ...)の式に変換されます<func>(<arg1>,<arg2>)。たとえば、上記のプログラムは次の式になります。 F(H(R(x)),G(x,y)) 解析プロセスの詳細は次のとおりです。 スペースは単なるフィラーであるため、解析されません。 すべての変数a-zは常にそれ自体として解析されます。 すべての関数A-Zは、関数呼び出しとして解析されます。その引数は、グリッドの下でこの順序で右にある最も近い式です。これらのいずれかのみが存在する場合は、それが唯一の引数として与えられます。すべての関数には、グリッドに少なくとも1つの引数があると仮定できます。 上記の例では、変数xとyはそれ自体として解析されます。この関数Rはx、その下とその右に何もないので、1引数呼び出しとして解析されますR(x)。同様に、の下にあるため、Hとして解析されます。関数はその下と右にあるため、として解析され、同様にのために解析されます。左上隅で解析される式は、解析プロセスの結果です。H(R(x))RGxyG(x,y)F 入出力 入力は、空でない長方形の文字配列です。これは常にアリスとボブの言語で有効なプログラムになりますが、出力には使用されない表現が含まれる場合があります。出力は、上記のプロセスの結果として解析された式になります。 ルールとスコアリング 関数の完全なプログラムを書くことができます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース これらは、形式の間に与えられ、ケース間にgrid <newline> expressionハイフン---があります。SE形式では一部の行が空白のままになりますが、空白で埋める必要があります。 x x --- x y z x --- Fx F(x) --- Fx y F(y,x) --- ABu A(B(u)) --- G H k G(H(k)) --- ABCA …

9
文字列の非親子化
適切に括弧で囲まれた文字列を入力として、一致する括弧内(またはすべての括弧の外側)にある空でないすべての部分文字列のリストを、ネストされた括弧を削除して出力します。各サブストリングは、まったく同じ一致する括弧内の文字のシーケンスである必要があります。部分文字列は深さの順にリストする必要があり、同じ深さの部分文字列は文字列に現れる順にリストする必要があります。入力が常に正しく括弧で囲まれていると仮定します。 入力には、小文字のASCII文字と括弧のみが含まれていると想定できます。 答えは、文字列が与えられたときに文字列のリストを返す関数でなければなりません。 例: 'a(b)c(d)e' -> ['ace', 'b', 'd'] 'a(b(c)d)e' -> ['ae', 'bd', 'c'] 'a((((b))))' -> ['a', 'b'] 'a()b' -> ['ab'] '' -> [] 'a' -> ['a'] '(((a(b)c(d)e)f)g)h' -> ['h', 'g', 'f', 'ace', 'b', 'd'] 'ab(c(((d)ef()g)h()(i)j)kl)()' -> ['ab', 'ckl', 'hj', 'efg', 'i', 'd'] 最少バイトが勝ちます。

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 

14
小包を解析する
マークマイメールチャレンジでの支援のおかげで、PPCG-Postは生成されたバーコードですべての小包に正常にスタンプしました! 次に、それらをデコードします。 このチャレンジでは、Mark My Mailチャレンジから生成されたバーコードを指定して、プログラムがそれをデコードし、エンコードされた整数を返します。 しかし、気をつけて!バーコードが上下逆になっている可能性があります... 4ステートバーコード エンコードの課題を逃した場合は、どのようなバーコードについて話しているのかを知る必要があります。4状態バーコードは、4つの可能な状態を持つバーの行で、それぞれが4を超える整数を表します。 | | Bar: | | | | | | Digit: 0 1 2 3 ASCIIでレンダリングされたバーコードは3行のテキストを取り、パイプ(|)文字を使用してバーの一部を表し、スペース()を使用して空のセクションを表します。各バーの間に1つのスペースがあります。バーコードの例は次のようになります。 | | | | | | | | | | | | | | | | | | | | | | | | | | | …

10
TIO回答をCMC回答に変換する
一度便利なことをしましょう。 Try It Onlineのcodegolf提出からのテキストを考慮して、同等のChat Mini Challenge提出を作成します。 Language, N bytes: [`code`](URL) または(提出が1バイトの場合-TIOは必要な場合にのみ最初の行に末尾のsを追加します) Language, 1 byte: [`code`](URL) あなたは提出を仮定することができます 一行しかない バッククォートを含まない(`) 先頭に空白がない 以下の例のような通常の形式です。コード行は 、HTMLタグ(<pre><code>… </code></pre>)ではなく、4つのスペース()でインデントされます。つまり、末尾の空白はありません。 提出には、構文強調タグが含まれている場合があります。最後の例を参照してください。 オプションで、タイトルテキストを含めることができます…url "Language - Try It Online"。 例 与えられた # [05AB1E], 1 byte Ô [Try it online!][TIO-j3v72bss] [05AB1E]: https://github.com/Adriandmen/05AB1E [TIO-j3v72bss]: https://tio.run/##MzBNTDJM/f//8JT//zNSgSAnJycfDAA "05AB1E – Try It Online" 帰る 05AB1E, …

2
インシデントトークナイザーを書く
バックグラウンド インシデントは、トークンのリストが事前に決定されておらず、入力から推測されるという点で、かなり珍しいプログラミング言語です。そのため、インシデントプログラムのトークン化は、特に効率的に行う場合は特に困難です。このタスクは、それを自分で行うことです。 タスク プログラムには入力として文字列が与えられます。インシデントがトークン化に使用するアルゴリズムは次のとおりです。 入力の部分文字列として発生するすべての文字列を正確に3つの方法で識別します(つまり、入力内にその文字列が正確に3回出現します)。 別のそのような文字列の部分文字列であり、これらのいずれかの文字列を破棄し(例えば、入力のためにababab、唯一の残りの文字列は次のようになりabません、aまたはbので、aとbの両方のサブストリングですab)。 入力内で重複する文字列を破棄します。(たとえば、のaaaa3つのコピーが含まれていますaaが、これらのコピーは2番目と3番目の文字で重複しているため、破棄されます。同様に、のabababa3つのコピーabと3つのコピーがbaありますが、2番目から6番目の文字はそれぞれ重なりabとba、両方そうabとba)は廃棄されるであろう。 この時点で残っている文字列は、プログラムで使用されるトークンです。元の入力をこれらのトークンのシーケンスにトークン化します(前のステップでの破棄のため、それを行う方法は1つしかありません)。トークンの一部ではない入力の文字はコメントとして扱われ、破棄されます。 プログラムは入力として文字列を受け取り、出力として文字列の対応するトークン化(それぞれが文字列として表されるトークンのリスト)を返す必要があります。さらに、これは少なくとも中程度の効率で実行する必要があります。具体的には、プログラムは2次時間( "O(n²)")以上で実行する必要があります。(ちなみに、2次よりも速くなることはほぼ確実に可能ですが、これは最高速のアルゴリズムではないため、複雑な範囲内に収まる最高のアルゴリズムを自由に使用してください。) 明確化 理論上、インシデントプログラムには256オクテットのいずれかを含めることができますが、このチャレンジの目的では、プログラムが印刷可能なASCII(スペースを含む)、および改行とタブから形成された入力のみを処理することは許容されます。(すべての既知のインシデントプログラムは、このサブセットに制限されています)。スペース/改行/タブは特別ではなく、トークンの途中に表示されることに注意してください。インシデントは256オクテットすべてを不透明として扱います。 「二次時間」の定義は、「入力のサイズが2倍になった場合、プログラムは定数に4倍を加えただけ遅くなります」、つまりt(x)がプログラムにかかる最大時間サイズxの入力を処理する場合、すべてのxに対してt(2 x)<4 t(x)+ kとなるような定数kが必要です。文字列の比較には、文字列の長さに比例した時間がかかることに注意してください。 あなたのプログラムは理論的には無制限のメモリを持ち、無制限の整数を使用するあなたの言語の(おそらく仮定の)バリアントで実行される場合、任意の長さの入力プログラムを処理できるはずです言語の整数またはメモリは実際には有限の大きさです)。(複雑さを計算する目的で)入力の長さ以下の整数を一定時間で比較できると仮定することができます(たとえば、入力を単一の整数、彼らは持っている桁数に比例して比較するのに時間がかかります)。 上記のアルゴリズムと同じ手順に従わない場合でも、同じ結果が得られる限り、複雑性の範囲内に収まる任意のアルゴリズムを使用できます。 このパズルは、実際に出力をフォーマットすることではなく、入力をトークン化することに関するものです。ご使用の言語でリストを出力する最も自然な方法があいまいな形式を含む場合(たとえば、文字列にリテラル改行が含まれる場合は改行で区切られ、文字列間に区切り文字がない場合)、出力があいまいになるという事実を心配しないでください(リストが実際に構築されている限り)。テストを支援するために、明確な出力を生成するサブミッションの2番目のバージョンを作成することもできますが、元のバージョンはスコアリングにカウントされるバージョンです。 テストケース 次の入力文字列の場合: aaabcbcbcdefdfefedghijghighjkllkklmmmmonono-nonppqpq-pqprsrsrstststuvuvu プログラムは次の出力リストを生成する必要があります。 a a a bc bc bc d e f d f e f e d gh gh gh k l l k k l pq pq pq …

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