Büyük bir Boggle panosundaki programları arıyorsunuz


25

Bu 64 x 64 bloktaki her karakter, yazdırılabilir 95 ASCII karakterinden rastgele ve üniform olarak seçilmiştir .

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

Bu zorluktaki göreviniz kendi kodunuzu yazmak değil, bu metin bloğundan büyük bir Boggle ızgarası gibi kod çıkartmak ve bir kelime yerine çalıştırılabilir bir program aramak.

En uzun sonlu çıktıyı üreten programla yapılan sunum kazanır.

ayrıntılar

64'ten 64'e kadar olan metin ızgarasını tam olarak 64'den 64'e kadar Boggle ızgarası gibi ilave karakterlerle işleyin. Kılavuzda bir başlangıç ​​konumu seçerek ve bir adımda art arda dikey, yatay veya çapraz olarak (toplam 8 yön) istediğiniz kadar hareket ettirerek çalıştırılabilir bir program olan bir dize oluşturun. Aynı ızgara alanını bir defadan fazla kullanamazsınız!

Örneğin, bu 4 satır, metin bloğunun ortasından alınmıştır:

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

pÜçüncü hattın sağ ucundan başlayarak, aşağıya ve sağa doğru "ilerleyerek, sonra sağa, sonra 3 kez yukarı  zKve 4 kez sola doğru ilerleyebilirim #3x". Bu p " zK#3x", bir Ruby programı olarak çalıştırıldığında çıkan dizgiyi izler " zK#3x".

Amaç, en uzun sonlu çıktıyı üreten bir program bulmaktır . Çıktı uzunluğunu sayarken yalnızca yazdırılabilir ASCII karakterleri dikkate alınır (bu, sekmeler ve yeni satırlar sayılmaz), ancak diğer karakterler de mevcut olabilir. Ruby örneği yalnızca 8 karakter üretir.

Ayrıca...

  • Program 1 ila 4096 karakter uzunluğunda olabilir.
  • Program, sekmeler, yeni satırlar veya yazdırılamayan ASCII içeremez (kılavuzda olmadığı gibi).
  • Program çalışması ve hatasız çıkması gerekir.
  • Olur programında sürece hiçbir zaman veya karmaşıklık kısıtlamaları vardır nihayetinde sonlu çıkışı ile sona erer.
  • Izgara, soldan sağa veya yukarıdan aşağıya doğru dolaşmaz.

Lütfen programınızın kılavuzda nerede göründüğünü belirtin, böylece gerçekten orada olduğunu doğrulayabiliriz.


8
4096 karakteri neden dinleniyor?
John Dvorak

2
Programın gerçek bir kod golf problemini çözmesi gerekiyorsa, ama şebekeden ele alınsa daha ilginç olurdu.
feersum

2
@DavidCarraher - Ya da aslında herhangi bir golf dışı dil için. Örneğin bir örneğini buldum yes.

1
TECO bir golf dili değil ... 1960'lardan kalma bir kaset / metin editörüdür.
feersum

1
İlk bakışta mükemmel derecede uygun bir perl programı gibi görünüyor ...
DGM

Yanıtlar:


15

CJam, üzeri (81182737 ^ 2813292) ↑↑ (10604499373-1) karakter

Tamam, sanırım sonunda her şeyi çözdüm. Bu eğlenceliydi - kodla gelmek mayın tarlasında gezinmek gibiydi.


Dalmadan önce daha basit bir örnekle başlayalım ( çevrimiçi deneyin ):

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

hYığını koşulda bırakan ve {}kod blokları olan bir do-while döngüsüdir . İç blok:

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

