Alla ricerca di programmi in un'enorme boggle board


25

Ogni carattere in questo blocco di 64 per 64 caratteri è stato scelto in modo casuale e uniforme tra i 95 caratteri ASCII stampabili .

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

Il tuo compito in questa sfida non è scrivere il tuo codice, ma piuttosto estrarre il codice da questo blocco di testo come se fosse un'enorme griglia di Boggle e stai cercando un programma eseguibile anziché una parola.

Vince l'invio con il programma che produce l'output finito più lungo.

Dettagli

Tratta la griglia 64 per 64 del testo esattamente come una griglia Boggle 64 per 64 con caratteri aggiuntivi. Costruisci una stringa che è un programma eseguibile in qualche lingua, scegliendo una posizione iniziale nella griglia e muovendo ripetutamente di un passo in verticale, in orizzontale o in diagonale (8 direzioni in totale) tutte le volte che vuoi. NON puoi usare lo stesso spazio griglia più di una volta!

Ad esempio, queste 4 righe sono state prese dal centro del blocco di testo:

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

A partire dalla pfine quasi destra della terza linea, posso spostarmi verso il diagonale verso il basso e verso destra, quindi verso il "andando verso destra, quindi su 3 volte sopra  zKe lasciato 4 volte sopra #3x". Questo rintraccia la stringa p " zK#3x"che quando viene eseguita come un programma Ruby genera " zK#3x".

L'obiettivo è trovare un programma che produca il risultato finito più lungo . Solo i caratteri ASCII stampabili vengono considerati quando si conteggia la lunghezza dell'output (ciò significa che le schede e le nuove righe non vengono conteggiate), sebbene possano essere presenti altri caratteri. L'esempio Ruby produce solo 8 caratteri.

Anche...

  • Il programma può contenere da 1 a 4096 caratteri.
  • Il programma potrebbe non contenere schede, newline o ASCII non stampabili (in quanto non presenti nella griglia).
  • Il programma dovrebbe essere eseguito e chiuso senza errori.
  • Non ci sono vincoli di tempo o complessità purché il programma alla fine si concluda con un output finito.
  • La griglia non scorre da sinistra a destra o dall'alto verso il basso.

Indica dove appare il tuo programma nella griglia in modo da poter verificare rapidamente che è davvero lì.


8
Perché il personaggio 4096 riposa ... oh.
John Dvorak

2
Forse sarebbe stato più interessante se il programma avesse dovuto risolvere un vero problema di golf del codice, ma essere preso dalla rete.
feersum

2
@DavidCarraher - O in realtà per qualsiasi lingua non golf. Ho trovato un'istanza di yes, per esempio.

1
TECO non è un linguaggio da golf ... è un editor di nastro / testo risalente agli anni '60.
feersum

1
A prima vista sembra un programma perl perfettamente praticabile ...
DGM,

Risposte:


15

CJam, over (81182737 ^ 2813292) ↑↑ (10604499373-1) caratteri

Okay penso di aver finalmente risolto tutto. È stato divertente: inventare il codice è stato come navigare in un campo minato.


Prima di immergerci, iniziamo con un esempio più semplice ( provalo online ):

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

hè un ciclo do-while che lascia la condizione nello stack e {}sono blocchi di codice. Il blocco interno è:

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

