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

文字列の使用と操作を通じて特定の問題を解決するための競争。

30
!インサート!!n!b!e!t!w!e!e!n!
ここから投稿。 この課題は、この質問から高度に「抽出」されています。@Akababaに感謝します! このタスクでは、文字列の先頭とすべての文字の後に感嘆符を挿入する必要があります。 ルール 空でない文字列の入力が常にあります。入力にもタブは含まれません。入力には、非拡張ASCII印刷可能文字と改行のみが含まれると想定できます。 言語が改行を検出できない限り、入力には末尾の改行は含まれません。 これは、コードとゴルフのコンテストです。最短の答えが勝つはずです。 例 4つの改行は、改行で区切られた5つの感嘆符になります。これをマークダウンテキストとして配置するのは非常に難しいため、代わりにこれを記載します。 1 2 3 4 5 6 129591 129012 129127 129582 0 出力 !1!!2!!3!!4!!5!!6! !1!2!9!5!9!1!!1!2!9!0!1!2!!1!2!9!1!2!7!!1!2!9!5!8!2! ! !0! asd afjoK ak:e kPrLd フォジョ; KFO KFkepjgop sgpaoj faj 出力 !a!s!d!!a!f!j!o!K!!a!k!:!e! !k!P!r!L!d! !!!!!f!O!J!O!E!;! !!!!!K!F!O! !K!F!k!e!p!j!g!o!p!!s!g!p!a!o!j!!!!f!a!j! 1文字のみの基本テストケース: a 出力 !a! (オートコンプリート!冗談です、そのようなことはありません。)感嘆符が含まれています: !! !! !! !! !! …
24 code-golf  string 

