ตีกอล์ฟให้ใหญ่กว่าหมายเลขของรถตัก


18

ตามโปรแกรมการยุติที่สั้นที่สุดซึ่งมีขนาดเอาต์พุตเกินจำนวนของเกรแฮมและกอล์ฟที่มีขนาดใหญ่กว่า TREE (3)ฉันขอเสนอความท้าทายใหม่

หมายเลขของ Loader นั้นมีจำนวนมากซึ่งเป็นการยากที่จะอธิบาย (เนื่องจากตัวมันเองเป็นผลมาจากการฝึกเล่นกอล์ฟโดยมีเป้าหมายที่ยืดหยุ่น) มีคำจำกัดความและคำอธิบายที่นี่แต่สำหรับจุดประสงค์ของการกักกันตัวเองฉันจะพยายามอธิบายในโพสต์นี้ด้วย

อัลกอริทึม Ralph Loader ที่ใช้สร้างหนึ่งในจำนวนที่ใหญ่ที่สุดของอัลกอริทึม (คำนวณ) ใด ๆ ที่เคยเขียน! ที่จริงแล้วจำนวนของ Loader นั้นเป็นจำนวนที่ "คำนวณได้" มากที่สุดใน Googology Wiki (โดยตัวเลข "คำนวณได้" หมายถึงตัวเลขที่กำหนดในแง่ของการคำนวณ) นั่นหมายความว่าหากคำตอบสร้างจำนวนที่มากกว่าจำนวนตัวโหลดในวิธีที่น่าสนใจ (เช่นไม่ใช่แค่หมายเลขของตัวโหลด + 1) คุณสามารถลงไปได้ ประวัติ Googology! ที่ถูกกล่าวว่าโปรแกรมที่ผลิตบางอย่างเช่นหมายเลขของ Loader +1เป็นคำตอบที่ถูกต้องและ contenders คำถามนี้อย่างแน่นอน; อย่าคาดหวังว่าจะมีชื่อเสียง

งานของคุณคือการสร้างโปรแกรมยุติที่ผลิตจำนวนขนาดใหญ่กว่าจำนวน Loader ของ นี่คือดังนั้นโปรแกรมที่สั้นที่สุดชนะ!

  • คุณไม่ได้รับอนุญาตให้ป้อนข้อมูล
  • โปรแกรมของคุณจะต้องยุติอย่างถาวรในที่สุด แต่คุณสามารถสันนิษฐานได้ว่าเครื่องมีหน่วยความจำไม่สิ้นสุด
  • คุณอาจสมมติว่าประเภทหมายเลขภาษาของคุณสามารถเก็บค่าที่แน่นอนใด ๆแต่จำเป็นต้องอธิบายวิธีการทำงานในภาษาของคุณ (เช่น: ลอยมีความแม่นยำไม่สิ้นสุด?)
    • ไม่อนุญาตให้ใช้อินฟินิตี้เป็นเอาต์พุต
    • อันเดอร์โฟลว์ของชนิดตัวเลขโยนข้อยกเว้น มันไม่ได้พันรอบ
  • คุณต้องให้คำอธิบายว่าเพราะเหตุใดหมายเลขของคุณจึงใหญ่และเป็นโค้ดที่ไม่ดีนักเพื่อตรวจสอบว่าโซลูชันของคุณถูกต้องหรือไม่ (เนื่องจากไม่มีคอมพิวเตอร์ที่มีหน่วยความจำเพียงพอที่จะเก็บหมายเลขของ Loader)

นี่คือคำอธิบายของจำนวนตัวโหลด ดูhttp://googology.wikia.com/wiki/Loader%27s_numberและลิงก์ในรายละเอียดที่แม่นยำยิ่งขึ้น โดยเฉพาะอย่างยิ่งมันมีโปรแกรมที่สร้างหมายเลขของ Loader อย่างแน่นอน (ตามคำจำกัดความ)

แคลคูลัสของการก่อสร้างเป็นหลักภาษาการเขียนโปรแกรมที่มีคุณสมบัติมากโดยเฉพาะอย่างยิ่ง