Supponiamo che la parte superiore dello stack sia [1 10]ed eseguiamo il do-while{(\5*\}h; . Questo è ciò che succede:

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

Questo succede fino a quando i 10 diminuiscono fino a 0 e il ciclo termina, a quel punto finiamo [5^10 0]in cima allo stack. Possiamo quindi usare; per far apparire lo zero, lasciando [5^10].

In altre parole, abbiamo appena eseguito l'espiazione, con [1 x]{(\5*\}h; conseguente [5^x].

Il blocco esterno {(\1\{(\5*\}h;\}h;è simile, ma invece che 5*nel mezzo abbiamo il nostro loop "base esponenziale 5". Quindi, per il nostro semplice esempio, a partire da [1 3]otteniamo:

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

La parte superiore è zero, quindi fermiamo il loop e pop, lasciando [5^5^5]. In altre parole, abbiamo appena creato 5^5^5, o 5↑↑3nella notazione con la freccia in alto di Knuth . È possibile passare da 5 a 3 per altri numeri, ma l'iperexponentiation diventa grande rapidamente , quindi non consiglierei di scegliere qualcosa di troppo grande.


Ora per davvero:

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

(Traccia percorso)

Anotated (tutto senza note è riempitivo):

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

Fondamentalmente è lo stesso del semplice esempio, solo con un sacco di filler durante la navigazione da un'istruzione all'altra nella griglia.

Invece di 5 e 3 abbiamo 81182737^2813292e 10604499373, nel senso che (81182737^2813292)↑↑10604499373viene emesso alla fine (dato abbastanza tempo e memoria, ovviamente!). Si noti che questo è solo un limite inferiore - ci sono molte altre stampe che avvengono, ad esempio con 6 e 3 l'output è lungo oltre 2 milioni di caratteri anche se6^6^6 ha solo 36k cifre.

Se vuoi provare questa versione completa per te stesso, prova con:

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

sostituendo il 5 e il 3 sulla seconda e quarta riga con numeri a scelta. Si noti che l'output avrà alcune cifre extra attorno all'importante numero iperesponenziato (vale a dire un precedente 010e un finale 0).


Alcune note su CJam

Potremmo chiederci: perché non usare l'espiazione incorporata di CJam ( #) invece del ciclo interno del do-while? Sfortunatamente, dopo aver scavato nella fonte di CJam, ho imparato che per l'esponenziazione la base può essere un BigInt (precisione arbitraria) ma l'esponente viene convertito in un normale int a 32 bit . Questo ha alcuni effetti collaterali divertenti ma fastidiosi:

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

Ciò significava che non potevo usare l'esponente incorporato di CJam quando l'esponente era troppo grande, per motivi di overflow. Tuttavia, la moltiplicazione è diversa poiché moltiplicare due risultati BigInts in un nuovo BigInt, quindi ho deciso di sfruttarlo.


4
Regola dei minuti rimossa. Impazzire!
Hobby di Calvin il

7

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

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

inserisci qui la descrizione dell'immagine

Modifica: ho cambiato un paio di personaggi perché ho riutilizzato accidentalmente uno, ma quella parte era all'interno di un commento, quindi non fa molta differenza.

I ?giri a comando eco, che io uso per creare la maggior parte della produzione. Quindi i personaggi \RZK%B"s'1UC>vengono stampati in un ciclo. %B"saggiunge uno a B e quindi verifica se è inferiore a zero. Pertanto, questo condizionale deve essere inserito dopo 2 ^ 31 cicli quando trabocca a un numero negativo. All'interno del condizionale c'è unEX comando che esce dal programma.

Attualmente sto tentando di eseguirlo fino al completamento con l'output diretto a un file.


"Attualmente sto tentando di eseguirlo fino al completamento con l'output diretto a un file." Spero che tu abbia 27,9 GB (26 GiB) di spazio libero, quindi ...
John Dvorak,

1
@JanDvorak Ho più di 600 GB di spazio libero ... tuttavia sta procedendo così lentamente che in qualche modo sembra improbabile che riesca a farlo fino in fondo.
feersum

-4

HQ9 + (17195 caratteri)

Fonte:

9Q9

(inizia alle 5: 4 e poi verso il basso)

Produzione:

Il testo della canzone "99 bottiglie di birra" (8596 caratteri), la stringa 9Q9(3 caratteri) e un'altra copia di "99 bottiglie di birra" (8596 caratteri).

Questa è una risposta molto scadente e non dovresti votarla, ma qualcuno ha dovuto pubblicarla.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.