ASCII テキストについて話している場合は...
これは実際に実行できると思います。また、テキストが 10000 文字を超えるという制限があるのは理由があると思います (コーディングの余地を与えるため)。
ここの人々は、文字列を圧縮できないと言っていますが、それでも圧縮できます。
なんで?
要件: 元のテキストを出力する
テキストはデータではありません。入力テキストを読み取るときは、ASCII 文字 (バイト) を読み取ります。内部に印刷可能な値と印刷できない値の両方があります。
たとえば、次のようにします。
ASCII values characters
0x00 .. 0x08 NUL, (other control codes)
0x09 .. 0x0D (white-space control codes: '\t','\f','\v','\n','\r')
0x0E .. 0x1F (other control codes)
... rest of printable characters
テキストを出力として出力する必要があるため、範囲 (0x00-0x08,0x0E-0x1F) には関心がありません。元のデータではなく元のテキストを返す必要があるため、別の格納および取得メカニズム (バイナリ パターン) を使用して入力バイトを圧縮できます。保存された値の意味を再計算し、それらをバイトに再調整して印刷できます。とにかくテキストデータではないデータのみを効果的に失うため、印刷も入力もできません。WinZip がそれを行う場合、それは大きな失敗になりますが、あなたが述べた要件では、それは問題ではありません。
要件には、テキストが 10000 文字であり、255 文字中 26 文字を節約できると記載されているため、パッキングに損失がなければ、効果的に約 10% のスペースを節約できます。つまり、「解凍」を 1000 (10% 10000 の) 文字を達成できます。10 バイトのグループを 11 文字として扱い、そこから 229 の範囲の外挿法によって te 11 を外挿する必要があります。それができれば、問題は解決可能です。
それにもかかわらず、それには賢い思考と、実際に 1 キロバイトでそれを実行できるコーディング スキルが必要です。
もちろん、これは単なる概念的な回答であり、機能的な回答ではありません。これを達成できるかどうかはわかりません。
しかし、私はこれに 2 セントを与えたいという衝動に駆られました。
あなたの問題の本当の問題は、問題と要件を理解することです。