Lua 5.3、108097107033101バイト、スコア28 27
load(([[REPLACE]]):gsub([[[<>]-{()}]],[[%1]]):gsub([[...]],([[]]).char))()
ここでREPLACE
は、長さ108097107033034のフリーキャラクターの文字列に置き換えられます。文字列は{}
、特定のキー位置に配置することによりデータをエンコードします。最初gsub
は、文字列を{}
sのインデックスで置き換えます(空のキャプチャグループを介して()
)。2番目gsub
は、この結果の文字列を3桁のブロックに分割し、各ブロックをASCII表現で置き換えます。
Luaの生の文字列の構文は(基本的に)[[string contents]]
であることに注意してください。これはスコアを減らすのに非常に便利です。
私が生成している(エスケープされていない)文字列はですprint"Surprise!\nHappy Birthday, Brain-Flak!"
。各文字を3桁の10進数のASCIIコードに置き換えると、が得られ112114105110116034083117114112114105115101033092110072097112112121032066105114116104100097121044032066114097105110045070108097107033034
ます。私が使用するコードは、最初のゼロで始まらない自然数の増加するシーケンス(少なくとも2つ離れている)のみを生成できます。したがって、この数はに分割され11, 2114, 105110, 1160340, 83117114, 112114105, 1151010330, 9211007209, 71121121210, 320661051141, 1610410009712, 10440320661140, 97105110045070, 108097107033034
ます。(この最後の数字はREPLACE
値の長さです。パターンの最後の一致はfinalのインデックスを与えるため、}
Lua-indicesは1から始まることに注意してください。最後の数字が奇数の場合、パターンと文字列は少し変更する必要がありますが、難しくはありません。)
このプログラムは大きすぎるため、実際には生成および実行しませんでした(理論的には64ビットマシンで動作する可能性がありますが、ハードドライブに収まりません)。
概念実証として3
、同じ原理を使用して印刷する小さなプログラムを次に示します。
p=print
load(([[<<><><><>{}<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>{}<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>{}><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>{}]]):gsub([[[<>]-{()}]],[[%1]]):gsub([[...]],([[]]).char))()
これにより、splitをp"3"
介した数値112034051034
を介してコード文字列が生成され11, 203, 405, 1034
ます。