仕事
A-Z
独自のお気に入りのスキームを使用して、ゼロと1のみを使用して、大文字のアルファベット()のみで構成される文字列をエンコードします。しかし、ルールはそれほど単純ではありません!
ルール
- プログラム/関数は、長さ8の有効な入力文字列を正しく処理する必要があります。
- 結果は、すべての入力に対して同じ長さでなければなりません。
- 結果は、入力ごとに異なる必要があります。
- 結果はできるだけ短くする必要があります。
- 結果はゼロと1のバランスがとれている必要があります(ゼロの数と同様の数があります)。それらは等しくする必要はありません(つまり、完全にバランスが取れています)が、あなたのスコアはそのために罰せられます。
エンコードをデコードするプログラム/機能を提供する必要はありません。
入出力
- の代わりに26個の異なる印刷可能なASCII文字のセットを受け入れることを決定でき
A-Z
ます。 - およびの代わりに、異なる印刷可能なASCII文字の任意のペアを出力することを決定できます。
0
1
- ビット文字列の代わりに整数を出力することはできません。これは、先頭にゼロが含まれている可能性があり、実際にルール2を満たしているかどうかが不明だからです。
- デフォルト(
A-Z
入力および01
出力)から逸脱することに決めた場合は、サブミットで入力/出力文字セットを指定する必要があります。
得点
- 基本スコア:コードサイズ、またはプログラムが空の場合は1。
- 罰則
- 長さのペナルティ:乗算
1.5 ** (encoded length - 42)
- 短くしてもボーナスはありません。42は、アルファベットサイズ26の8長ストリングの完全にバランスの取れたエンコードの最小長です。
- 不均衡の場合のペナルティ:乗算
2 ** max(abs(ones - zeros) for every valid input of length 8)
、ここでones
およびzeros
は、それぞれ各出力の1および0のカウントです。 - 提出には、ペナルティ値に関する最悪の例(入力/出力)または理論的な説明を表示する必要があります。
- 長さのペナルティ:乗算
- 最も低いスコアが勝ちます。
提出例
架空のエソラン、0バイト、スコア74733.8906
空のプログラムが入力文字のすべてのASCIIコードをバイナリで出力する仮想のエゾランを次に示します。
たとえば、AAAAAAAA
入力として指定すると、プログラムは1000001
連続して8回印刷します10000011000001100000110000011000001100000110000011000001
。
入力アルファベットはに選択されますCEFGIJKLMNQRSTUVXYZabcdefh
。この方法では、すべての文字はバイナリで7桁に変換され、ゼロから1までのカウントは文字ごとに1つだけ異なります(バイナリに変換すると、すべて3つの1と4つの0があります)。
出力の長さは常に56であり、最悪の場合の不均衡はのような入力で発生し、CCCCCCCC
ゼロは1より8倍多く出現します。
したがって、この提出のスコアは1.5 ** (56 - 42) * 2 ** 8 == 74733.8906
です。