2
Rosetta Stoneチャレンジ:Run-Length Encoding v2.0
ロゼッタストーンチャレンジの目標は、できるだけ多くの言語でソリューションを作成することです。あなたのプログラミング多言語主義を自慢して見せてください! チャレンジ ランレングスエンコーディングを最初に実行しましたが、単一文字のランのみを考慮しました。もちろん、複数の文字の実行を考慮すると、さらに節約できる場合があります。 例を挙げましょうaaaxyzxyzxyzdddd。これはに圧縮できます3a3{xyz}4d。あなたの仕事は、大文字と小文字を区別する文字とスペースの文字列を与えられ、複数文字の実行に対してランレングスエンコーディングを使用して最適に圧縮する関数のプログラムを書くことです。 関数の引数STDINまたはARGVを介して入力を受け取り、結果を返すか、STDOUTに出力できます。 実行は入れ子にしてaaabbbaaabbbはいけません。したがって3a3b3a3b、ではなく 、でなければなりません2{3a3b}。つまり、文字列は1回のパスでエンコード(またはデコード)する必要があります。 最適な圧縮の結果 ランレングスエンコーディングの素朴なアプリケーションが次善の結果をもたらす可能性があるいくつかの例: abab 「圧縮」してはならない 2{ab} aaaabcdeabcde圧縮されてはならない4abcdeabcdeが、3a2{abcde}その代わり。 2つの最適なバージョン(例:aaand 2aまたはabcabcandおよび2{abc})がある場合、どちらの結果でも問題ありません。 例 Input Output aa aa -or- 2a aaaaaAAAAA 5a5A ababa ababa abababa a3{ba} -or- 3{ab}a foo foo bar 2{foo }bar aaaabcdeabcde 3a2{abcde} xYzxYz xYzxYz -or- 2{xYz} abcabcdefcdef abcab2{cdef} pppqqqpppqqq 3p3q3p3q pppqqqpppqqqpppqqq 3{pppqqq} 得点 各言語は、最短のエントリーを書ける人に関して個別のコンテストですが、全体的な勝者は、これらのサブコンペティションのほとんどを勝つ人です。これは、多くの珍しい言語で答える人が有利になることを意味します。コードゴルフは、言語に複数の解決策がある場合のタイブレーカーです。プログラムが最も短い人がその言語の功績を認められます。 同点の場合、勝者は2番目に多く送信された人(以下同様)になります。 …