18
発音並べ替え™
さまざまな派手な並べ替えアルゴリズムを知っていますが、これらのどれも発音しやすい方法で数字を提供しません。これを改善するために、私は発音リストを並べ替える最も自然な方法である発音ソート™の使用を提案します。 発音 (このチャレンジで)数字を発音するための公式ルールは、数字が1つずつ発音され、結果の文字列が辞書式順序でソートされるということです。例として、これは番号845が発音されることを意味し、"eight four five"それに応じてソートする必要があります。 負の数 負の数は、単語の前に付けて発音し"minus"ます。したがって、-23と発音され"minus two three"ます。これにより、4(4)と9(9)で始まる数字の間の負の数が出力の途中で終わることに注意してください。 GuideSoとしての発音並べ順の公式の順序は次のとおりです。 8 五 四 マイナス 九 1 セブン 六 三 二 ゼロ あれは、 8, 5, 4, -, 9, 1, 7, 6, 3, 2, 0 入力 範囲の整数のリストで、最大100個の要素が含まれます。文字列のリストとしての入力は許可されていません。ご使用の言語がリストとしての入力をサポートしていない場合、入力を個別の整数として許可することができます。[ - 999 、999 ][−999、999][-999, 999] 入力には、無効な数字や0で始まる数字(数字0自体を除く)は含まれません。通常、入力はソートされず、任意の順序で指定できます。 出力 同じ整数、発音Sort™順。数字は、ソートを取得するために発音に変換するだけであり、出力には文字列を含めないでください。 例 例では、中間のステップ(括弧で囲まれた)はガイドとしてのみ機能し、出力の一部ではありません。 [1, 2, 3] -> (['one', …

12
文化の男性を生成する
この挑戦は文化のミームメンに触発されます。 ミームには、元のキャプションの一部を空白にすること、 ああ、私もあなたは文化の人だと思います。 キャラクターが他のことを言っているように見せるため。 あなたの挑戦は、入力を与えられて、入力文字列を達成するために元の文を空白にする方法を示すプログラムを書くことです。 ルール: -文字を使用して、空白文字を表します。 入力文字列を実現するために追加の文字を追加しないでください 文字列比較は大文字と小文字を区別しないものとして扱うことができます 文字列の比較では空白を無視できます 置換が不可能な場合は、偽の値を出力します。 -必須ではありませんが、冗長な空白も同様に使用できます。 複数のソリューションが可能な場合、それらのいずれかを出力できます。 テストケース: 基本: ミーム例1 Ah, I see you're a well. > Ah, I see you're a --- -- ------- -- well. ミーム例2 Ah, I see well. > Ah, I see ------ - --- -- ------- -- well. エッジケース1: …
24 code-golf  string 

30
連続した文字を数える
文字のみを含む文字列の場合、単語に含まれる連続したアルファベットの最長実行の長さを出力します。順序は関係ありません。アルゴリズムの例では、単語をソートし、重複を削除してから、最長実行の長さを出力します。 テストケース watch -> 1 stars -> 3 antidisestablishmentarianism -> 3 backdoor -> 4 a -> 1 tutorials -> 4 たとえばantidisestablishmentarianism、文字が含まれていますabdehilmnstrます。最長の実行はとlmnでrst、両方とも長さ3です。 ノート 入力としてすべて小文字、すべて大文字、または大文字と小文字を混在させることができますが、大文字と小文字の区別は単語に関する情報をエンコードできません(つまり、最初のn文字を大文字にすることはできませんn)。 これはcode-golfであるため、バイト単位の最短回答が優先されます。

30
ASCII Pylonsを構築する必要があります!
私のアナゴルフ投稿からクロス投稿(注:ネタバレが含まれている場合があります、死後)。 次のテキストを正確に出力します。 各行に後続の空白があり、後続の改行もあります。 バイト単位の最短コードが優先されます。 !"! "#$#" #$%&%$# $%&'('&%$ %&'()*)('&% &'()*+,+*)('& '()*+,-.-,+*)(' ()*+,-./0/.-,+*)( )*+,-./01210/.-,+*) *+,-./012343210/.-,+* +,-./0123456543210/.-,+ ,-./01234567876543210/.-, -./0123456789:9876543210/.- ./0123456789:;<;:9876543210/. /0123456789:;<=>=<;:9876543210/ 0123456789:;<=>?@?>=<;:9876543210 123456789:;<=>?@ABA@?>=<;:987654321 23456789:;<=>?@ABCDCBA@?>=<;:98765432 3456789:;<=>?@ABCDEFEDCBA@?>=<;:9876543 456789:;<=>?@ABCDEFGHGFEDCBA@?>=<;:987654 56789:;<=>?@ABCDEFGHIJIHGFEDCBA@?>=<;:98765 6789:;<=>?@ABCDEFGHIJKLKJIHGFEDCBA@?>=<;:9876 789:;<=>?@ABCDEFGHIJKLMNMLKJIHGFEDCBA@?>=<;:987 89:;<=>?@ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA@?>=<;:98 9:;<=>?@ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA@?>=<;:9 :;<=>?@ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA@?>=<;: ;<=>?@ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA@?>=<; <=>?@ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA@?>=< =>?@ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA@?>= >?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?> ?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCB CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDC DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFED EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGF GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHG HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIH IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJI JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJ KLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLK LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONML MNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONM NOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPON …

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つのスペースがあります。バーコードの例は次のようになります。 | | | | | | | | | | | | | | | | | | | | | | | | | | | …

30
配列内で最も長い単語を見つける
あなたの課題は、文字列の配列を取得し、配列内の最も長い文字列を出力することです。だから ["tiny", "small", "bigger", "biggest"] 出力はになりますbiggest。 配列の2つの要素の長さが同じ場合、配列の最初に表示される要素を選択する必要があります。つまり、配列が次のようになっている場合です。 ["one", "two", "no"] 出力はoneですが、配列が次のようになっている場合: ["two", "one", "no"] 出力はtwoです。 これはcode-golfであるため、バイト単位の最短コードが優先されます。

6
ひも階段を作って
ひも階段 免責事項:これは私が提案する最初の課題です。すべてのフィードバックを歓迎します。これが重複している場合は、指摘してください。 ここにがサンドボックスの投稿へのリンクです。 ゴール このチャレンジの目標は、文字列と整数を指定して、文字列をその整数のサイズのブロックに印刷することです。単語にブロックのサイズよりも多くの文字がある場合、降順の「階段」パターンに印刷します。 ルール 上記の「階段パターン」とは、同じ単語のブロックごとに、そのブロックがその上のブロックが終了する場所から正確に開始する必要があることを意味します。質問がある場合は、テストケースを確認します(または質問します)。 単語が複数のブロックに分割されている場合、次の単語は適切な数のスペースを使用して印刷する必要があります。つまり、直前の単語の最下位ブロックと1つの空白だけで区切る必要があります。明確にするために、テストケースを確認します(または尋ねます)。 入力文字列は、印刷可能なASCII文字のみで構成されると想定できます。また、連続した複数の空白はありません。 また、整数は常に[1、+∞]の範囲にあると仮定することもできます。 末尾の空白または改行は許可されます。 I / Oには適切な方法を使用できます。 標準抜け穴適用されます。 これはcode-golfであるため、最短のコード(バイト単位、言語ごと)が優先されます。1週間後(またはそれ以降)、全体の最短回答を受け入れます。 テストケース (String, Integer) => (Output) "This is a large string", 3 => Thi is a lar str s ge ing "This is an even larger string!", 2 => Th is an ev la st …
24 code-golf  string 

6
Gif-Jif、Jif-Gif
許可を得て@Downgoatから盗まれた この課題のポイントは、「gif」の発音に関する議論を解決する(しない)ことです。 」 gifの発音は議論されており、それはjifと発音されるべきであり、そうである必要がありますが、それでも一般的に議論されています。 このチャレンジでは、単語が発音される音を表すgまたはjを持つ単語のセットが与えられます。また、gifの誤ったスペルを修正する必要のあるテキストも取得します。 これはインターネットであり、誰もが常に間違っているからです。それらを修正するのは一般的ではありません(そうではありません)。 間違った発音の例は次のとおりです。 ブリトーを食べるネズミのGIFがありました gifのスペルが間違っていますか?受け入れられない!これはすぐに修正する必要があります。 ありました(瓶のように)JIFブリトーを食べマウスは、 終わった?いいえ、あなたはまだ間違っています。 あなたはいつも間違っています これは他の方法で動作する必要があります。 でJIF猫は猫の帽子を身に着けていました この明らかなスペルミスは修正する必要があります。これを次のように修正します。 で(グラフィックのように)GIF猫は猫の帽子を身に着けていました ルール 入力は、任意の順序の文字列(文)および文字列の配列(またはコンマ区切りの文字列などの合理的な代替)です。 あなたはかかりますgし、j任意の順序で単語を。それらは別々に取られるかもしれません。 すべてのインスタンスgif文に(どのような場合には)と交換しなければならないjif (as in ___)場所___で始まる一様にランダム選択された単語であるj ためその逆文字列の配列から、副jif単語が始まるとg。 言葉ONLY gifとjif交換する必要があります(つまり、「ちょっとの間には、」変更しないでください)。それらの言葉は間違っていません。 配列内の少なくとも1つの単語がで始まり、少なくとも1つの単語がで始まることが保証されてgいjます。 大文字と小文字を区別する必要があります(例GiF-> JiF)。 プログラムまたは関数を書くことができます 標準的な抜け穴が適用されます 議論を迅速に解決する(しない)必要があります。バイト単位の最短コードが勝つ 例 1行で区切られた入力と出力: graphic, jar, jam, gram I saw a jif of how to pronounce gif that showed gif …
24 code-golf  string 

10
効率的なロボットの動き
免責事項:この質問の中で語られた物語は完全に架空のものであり、イントロを提供する目的でのみ発明されました。 私の上司は新しいおもちゃのロボットを手に入れました。彼は、単純な矢印の指示を入力して、移動できるようにしたいと考えています。これらの指示は次のとおりです。^(前方に移動する場合)<(左折する場合)、>(右折する場合)。しかし、ロボットをプログラミングしたので、彼は追加の機能を望んでいます。彼は、入力された矢印のシーケンスを変換して、ロボットが指定されたパスを取るのではなく、入力されたパスを取った場合に最終的に配置される場所によって示される目的の場所に移動するように、可能。PP&CGのメンバーであるあなたに、この仕事を手伝ってくれるようお願いします。 あなたのタスク: 矢印で構成された文字列を、入力で示された場所にできるだけ早く到達する文字列に変換するプログラムまたは関数を作成します。回転には、前後に移動するのとまったく同じ時間がかかります。 入力: 上記の矢印のストリング。必要に応じて、矢印の代わりに別の文字を使用することもできますが、回答にその事実を必ず含めてください。すべてのテストケースは通常矢印を使用します。 出力: 可能な限り効率的にロボットを目的の目的地に導く矢印のストリング(または同等の文字)。 テストケース: 提供されるソリューションは可能性にすぎず、他のソリューションが有効な場合があることに注意してください。 >^<<^^>^^ -> ^^<^ ^^^^>^^^^ -> ^^^^>^^^^ >>>^^^^^^ -> <^^^^^^ >^>^>^>^ -> (empty string) ^<^^<^^<^^^^ -> >^^>^ 得点: ロボットのメモリは限られているため、プログラムのバイト数は可能な限り少なくする必要があります。

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, …

3
ブラケットのバランスをとる
目的:ブラケットの文字列を指定し、入力文字列をブラケットのバランスが取れた文字列に変換するために必要な最小のダメラウ-レーベンシュタイン距離を出力します。 入力 入力文字列には括弧のみが含まれ、他の文字は含まれません。つまり、の任意の文字の組み合わせです(){}[]<>。入力は、文字列または文字の配列として取得できます。入力文字列について他の仮定を行うことはできません。任意の長さ(言語でサポートされている最大サイズまで)、空の場合、ブラケットのバランスがすでに取れている場合などがあります。 ダメラウ-レーベンシュタイン距離 2つの文字列間のDamerau-Levenshtein Distanceは、2つの隣接する文字の挿入、削除、単一文字の置換、および転置(スワップ)の最小数です。 出力 出力は、入力文字列と角かっこが一致する文字列との間の最小Damerau-Levenshtein Distanceである必要があります。出力は、結果のバランスの取れた文字列ではなく、数値でなければなりません。 次のように、開始ブラケットと終了ブラケットが正しい順序であり、中に文字がない場合、一対のブラケットは「一致」とみなされます。 () []{} または、その中のすべてのサブ要素も一致する場合。 [()()()()] {<[]>} (()()) サブ要素は、いくつかのレイヤーの深さにネストすることもできます。 [(){<><>[()]}<>()] <[{((()))}]> (定義については@DJMcMayhemに感謝します) テストケース Input Possible Balanced Output Empty Empty 0 [](){}<> [](){}<> 0 [(){}<> [(){}<>] 1 [(]) []() 1 [[[[[[[[ [][][][] 4 (](<>}[>(}>><(>(({}] ()(<>)[(<><>){}] 7 >]{])< []{()} 3 ([)}}>[ (){}<> 4 {<((<<][{{}>[<) …

10
リリーパッドジャンプ
この課題では、ユリのパッドで前後にジャンプするカエルをシミュレートする必要があります。池は無限に大きく、無数のスイレンの列があり、カエルは好きなだけスイレンを飛び越えることができます。 このカエルは前後にジャンプするのが好きです: 前方にジャンプした後、彼は常に後方にジャンプしますにます。 彼のジャンプを表す整数のリストが渡されます。彼のジャンプの結果を出力する必要があります。 たとえば、あなたが合格したと言う [2,3,6,8,2]: 私たちのカエルは、2つのスイレンを前方にジャンプすることから始まります。 _2 次に、3つのリリーパッドが戻ります。 3__2 次に、前方に6個のユリパッド: 3__2__6 8戻る: 8_3__2__6 最後に、2個のリリーパッドを前方に配置します(2が3を上書きする方法に注意してください)。 8_2__2__6 より明確にするために:入力は数値の配列でありS、S[K]その位置で出力する必要がありますS[K] - S[K-1] + S[K-2] - S[K-3]...。 特定の場所に複数の番号を印刷する場合は、インデックスが最も高い番号のみを印刷します。 あなたが使用することです _特定の場所が空の場合ます 数字に複数の数字がある場合、複数の場所を占めることはありません。(つまり、場所は複数の文字で構成できます) リストが空ではなく、すべての整数が0より大きいと仮定できます。 テストケース: 5 ____5 2,2 2_2 4,3,2,1 3124 5,3,2,1 _3125 2,3,6,8,2 8_2__2__6 10,3,12,4,1,12,16 ___12__3__10____41__1216 100,4,7,2,2 _______________________________________________________________________________________________4___1002_2 これはコードゴルフですので、できるだけ少ない文字で答えてください!
24 code-golf  string 

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.