Golf angka lebih besar dari angka Loader

18

Sebagai tindak lanjut dari program terminasi terpendek yang ukuran outputnya melebihi jumlah Graham dan Golf lebih besar dari TREE (3) , saya menyajikan tantangan baru.

Angka loader adalah angka yang sangat besar, yang agak sulit dijelaskan (karena itu sendiri merupakan hasil dari latihan kode golf dengan tujuan yang fleksibel). Ada definisi dan penjelasan di sini , tetapi untuk tujuan pengendalian diri, saya akan mencoba menjelaskannya nanti dalam posting ini juga.

Algoritma Ralph Loader yang digunakan menghasilkan salah satu angka terbesar dari semua algoritma (yang dapat dihitung) yang pernah ditulis! Memang, nomor Loader adalah angka "yang dapat dihitung" terbesar di Wiki Googology. (Dengan angka "yang dapat dihitung", itu berarti angka yang ditentukan dalam perhitungan.) Itu berarti bahwa jika jawaban menghasilkan angka yang lebih besar dari angka Loader dengan cara yang menarik (yaitu bukan hanya angka Loader +1), Anda bisa turun di Sejarah googologi! Yang sedang berkata, program yang menghasilkan sesuatu seperti nomor Loader +1 adalah jawaban yang benar-benar valid dan pesaing untuk pertanyaan ini; tapi jangan berharap ketenaran.

Tugas Anda adalah membuat program terminating yang menghasilkan angka lebih besar dari angka Loader. Ini , jadi program tersingkat menang!

  • Anda tidak diizinkan mengambil input.
  • Program Anda akhirnya harus berakhir secara deterministik, tetapi Anda dapat menganggap mesin memiliki memori tak terbatas.
  • Anda dapat menganggap jenis nomor bahasa Anda dapat menampung nilai terbatas apa pun, tetapi perlu menjelaskan bagaimana ini sebenarnya bekerja dalam bahasa Anda (mis: apakah float memiliki ketelitian tak terbatas?)
    • Infinities tidak diizinkan sebagai output.
    • Underflow dari tipe angka melempar pengecualian. Itu tidak membungkus.
  • Anda perlu memberikan penjelasan mengapa nomor Anda begitu besar dan versi kode Anda yang tidak diklik untuk memeriksa apakah solusi Anda valid (karena tidak ada komputer dengan memori yang cukup untuk menyimpan nomor Loader).

Jadi, inilah penjelasan nomor Loader. Lihat http://googology.wikia.com/wiki/Loader%27s_number dan tautan di dalamnya untuk detail yang lebih tepat. Secara khusus, ini berisi program yang menghasilkan angka Loader persis (menurut definisi).

The kalkulus konstruksi pada dasarnya adalah sebuah bahasa pemrograman dengan sifat yang sangat khusus.

Pertama-tama, setiap program yang valid secara sintaksis berakhir. Tidak ada loop tanpa batas. Ini akan sangat berguna, karena itu berarti bahwa jika kita menjalankan program kalkulus konstruksi yang sewenang-wenang, program kita tidak akan macet. Masalahnya adalah bahwa ini menyiratkan bahwa kalkulus konstruksi belum selesai.

Kedua, di antara bahasa lengkap non-Turing, itu adalah salah satu yang paling kuat. Pada dasarnya, jika Anda dapat membuktikan bahwa mesin Turing akan berhenti pada setiap input, Anda dapat memprogram fungsi dalam kalkulus konstruksi yang akan mensimulasikannya. (Ini tidak membuatnya turing lengkap, karena ada menghentikan mesin turing yang Anda tidak dapat membuktikan sedang berhenti.)

Nomor loader pada dasarnya adalah nomor berang-berang yang sibuk untuk kalkulus konstruksi, yang dimungkinkan untuk dihitung karena semua program coc berakhir.

Secara khusus, loader.c mendefinisikan fungsi yang disebut D. Kira-kira, D(x)iterasi semua bit-string kurang dari x, menafsirkannya sebagai program coc, menjalankan yang valid secara sintaksis, dan menggabungkan hasilnya (yang juga akan menjadi bitstring). Ini mengembalikan rangkaian ini.

Nomor pemuat adalah D(D(D(D(D(99))))).

Salinan kode yang lebih mudah dibaca dari wiki googolology

int r, a;

P(y,x){return y- ~y<<x;}