ก่อนอื่นโปรแกรมทุกตัวที่ใช้งานได้จริงจะถูกยกเลิก ไม่มีลูปไม่มีที่สิ้นสุด สิ่งนี้จะมีประโยชน์มากเพราะมันหมายความว่าถ้าเรารันแคลคูลัสของโปรแกรมสร้างโดยพลการโปรแกรมของเราจะไม่ติดขัด ปัญหาคือว่านี่หมายถึงแคลคูลัสของการก่อสร้างไม่ทัวริงสมบูรณ์

ประการที่สองในบรรดาภาษาที่ไม่ใช่ทัวริงเป็นหนึ่งในภาษาที่ทรงพลังที่สุด ถ้าคุณสามารถพิสูจน์ได้ว่าเครื่องจักรทัวริงจะหยุดทุกอินพุตคุณสามารถตั้งโปรแกรมฟังก์ชั่นในแคลคูลัสของสิ่งก่อสร้างที่จะจำลองมัน (สิ่งนี้ไม่ได้ทำให้เสร็จสมบูรณ์เนื่องจากมีการหยุดเครื่องจักรทัวริงที่คุณไม่สามารถพิสูจน์ได้ว่ากำลังหยุดนิ่ง)

หมายเลขของ Loader คือจำนวนช่องคลอดที่ว่างสำหรับแคลคูลัสของสิ่งปลูกสร้างซึ่งเป็นไปได้ที่จะคำนวณเนื่องจากโปรแกรม coc ทั้งหมดสิ้นสุดลง

โดยเฉพาะอย่างยิ่ง loader.c Dกำหนดฟังก์ชั่นที่เรียกว่า โดยประมาณD(x)จะวนซ้ำบิตบิตทั้งหมดที่น้อยกว่าxตีความเป็นโปรแกรม coc เรียกใช้ syntactically ที่ถูกต้องและเชื่อมผลลัพธ์ (ซึ่งก็จะเป็นบิต) มันคืนค่าการต่อข้อมูลนี้

จำนวน Loader D(D(D(D(D(99)))))เป็น

สำเนาของโค้ดที่อ่านได้มากขึ้นจากวิกิ 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)))));}

6
ฉันอยากจะแนะนำให้ต่อต้านการลงคะแนนสำหรับความคล้ายคลึงกับคำถาม TREE (3): จำนวนของ Loader นั้นใหญ่กว่า TREE (3) มากจนต้องใช้วิธีการใหม่และน่าสนใจ
lirtosiast

2
@ fəˈnɛtɪk ทีนี้การพิมพ์หมายเลข Loader + 1 ยังน่าสนใจจากมุมมองของรหัสกอล์ฟ (ตัวอย่างเช่นคุณสามารถเอาชนะ 512 ไบต์เดิมได้หรือไม่) นอกจากนี้ยังมีลักษณะทั่วไปตามธรรมชาติของหมายเลขของตัวโหลดที่อาจนำมาใช้ง่ายขึ้น (ตัวอย่างเช่นการใช้ ZFC แทน CoC) นอกจากนี้ยังสามารถใช้ลำดับของกลุ่มโลภหรือเกมสัญญาที่มีขอบเขต จำกัด
PyRulez

2
น่าเสียดายที่ฉันไม่เข้าใจการสร้างหมายเลขของ Loader และดูเหมือนจะไม่มีใครรู้ขอบเขตในแง่ของลำดับชั้นที่เติบโตอย่างรวดเร็วฉันไม่สามารถให้คำตอบที่ดีได้ที่นี่ ฉันเชื่อว่าคำตอบส่วนใหญ่จะเป็นส่วนขยายของจำนวน Loader หรือสิ่งต่าง ๆ เช่นลำดับคณะโลภและเกมสัญญาที่แน่นอน ...
Simply Beautiful Art

1
@SimplyBeautifulArt โอ้เด็กถ้าคุณไม่เข้าใจมันไม่ได้เป็นลางดีสำหรับความท้าทายนี้ : PI สามารถลองอธิบายรายละเอียดเพิ่มเติมให้คุณในการแชทได้ แต่ฉันก็ไม่ทราบว่ามีขอบเขตบนหรือไม่
PyRulez

