今日の使命は、テキストコンプレッサーを発明することです。
仕事
次の2つの関数を作成します。
パッカーは、 ASCII文字(U + 007FにU + 0000)の文字列を受け取り、可能な最も少ない文字を含む、Unicode文字列(U + 10FFFFにU + 0000)を出力する機能です。
アンパッカーは、エンコードされたUnicode文字列を受け取り、正確に元のASCII文字列を出力する関数です。
入力
許可される入力は、ASCII文字列(パッカー用)とパックされたUnicode文字列(アンパッカー用)のみです。ユーザー入力なし、インターネット接続なし、ファイルシステムの使用なし。
あなたの関数はこの英語の単語のリストにアクセスできます。このリストをローカルのtxtファイルとして使用するか、ソースコードのコンテンツを文字列または文字列の配列としてコピーできます。
以下のスニペットを関数にハードコーディングすることはできません。
出力
両方の関数の唯一の許可された出力は文字列です。
アンパッカーの出力には、パッカーの入力とまったく同じ文字が含まれている必要があります。
入力と出力は、すべてのUnicode(UTF-8 / 16/32、GB18030、...)をサポートする任意の文字エンコードを使用できます。スコアは出力内のUnicode文字の数にのみ依存するためです。ただし、使用しているエンコードを正確に指定してください。
出力内のUnicode文字の数をカウントするには、次のツールを使用できます。http://mothereff.in/byte-counter
得点
エントリは、次の10個のテキストスニペット(このフォーラムで取り上げたもの)をパックおよびアンパックできる必要があります。
スコアは、10個のパックされた文字列のサイズ(Unicode文字)+ 2つの関数のサイズ(Unicode文字)の合計になります
辞書を使用する場合は、辞書のサイズをカウントしないでください。
エントリには、各スニペットの「スコア」とパックバージョンを含めてください。
最低スコアが勝ちます。
データ
スコアを計算するためにエンコードするスニペットは次のとおりです。
1:Rick Rollの歌詞(1870b):ゴルフをコーディングするのは見知らぬ人ではありません。ルールを知っているので、私もそうです。
私たちは愛する見知らぬ人ではありません あなたはルールを知っているので、私もそうです 完全なコミットメントが私が考えていることです 他の男からこれを取得することはありません 私の気持ちを伝えたいだけです 理解させる あなたをあきらめるつもりはありません 失望させない 走り回ってあなたを捨てない 泣かないで さよならを言うつもりはない 嘘をついて傷つけない 私たちは長い間お互いを知っていました あなたの心は痛むが あなたはそれを言うにはあまりにも恥ずかしがり屋です 内部で私たちは何が起こっているかを知っています 私たちはゲームを知っていて、それをプレイするつもりです そして、あなたが私にどのように感じているかを尋ねると 盲目だから見えないって言わないで あなたをあきらめるつもりはありません 失望させない 走り回ってあなたを捨てない 泣かないで さよならを言うつもりはない 嘘をついて傷つけない あなたをあきらめるつもりはありません 失望させない 走り回ってあなたを捨てない 泣かないで さよならを言うつもりはない 嘘をついて傷つけない (ああ、あきらめます) (ああ、あきらめます) (ああ) 与えない、与えない (あきらめて) (ああ) 与えない、与えない (あきらめて) 私たちは長い間お互いを知っています あなたの心は痛むが あなたはそれを言うにはあまりにも恥ずかしがり屋です 内部で私たちは何が起こっているかを知っています 私たちはゲームを知っていて、それをプレイするつもりです 私の気持ちを伝えたいだけです 理解させる あなたをあきらめるつもりはありません 失望させない 走り回ってあなたを捨てない 泣かないで さよならを言うつもりはない 嘘をついて傷つけない あなたをあきらめるつもりはありません 失望させない 走り回ってあなたを捨てない 泣かないで さよならを言うつもりはない 嘘をついて傷つけない あなたをあきらめるつもりはありません 失望させない 走り回ってあなたを捨てない 泣かないで さよならを言うつもりはない 嘘をついて傷つけない
2:The Golfer(412b):アスキーアートのゴルフ
'\。。|> 18 >> \ 」| O >>。'o | \ | / \。| / /。 ' | jgs ^^^^^^^ `^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^
3:数字のダイヤモンド(233b):このダイヤモンドを印刷
1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321 12345678987654321 123456787654321 1234567654321 12345654321 123454321 1234321 12321 121 1
4:アルファベット4回(107b):アルファベット4回印刷
abcdefghijklmnopqrstuvwxyz qwertyuiopasdfghjklzxcvbnm pyfgcrlaoeuidhtnsqjkxbmwvz zyxwvutsrqponmlkjihgfedcba
5:オールドマクドナルドの歌詞(203b):オールドマクドナルド関数
オールドマクドナルドにはEEIIOという農場があり、 そして、その農場で彼は牛、EIEIO、 ここにmoo mooがあり、そこにmoo mooがあります。 ここでmoo、そこにmoo、どこにでもmoo moo、 古いマクドナルドには、EIEIOの農場がありました!
6:Rock around the clock歌詞(144b):Rock Around the Clock
1、2、3時、4時のロック、 5、6、7時、8時ロック、 9、10、11時、12時のロック、 今夜は24時間ロックします。
7:Hello World(296b):ASCIIアートで世界に「こんにちは」と言う
_ _ _ _ _ _ _ _ | | | | ___ | | | ___ __ _____ _ __ | | __ | | | | | _ | | / _ \ | | / _ \ \ \ / \ / / _ \ | '__ | | / _` | | | _ | __ / | | (_)| \ VV /(_)| | | | (_ | | _ | | _ | | _ | \ ___ | _ | _ | \ ___()\ _ / \ _ / \ ___ / | _ | | _ | \ __、_(_) | /
8:アイルランドの祝福(210b):古いアイルランドの祝福
道があなたに会うために立ち上がりますように 追い風が常に吹いていますように 太陽があなたの顔を暖かく照らしますように 雨が畑に降りそそぐ そしてまた会うまで 神があなたを彼の手のくぼみに抱いてくださいますように
9:老婦人の歌詞がありました(1208b):老婦人がいました
ハエを飲み込んだ老婦人がいました。 彼女がそのハエを飲み込んだ理由はわかりませんが、 おそらく彼女は死ぬでしょう。 クモを飲み込んだ老婦人がいました それは彼女のなかでくすくすと揺れ動き、揺れた。 彼女はハエを捕まえるためにクモを飲み込んだ、 彼女がそのハエを飲み込んだ理由はわかりませんが、 おそらく彼女は死ぬでしょう。 鳥を飲み込んだ老婦人がいました 鳥を飲み込むなんて馬鹿げている。 彼女は鳥を飲み込んでクモを捕まえ、 彼女はハエを捕まえるためにクモを飲み込んだ、 彼女がそのハエを飲み込んだ理由はわかりませんが、 おそらく彼女は死ぬでしょう。 猫を飲み込んだ老婦人がいました 猫を飲み込むと想像してください。 彼女は鳥を捕まえるために猫を飲み込んだ、 彼女は鳥を飲み込んでクモを捕まえ、 彼女はハエを捕まえるためにクモを飲み込んだ、 彼女がそのハエを飲み込んだ理由はわかりませんが、 おそらく彼女は死ぬでしょう。 犬を飲み込んだ老婦人がいました 犬を飲み込むのはなんと豚。 彼女は猫を捕まえるために犬を飲み込んだ、 彼女は鳥を捕まえるために猫を飲み込んだ、 彼女は鳥を飲み込んでクモを捕まえ、 彼女はハエを捕まえるためにクモを飲み込んだ、 彼女がそのハエを飲み込んだ理由はわかりませんが、 おそらく彼女は死ぬでしょう。 馬を飲み込んだ老婦人がいました 彼女はもちろん亡くなりました。
10:ゲティスバーグの住所(1452b):ゲティスバーグの住所はどのくらいランダムですか
4スコアと7年前、私たちの父親はこの大陸に新しい国を生み出し、自由に考え、すべての人が平等に創造されるという命題に捧げました。現在、私たちは大規模な内戦に取り組んでおり、その国、またはそのように考えられ、献身的な国が長く耐えられるかどうかをテストしています。私たちはその戦争の大きな戦場で出会います。ここで、その国が生きるために命を捧げた人々のための最終的な休憩場所として、その分野の一部を捧げるようになりました。これを行うのは、完全に適切で適切です。しかし、より広い意味で、私たちは献身することも、奉献することも、この地を神聖にすることもできません。ここで苦労した勇敢な人たちは、生きているか死んでいるかによって、それを奉献してきました。世界はここで私たちが言ったことをほとんど気づかず、長く覚えません。しかし、彼らがここでやったことを決して忘れることはできません。むしろ、ここで戦った彼らがこれまでに気高い進歩を遂げた未完成の仕事にここで捧げることは、私たちにとって生きていることです。むしろ、ここで私たちが私たちの前に残っている偉大な仕事に専念することです-これらの名誉ある死から、私たちは彼らが最後の献身の完全な手段を与えた原因に献身します-私たちはここでこれらの死者が神の下でこの国が新たな自由の誕生を遂げ、人々によって、人々のために、人々のために、地球から滅びることがないように、無駄に死にました。
合計(非圧縮):6135文字/バイト。
楽しむ!
private static final String RICK_ROLL_RETURN = "We're no strangers to love...