Z(x){return r = x % 2 ? 0 : 1 + Z (x / 2 );}

L(x){return x/2 >> Z(x);}

S(v,y,c,t){
   int f = L(t);         
   int x = r;
   return f-2 ? f>2 ? f-v ? t-(f>v)*c : y : P(f,P(S(v,y,c,L(x)), S(v+2,t=S(4,13,-4,y),c,Z(x)))) : A(S(v,y,c,L(x)),S(v,y,c,Z(x)));
}

A(y,x){return L(y)-1 ? 5<<P(y,x) : S(4,x,4,Z(r));}

D(x) 
{
   int f;
   int d;
   int c=0;
   int t=7;
   int u=14;
   while(x&&D(x-1),(x/=2)%2&&(1)){
      d = L(L(D(x))),
      f = L(r),
      x = L(r),
      c - r||(L(u)||L(r)-f||(x/=2)%2&&(u=S(4,d,4, r),t=A(t,d)),f/2&(x/=2)%2&&(c=P(d,c),t=S(4,13,-4,t),u=S(4,13,-4,u))),
      c&&(x/=2)%2&&(t=P(~u&2|(x/=2)%2&&(u=1<<P(L(c),u)),P(L(c),t)),c=r)
      u/2&(x/=2)%2&&(c=P(t,c),u=S(4,13,-4,t),t=9);
    }
    return a = P( P( t, P( u, P( x, c)) ),a);
}

main(){return D(D(D(D(D(99)))));}
PyRulez
sumber
6
Saya akan menyarankan agar downvoting ini tidak mirip dengan pertanyaan TREE (3): Jumlah loader jauh lebih besar daripada TREE (3) sehingga diperlukan pendekatan baru dan menarik.
lirtosiast
2
@ fəˈnɛtɪk Nah, pencetakan nomor Loader + 1 masih menarik dari perspektif kode golf (misalnya, dapatkah Anda mengalahkan yang asli 512 byte?) Ada juga beberapa generalisasi alami dari jumlah loader yang mungkin lebih mudah untuk diterapkan (misalnya, menggunakan ZFC bukan CoC). Juga, urutan klik Greedy atau game janji terbatas dapat digunakan.
PyRulez
2
Sayangnya, karena saya tidak mengerti konstruksi nomor Loader dan tampaknya tidak ada batas atas dalam hal hierarki yang berkembang pesat, saya tidak dapat memberikan jawaban yang baik di sini. Saya percaya bahwa sebagian besar jawaban akan berupa ekstensi dari jumlah Loader atau hal-hal seperti urutan klik serakah dan permainan janji terbatas ...
Simply Beautiful Art
1
@SimplyBeautifulArt Oh boy, jika Anda tidak memahaminya, itu bukan pertanda baik untuk tantangan ini. : PI dapat mencoba menjelaskannya secara lebih rinci kepada Anda dalam obrolan, tetapi saya juga tidak tahu hierarki batas atas.
PyRulez
1
@SimplyBeautifulArt Secara khusus, karena konstanta Loader secara khusus dipilih untuk mencoba menjadi nomor terbesar yang dihasilkan oleh sejumlah kode tertentu (sedangkan nomor Graham dan TREE (3) pada angka yang hanya menarik secara matematis yang kebetulan besar), saya pikir sebagian besar jawaban hanya akan menjadi nomor Loader + 1.
PyRulez

Jawaban:

9

JavaScript, D ^ 6 (9) ( 508 501 495 492 487 485 481 bytes)

_='r=a=0,PN,yEx-~x<<y,ZNEr=x%2?0:1+ZC>>1@LNEx/2>>ZC@S=Bt,f=Ht@x=rEf-2?f>2?f-v?t-(f>v)*c:y:Ff,FSO(v+2,t8y@c,ZCMM:A(AOBZC)GAN,yELC)-1?5<<PC,y):Iy,4,Z(rGDN,f,dQ=0,t=7,u=14Eeval("whileC&&DC-1@61Md=HHDC)Gf=Hr@x=Hr@c-r||(Hu)||Hr)-f||6u=Id,4,r@t=A(t,dGfJdQ@t8t@u8u)Gc&&6t=F~u&2|6u=1<<FHc@uGFHc@tGc=r@uJtQ@u8t@t=9);a=FFt,Fu,PCQ)Ga)"@KKK9MMM6C>>=1)%2&&(8=I13,-4,G)@@),B(v,yQ,N=COBLCGSC(xE)=>J/2&6c=FFP(HL(IS(4,KD(D(M))Q,c';for(Y of $='QMKIHFJECONB@G86')with(_.split(Y))_=join(pop());eval(_)