1
@SimplyBeautifulArt โดยเฉพาะอย่างยิ่งตั้งแต่คงพับได้รับเลือกมาเป็นพิเศษเพื่อพยายามที่จะเป็นจำนวนที่ใหญ่ที่สุดที่สร้างขึ้นโดยมีจำนวนหนึ่งของรหัส (ซึ่งเป็นหมายเลขของเกรแฮมและ TREE (3) ที่เพียงตัวเลขที่น่าสนใจทางคณิตศาสตร์ที่เพียงเพื่อให้เกิดขึ้นจะมีขนาดใหญ่) ผม คิดว่าคำตอบส่วนใหญ่จะเป็นหมายเลขของ Loader + 1
PyRulez

คำตอบ:


9

JavaScript, D ^ 6 (9) ( 508 501 495 492 487 485 481 ไบต์)

_='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(_)

นี่คือรหัสที่เข้ารหัส

_='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

รหัสถอดรหัส:

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))))))

ถอดรหัสโค้ดที่ไม่ได้รับการควบคุม (เงื่อนไขและสิ่งของต่าง ๆ จะถูกเก็บไว้จาก 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))))))

ในที่นี้จะถือว่าเป็น:

  • สแตกการเรียกที่ไม่มีที่สิ้นสุด
  • หน่วยความจำที่ไม่มีที่สิ้นสุด
  • ความแม่นยำไม่มีที่สิ้นสุด Number
  • ขนาดไม่มีที่สิ้นสุด Number
  • ตัวดำเนินการ Bitshift และ bitwise ทำงานกับจำนวนเต็มบิตไม่ จำกัด แทน 53 บิต การลบล้างระดับบิตยังคงเป็นการปฏิเสธบิตเครื่องหมาย

อัลกอริทึมการเข้ารหัส / ถอดรหัส:

การเข้ารหัสเสร็จแล้วดังนี้

  • รับสายซ้ำแล้วซ้ำอีกเรียกว่า S
  • แทนที่ S ทั้งหมดในรหัสเป็นคีย์ K
  • วาง K และ S ไว้ท้าย
  • ทำรายการของคีย์และใส่อัลกอริธึมการถอดรหัสเพื่อให้โค้ดทำงานจริง

อัลกอริทึมการถอดรหัส:

  • จดรายการกุญแจ
  • ใช้คีย์แรกสุดเค
  • แยกสตริงสำหรับแต่ละเค
  • เนื่องจากอาร์เรย์สุดท้ายคือสิ่งที่จะแทนที่ KS ให้เปิดและแทนที่ K ทั้งหมดด้วยการเข้าร่วมอาร์เรย์ด้วยค่าที่ปรากฏ

การบีบอัดทำได้ด้วยรหัสนี้ตรวจสอบเฉพาะกล่องสุดท้าย เนื่องจากสิ่งนี้จะเข้ารหัสการประหยัดที่ใหญ่ที่สุดก่อนไม่ใช่การบีบอัดที่มีประสิทธิภาพที่สุด แต่ฉันไม่รู้ว่าจะทำให้เล็กลงได้อย่างไร

JavaScript, (339 ตัวอักษร )

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

รหัสนี้จะใช้สตริง 16 บิตเป็น a แปลงเป็นสตริง 8 บิตด้วยไบนารี (BE) เดียวกันและevalมัน

รหัสถอดรหัสคือรหัสที่เข้ารหัสด้านบน

พิสูจน์ว่า D ^ 6 (9)> D ^ 5 (99)

สำหรับสิ่งนี้เราจะเปรียบเทียบ D (9) และ 99

โดยใช้รหัสด้วยตนเอง, D (9) พบเท่ากับ(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))))))))))))))))))))))))))))))))และแม้กระทั่ง D (0) 8646911284551352321มีค่าเท่ากับ

