Meeesesessessesseesseessedeseded upp teeexexextextを修正する


38

これは、月曜日のミニゴルフ#6に触発されています:Meeesesessess upp teeexexextext

バックグラウンド

ETHproductionは、彼の通常のWebページにテキストを入力するのが困難です。彼が数字または文字を使用するたびに、テキストはmeeesesessessesseesseessedesdesededになります。あなたの仕事は、通常の動作が達成されるように彼がタイプするのを助けることです。

変換

変換は、英数字[0-9A-Za-z]以外の文字で区切られた英数字()文字の実行に影響します。次の例では、最初の行が2番目の行に変換されます(他の行は変換の内訳を示しています)

An12num:
Annn1n12n12nn12nn12nun12nun12numn12num
A
 nn
   n1
     n12
        n12nn12n
                n12nun12nu
                          n12numn12num

特に、最初の文字以降の英数字は、最初の文字を除き、これまでの実行全体に変換されます。さらに、文字が(数字ではなく)文字の場合、文字は実行の2倍になります。

ありがたいことに、バックスペースは最後の文字を削除し、実行の開始もリセットします。

仕事

今回は、タスクは変換を実行しないことです。代わりに、入力文字列が与えられた場合、エンコードされたテキストを返さなければなりません。エンコードされたテキストは、変換されると入力になります。出力は\<char>、単一の文字としてカウントされる場合、できるだけ短くする必要があります。

テキストは次のようにエンコードされます。

\                   -> \\
backspace character -> \b
linefeed            -> \n

プログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、STDOUT(または最も近い代替)、関数の戻り値または関数(out)パラメーターを介して結果を出力できます。

テストケース

各テストケースは2行で、1行目は入力、2行目は出力です。

Heeeeeelp me. It shouldn't be messed up.
Hee \blp\b me\b. It\b sh\bou\bld\bn't be\b me\bss\bed\b up\b.

alert("Hello, world!");
al\ber\bt("He\bll\bo, wo\brl\bd!");

1223234234523456
123456

6
明確に定義されていますが、なぜ答えがないのですか?
アカンカ

1
どういうわけか私はこれを見逃した。いいスピンオフ!おそらく、後で答えを書きます。
-ETHproductions

これは私の友人は、UDP経由のテキストを送った時のことを思い出す
TRGWII

1
最終テストケースには修正が必要だと思います。最初の文字を(1毎回)実行に含めます。
レイフウィラーツ

正直なところ、私がすべきことを理解していません...ごめんなさい。いくつかの入力と出力を追加し、説明とともにいくつかの例を追加できますか?ごめんなさい。
ヤシンハジャイ

回答:


10

CJam、207

{_,1>{:E1<_0{:I2$,+E=:C+:R1>C'9>)*+:P,E,<{EP#{L0}{PRI)1}?}{PE#L{R8cP,E,-*+}?0}?}g}&}:U;LqS+'a+{_'[,_el^A,s+&,V={+}{s\V!:V{L{:BU_aL?B,,1>Bf{_2$<U_{_W=8>S8c+*+\@>j+}{?;}?}+{,}$0=}j}|\}?}%s'\8cN++'\"\bn"f+er-2<

オンラインで試す

説明:

これを書くのをほとんど忘れました:p

問題はいくつかの手順で解決されます。

  • テキストは、英数字の連続(単語と呼びましょう)と非英数字の連続(非単語)に分けられます。
  • 非単語はそのまま印刷され、単語は固定されます
  • 単語の修正は再帰的に(メモ化を使用して)行われます:可能なあらゆる方法(空の2番目のチャンクを含む)で2つのチャンクに単語を分割し、最初のチャンクを混乱させない(以下を参照)、2番目のチャンクを修正し、結果をスペースで結合します-必要に応じてバックスペース。最短のサブソリューションを取る
  • チャンクの混乱とは、混乱した場合に所定のチャンクになる、いくつかのバックスペースが続く可能性のある英数字の最小文字列を見つけることを意味します。左から右へ単純な貪欲なアルゴリズムで行われ、混乱していない文字列とその混乱したバージョンを並行して構築し、各ステップで次に必要な文字を決定します。いくつかのチャンクは混乱させることはできません

1
聖なる牛...それはCJamプログラムの1つです!よくやった。
ETHproductions
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.