Tìm kiếm các chương trình trong một bảng Boggle lớn


25

Mỗi ký tự trong khối văn bản 64 x 64 này đã được chọn ngẫu nhiên và thống nhất từ ​​95 ký tự ASCII có thể in được .

/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+;

Nhiệm vụ của bạn trong thử thách này không phải là viết mã của riêng bạn, mà là trích xuất mã từ khối văn bản này như thể đó là một lưới Boggle khổng lồ và bạn đang tìm kiếm một chương trình có thể chạy được thay vì một từ.

Việc gửi với chương trình tạo ra sản lượng hữu hạn dài nhất sẽ thắng.

Chi tiết

Xử lý lưới văn bản 64 x 64 chính xác như lưới 64 x 64 với các ký tự bổ sung. Xây dựng một chuỗi là một chương trình có thể chạy được bằng một số ngôn ngữ bằng cách chọn một vị trí bắt đầu trong lưới và liên tục di chuyển một bước theo chiều dọc, chiều ngang hoặc đường chéo (tổng cộng 8 hướng) nhiều lần bạn muốn. Bạn KHÔNG được sử dụng cùng một không gian lưới nhiều lần!

Ví dụ: 4 dòng này được lấy từ gần giữa khối văn bản:

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

Bắt đầu với pgần cuối bên phải của dòng thứ ba, tôi có thể di chuyển đến bằng cách đi theo đường chéo xuống và phải, sau đó sang "bên phải, sau đó tăng 3 lần  zKvà sang trái 4 lần #3x". Điều này theo dõi chuỗi p " zK#3x"mà khi chạy như một chương trình Ruby xuất ra " zK#3x".

Mục tiêu là tìm ra một chương trình tạo ra đầu ra hữu hạn dài nhất . Chỉ các ký tự ASCII có thể in được xem xét khi đếm độ dài của đầu ra (điều này có nghĩa là các tab và dòng mới không được tính), mặc dù các ký tự khác có thể có mặt. Ví dụ Ruby chỉ tạo ra 8 ký tự.

Cũng thế...

  • Chương trình có thể dài từ 1 đến 4096 ký tự.
  • Chương trình có thể không chứa các tab, dòng mới hoặc ASCII không in được (vì chúng không có trong lưới).
  • Chương trình sẽ chạy và thoát mà không có lỗi.
  • Không có ràng buộc về thời gian hay độ phức tạp miễn là chương trình cuối cùng sẽ chấm dứt với đầu ra hữu hạn.
  • Lưới không vòng quanh từ trái sang phải hoặc từ trên xuống dưới.

Vui lòng đề cập đến nơi chương trình của bạn xuất hiện trong lưới để chúng tôi có thể nhanh chóng xác minh rằng nó thực sự ở đó.


8
Tại sao các nhân vật 4096 nghỉ ngơi ... oh.
John Dvorak

2
Có lẽ sẽ thú vị hơn nếu chương trình phải giải quyết một vấn đề golf mã thực tế, nhưng được lấy từ lưới điện.
frageum

2
@DavidCarraher - Hoặc cho bất kỳ ngôn ngữ không chơi gôn thực sự. Tôi tìm thấy một ví dụ yes, ví dụ.

1
TECO không phải là ngôn ngữ chơi gôn ... nó là một trình soạn thảo băng / văn bản có từ những năm 1960.
frageum

1
Trông giống như chương trình perl hoàn toàn khả thi ngay từ cái nhìn đầu tiên ...
DGM

Câu trả lời:


15

CJam, hơn (81182737 ^ 2813292) (10604499373-1) ký tự

Được rồi tôi nghĩ rằng cuối cùng tôi đã sắp xếp mọi thứ ra. Điều này thật thú vị - đến với mã giống như điều hướng một bãi mìn.


Trước khi chúng tôi đi sâu vào, hãy bắt đầu với một ví dụ đơn giản hơn ( thử trực tuyến ):

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

hlà một vòng lặp do-while để lại điều kiện trên ngăn xếp và {}là các khối mã. Khối bên trong là:

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