Ini adalah kode yang disandikan.

_='r=a=0,PN,yEx-~x<<y,ZNEr=x%2?0:1+ZC>>1@LNEx/2>>ZC@S=Bt,f=Ht@x=rEf-2?f>2?f-v?t-(f>v)*c:y:Ff,FSO(v+2,t8y@c,ZCMM:A(AOBZC)GAN,yELC)-1?5<<PC,y):Iy,4,Z(rGDN,f,dQ=0,t=7,u=14Eeval("whileC&&DC-1@61Md=HHDC)Gf=Hr@x=Hr@c-r||(Hu)||Hr)-f||6u=Id,4,r@t=A(t,dGfJdQ@t8t@u8u)Gc&&6t=F~u&2|6u=1<<FHc@uGFHc@tGc=r@uJtQ@u8t@t=9);a=FFt,Fu,PCQ)Ga)"@KKK9MMM6C>>=1)%2&&(8=I13,-4,G)@@),B(v,yQ,N=COBLCGSC(xE)=>J/2&6c=FFP(HL(IS(4,KD(D(M))Q,c'; //encoded code
for(Y of $='QMKIHFJECONB@G86')with(_.split(Y))_=join(pop()); //decoding algorithm
eval(_) //Evaluation of the string

Kode yang didekodekan:

r=a=0,P=(x,y)=>x-~x<<y,Z=(x)=>r=x%2?0:1+Z(x>>1),L=(x)=>x/2>>Z(x),S=(v,y,c,t,f=L(t),x=r)=>f-2?f>2?f-v?t-(f>v)*c:y:P(f,P(S(v,y,c,L(x)),S(v+2,t=S(4,13,-4,y),c,Z(x)))):A(A(v,y,c,L(x)),S(v,y,c,Z(x))),A=(x,y)=>L(x)-1?5<<P(x,y):S(4,y,4,Z(r)),D=(x,f,d,c=0,t=7,u=14)=>eval("while(x&&D(x-1),(x>>=1)%2&&(1))d=L(L(D(x))),f=L(r),x=L(r),c-r||(L(u)||L(r)-f||(x>>=1)%2&&(u=S(4,d,4,r),t=A(t,d)),f/2&(x>>=1)%2&&(c=P(d,c),t=S(4,13,-4,t),u=S(4,13,-4,u))),c&&(x>>=1)%2&&(t=P(~u&2|(x>>=1)%2&&(u=1<<P(L(c),u)),P(L(c),t)),c=r),u/2&(x>>=1)%2&&(c=P(t,c),u=S(4,13,-4,t),t=9);a=P(P(t,P(u,P(x,c))),a)"),D(D(D(D(D(D(9))))))

Kode yang diterjemahkan dan tidak ditandai (kondisi dan barang disimpan dari loader.c):

var r=a=0;
function P(y,x){
  return y-~y<<x;
}
function Z(x){
  return r=x%2?0:1+Z(x>>1);
}
function L(x){
  return x/2>>Z(x);
}
function S(v,y,c,t){
  var f=L(t),x=r;
  return f-2?
           f>2?
             f-v?
               t-(f>v)*c
               :y
             :P(f,P(S(v,y,c,L(x)),S(v+2,t=S(4,13,-4,y),c,Z(x))))
           :A(S(v,y,c,L(x)),S(v,y,c,Z(x)))
}
function A(y,x){
  return L(y)-1?
         5<<P(y,x):
         S(4,x,4,Z(r));
}
function D(x){
  var f,
      d,
      c=0,
      t=7,
      u=14;
  while(x&&D(x-1),(x>>=1)%2&&(1))
    d=L(L(D(x))),
    f=L(r),
    x=L(r),
    c-r||(
      L(u)||L(r)-f||
      (x>>=1)%2&&(
        u=S(4,d,4,r),t=A(t,d)
      ),
      f/2&(x>>=1)%2&&(
        c=P(d,c),
        t=S(4,13,-4,t),
        u=S(4,13,-4,u)
      )
    ),
    c&&(x>>=1)%2&&(
      t=P(
        ~u&2|(x>>=1)%2&&(
          u=1<<P(L(c),u)
        ),
        P(L(c),t)
      ),
      c=r
    ),
    u/2&(x>>=1)%2&&(
      c=P(t,c),
      u=S(4,13,-4,t),
      t=9
    );
  return a=P(P(t,P(u,P(x,c))),a)
};
D(D(D(D(D(D(9))))))

