PerlAnybatross

Par: 250

Hole 2: BPEagle

アルファベット小文字と半角スペースを用いて分かち書きされたテキストが標準入力で与えられます。このテキストを以下のルールに従って圧縮してください。

1. テキストを半角スペースで分割し、単語にわけます

入力例: launchpad launchsite launchcrew

処理例: ["launchpad", "launchsite", "launchcrew"]

2. それぞれの単語の中で、隣り合う文字についてペアを作ります

処理例: ["la", "au", "un", "nc", "ch", "hp", "pa", "ad", "la", "au", "un", "nc", "ch", "hs", "si", "it", "te", "la", "au", "un", "nc", "ch", "hc", "cr", "re", "ew"]

3. それぞれのペアの出現頻度を調べます

処理例: { "la": 3, "au": 3, "un": 3, "nc": 3, "ch": 3, "hp": 1, "pa": 1, "ad": 1, "hs": 1, "si": 1, "it": 1, "te": 1, "hc": 1, "cr": 1, "re": 1, "ew": 1 }

4. 最も多いペアを1つ見つけてそれをAに置き換えて元の文に戻します。また置き換えたペアを記録します

最も出現頻度が多いペアが複数ある場合は、文章中で最初に出現したものを選びます。

また、置き換えたペアは辞書の形で記録します。辞書のキーはA, B, C...の順に割り当てます。

処理例: ["Aunchpad", "Aunchsite", "Aunchcrew"], { "A": "la" }

5. 2〜4を繰り返します。全ての頻度が1になるまで繰り返します

  1. ["Aunchpad", "Aunchsite", "Aunchcrew"], { "A": "la" }
  2. ["Bnchpad", "Bnchsite", "Bnchcrew"], { "A": "la", "B": "Au" }
  3. ["Cchpad", "Cchsite", "Cchcrew"], { "A": "la", "B": "Au", "C": "Bn" }
  4. ["Dhpad", "Dhsite", "Dhcrew"], { "A": "la", "B": "Au", "C": "Bn", "D": "Cc" }
  5. ["Epad", "Esite", "Ecrew"], { "A": "la", "B": "Au", "C": "Bn", "D": "Cc", "E": "Dh" }

6. 最終的に圧縮されたテキストと置き換えたペアを以下の形で出力します

1行目が置き換えたペア(辞書)をカンマ区切りで表したもの、2行目が圧縮されたテキストになります。

出力例:

A:la,B:Au,C:Bn,D:Cc,E:Dh
Epad Esite Ecrew

Leaderboard
Rank Score Name Code bytes Language
-147 mame 103 Ruby
-145 tompng 105 Ruby
-143 nsfisis 107 Ruby
-142 kurain 108 Ruby
-141 orisano 109 Ruby
-141 alpaca-tc 109 Ruby
-140 uskey512 110 Ruby
-139 mihyaeru21 111 Ruby
-137 ucks 113 Ruby
-134 ken39arg 116 Ruby
-119 moznion 131 Perl
-101 いっちー 149 Perl
-95 takaram 155 Ruby
-90 alcea 160 Python
-80 tmtms 170 Ruby
-67 ohbarye 183 Ruby
-60 uskey512 190 Perl
-55 progfay 195 Python
-42 ydah 208 Ruby
-36 ukzk 214 Ruby
-23 john smith 227 Perl
-7 nsfisis 243 Perl
+33 takaram 283 PHP
+63 nsfisis 313 Python
+71 nsfisis 321 PHP
+71 progfay 321 JavaScript
+71 do7be 321 JavaScript
+125 nsfisis 375 JavaScript
+234 piro 484 PHP
+334 Konboi 584 Python
+440 fujiwara 690 Perl
+688 pastak 938 JavaScript
+1476 shmokmt 1726 Ruby
+2169 stefafafan 2419 Perl
+2229 katsyoshi 2479 Ruby
+2715 yamamoto 2965 Perl
+2798 mihyaeru21 3048 Perl
+3284 3534 PHP
+3380 マコピー 3630 PHP
+3532 いっちー 3782 JavaScript

Write Code Here

さんの回答

結果

提出が完了しました。

FAQ

Scoreの計算方法

Scoreは提出されたコードがACの場合にのみ定まります。

Scoreの計算式は 提出されたコードの総バイト数 - Holeに設定されたParの数で決まります。

Statusの意味

AC
Accepted 正答です。テストが通り、結果が受理されています。
今までACになった最も短い小さいScoreのコードはランキングに掲載されます。
WA
Wrong Answer 誤答です。テストが失敗しました。
ランキングには掲載されません。
TLE
Time Limit Exceeded テストが指定した秒数以内に終了しませんでした。WAと同じ扱いです。
ジャッジシステムの起動遅延などでTLEになる場合があります。その場合は再度Submitしてください。

標準エラー出力について

テストは標準出力のみ見ます。標準エラー出力は無視されます。

ランタイムについて

各言語ランタイムはWASM/WASI Preview 1ランタイム上で動作しています。バージョンやランタイムは以下です。

Perl
github.com/6over3/zeroperlを元に独自ビルド Perl 5.42.0
Ruby
github.com/ruby/ruby.wasm Ruby 3.4 full
Python
github.com/brettcannon/cpython-wasi-build Python 3.14.0
JavaScript
github.com/quickjs-ng/quickjs QuickJS NG v0.11.0 --std --script
PHP
github.com/vmware-labs/webassembly-language-runtimes PHP 8.2.7 CLI版
提出期間終了

提出期間は終了しました。ご参加いただきありがとうございました。

提出エラーが発生しました。

Status:

Message:

Register
登録が完了しました

Loginボタンからログインしてください

PerlAnybatross powered by KAYAC Inc.