Yığının tepesinin üstünde olduğunu varsayalım ve [1 10]bunu yaparken de yapalım {(\5*\}h;. Bu ne olur:

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

Bu, 10 tamamen 0'a indirgenene ve döngü sona erene kadar olur, bu noktada [5^10 0]yığının en üstünde bitiririz. Daha sonra ;sıfırı açmak için kullanabiliriz [5^10].

Başka bir deyişle, [1 x]{(\5*\}h;sonuçta , yalnızca üstelleştirme yaptık [5^x].

Dış blok {(\1\{(\5*\}h;\}h;benzer, ancak 5*ortadaki yerine "üs üs 5" döngümüz var. Yani basit bir örnek için, [1 3]biz başlayarak :

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

Üst sıfırdır, bu yüzden döngüyü durdurur ve çıkarız [5^5^5]. Diğer bir deyişle, biz sadece oluşturduk 5^5^5veya 5↑↑3içinde Knuth'un yukarı ok gösterimde . Diğer numaralar için 5 ve 3'ü değiştirebilirsiniz, ancak hiperxponentiation hızlı bir şekilde büyür , bu yüzden çok büyük bir şey seçmenizi tavsiye etmem.


Şimdi gerçek şey için:

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

(Yol izleme)

Anotlu (notsuz herhangi bir şey dolgu maddesidir):

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

Temelde basit örnekle aynıdır, sadece kılavuzdaki bir komuttan diğerine giderken çok fazla dolgu maddesi ile.

Bunun yerine 5 ve 3 elimizdeki 81182737^2813292ve 10604499373yani (81182737^2813292)↑↑10604499373sonunda outputted alır (elbette yeterli zaman ve bellek, verilen!). Bunun yalnızca daha düşük bir sınır olduğunu unutmayın - gerçekleşen çok sayıda başka baskı var, örneğin 6 ve 3 ile çıktı, 6^6^6yalnızca 36 bin rakam olmasına rağmen 2 milyon karakter uzunluğunda .

Bu tam sürümü kendiniz denemek istiyorsanız, aşağıdakilerle test edin:

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

ikinci ve dördüncü satırlardaki 5 ve 3'leri seçtiğiniz sayılarla değiştirmek. Çıktının, önemli ölçüde uzatılmış sayı (örneğin bir önceki 010ve bir iz 0) etrafında birkaç ekstra basamak alacağına dikkat edin .


CJam hakkında birkaç not

Merak edebiliriz: neden #iç do-while döngüsü yerine CJam'ın yerleşik üstelini ( ) kullanmıyorsunuz ? Ne yazık ki, CJam'ın kaynağını kazıdıktan sonra üs üssü üs için bir BigInt (keyfi hassasiyet) olabileceğini öğrendim, üs üs normal bir 32-bit int'ye dönüştürüldü . Bunun bazı eğlenceli, ama can sıkıcı yan etkileri var:

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

Bu, cila fazla büyük olduğunda, taşma nedenlerinden dolayı CJam'ın yerleşik üstel kullanımını kullanamayacağım anlamına geliyordu. Ancak, çarpma, iki BigInts sonucunun yeni bir BigInt ile çarpılmasıyla farklıdır, bu yüzden bunun yerine yararlanmaya karar verdim.


4
Dakika kuralı kaldırıldı. Delirmek!
Calvin'in Hobileri

7

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

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

görüntü tanımını buraya girin

Düzenleme: Yanlışlıkla yeniden kullandığım için birkaç karakter değiştirdim, ancak bu bölüm bir yorumun içindeydi, bu yüzden fazla fark yaratmıyordu.

?Ben çıkışının en oluşturmak için kullandığınız komut yankı özelliğini döner,. Ardından karakterler \RZK%B"s'1UC>bir döngü halinde yazdırılır. %B"sB'ye bir ekler ve sıfırdan az olup olmadığını test eder. Bu nedenle, bu koşullu bir negatif sayıya taşan 2 ^ 31 döngüden sonra girilmelidir. Koşullu içerisinde EXprogramdan çıkan bir komut vardır.

Şu anda bir dosyaya yönlendirilmiş çıktı ile tamamlanması için çalıştırmaya çalışıyorum.


"Şu anda bir dosyaya yönlendirilmiş çıktı ile tamamlanması için çalıştırmaya çalışıyorum." Umarım 27,9 GB (26 GiB) boş alanınız vardır, o zaman ...
John Dvorak

1
@JanDvorak 600 GB'tan fazla boş alana sahibim ... ancak o kadar yavaş ilerliyor ki, bir şekilde tamamen ilerlemesi pek mümkün görünmüyor.
feersum

-4

HQ9 + (17195 karakter)

Kaynak:

9Q9

(5: 4'te başlar ve sonra aşağı)

Çıktı:

"99 şişe bira" adlı şarkının metni (8596 karakter), dizi 9Q9(3 karakter) ve "99 şişe bira" nın (8596 karakter) başka bir kopyası.

Bu çok topal bir cevaptır ve bunu abartmamalısınız, ancak birileri göndermek zorunda kaldı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.