巨大なBoggleボードでプログラムを探す


25

テキストのこの64 x 64ブロック内の各文字は、95個の印刷可能なASCII文字からランダムかつ均一に選択されています。

/rq$:Zy5*g'$DeGXX2o8y "{@Cg:FR9qih}xh >5$DsF1Fs5Ao~smFp;.RJbV )U
c4\(|Sx*V$10G9xO:NjHKasem%,\9[pPm@&kTaN~HC[;9`lgqlAH(7dt0a-5}LJ[
&sifw9V-.PLRoD~F'dJYA^Q)L#h>$9h!B4b&ceKp8~HndzDm#1/ySydrf5T8[Y%4
U9>HLQ74Qf[^V9tpWrKFcFxZJ::4?z/o]3u,V[B&hB9lFYA0:rW#yql5z9.d*D}U
:M2*O9'7_HMGw_=%@hR>O+(@Dr6MIt(=/{-{4lia0Vmws32wr(fnTmT%HSo&7!uz
\KZWG&KnXh+6E+Q>%pV(<Bnm-d+p~y~]Ta"aw9)]0A_AHz\tP3&}1R^/yPPSgN?8
".7|Uj)S7-k[`yeLO~P2a?z3wiS(R-\k'?z(pVm;;D^k/q84?&7:,E*9$UQ"UbBJ
ME]&*R ,*7PDF4Tw*-;De{YeP_al.CJcJX`@V_y+>^<h{L[^Y"!RxjN^lyA_/Y=(
#C>Zo#Sl;UUD5ChIj'L@rkELk%S*]a$87j\\n;}796m/\NPL>8d-T-hR!7ftw ?A
tV5"E309bAv$jhE6\'8f?VGlBb?z#V;F((3'|}$tfpiNB>"*mxc,X1s:/%x*JQAL
rxYXUJsd?X}^yc|'16539vd=psU'>|y/!$-TRamKcJk^2-aD35h7CcaRNue"8#{;
@yUq?*(72I8@I)So+]RwtKy:mLhjG/f#:U<TXml<PtX*+,ngfZt75-q*gSsyI2tS
|*M*;yz6u2(LZ>W`bth-7G~>|dh'pm}]@"#Oq9%o\W)b,gh%b1O]4F:EGb7ERI=@
ehMo69slKw=S@<j*Q4sfd\1')#)V&yaPF%%ZG6VK\_-$Cab,nrlW"O(<tu&xU=I&
|[g4k2L;FD)=yX0SsE-|vI(mDOccuU(+m\wxgrJxi8ZP[uD)L.!K@]%@q`!pk8Yx
?PZaS3;x,7nK~IHlrCGy~xq:@K/CJ1J^oeac&Tv?6[H>>0lu?(/bh@6J^@S?IY-|
@tdN$K=Ci2;_0Du;L2OO'en|]<_`nX5p3Bes9`8{}fRCV$X&aoQGYS'$j%r<2709
UwETsAo^d!aUZ0vN5,Yq\n%JAIm}%O88FAJK^Jt&=jM\Q1^+^|X8\._"l%hlF+yH
+c^FBFxTGz|f|#kElQs)mS64-3Z\An]|[rQo"OQ+ IP"ARdJ}/OYFQF_/{B 73mU
UPvxNByN[2TT,XgRZ_LwolUVWuR)DjYI7j#mmA8m?&Y}}[_h8@Y-R*,#=1\D*&@*
ePW.w{@z3moe3Vztd,>?*~ZQUvn8$+xw$$f92D*kPZ":;lcTr3m&{*?j$FgZK|cU
IAd'0C{<4b}NuhX1B#gmk'oF4+(@fzP^T?hF/#]g^y rb5][)X-d4Q't~1]HE"tZ
p2Z,%H0$EWF/%|UQm?&]E~=v;9YwxrSs%}df`[ `SfXMJWt86UY1duGAAKkFSrH!
oUyB[soS!N%XYwX]%n K^}CcTE?~.,8`C&l)Jjjp5|z))!o/ "G)sj,{OETsi:KE
4E,':a=,T~YlxdF^<\$fE|f:_-RG}7=m%g\-9a*X]`n<P$D+q7O`+$P&!\"NUs7n
hL@0s 7i^Xp\._4$lZIB9Ql AXX_00K=<hp%55KSO6yWH~cGe%|(p_WzlhPUbH{?
o5b4pi(,]&&jB\hGa:\DQbrYc,n|,b)_E{n~i~+JSxn?%/qJVm|B 8"Jf||L.|M-
 KRxH;T^Z7%ZufyO=nI;[v1\8ZTg\_)ect4DvMTvqtoo(;b~J&'~E2TTD!w1BvGv
Q+1sv>q%1$BaCm%(\%uGH*]emoFwejkhb$gKm=DVG#&:p'";s)&MY30q_cG=.CKJ
q,aWTi|^w2wg3<G_y<n+^Xq2ymHFs#7z[x0l'Lz6N>Mpo?=hAd&58HVMhsh(kQH5
&kSivkn`,KON9xb:$M[L15!D6W?\ASWc#}V#2U;qxKhtil73,!iuG~(lr[tPJQ6w
IZ)0Vp{kEUID:vgwmTMQ#Y]NdX6{'/3bI2x9k 4[>j)&Q0U,t,iA#A%4929o6+n_
SQe/!KubbuXthMe&2\%:'Z`,aaA)V&(v+]0^v-_@*Qg!^K!pCo"@e/|3}.3q^R||
6hF>/jd>(=il~2$KY.^x~K_H)J8Fi)'LOcUr4xJir^v0,c fIsoT<|7K}Bls|36z
MQ|-w=bp)_EY>YtGcW)!@/|Lc:I_<]x.~[|QSgJY1ZX9^e`ojAR6U#zt9!,44}>#
EJzH \gwosC>Z*)H!]1BPaIEYGyk{c0zv{d\#px2@#'-T{{.Qxknxv}"x3#K]w>;
<X(\bNnY_6*7Yu7_3a+wInwt vh=1eBgz>7Bnhs!<t.T#&V{+?p+{.RTN:xz>|,E
$upN*[F4A`~ZDMDt{.&2z+LZ7bcfeJfF9Uy3xX]ZzQ1FvB.U4S!hm$LYCp: wF7h
 47-+lY$"}AExXQ@?!/6}biptH=6N-6&8-T\C8{`i56e'%cimv,0QKYTx) "nkFJ
C:Enw=Q%6J;t6wS+2O,b0v'"OK6GMbr);y#-H86>pCE6wjdk*rR*=reWo57^2TFH
::Nq,t9_S">\o^NZzh|U\^qyh-yt0nvMs%'6\;$%(91gTC=&1q]q-*u*so KrXsE
-Sz>q]l86[OO@\5W<'\XDc,%/=0sV0&1'Etty%f ~,c45IIqy=no.DY{8\?fa<9{
6%3TP:i^q.JzU217CADu}iAzWT""E\{IEMbGDKZB6s*LmlM0|<WA8CP7sR}f?WSL
S`T} 7Tn9!h8P\W 8J\#Mg\o;Qwt&4\UYKf{)O3G&B]sK.bw1!?7=:h$IIOIakD<
H/O5v`ld*35MSsydSQoiAnJ*\!^?'_=6E?c> PtM!rw5y{ZT2xSco){3_?j|wtJp
CT1!e~k8aNgw)LE:}oX4R*<u]TB%\IN8YoMK'bV%L2H{L3'c/|xoTY^&&WPKSyo<
cXma$Rfjj^':^a\?$UOo48]791Wywj7aH1\iP|\l=sjjbjqZB2)-apvjV@q47Spw
OP[kT<l@cKB="n;VC#6a*InmS~$TN{= j)r>S] uH9:E-}y>.Ygc'll$5Y$j]AYt
jB="iGo7[qY~A*nv.\51[<]):^[iZs4s-D_bC'OfM%lHlz;MoxY$Ku]NCt72PYMB
_(myN5'%] C!7FPoGX7+*,Yptuaz;Q6W,;R|U1XEhgq21R7<ncnDB<D_);j.:r0r
Q6!k|Dq`!Jz7l="*n?w@f|h=PA_A)n._ii:s~'n~XsD}?JRIkC9AW^piUfBTU,ui
nf+yZ`7P-(@{>s:{Vz'N 7qB&+UZbm4'0]D~HZNJq.w</3 \cL)WRDP(y]w~L4N/
!!lA+NK[+9#-iwx`PE53D.K2]]#M.Rm$^Cc'|!@cX6{yCg8K0|>E_jyup|+'=#c%
Ao5$B);DoQ#jg[7GbdE+o:R,T#@`;UnX}.?2z\RJ98Se*_.*e8mCUF}Vw1u13cy1
2s}1@?{0);Jo6(J@l>[M 0CkeO6{ExN7,%Kv1#[!** czaX)=;Q~D;z',fkq!1W<
% f(i#i`PQY!m7v#D:j5pyU]8:at2,k("BWZRI<WR??GQ$^1d[m,F(<e5CLv-m*B
CD)zVpa95WpJ K@&}yN\Q8I<%z/*_/bPsR5=0\Z=#mWZDAfA5[k|$Yks@Q;@h,s/
Np.$gTvz>T+"0|$Nw::%m$GFYxG{2akv$Eh8\4|eW'oJEffNzJ>UxU4>oITZMe/'
EMg$>kD|\ ^.W)Stzv/7z\^bdi]E@] U&-r8(B^?}$P56[?e~jE#_j)5=#~.yNP$
'mgF3EAhXB 55)\WXp*e+fD#^&SHGx++7VO[R7*b(Q+:jESt'K%m~d$Bv^/{7=zr
5oCZDp& ;*Y*G`L$C]Nm`|^:y2NKaO!)u/{hwm(VjS`<qKgNw7[+~0 <be'sWjTo
.3!sPGuFFZ@9.4u*ml)pLeEVJ~8A$mgz*d>ajbg1FIYrg6J`D0xJMXi`ghA1V$ju
*rJg/ o;6M7`(qTF.nO'4da,{ieM&NC9rg;nX*))*DK"DycYD66&6z/I@}y4@$<f
3S]~9g An{=Rj|y&A2Vh^F\3lb#N~8w0EMx<K$]z(eZS~zbmgeeV\i7,MY~zrc+;

この課題でのあなたの仕事は、独自のコードを書くことではなく、このテキストブロックから巨大なBoggleグリッドであるかのようにコードを抽出し、単語ではなく実行可能なプログラムを探していることです。

最長の有限出力を生成するプログラムでの提出が優先されます。

詳細

64 x 64のテキストグリッドを、追加の文字を含む64 x 64のBoggleグリッドとまったく同じように扱います。グリッド内の開始位置を選択し、必要に応じて縦、横、または斜め(合計8方向)に1ステップずつ繰り返し移動することにより、一部の言語で実行可能なプログラムである文字列を作成します。同じグリッドスペースを複数回使用することはできません!

たとえば、次の4行はテキストブロックの中央付近から取られました。

EJzH \gwosC>Z*)H!]1BPaIEYGyk{c0zv{d\#px2@#'-T{{.Qxknxv}"x3#K]w>;
<X(\bNnY_6*7Yu7_3a+wInwt vh=1eBgz>7Bnhs!<t.T#&V{+?p+{.RTN:xz>|,E
$upN*[F4A`~ZDMDt{.&2z+LZ7bcfeJfF9Uy3xX]ZzQ1FvB.U4S!hm$LYCp: wF7h
 47-+lY$"}AExXQ@?!/6}biptH=6N-6&8-T\C8{`i56e'%cimv,0QKYTx) "nkFJ

p3行目の右端近くから始めて、斜め下および右に移動してに移動し、右に移動してから"3回上に移動し zK、4回左に移動し#3x"ます。これはp " zK#3x"Rubyプログラムとして実行されたときに出力される文字列を追跡します" zK#3x"

目標は、最長の有限出力を生成するプログラムを見つけることです。出力の長さをカウントするときは、印刷可能なASCII文字のみが考慮されます(これは、タブと改行はカウントされないことを意味します)が、他の文字が存在する場合もあります。Rubyの例では、8文字しか生成されません。

また...

  • プログラムの長さは1〜4096文字です。
  • プログラムには、タブ、改行、または印刷できないASCIIが含まれていない場合があります(グリッドにないため)。
  • プログラムが実行され、エラーなしで終了するはずです。
  • プログラムが最終的に有限出力で終了する限り、時間や複雑さの制約はありません。
  • グリッドは左から右または上から下にループしません。

プログラムがグリッド内のどこに表示されるかを記載してください。これにより、プログラムが実際に存在することをすばやく確認できます。


8
なぜ4096文字が残りますか...ああ。
ジョンドヴォルザーク

2
プログラムが実際のコードゴルフの問題を解決しなければならなかったが、グリッドから取得する必要がある場合は、おそらくもっと面白かったでしょう。
-feersum

2
@DavidCarraher-または実際に非ゴルフ言語用。たとえば、のインスタンスを1つ見つけましたyes

1
TECOはゴルフ言語ではありません... 1960年代のテープ/テキストエディタです。
-feersum

1
一見完全に実行可能なperlプログラムのように見えます
...-DGM

回答:


15

CJam、オーバー(81182737 ^ 2813292)↑↑(10604499373-1)文字

さて、最終的にすべてを整理したと思います。これは楽しかったです。コードを思いつくのは、地雷原をナビゲートするようなものでした。


始める前に、より簡単な例から始めましょオンラインで試してください):

1 3{(\1\{(\5*\}h;\}h;

hスタックに条件を残すdo-whileループであり{}、コードブロックです。内部ブロックは次のとおりです。

(        Decrement
\        Swap top two of stack
5*       Push 5 and multiply
\        Swap back

スタックの一番上が[1 10]do-whileを実行するとし{(\5*\}h;ます。これが起こることです:

[1 10] --decrement--> [1 9]    --swap--> [9 1]    --multiply--> [9 5^1]  --swap--> [5^1 9]
       --decrement--> [5^1 8]  --swap--> [8 5^1]  --multiply--> [8 5^2]  --swap--> [5^2 8]
       --decrement--> [5^2 7]  --swap--> [7 5^2]  --multiply--> [7 5^3]  --swap--> [5^3 7]
       ...

これは、10が0まで減り、ループが終了するまで発生し[5^10 0]ます。この時点で、スタックの最上部に到達します。その後、を使用;してゼロをポップし、を残し[5^10]ます。

つまり、べき乗を実行したばかりで、[1 x]{(\5*\}h;結果はになり[5^x]ます。

外側のブロック{(\1\{(\5*\}h;\}h;も似5*ていますが、真ん中の代わりに「基数5の指数」ループがあります。したがって、簡単な例では、以下から始め[1 3]ます。

[1 3] -dec/swap-> [2 1]   -push 1-> [2 1 1]   -swap-> [2 1 1]   -5^-> [2 5]     -swap-> [5 2]
      -dec/swap-> [1 5]   -push 1-> [1 5 1]   -swap-> [1 1 5]   -5^-> [1 5^5]   -swap-> [5^5 1]
      -dec/swap-> [0 5^5] -push 1-> [0 5^5 1] -swap-> [0 1 5^5] -5^-> [0 5^5^5] -swap-> [5^5^5 0]

トップはゼロなので、ループを停止してポップし、を残し[5^5^5]ます。言い換えれば、私たちは作成した5^5^5、または5↑↑3表記矢印Knuthのアップ。他の数値では5と3を切り替えることができますが、超指数関数は急速に大きくなるため、大きすぎる値を選択することはお勧めしません。


さて、本物のために:

1B);0D+9#{z(J Y=A*;\VC#UooJ87<W5^o\OO>;J6%_9=+NpXzH|>!p{Kdp(_E=XIK21^%^Z&&p\Y~!E<432|T|Z#00I0*boW)I^8227(*JEo*#09;*7XH+G^o9=pWdK>(2P-*I\6539K~>)#D@</CJ1(+^po\F"U$(jX?a"apV\|;}_V);;D00&phVA^^6pJP\<%o\8H>V1^+aoXY-Y&41-X)8/o!Jb;}"}:rM)<W?o:p'";h

(パストレース)

注釈付き(メモのないものはすべてフィラーです):

1                                           Push 1
B);
0D+9#                                       Push 13^9 = 10604499373
{                                           Start outer block
z
(                                           Decrement
J Y=A*;
\                                           Swap
VC#Uoo
J87<                                        Push 1
W5^o
\                                           Swap back
OO>;
J6%_9=+NpXzH|>!p
{                                           Start inner block
Kdp
(                                           Decrement
_E=XIK21^%^Z&&p
\                                           Swap
Y~!E<432|T|Z#00I0*boW)I^8227(*JEo*#         Push 81182737^2813292, <output 3 chars>
09;
*                                           Multiply by previous large number
7XH+G^o9=pWdK>(2P-*I\6539K~>)#D@</CJ1(+^po
\                                           Swap back
F"U$(jX?a"apV\|;
}                                           End inner block
_V);;
D00&p
h                                           Perform inner do-while loop
VA^^6pJP\<%o                                Pop top of stack by outputting
\                                           Swap back
8H>V1^+aoXY-Y&41-X)8/o!Jb;
}                                           End outer block
"}:rM)<W?o:p'";
h                                           Perform outer do-while loop

基本的には単純な例と同じですが、グリッド内の1つの命令から別の命令にナビゲートするときに多くのフィラーを使用します。

5と3の代わりにとが81182737^2813292あり10604499373、これ(81182737^2813292)↑↑10604499373は最後に出力されることを意味します(もちろん、十分な時間とメモリが与えられます!)。これは単なる下限であることに注意してください。たとえば、6と3の場合、6^6^636k桁しかなくても200万文字を超える長さの出力が行われます。

このフルバージョンを自分で試してみたい場合は、次を使用してテストしてください。

1B);
3
{z(J Y=A*;\VC#UooJ87<W5^o\OO>;J6%_9=+NpXzH|>!p{Kdp(_E=XIK21^%^Z&&p\
5
09;*7XH+G^o9=pWdK>(2P-*I\6539K~>)#D@</CJ1(+^po\F"U$(jX?a"apV\|;}_V);;D00&phVA^^6pJP\<%o\8H>V1^+aoXY-Y&41-X)8/o!Jb;}"}:rM)<W?o:p'";h

2行目と4行目の5と3を任意の数字に置き換えます。出力は重要なhyperexponentiated数の周りにいくつかの追加の数字(すなわち、先行する必要がありますので注意してください010と末尾に0)。


CJamに関するいくつかのメモ

疑問に思うかもしれません:#内側のdo-whileループの代わりにCJamの組み込み累乗法()を使用してはどうですか?残念ながら、CJamのソースを掘り下げた後、累乗では基底がBigInt(任意の精度)になりますが、指数は通常の32ビットintに変換されることがわかりました。これには面白いが、厄介な副作用があります。

2 2 31# #     -->    java.lang.ArithmeticException: Negative exponent  (should be 2^2^31)
2 2 32# #     -->    1                                                 (should be 2^2^32)

これは、オーバーフローの理由で、指数が大きすぎるときにCJamの組み込み指数を使用できないことを意味しました。ただし、2つのBigIntを乗算すると新しいBigIntが生成されるため、乗算は異なります。そのため、代わりにそれを利用することにしました。


4
分のルールが削除されました。夢中になる!
カルビンの趣味

7

TECO、〜2 ^ 31 * 13〜= 27.9 * 10 ^ 9

?^e=<\RZK%B"svbk7,.c2z\R!Z~|bS|VM!2=9%MEX'1UC>

ここに画像の説明を入力してください

編集:偶然1つを再利用したため、いくつかの文字を変更しましたが、その部分はコメント内にあるため、それほど違いはありません。

?私は、出力のほとんどを作成するために使用するコマンドのエコーをオンに。次に、文字\RZK%B"s'1UC>がループで印刷されます。%B"sBに1を追加し、ゼロ未満かどうかをテストします。したがって、この条件は、負の数にオーバーフローする2 ^ 31サイクル後に入力する必要があります。条件内にはEX、プログラムを終了するコマンドがあります。

現在、出力をファイルに送信して完了するまで実行しようとしています。


「現在、出力をファイルに向けて最後まで実行しようとしています。」私は...そして、あなたはフリースペースの27.9ギガバイト(26ジブ)を持っている願っています
ジョンドヴォルザーク

1
@JanDvorak 600 GBを超える空き領域があります...しかし、処理が非常に遅いため、どうにか完全に実行する可能性は低いようです。
-feersum

-4

HQ9 +(17195文字)

ソース:

9Q9

(5:4に開始してからダウン)

出力:

歌のテキスト「99本のビール」(8596文字)、文字列9Q9(3文字)、および「99本のビールボトル」(8596文字)のコピー。

これは非常に不十分な答えであり、あなたはそれを賛成すべきではありませんが、誰かがそれを投稿しなければなりませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.