Dalam hal ini, diasumsikan:

  • Tumpukan panggilan tanpa batas
  • Memori tak terbatas
  • Ketepatan tanpa batas Number
  • Besarnya tak terbatas Number
  • Operator Bitshift dan bitwise bekerja pada integer bit tak terbatas, bukan 53 bit. Negasi bitwise masih meniadakan bit tanda.

Algoritma pengodean / Penguraian:

Pengkodean dilakukan sebagai berikut:

  • Ambil string berulang, sebut itu S.
  • Ganti semua S dalam kode ke kunci K.
  • Masukkan K dan S di akhir.
  • Buat daftar kunci, dan juga letakkan algoritma decoding sehingga kode benar-benar berjalan.

Algoritma decoding:

  • Ambil daftar kunci.
  • Ambil kunci K. yang paling awal
  • Pisahkan string untuk setiap K.
  • Karena terakhir array adalah apa yang harus diganti KS, letakan itu, dan ganti semua K dengan bergabung dengan array dengan nilai popping S.

Kompresi dilakukan dengan kode ini , centang hanya kotak terakhir. Karena ini akan mengkodekan save terbesar terlebih dahulu, ini bukan kompresi yang paling efisien, tapi saya juga tidak tahu bagaimana membuatnya lebih kecil jadi meh.

JavaScript, (339 karakter )

eval("_㴧爽愽〬偍ⱹ䕸⵾砼㱹ⱚ䵅爽砥㈿〺ㄫ婃㸾ㅀ䱍䕸⼲㸾婃䁓㵂琬昽䡴䁸㵲䕦ⴲ㽦㸲㽦⵶㽴⴨显瘩⩣㩹㩆昬䙓丨瘫㈬琸祀挬婃䭋㩁⡁乂婃⥇䅍ⱹ䕌䌩ⴱ㼵㰼偃ⱹ⤺匨㐬礬㐬娨片䑍ⱦⱤⱣ㴰ⱴ㴷Ⱶ㴱㑅敶慬⠢睨楬敃☦䑃ⴱ䀶ㅋ搽䡈䑃⥇昽䡲䁸㵈牀挭牼簨䡵⥼籈爩ⵦ籼㙵㵓⠴ⱤⰴⱲ䁴㵁⡴Ɽ䝦䥤Ᵽ䁴㡴䁵㡵⥇挦☶琽䙾甦㉼㙵㴱㰼䙈捀畇䙈捀瑇挽牀畉琬捀甸瑀琽㤩㭡㵆䙴ⱆ甬偃Ᵽ⥇愩≀䩊䨹䭋䬶䌾㸽ㄩ┲☦⠸㵓⠴ⰱ㌬ⴴⱇ⥀䀩ⱂ⡶ⱹⱣⱍ㵃乂䱃䝓䌨硅⤽㹉⼲☶挽䙆倨䡌⡊䐨䐨䬩⤧㭦潲⡙映␽❋䩈䙉䕃乍䉀䜸㘧⥷楴栨弮獰汩琨天⥟㵪潩渨灯瀨⤩㭥癡氨弩".split``.map(a=>(d=String.fromCharCode)((c=a.charCodeAt())>>8)+d(c&255)).join``.slice(1))

Kode ini akan mengambil string 16bit sebagai, mengubahnya menjadi string 8bit dengan biner (BE) yang sama, dan evalitu.

Kode yang didekodekan adalah kode yang disandikan di atas.

Bukti bahwa D ^ 6 (9)> D ^ 5 (99)

Untuk ini, kita akan membandingkan D (9) dan 99.

Dengan menjalankan kode secara manual, D (9) ditemukan sama dengan (15*2^14849+1)*2^((15*2^14849+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^929+1)*2^((15*2^929+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^((15*2^59+1)*2^(15*2^59+1)))))))))))))))))))))))))))))))), dan bahkan D (0) sama dengan 8646911284551352321.