ดังนั้น D (9) >>> 99 และเนื่องจาก D เพิ่มขึ้นอย่างเข้มงวด D ^ 6 (9)> D ^ 5 (99)

  • 508B-> 501B, -7B
    • -1B สำหรับ ... ฉันไม่รู้ว่าทำไม ฉันไม่ได้เปลี่ยนแปลงไปD(D(D(D(D(99))))) D(D(D(D(D(D(9))))))อีกอย่างที่สับอักษร
    • -6B สำหรับการเพิ่มใหม่&&(1)สำหรับD(x)เงื่อนไขการวนรอบของ
  • 501B-> 495B, -6B
    • แก้ไขมากที่สุด/2ถึง>>1s เพราะNumber
    • 6 ไบต์บันทึกจากที่ใดก็ได้
    • คุณสามารถเห็นความพยายามของฉันในการปรับปรุงนี้ที่นี่
  • 495-> 492B, -3B
    • โดยการเปลี่ยนถอดรหัสจากไปfor...infor...of
  • 492-> 487B, -5B
    • การลบการมอบหมายที่ไม่จำเป็น
    • การเปลี่ยนชื่ออาร์กิวเมนต์
  • 487-> 485B, -2B
    • 1 ไบต์จากการใช้evalสำหรับการลบDreturn
    • การบีบอัด 1 ไบต์รวมเครื่องหมายวงเล็บปิดเข้ากับเครื่องหมายจุลภาค
  • 485-> 481B, -4B
    • โดยการบีบอัดสตริงย่อยต่าง ๆ

หรือผ่านได้อย่างง่ายดายด้วยความยาวเท่ากันโดยแทนที่ 99 ด้วย M9 ซึ่งทำให้ค่า D ^ 6 (9)
Naruyoko

0

Python 3, D ^ 6 (9) ( 608 600 599 ไบต์)

_='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(_)

นี่คือรหัสที่เข้ารหัส สกัด:

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)))))))

ในที่นี้จะถือว่าเป็น:

  • สแตกการเรียกที่ไม่มีที่สิ้นสุด
  • หน่วยความจำที่ไม่มีที่สิ้นสุด

นี้เป็นพื้นพอร์ตของฉันคำตอบ JavaScript สำหรับรายละเอียดเพิ่มเติมโปรดตรวจสอบที่

การบีบอัดทำด้วยนี้

ฉันไม่ค่อยมีความรู้ใน Python ดังนั้นจึงมีที่สำหรับบันทึกไบต์ ฉันคิดว่า sub-600 เป็นไปได้ sub-600 ได้รับการพิสูจน์แล้ว

  • 608-> 600B, -8B
    • จัดกลุ่มงานที่ได้รับมอบหมาย
    • เงื่อนไขที่กลับด้านของSเพื่อลดวงเล็บ
  • 600-> 599B, ​​-1B
    • การเปลี่ยนแปลงu/2ในบรรทัดสุดท้ายในสามของความหมายของDการu>>1ประหยัดไบต์จากการบีบอัดมันให้กับตัวละครอื่น ๆ ที่มี>>1s

0

Ruby, D ^ 6 (9) (553 ไบต์)

_='F=$a=0TEK#y-~yUx.Z@#F=x%2G1?0R1+Z(x/2).L@#x/2>>Z@.8t)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(_)

นี่คือรหัสที่เข้ารหัส สกัด:

$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))))))

รหัสนี้คือหมายเลขตัวโหลดที่มี D 6 (9) แทน

ในที่นี้จะถือว่าเป็น:

  • สแตกการเรียกที่ไม่มีที่สิ้นสุด
  • หน่วยความจำที่ไม่มีที่สิ้นสุด

นี้เป็นพื้นพอร์ตของฉันคำตอบ JavaScriptและคำตอบหลาม 3 สำหรับรายละเอียดเพิ่มเติมตรวจสอบสิ่งเหล่านั้น

การบีบอัดเสร็จสิ้นด้วยสิ่งนี้ (อาจปรากฏขึ้นเนื่องจากไม่มีอยู่)

ฉันเป็นผู้เริ่มต้นที่ Ruby ดังนั้นอาจต่ำกว่า 512 เป็นไปได้ แต่ฉันสงสัย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.