Giả sử đỉnh của ngăn xếp là [1 10]và chúng ta thực hiện do-while {(\5*\}h;. Đây là những gì sẽ xảy ra:

[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]
       ...

Điều này xảy ra cho đến khi 10 giảm dần xuống 0 và vòng lặp kết thúc, tại thời điểm chúng ta kết thúc [5^10 0]ở đầu ngăn xếp. Sau đó chúng ta có thể sử dụng ;để bật số 0, rời đi [5^10].

Nói cách khác, chúng tôi vừa thực hiện lũy thừa, với [1 x]{(\5*\}h;kết quả là [5^x].

Khối bên ngoài {(\1\{(\5*\}h;\}h;tương tự, nhưng thay vì 5*ở giữa, chúng ta có vòng lặp "cơ sở lũy thừa 5". Vì vậy, với ví dụ đơn giản của chúng tôi, bắt đầu với [1 3]chúng tôi nhận được:

[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]

Đỉnh là 0, vì vậy chúng tôi dừng vòng lặp và bật, rời đi [5^5^5]. Nói cách khác, chúng tôi vừa tạo 5^5^5, hoặc 5↑↑3trong ký hiệu mũi tên lên của Knuth . Bạn có thể chuyển đổi 5 và 3 cho các số khác nhưng giảm âm nhanh chóng , vì vậy tôi không khuyên bạn nên chọn bất cứ thứ gì quá lớn.


Bây giờ cho điều thực sự:

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

(Dấu vết đường dẫn)

Anotated (bất cứ điều gì không có ghi chú là phụ):

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

Về cơ bản, nó giống như ví dụ đơn giản, chỉ với rất nhiều filler trong khi điều hướng từ hướng dẫn này sang hướng dẫn khác trong lưới.

Thay vì 5 và 3 chúng ta có 81182737^281329210604499373, có nghĩa là (81182737^2813292)↑↑10604499373kết thúc ở cuối (tất nhiên là có đủ thời gian và bộ nhớ!). Lưu ý rằng đây chỉ là giới hạn dưới - có rất nhiều bản in khác diễn ra, ví dụ với 6 và 3, sản lượng dài hơn 2 triệu ký tự mặc dù 6^6^6chỉ có 36 chữ số.

Nếu bạn muốn dùng thử phiên bản đầy đủ này cho chính mình, hãy thử với:

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

thay thế 5 và 3 trên dòng thứ hai và thứ tư bằng số bạn chọn. Lưu ý rằng đầu ra sẽ có thêm một vài chữ số xung quanh số bị giảm âm quan trọng (cụ thể là số trước010 và dấu 0).


Một vài lưu ý về CJam

Bạn có thể tự hỏi: tại sao không sử dụng lũy ​​thừa lũy thừa ( #) của CJam thay vì vòng lặp do-while bên trong? Thật không may, sau khi đào qua nguồn của CJam, tôi đã biết rằng để lũy thừa, cơ sở có thể là BigInt (độ chính xác tùy ý) nhưng số mũ được chuyển đổi thành int 32 bit thông thường . Điều này có một số tác dụng phụ thú vị, nhưng gây phiền nhiễu:

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

Điều này có nghĩa là tôi không thể sử dụng số mũ tích hợp của CJam khi số mũ quá lớn, vì lý do tràn. Tuy nhiên, phép nhân khác nhau khi nhân hai kết quả BigInt trong một BigInt mới, vì vậy tôi quyết định khai thác thay thế.


4
Quy tắc phút bị loại bỏ. Nổi điên lên!
Sở thích của Calvin

7

TECO, ~ 2 ^ 31 * 13 ~ = 27,9 * 10 ^ 9

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

nhập mô tả hình ảnh ở đây

Chỉnh sửa: Đã thay đổi một vài ký tự vì tôi vô tình sử dụng lại một ký tự, nhưng phần đó nằm trong một nhận xét nên nó không tạo ra nhiều khác biệt.

Các ?lệnh bật bật vang lên, mà tôi sử dụng để tạo ra hầu hết đầu ra. Sau đó, các ký tự \RZK%B"s'1UC>được in trong một vòng lặp. %B"sthêm một vào B và sau đó kiểm tra nếu nó nhỏ hơn 0. Vì vậy, điều kiện này nên được nhập sau 2 ^ 31 chu kỳ khi nó tràn đến một số âm. Bên trong điều kiện có một EXlệnh thoát khỏi chương trình.

Hiện tại tôi đang cố gắng chạy nó để hoàn thành với đầu ra được hướng đến một tệp.


"Hiện tại tôi đang cố gắng chạy nó để hoàn thành với đầu ra được hướng đến một tệp." Tôi hy vọng bạn có 27,9 GB (26 GiB) dung lượng trống, sau đó ...
John Dvorak

1
@JanDvorak Tôi có hơn 600 GB dung lượng trống ... tuy nhiên nó đang tiến hành rất chậm nên dường như không thể thực hiện được tất cả.
frageum

-4

HQ9 + (17195 ký tự)

Nguồn:

9Q9

(bắt đầu lúc 5: 4 rồi xuống)

Đầu ra:

Văn bản của bài hát "99 chai bia" (8596 ký tự), chuỗi 9Q9(3 ký tự) và một bản sao khác của "99 chai bia" (8596 ký tự).

Đây là một câu trả lời rất khập khiễng và bạn không nên đánh giá nó, nhưng ai đó đã phải đăng nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.