Jadi, D (9) >>> 99, dan karena D benar-benar meningkat, D ^ 6 (9)> D ^ 5 (99).

  • 508B-> 501B, -7B
    • -1B untuk ... Saya tidak tahu mengapa. Saya memang berubah D(D(D(D(D(99)))))menjadi D(D(D(D(D(D(9)))))). Juga yang mengocok surat-surat itu.
    • -6B untuk menambahkan kembali &&(1)untuk D(x)kondisi loop.
  • 501B-> 495B, -6B
    • Memperbaiki sebagian besar /2ke >>1karenaNumber
    • Hemat 6 byte dari suatu tempat
    • Anda dapat melihat upaya saya dalam pembaruan ini di sini
  • 495-> 492B, -3B
    • Dengan mengubah decoder dari for...inmenjadi for...of.
  • 492-> 487B, -5B
    • Menghapus tugas yang tidak perlu
    • Mengubah nama argumen
  • 487-> 485B, -2B
    • 1 byte dari menggunakan evaluntuk D, menghapus return.
    • Kompresi 1 byte menggabungkan tanda kurung penutup ke koma.
  • 485-> 481B, -4B
    • Dengan mengompresi substring yang berbeda.
Naruyoko
sumber
Atau dengan mudah lulus dengan panjang yang sama dengan mengganti 99 dengan M9, yang membuat nilai D ^ 6 (9).
Naruyoko
0

Python 3, D ^ 6 (9) ( 608 600 599 bytes)

_='r=a=0?CM:#y-~y<<x?H6@r=0.EB1+HI)#r?Fx):#xI>>H)?8t6@TtNr#A(U8HG).f==2BCf,CUS(v+2,/yNc,HGG.f<2Bt-(f>v)*c.f-vBy?A(M:#5<<CM.Fy)-1BOx,4,Z(rG?Jx6,a@f=d=c=0@VW7,14@while 1:@.x:Jx-1)X~E:breakKd,TFJxGNFrNFr)@.c-r:K.not(Fu)or(Fr)-fGQ.E:WOd,4,rRA(Vd)K.fIQ.Yd,cR/t);W/u)@.c:@!.EQ q=~u&2|EK .q:W1<<CFuNu)K  Vc=Cq and u,CFcNtG,rXuI&YVc);W/tR9@a=CCVCu,Cx,cGNa)#a\nprint(JJJJJJ9GGG)X\n!if !  x=xIK#@return . if /O13,-4,6):@global r8S(v,y,c,?\ndef Q:K! K@ @\n B else CP(YE:c=CEx%2Tf,x=FFL(U8FxG,G))HZ(xI>>1JD(My,x)N),OS(4,R);t=Vt,Wu='
for Y in 'WVRONMJIHGUFTEYCB@KQ?86/.#!X':_=_.split(Y);_=_.pop().join(_)
exec(_)

Ini adalah kode yang disandikan. Diekstraksi:

r=a=0
def P(y,x):
 return y-~y<<x
def Z(x):
 global r
 r=0 if x%2 else 1+Z(x>>1)
 return r
def L(x):
 return x>>1>>Z(x)
def S(v,y,c,t):
 global r
 f,x=L(t),r
 return A(S(v,y,c,L(x)),S(v,y,c,Z(x))) if f==2 else P(f,P(S(v,y,c,L(x)),S(v+2,S(4,13,-4,y),c,Z(x)))) if f<2 else t-(f>v)*c if f-v else y
def A(y,x):
 return 5<<P(y,x) if L(y)-1 else S(4,x,4,Z(r))
def D(x):
 global r,a
 f=d=c=0
 t,u=7,14
 while 1:
  if x:D(x-1)
  x=x>>1
  if ~x%2:break
  d,f,x=L(L(D(x))),L(r),L(r)
  if c-r:
   if not(L(u)or(L(r)-f)):
    x=x>>1
    if x%2:u=S(4,d,4,r);t=A(t,d)
   if f>>1:
    x=x>>1
    if x%2:c=P(d,c);t=S(4,13,-4,t);u=S(4,13,-4,u)
  if c:
   x=x>>1
   if x%2:
    x=x>>1
    q=~u&2|x%2
    if q:u=1<<P(L(u),u)
    t,c=P(q and u,P(L(c),t)),r
  x=x>>1
  if u>>1&x%2:c=P(t,c);u=S(4,13,-4,t);t=9
 a=P(P(t,P(u,P(x,c))),a)
 return a
print(D(D(D(D(D(D(9)))))))

Dalam hal ini, diasumsikan:

  • Tumpukan panggilan tanpa batas
  • Memori tak terbatas

Ini pada dasarnya adalah port dari jawaban JavaScript saya . Untuk detail lebih lanjut, periksa yang itu.

Kompresi dilakukan dengan ini .

Saya tidak tahu banyak tentang Python, jadi pasti ada tempat untuk menyimpan byte. Saya pikir sub-600 mungkin. sub-600 telah terbukti.

  • 608-> 600B, -8B
    • Mengelompokkan beberapa tugas
    • Kondisi terbalik Suntuk mengurangi tanda kurung
  • 600-> 599B, ​​-1B
    • Mengubah u/2baris terakhir ketiga definisi Dto u>>1, menyimpan byte dari mengompresnya ke karakter dengan karakter lain >>1.
Naruyoko
sumber
0

Ruby, D ^ 6 (9) (553 bytes)

_='F=$a=0TEK#y-~yUx.Z@#F=x%2G1?0R1+Z(x/2).L@#x/2>>[email protected])VHt);x=F#fG2?A(8L@C8Z@IRf>2?fGv ?yRt-(f>v ?1R0)*cREf,E8L@CS(v+2,t6yCc,Z@I).A(K#Hy)G1?Mx,4,Z(FIR5UEK.D@;$>UxVd=c=0;t=7;u=14;while[xNOx-1CB>0][1];d=HHD@IVW;x=W;cGF&&[Hu)G0&&WGf&&![u=Md,4,FCt=A(t,d)],fJd,cCt6tCu6u)]];cNB&&[t=E~u&2|!(u=1UEHcCu)CEHcCt)Cc=F];uJt,cCu6tCt=9]Q#$a=EEt,Eu,Ex,cIC$a)Q;$>UOOOOOO9III!BN#;return .QT6=M13,-4,8S(v,y,c,@(x)B(x/=2)%2C),J/2&![c=EEP(F$rNG0||G==WHF)HL(I))Ky,x)MS(4,OD(Q;endR: T;def U<<V;f=VUTRQOMKIHWGNFEJCB@86.#!'.each_char{|Y|_=_.split(Y);_=_.join(_.pop())};eval(_)

Ini adalah kode yang disandikan. Diekstraksi:

$r=$a=0;def P(y,x);return y-~y<<x;end;def Z(x);return $r=x%2==1?0: 1+Z(x/2);end;def L(x);return x/2>>Z(x);end;def S(v,y,c,t);f=L(t);x=$r;return f==2?A(S(v,y,c,L(x)),S(v,y,c,Z(x))): f>2?f==v ?y: t-(f>v ?1: 0)*c: P(f,P(S(v,y,c,L(x)),S(v+2,t=S(4,13,-4,y),c,Z(x))));end;def A(y,x);return L(y)==1?S(4,x,4,Z($r)): 5<<P(y,x);end;def D(x);$><<x;f=d=c=0;t=7;u=14;while[x==0||D(x-1),(x/=2)%2>0][1];d=L(L(D(x)));f=L($r);x=L($r);c==$r&&[L(u)==0&&L($r)==f&&(x/=2)%2==0||[u=S(4,d,4,$r),t=A(t,d)],f/2&(x/=2)%2==0||[c=P(d,c),t=S(4,13,-4,t),u=S(4,13,-4,u)]];c==0||(x/=2)%2&&[t=P(~u&2|(x/=2)%2==0||(u=1<<P(L(c),u)),P(L(c),t)),c=$r];u/2&(x/=2)%2==0||[c=P(t,c),u=S(4,13,-4,t),t=9];end;return $a=P(P(t,P(u,P(x,c))),$a);end;$><<D(D(D(D(D(D(9))))))

Kode ini adalah Nomor Loader dengan D 6 (9) sebagai gantinya.

Dalam hal ini, diasumsikan:

  • Tumpukan panggilan tanpa batas
  • Memori tak terbatas

Ini pada dasarnya adalah port dari jawaban JavaScript dan Python 3 saya . Untuk lebih jelasnya, periksa itu.

Kompresi dilakukan dengan ini (mungkin muncul karena tidak ada).

Saya seorang pemula di Ruby, jadi mungkin di bawah 512 adalah mungkin, tapi saya ragu.

Naruyoko
sumber