ความยืดหยุ่น Kolmogorov ขายอาคา!


12

นี่คือ , , ที่ท้าทายในการผลิตการส่งออกคงที่มีการป้อนข้อมูลที่ไม่มี

อย่างไรก็ตามรูปแบบเอาต์พุตมีความยืดหยุ่น - อาจถูกพิมพ์ออกมาเป็นมาตรฐานพิมพ์ออกมาเป็นข้อผิดพลาดมาตรฐานส่งกลับเป็นรายการของอักขระส่งกลับเป็นรายการของไบต์หรือส่งกลับเป็นรายการของจำนวนเต็ม หากคุณคิดว่ามีสิ่งอื่นที่สมเหตุสมผลดูได้จากความคิดเห็น

นี่คือการที่ง่ายและมีขนาดใหญ่ตัวอักษรศิลปะ ASCII CODEGOLF :

 CCCC   OOO   DDDD   EEEEE   GGG    OOO   L      FFFFF
C      O   O  D   D  E      G      O   O  L      F
C      O   O  D   D  EEE    G  GG  O   O  L      FFF
C      O   O  D   D  E      G   G  O   O  L      F
 CCCC   OOO   DDDD   EEEEE   GGGG   OOO   LLLLL  F

ไม่มีบรรทัดใหม่ใด ๆ (หรือเว้นวรรคต่อท้ายที่บรรทัดใด ๆ ) มีความยาว 256 อักขระ:

 CCCC   OOO   DDDD   EEEEE   GGG    OOO   L      FFFFFC      O   O  D   D  E      G      O   O  L      FC      O   O  D   D  EEE    G  GG  O   O  L      FFFC      O   O  D   D  E      G   G  O   O  L      F CCCC   OOO   DDDD   EEEEE   GGGG   OOO   LLLLL  F

ดัชนี (อิงตาม 0) ของอักขระที่ไม่ใช่ช่องว่าง ได้แก่ :

1, 2, 3, 4, 8, 9, 10, 14, 15, 16, 17, 21, 22, 23, 24, 25, 29, 30, 31, 36, 37, 38, 42, 49, 50, 51, 52, 53, 54, 61, 65, 68, 72, 75, 82, 89, 93, 96, 103, 104, 111, 115, 118, 122, 125, 126, 127, 132, 135, 136, 139, 143, 146, 153, 154, 155, 156, 163, 167, 170, 174, 177, 184, 188, 191, 195, 198, 205, 207, 208, 209, 210, 214, 215, 216, 220, 221, 222, 223, 227, 228, 229, 230, 231, 235, 236, 237, 238, 242, 243, 244, 248, 249, 250, 251, 252, 255

คุณไม่สามารถใช้ 97 ไบต์เหล่านี้ในรหัสของคุณแต่ต้องสร้างรายการ (หรือผลลัพธ์ที่คล้ายกัน) ไบต์เหล่านี้ตามลำดับนี้ด้วยไบต์ที่หายไปแทนที่ด้วย 32 ไบต์ในหน้ารหัสที่คุณใช้ (ในหลาย ๆ หลาย ๆ โค้ดเพจอักขระเว้นวรรค)

คุณอาจรวมการขึ้นบรรทัดใหม่ * สวย (แต่ไม่มีช่องว่างต่อท้ายในบรรทัด) ถ้ามันช่วย

ตัวอย่างเช่นการใช้หน้ารหัสวุ้นนี้เป็นที่ยอมรับ:

 ¢£¤¥   ®µ½   ÇÐÑ×   ßæçðı   øœþ    $%&   *      12345
6      =   A  D   H  K      R      Y   ]  `      g
h      o   s  v   z  }~¶    ⁴  ⁷⁸  ⁻   Ɓ  Ƒ      ƲȤɓ
ƈ      ɲ   ʂ  ȥ   Ẹ  Ḳ      Ṭ   Ỵ  Ḃ   Ḟ  İ      Ṡ
 ẆẊẎŻ   ẹḥị   ṇọṛṣ   ẉỵẓȧḃ   ḟġḣŀ   ṗṙṡ   ẏż«»‘  ”

... แต่เป็นเช่นนั้น:

 ¢£¤¥   ®µ½   ÇÐÑ×   ßæçðı   øœþ    $%&   *      123456      =   A  D   H  K      R      Y   ]  `      gh      o   s  v   z  }~¶    ⁴  ⁷⁸  ⁻   Ɓ  Ƒ      ƲȤɓƈ      ɲ   ʂ  ȥ   Ẹ  Ḳ      Ṭ   Ỵ  Ḃ   Ḟ  İ      Ṡ ẆẊẎŻ   ẹḥị   ṇọṛṣ   ẉỵẓȧḃ   ḟġḣŀ   ṗṙṡ   ẏż«»‘  ”

... และเป็นเช่นนั้น:

[32, 1, 2, 3, 4, 32, 32, 32, 8, 9, 10, 32, 32, 32, 14, 15, 16, 17, 32, 32, 32, 21, 22, 23, 24, 25, 32, 32, 32, 29, 30, 31, 32, 32, 32, 32, 36, 37, 38, 32, 32, 32, 42, 32, 32, 32, 32, 32, 32, 49, 50, 51, 52, 53, 54, 32, 32, 32, 32, 32, 32, 61, 32, 32, 32, 65, 32, 32, 68, 32, 32, 32, 72, 32, 32, 75, 32, 32, 32, 32, 32, 32, 82, 32, 32, 32, 32, 32, 32, 89, 32, 32, 32, 93, 32, 32, 96, 32, 32, 32, 32, 32, 32, 103, 104, 32, 32, 32, 32, 32, 32, 111, 32, 32, 32, 115, 32, 32, 118, 32, 32, 32, 122, 32, 32, 125, 126, 127, 32, 32, 32, 32, 132, 32, 32, 135, 136, 32, 32, 139, 32, 32, 32, 143, 32, 32, 146, 32, 32, 32, 32, 32, 32, 153, 154, 155, 156, 32, 32, 32, 32, 32, 32, 163, 32, 32, 32, 167, 32, 32, 170, 32, 32, 32, 174, 32, 32, 177, 32, 32, 32, 32, 32, 32, 184, 32, 32, 32, 188, 32, 32, 191, 32, 32, 32, 195, 32, 32, 198, 32, 32, 32, 32, 32, 32, 205, 32, 207, 208, 209, 210, 32, 32, 32, 214, 215, 216, 32, 32, 32, 220, 221, 222, 223, 32, 32, 32, 227, 228, 229, 230, 231, 32, 32, 32, 235, 236, 237, 238, 32, 32, 32, 242, 243, 244, 32, 32, 32, 248, 249, 250, 251, 252, 32, 32, 255]

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


นี่คือรหัส Python 3ซึ่งแสดงว่า ASCII ไม่พร้อมใช้งาน

* ถึงแม้การพิมพ์ด้วยตัวเองอาจจะไม่ได้สวยขนาดนั้นเลย!


คุณไม่สามารถใช้ 97 ไบต์ใด ๆ ในรหัสของคุณนั่นหมายความว่าฉันไม่สามารถใช้อักขระ ASCII เหล่านี้: $%&*123456=ADHKRY]``ghosvz}~และไม่มีการขึ้นบรรทัดใหม่?
ติตัส

1
@Titus หากหน้ารหัสของคุณสอดคล้องกับ ASCII แล้วใช่ - หรือแท็บหรือตัวอักษรอื่น ๆ ในช่วงที่กำหนดเช่นไม่สามารถพิมพ์ได้หรือขยาย (เช่น - ดูสคริปต์ Python ที่ลิงก์ไว้ที่ TIO)
Jonathan Allan

2
สำหรับสิ่งที่คุ้มค่านี่คือตัวตรวจสอบรหัส (สมมติว่าไม่มีโค้ดหน้าพิเศษ)
Arnauld

ฉันเกือบจะมีมันใน PHP ... ต้องการเพียงวิธีที่จะarray_map(function($n){return sprintf("%6b",$n);},...)ไม่มี$(ฉันสามารถทำได้) และไม่มี}(ไม่มีความคิด) ใช่; ฉันต้องการแพ็คข้อมูล!
ติตัส

คำตอบ:


7

Python 2 , 321 203 ไบต์

print map(lambda(i,x):(x>'0'and i-8-8-8-8)+8+8+8+8,enumerate(bin(int(reduce(lambda x,y:x+repr('abcdefijkl'.find(y)),'cfjdbljcibkeajjejiljjlcbjddlafklebajjlceljdeadficijflealkeklkljadfbbckjebclkf','')))))

ลองออนไลน์!


คำอธิบาย:

จากภายในสู่ภายนอก:

cfjdbljcibkeajjejiljjlcbjddlafklebajjlceljdeadficijflealkeklkljadfbbckjebclkเป็นตัวเลขที่25731972618407747697792173390589410779249734035626759409848989703511287412985เข้ารหัสด้วยอักขระที่อนุญาต (ไม่123456อนุญาต)

reduce(lambda x,y:x+repr('abcdefijkl'.find(y)),'cfjdbl..bclkf','') แม็พสตริงกับสตริงทศนิยม:

  • reduce(lambda x,y:x+y,'..','')เหมือนกับ''.join('..')(ไม่oอนุญาต)
  • repr('..')แทนstr('..')(ไม่sอนุญาต)
  • 'abcdefijkl'.find(y) แมปถ่านเป็นหลัก

enumerate(bin(int(...)))แปลงสตริงตัวเลขเป็นสตริงไบนารีและระบุ สิ่งนี้ทำให้ทั้งคู่[(0,0), (1,b), (2,1), (3,1), ...]

map(lambda(i,x):(x>'0'and i-8-8-8-8)+8+8+8+8, ... ) แปลงรายการที่แจกแจงให้เป็นผลลัพธ์สุดท้าย

  • map(lambda(i,x):.. , .. )แทน[... for(i,x)in ...](ไม่o]อนุญาต)
  • lambda(i,x): ..แปลงแต่ละ (ดัชนีค่า) 32คู่กับทั้งดัชนีหรือ
  • (x>'0'and i-8-8-8-8)+8+8+8+8 เหมือนกับ:
    • x>'0'and i or 8+8+8+8, (ไม่oอนุญาต)
    • [8+8+8+8,i][x>'0']หรือ[8<<9-7,i][x>'0'](ไม่]อนุญาต)
  • 8+8+8+8= 32(ไม่23อนุญาต)

ซึ่งหมายความว่าโปรแกรมนั้นเป็นหลักเหมือนกับ:

print[[32,i][x>'0']for i,x in enumerate(bin(25731972618407747697792173390589410779249734035626759409848989703511287412985))]

มีนักกอล์ฟที่น่ารักทำงานที่นั่น: D
Jonathan Allan

7

C (gcc) , 318 ไบต์

main(_){--_<88+80+88?printf((int[:>){77707-989908070??>,((int[:>){0xE8E8C79E^0xB0B0080,0xC07E0870^0xE0000C00,0xCC08099C^0xEE0C008E,0xE8888989^0xCC00808,0x9E088990^0x800C0000,0x990C8888^0x080ECC00,0xF9C7a088^0x080000C0,0x9F8C78F8^0x900000??>[_>>(0xC^0x9):>>>(_<<9+9+9>>9+9+9))<<(70^89)>>(70^89)?_:' '),main(_+9-7):0;??>

ลองออนไลน์!

อันนี้เป็นการเดินทาง ...

1. บีบอัดรายการ

อย่างใดเราจะต้องตรวจสอบว่าเป็นจำนวนเต็มหนึ่งในคะแนนรหัสพิเศษ รายการ 'เปล่า' จะยาวเกินไปดังนั้นเราจึงใช้รายการตรวจสอบ รายการนี้มีค่าที่ไม่เป็นศูนย์ที่จุดรหัสที่ 'จำกัด ' และค่าศูนย์ที่ไม่

น่าเสียดายที่มันยังใช้เวลา 512 ไบต์เพื่อให้มีรายการ (ดูเหมือน0,0,7,7,0,7,0,...) สิ่งนี้สามารถทำให้สั้นลงได้ด้วย bitmask

ในการใช้ประโยชน์ bitmask เราจะแบ่งแต่ละไบต์เป็นสองส่วน 3 บิตแรกจะเลือกมาสก์จากอาร์เรย์ในขณะที่ 5 บิตสุดท้ายจะเลือกบิตในอาร์เรย์ เราไม่สามารถลดขนาดอาร์เรย์อีกต่อไปเนื่องจากจำนวนเต็มแบบ 32 บิตที่ใช้โดยค่าเริ่มต้นไม่รองรับมากกว่า 2 ^ 5 = 32 บิต

การใช้งานการอ้างอิงฉันเขียนว่า:

int main() {
    int i;
    int vals[] = {1, 2, 3, 4, 8, 9, 10, 14, 15, 16, 17, 21, 22, 23, 24, 25, 29, 30, 31, 36, 37, 38, 42, 49, 50, 51, 52, 53, 54, 61, 65, 68, 72, 75, 82, 89, 93, 96, 103, 104, 111, 115, 118, 122, 125, 126, 127, 132, 135, 136, 139, 143, 146, 153, 154, 155, 156, 163, 167, 170, 174, 177, 184, 188, 191, 195, 198, 205, 207, 208, 209, 210, 214, 215, 216, 220, 221, 222, 223, 227, 228, 229, 230, 231, 235, 236, 237, 238, 242, 243, 244, 248, 249, 250, 251, 252, 255, 0};

    for (i = 0; i <= 0xFF; ++i) {
        int j,f;
        f = 0;
        for (j = 0; vals[j]; ++j)
            if (vals[j] == i)
                f = 1;
        if (f)
            printf("1");
        else
            printf("0");

        if (i%32 == 31)
            printf("\n");
    }

    return 0;
}

echo "obase=16;ibase=2;$(./a.out | rev)" | bcผมสามารถที่จะสร้างค่าที่เหมาะสมสำหรับอาร์เรย์ใหม่นี้ใช้คำสั่ง สิ่งนี้จะส่งผ่านเอาต์พุตของโปรแกรมด้านบน ( ./a.out) ไปยังrevโปรแกรมซึ่งย้อนกลับแต่ละบรรทัด มันพิมพ์สิ่งนี้พร้อมกับส่วนหัวเป็น bc ที่ตั้งฐานเอาท์พุทเป็น 16 และฐานอินพุตเป็น 2 ดังนั้น bc แปลงเลขฐานสองเป็นบิตมาสค์ฐานสิบหก

อาร์เรย์ที่เป็นผลลัพธ์สามารถดูได้ในโซลูชัน 'เบต้า' นี้:

f(){
    int x;
    int arr[] = {0xE3E3C71E, 0x207E0470, 0x22040912, 0xE4488181, 0x1E048990, 0x91024488, 0xF1C7A048, 0x9F1C78F8};
    for (x=0; x<=0xFF; ++x) {
        int mask = arr[x >> 5];
        int bit = mask >> (x & 0x1F);

        if (bit & 1)
            printf("%c", x);
        else
            printf(" ");
    }
}

2. การจัดการกับข้อ จำกัด

มีข้อ จำกัด มากมายที่ต้องวางไว้ในรหัสด้านบน ที่นี่ฉันจะผ่านแต่ละคน 1 ต่อ 1

  1. ไม่มีการมอบหมาย

นี่เป็นความรู้สึกของภาษาอื่นเช่นกันโดยไม่มีการมอบหมายใน C มันยากมากที่จะได้รับค่าการรับรองใด ๆ ลงในตัวแปร วิธีที่ง่ายที่สุดสำหรับเราคือการเขียนฟังก์ชั่นของเราเป็นโปรแกรมแบบเต็ม อาร์กิวเมนต์แรกของmainจะถูกส่งผ่านค่าargcที่จะเป็น 1 ถ้าเรียกด้วยไม่มีข้อโต้แย้ง

  1. ไม่มีการวนซ้ำ

โครงสร้างเท่านั้นวนลูปใน C มีfor, whileและgotoทั้งหมดที่มีตัวอักษรที่ถูก จำกัด สิ่งนี้ทำให้เราใช้การเรียกซ้ำ ฟังก์ชั่นหลักจะเริ่มต้นที่ 1 และเรียกคืนจนกว่าอาร์กิวเมนต์คือ> 256 ในขณะที่มันจะลดการโต้แย้งภายในเพื่อใช้ค่า 0 ดัชนี

  1. ค่าเลขฐานสิบหก

ค่าในอาร์เรย์ด้านบนเป็นเลขฐานสิบหกแม้ว่าจะถูกแปลงเป็นทศนิยม แต่ก็มีสัญลักษณ์ที่ถูก จำกัด บางส่วนโดยเฉพาะอย่างยิ่ง 123456 (โฆษณาสามารถลดขนาดลงได้) ในการหลีกเลี่ยงค่าคงที่แต่ละค่านี้คือ XORed กับค่าอื่นซึ่งอักขระที่ถูก จำกัด จะถูกลบออก 1 กลายเป็น 9 ^ B, 2 กลายเป็น C ^ E, 3 กลายเป็น B ^ 8, 4 กลายเป็น 8 ^ C, 5 กลายเป็น 9 ^ C และ 6 กลายเป็น 9 ^ F (มีหลายวิธีที่จะทำฉันเลือกวิธีนี้) .

  1. การพิมพ์

ข้อ จำกัด ไม่ทิ้งฟังก์ชั่นการพิมพ์มากมายเหลือไว้ให้เรา putcharและputsมีทั้งที่ถูก จำกัด printfออก น่าเสียดายที่เราต้องส่งprintfสตริงรูปแบบนึกคิด "% c" สตริงดังกล่าวทั้งหมดมีเครื่องหมายเปอร์เซ็นต์ที่น่ารำคาญที่เราต้องการลบ โชคดีที่เราคิดว่าเครื่องจักรเล็ก ๆ น้อย ๆ (เพราะเห็นได้ชัดว่าเป็นสิ่งที่ TIO ใช้และเป็นเรื่องปกติ) ด้วยการสร้างจำนวนเต็มซึ่งไบต์ในหน่วยความจำคือ 0x25 (%), 0x63 (c), 0x00 (\ 0), อะไรก็ได้ (ไม่สำคัญว่าจะเป็นหลังจากเทอร์มิเนเตอร์สิ้นสุด) เราก็สามารถผ่านที่อยู่ของprintfมันได้ เป็นสตริง หมายเลขหนึ่งที่ใช้งานได้คือ -989830363 (0xC5006325) สร้างได้ง่ายภายใต้ข้อ จำกัด 77707-989908070

ยังคงมีปัญหาที่เราไม่สามารถอ้างอิงค่าใด ๆ (เพราะเราไม่สามารถกำหนดได้และเพราะเราไม่สามารถใช้ &) ดังนั้นเราจึงต้องใช้ตัวอักษรอาร์เรย์ (int []) {... } ที่จริงเราใช้สิ่งนี้สำหรับอาร์เรย์ bitmask ด้านบนเช่นกัน

  1. วงเล็บปิด

เราไม่สามารถใช้ ']' หรือ '}' เพื่อปิดอาร์เรย์หรือฟังก์ชั่นของเรา โชคดีที่ C มี digraphs และ trigraphs ที่ใช้งานได้ :>จะกลายเป็น]ในขณะที่จะกลายเป็น??> }จำเป็นต้องใช้ gcc เพื่อทำการ-trigraphsสลับเนื่องจากจะละเว้นการเรียกค่าเริ่มต้น (เป็นการละเมิดมาตรฐาน)

  1. การดำเนินงานระดับบิต

เราไม่สามารถใช้&เพื่อปกปิดบิตของดัชนีของเราและเราไม่สามารถใช้%เพื่อให้ได้วิธีที่ล้าสมัย ดังนั้นเราจึงต้องพึ่งพาพฤติกรรมการใช้งานเฉพาะ โดยเฉพาะอย่างยิ่งเราเปลี่ยนจำนวนเต็ม 32 บิตของเราไปทางซ้ายพอที่จะสูญเสียบิตแล้วกลับไปทางขวา ตัวอย่างเช่นเพื่อให้ได้ 5 บิตสุดท้ายของหมายเลขของเราเราแรกเปลี่ยนเป็น 27 บิต (ออกabcde00000...) จากนั้นเลื่อนกลับไปทางขวา 27 บิต (ออก...00000abcde)

  1. ค่าเบ็ดเตล็ด

เราต้องไม่กี่ค่าที่แท้จริงมากขึ้นตลอดทั้งรหัส - เหล่านี้จะถูกนำมาจาก Arnauld คำตอบของ JS บวก 27 (ด้วยเหตุผลข้างต้น) 9+9+9ถูกเพิ่มโดยฉันเป็น

3. วางมันไว้ด้วยกัน

นี่คือคำอธิบายของแหล่งที่มาพร้อมกับการเปลี่ยนแปลงเหล่านี้ทั้งหมดเข้าด้วยกัน

main(_){                // This is our main entry point
--_<88+80+88            // This subtracts 1 from the argument (_) and checks if it is less than 256
    ?                   // If it is less than 256 we 'continue'
printf(                 // first we call printf with...
    (int[:>){           // An integer array that will be interpreted as a string
    77707-989908070     // With the value we determined above, to represent "%c\0\xC5"
    ??>,                // This is a trigraph for }, just as the :> above is a digraph for ]
    ((int[:>){          // We immediately create another integer array
0xE8E8C79E^0xB0B0080,   // Each row is the bit-mask for 32 characters
0xC07E0870^0xE0000C00,
0xCC08099C^0xEE0C008E,
0xE8888989^0xCC00808,
0x9E088990^0x800C0000,
0x990C8888^0x080ECC00,
0xF9C7a088^0x080000C0,
0x9F8C78F8^0x900000??>
[_>>(0xC^0x9):>         // This is {arr}[_>>5] just in a roundabout way
>>(_<<9+9+9>>9+9+9))    // Similarly this is (...)>>(_&0x1F)
<<(70^89)>>(70^89)      // This is <<31>>31 or &1, to check the last bit
?_:' ')                 // If its 1, we print the character, otherwise we print a space
,main(_+9-7):0;         // We recurse, the :0 is the other branch of the if, it terminates execution
??>

เยี่ยมมาก! คำอธิบายที่ดีเช่นกัน (ฉันไม่ใช่ 100% แต่เชื่อว่าส่วนหัวควรอ่าน "C (gcc) -trigraphs")
Jonathan Allan

1
มันขึ้นอยู่กับการอภิปราย รหัสไม่เฉพาะ gcc ไม่ใช่รหัสที่เป็นไปตามมาตรฐานอย่างสมบูรณ์ แต่ในเครื่องของฉัน cc รวบรวมได้ดีโดยไม่มีข้อโต้แย้ง ไม่มีคอมไพเลอร์ในตัวบน TIO ที่สอดคล้องกับมาตรฐานเป็นค่าเริ่มต้นหากมี (หรือ build ที่เก่ากว่าของ gcc) จากนั้น trigraphs จะสร้างคำเตือน
LambdaBeta

ใช้?:ส่วนขยายg ++ , การใช้โมดูโล shift ระดับบิตในทางที่ผิด, 273 ไบต์
user202729

นั่นฉลาด ฉันจะให้มันเป็น แต่เป็นรุ่นนี้ไม่จำเป็นต้อง-trigraphsตัวเลือกคอมไพเลอร์ C บางส่วนในขณะที่?:ต้องใช้ GCC -trigraphsซึ่งจะต้องมี
LambdaBeta

6

brainfuck , 635 ไบต์

++++++++++++++++++++++++++++++++.>+.+.+.+.<...>++++.+.+.<...>++++.+.+.+.<...>++++.+.+.+.+.<...>++++.+.+.+....++++.+.+.<...>++++.<......>+++++++.+.+.+.+.+.<......>+++++++.<...>++++.<..>+++.<...>++++.<..>+++.<......>+++++++.<......>+++++++.<...>++++.<..>+++.<......>+++++++.+.<......>+++++++.<...>++++.<..>+++.<...>++++.<..>+++.+.+.<....>+++++.<..>+++.+.<..>+++.<...>++++.<..>+++.<......>+++++++.+.+.+.<......>+++++++.<...>++++.<..>+++.<...>++++.<..>+++.<......>+++++++.<...>++++.<..>+++.<...>++++.<..>+++.<......>+++++++.<.>++.+.+.+.<...>++++.+.+.<...>++++.+.+.+.<...>++++.+.+.+.+.<...>++++.+.+.+.<...>++++.+.+.<...>++++.+.+.+.+.<..>>-.

ลองออนไลน์!

เพื่อตอบสนองต่อการถูกจาวาสคริปต์ในที่สุดฉันก็ตีกอล์ฟสิ่งที่ฉันสามารถทำได้จากนี้:

1 ไบต์บันทึกโดยมี 32 ในเซลล์ 0 และเซลล์ที่เพิ่มขึ้น 1 (เหตุผลเดียวที่ฉันมีตอนแรกก็คือวิธีอื่นเป็นเพราะการแก้ไขอย่างรวดเร็วเมื่อ OrjanJohansen ชี้ให้เห็นว่าฉันไม่สามารถใช้])

บันทึก 1 ไบต์โดยการลดเซลล์ที่สาม (เริ่มต้นที่ 0) เพื่อสร้าง255=-1

บันทึก 2 ไบต์โดยการพิมพ์ช่องว่างระหว่างอักขระ 31 และ 36 โดยไม่ใช้<>แต่เพียงหยุดที่ 32 เพื่อพิมพ์จากเซลล์ 0 เมื่อเพิ่มจาก 31 ถึง 33

brainfuck , 639 ไบต์

>++++++++++++++++++++++++++++++++.<+.+.+.+.>...<++++.+.+.>...<++++.+.+.+.>...<++++.+.+.+.+.>...<++++.+.+.>....<+++++.+.+.>...<++++.>......<+++++++.+.+.+.+.+.>......<+++++++.>...<++++.>..<+++.>...<++++.>..<+++.>......<+++++++.>......<+++++++.>...<++++.>..<+++.>......<+++++++.+.>......<+++++++.>...<++++.>..<+++.>...<++++.>..<+++.+.+.>....<+++++.>..<+++.+.>..<+++.>...<++++.>..<+++.>......<+++++++.+.+.+.>......<+++++++.>...<++++.>..<+++.>...<++++.>..<+++.>......<+++++++.>...<++++.>..<+++.>...<++++.>..<+++.>......<+++++++.>.<++.+.+.+.>...<++++.+.+.>...<++++.+.+.+.>...<++++.+.+.+.+.>...<++++.+.+.+.>...<++++.+.+.>...<++++.+.+.+.+.>..<+++.

ลองออนไลน์!

ครั้งแรกที่เราสร้างหมายเลข 32 จากนั้นเราเพิ่งผ่านการเพิ่มเซลล์หนึ่งและสลับการพิมพ์ระหว่างเซลล์นั้นและเซลล์ที่มี 32 การเพิ่มจำนวนอย่างต่อเนื่องเป็นสิ่งที่ Brainfuck ทำได้ดี

มันดีที่จะเอาชนะ Javascript ด้วย Brainfuck มันไม่ได้เกิดขึ้นบ่อยครั้ง!


ขออภัย]ไม่ใช่ตัวละครที่ได้รับอนุญาต แม้ว่าคุณจะยังคงสามารถแก้ไขและเอาชนะ Javascript ได้ :)
Ørjan Johansen

@ ØrjanJohansenจับจ้อง
เลเวลริเวอร์เซนต์

ขออภัยคุณทำ Javascript หาย
user202729

@ user202729 ค่อนข้างดี! ยังฉันมี Javascript พ่ายแพ้เป็นเวลา 3 วัน เนื่องจากฉันไม่สามารถใช้ลูปได้เนื่องจาก]ไม่ได้รับอนุญาตฉันคิดว่าคำตอบ BF ของฉันน่าจะเหมาะสมที่สุดแล้ว
เลเวลริเวอร์เซนต์

5

JavaScript (SpiderMonkey) , 1918 1598 1487 1431 ไบต์

บันทึก 56 ไบต์ขอบคุณ @ user202729

print(8<<98,7/7,9-7,7>>97,8>>97,8<<98,8<<98,8<<98,8,9,0xa,8<<98,8<<98,8<<98,0xe,0xf,7+9,8+9,8<<98,8<<98,8<<98,7+0xe,7+0xf,8+0xf,9+0xf,78^87,8<<98,8<<98,8<<98,77^80,70^88,70^89,8<<98,8<<98,8<<98,8<<98,9<<98,70^99,77>>97,8<<98,8<<98,8<<98,98-070,8<<98,8<<98,8<<98,8<<98,8<<98,8<<98,9^070,80^98,80^99,87^99,87^98,9^077,8<<98,8<<98,8<<98,8<<98,8<<98,8<<98,70-9,8<<98,8<<98,8<<98,7^70,8<<98,8<<98,9^77,8<<98,8<<98,8<<98,7^79,8<<98,8<<98,70^0xd,((8<<98)+' ').repeat(8^0xe)+(8^90),((8<<98)+' ').repeat(8^0xe)+89,8<<98,8<<98,8<<98,7^90,8<<98,8<<98,7+89,((8<<98)+' ').repeat(8^0xe)+(7|97),7+97,((8<<98)+' ').repeat(8^0xe)+(77|98),8<<98,8<<98,8<<98,80|99,8<<98,8<<98,8^0x7e,8<<98,8<<98,8<<98,0x7a,8<<98,8<<98,0x7d,0x7e,0x7f,8<<98,8<<98,8<<98,8<<98,7+0x7d,8<<98,8<<98,0x87,0x88,8<<98,8<<98,0x8b,8<<98,8<<98,8<<98,0x8f,8<<98,8<<98,7+0x8b,((8<<98)+' ').repeat(8^0xe)+0x99,0x9a,0x9b,0x9c,((8<<98)+' ').repeat(8^0xe)+(7+0x9c),8<<98,8<<98,8<<98,0xa7,8<<98,8<<98,0xaa,8<<98,8<<98,8<<98,0xae,8<<98,8<<98,78+99,((8<<98)+' ').repeat(8^0xe)+0xb8,8<<98,8<<98,8<<98,0xbc,8<<98,8<<98,0xbf,8<<98,8<<98,8<<98,97+98,8<<98,8<<98,99+99,((8<<98)+' ').repeat(8^0xe)+0xcd,8<<98,0xcf,0xd0,7+0xca,7+0xcb,8<<98,8<<98,8<<98,7+0xcf,0xd7,0xd8,8<<98,8<<98,8<<98,0xdc,0xdd,0xde,0xdf,8<<98,8<<98,8<<98,7+0xdc,7+0xdd,7+0xde,7+0xdf,0xe7,8<<98,8<<98,8<<98,0xeb,0xec,0xed,0xee,8<<98,8<<98,8<<98,7+0xeb,7+0xec,7+0xed,8<<98,8<<98,8<<98,0xf8,0xf9,0xfa,0xfb,0xfc,8<<98,8<<98,0xff)

ลองออนไลน์!

อย่างไร?

ความจริงที่=ไม่ได้รับอนุญาตเป็นนักฆ่าโชว์ใน JS เราไม่สามารถกำหนดตัวแปรได้และเราไม่สามารถใช้ฟังก์ชันลูกศรใด ๆ ได้

0789+-/|^<<>>

  1 = 7/7     |   50 = 80^98   |  136 = 0x88    |  216 = 0xd8
  2 = 9-7     |   51 = 80^99   |  139 = 0x8b    |  220 = 0xdc
  3 = 7>>97   |   52 = 87^99   |  143 = 0x8f    |  221 = 0xdd
  4 = 8>>97   |   53 = 87^98   |  146 = 7+0x8b  |  222 = 0xde
  8 = 8       |   54 = 9^077   |  153 = 0x99    |  223 = 0xdf
  9 = 9       |   61 = 70-9    |  154 = 0x9a    |  227 = 7+0xdc
 10 = 0xa     |   65 = 7^70    |  155 = 0x9b    |  228 = 7+0xdd
 14 = 0xe     |   68 = 9^77    |  156 = 0x9c    |  229 = 7+0xde
 15 = 0xf     |   72 = 7^79    |  163 = 7+0x9c  |  230 = 7+0xdf
 16 = 7+9     |   75 = 70^0xd  |  167 = 0xa7    |  231 = 0xe7
 17 = 8+9     |   82 = 8^90    |  170 = 0xaa    |  235 = 0xeb
 21 = 7+0xe   |   89 = 89      |  174 = 0xae    |  236 = 0xec
 22 = 7+0xf   |   93 = 7^90    |  177 = 78+99   |  237 = 0xed
 23 = 8+0xf   |   96 = 7+89    |  184 = 0xb8    |  238 = 0xee
 24 = 9+0xf   |  103 = 7|97    |  188 = 0xbc    |  242 = 7+0xeb
 25 = 78^87   |  104 = 7+97    |  191 = 0xbf    |  243 = 7+0xec
 29 = 77^80   |  111 = 77|98   |  195 = 97+98   |  244 = 7+0xed
 30 = 70^88   |  115 = 80|99   |  198 = 99+99   |  248 = 0xf8
 31 = 70^89   |  118 = 8^0x7e  |  205 = 0xcd    |  249 = 0xf9
 32 = 8<<98   |  122 = 0x7a    |  207 = 0xcf    |  250 = 0xfa
 36 = 9<<98   |  125 = 0x7d    |  208 = 0xd0    |  251 = 0xfb
 37 = 70^99   |  126 = 0x7e    |  209 = 7+0xca  |  252 = 0xfc
 38 = 77>>97  |  127 = 0x7f    |  210 = 7+0xcb  |  255 = 0xff
 42 = 98-070  |  132 = 7+0x7d  |  214 = 7+0xcf  |
 49 = 9^070   |  135 = 0x87    |  215 = 0xd7    |

32

ให้shiftCountเป็นผลมาจากการปกปิดทั้งหมด แต่rnumที่มีนัยสำคัญน้อย 5 บิตนั่นคือคำนวณrnum & 0x1F

8<<988<<232


32เป็นบันทึกไบต์สำหรับแต่ละ8<<9-7 32
TFeld

1
@TFeld ที่จริงฉันเพิ่มกะการแก้ของฉันซึ่งเพิ่งพบ32 = 8<<98(เพราะ ) อีกสองสามนิพจน์สามารถทำให้สั้นลงด้วยวิธีนี้ ยังคงทำงานกับมัน 982(mod32)
Arnauld

3
"นักฆ่าโชว์" หรือ "ผู้สร้างสนุก"?
Jonathan Allan

2
@JonathanAllan ;-) คนหลังออกมาจากอดีต!
Arnauld

ขออภัยถ้าฉันโง่ แต่ทำไมคุณเชื่อมโยงไปยัง SpiderMonkey รุ่นเก่า
โซโลมอน Ucko

4

Haskell, 623 617 614 594 360 342 ไบต์

แก้ไข: -234 ไบต์ขอบคุณ @Lynn โดยการค้นหาการเข้ารหัสรูปแบบเป็นสตริง -18 ไบต์ขอบคุณ @ Ørjan Johansen

map(\i->cycle(8+8+8+8:filter(\_->" XXXX   XXX   XXXX   XXXXX   XXX    XXX   X      XXXXXX      X   X  X   X  X      X      X   X  X      XX      X   X  X   X  XXX    X  XX  X   X  X      XXXX      X   X  X   X  X      X   X  X   X  X      X XXXX   XXX   XXXX   XXXXX   XXXX   XXX   XXXXX  X"!!i>' ')(pure i))!!9)(take(0xf8+8)(iterate(9-8+)0))

ลองออนไลน์!

มันทำงานอย่างไร

map(\i->    )                   -- map the lambda over the
        (take(0xf8+8)           -- first 256 elements of
           (iterate(9-8+)0))    -- the list [0,1,2,....]

                                -- the lambda is:

    cycle                       -- make an infinite list by repeating the list
      8+8+8+8:                  -- wih element 32 followed by
                  pure i        -- the singleton list with 'i'
       filter                   -- but keep 'i' only if
          \_->" XXXX..."!!i>' ' -- the pattern has an 'X' at index 'i', else
                                -- remove it to make an empty list
                                -- i.e. the cycled list is, if the pattern is
                                -- a space: [32,32,32,32,32,32,32,32,32,32,...]
                                -- an 'X':  [32, i,32, i,32, i,32, i,32, i,...]
                                --                                       ^
                                --                        9th element ---/ 
                      !!9       -- pick the 9th element which is the result
                                -- of the lambda

3
คุณสามารถสร้างดัชนี(id:pure(\_->8+8+8+8))โดยuntil((||" XXXX XXX XXXX XXXXX XXX XXX X XXXXXX X X X X X X X X X XX X X X X XXX X XX X X X XXXX X X X X X X X X X X X XXXX XXX XXXX XXXXX XXXX XXX XXXXX X"!!i<'X').(<1))pred 1 และบันทึกจำนวนไบต์
ลินน์

1
342 ไบต์ด้วยfilterแทนที่จะuntilเป็นสาขา (และcycleเพื่อหลีกเลี่ยงการพิเศษ++pure(...))
Ørjan Johansen

3

Brain-Flak -r, 4190 4188 ไบต์

(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())())())())())())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())())())()<((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))>()()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())())())())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())>())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())

ลองออนไลน์!

หนึ่งในนี้เป็นนิด ๆ หน่อย ๆ เป็นเรื่องยากสำหรับสมองสะเก็ดระเบิดเนื่องจากเราไม่สามารถใช้หรือ] ความหมายของตัวละครที่มีประโยชน์เท่านั้น}<>()

นี่คือโปรแกรม Haskell ที่ช่วยฉันเขียนสิ่งนี้

มันนับการกระโดดในที่ที่จำเป็นต้องมีช่องว่าง


นี่เป็นข้อพิสูจน์ที่ดีที่สุดหรือไม่?
user202729

@ user202729 ฉันสงสัยว่าไม่ได้ อาจเป็นได้ ไม่มีห้องกระดิกมากมาย แต่ฉันก็ยังห่างไกลจากความสามารถในการพิสูจน์ว่ามันเหมาะสมที่สุด แม้ว่าเราจะไม่มี{}การค้นหาด้วยคอมพิวเตอร์ แต่จริง ๆ แล้วสามารถค้นหาสิ่งที่ดีที่สุดในเวลา จำกัด
Ad Hoc Garf Hunter

ฉันสิ้นสุดการเขียนโปรแกรมที่สร้างทางออกที่ดีที่สุด แต่มันก็ช้ากว่าที่ฉันคาดไว้เล็กน้อยฉันยังเร็วพอที่จะรันได้
user202729

@ user202729 มันไม่ได้ดีที่สุด ฉันพบอันที่สั้นกว่านี้
Ad Hoc Garf Hunter

3

JavaScript (SpiderMonkey) , 1001 919 789 441 ไบต์

print(/u/.exec().map.call('0777700077700077770007777700077700007770007000000777777000000700070070007007000000700000070007007000000770000007000700700070077700007007700700070070000007777000000700070070007007000000700070070007007000000707777000777000777700077777000777700077700077777007',''.repeat.bind(Number)).map(/u/.exec().find.bind(/()/.exec().fill(Number.bind(0,88-070)).fill(/u/.exec().fill,!0),''.indexOf)).map(Map.call.bind(Map.call)))

ลองออนไลน์!

ในที่สุดก็เต้น BF !!!

ความคิดทั่วไป

แปลงอักขระแต่ละตัวของสตริงสตริงแบบยาวเป็นดัชนีหรือ 32 ขึ้นอยู่กับค่า

Array.prototype.map? วิธีรับอาเรย์

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

RegExp.prototype.execส่งคืนวัตถุที่เหมือนอาร์เรย์เมื่อมีการแข่งขัน เมื่อไม่มีการระบุอาร์กิวเมนต์อาร์กิวเมนต์จะมีค่าเริ่มต้นเป็นundefinedดังนั้น/u/.exec()จับคู่และส่งคืนอาร์เรย์

รับ 2 ค่าที่แตกต่างกันอย่างอิสระใน 2 ตัวละครที่แตกต่างกัน

เราต้องการที่จะมีแต่เราไม่สามารถใช้(x,y)=>x=='0'?32:y=

แต่เราจะทำ

new Array(a)
    .map(x=>x=='0'?()=>32:function()this)
    .map((x,y,z)=>x.call(y,z))

เราสามารถmapสตริงเหนือฟังก์ชั่นบางอย่าง แต่=>ไม่ได้รับอนุญาตดังนั้นสามารถใช้งานได้เพียงไม่กี่ฟังก์ชัน มันอาจมีขอบเขตthisและข้อโต้แย้งที่ถูกผูกไว้ (ดังนั้นจึงมีรูปแบบ(x,y,z)=>pre_filled_function.call(pre,filled,args,etc,x,y,z))

หลังจากพิจารณารายการฟังก์ชั่น ( repeat exec bind create map indexOf replace fill find reduce filter findIndex call bind apply) ฉันตัดสินใจว่าจะใช้ฟังก์ชั่นต่อไปนี้ (หลังจากพิจารณาชุดค่าผสมอื่น ๆ ทั้งหมด)

  • repeat: number -> สตริงที่แตกต่างกัน
  • find: thisArg -> องค์ประกอบแรกในการจับคู่อาร์เรย์

ความคิดทั่วไปจะเป็น:

[].map.call('07070707...', (x,y,z)=>[elem1,elem2].find(somefunction,x,y,z)

โดยที่somefunctionพิจารณาthisอาร์กิวเมนต์ ( x) และอาร์กิวเมนต์แรก ( elem1หรือelem2) และส่งคืนว่าตรงกันหรือไม่

[].find.bind([elem1,elem2],somefunction)ฟังก์ชั่นลูกศรสุดท้ายคือการเขียนใหม่เพื่อ

อาเรย์ตัวอักษร

เราสามารถใช้ regex exec เพื่อรับอาเรย์และfillมันมีค่าต่างกัน ตัวอย่างเช่น/()/.exec()ส่งคืนอาร์เรย์ความยาว 2 จากนั้นเราสามารถเติมได้ตามที่เราต้องการ

ซึ่งsomefunctionเราจะต้อง?

เราต้องการสิ่งที่ส่งคืนค่าความจริง / ค่าเท็จขึ้นอยู่กับthis(ซึ่งเป็น 1 ใน 2 ฟังก์ชันที่เราจะส่งคืน) และอาร์กิวเมนต์แรก (ต้องเป็นสตริงหรืออาร์เรย์)

เพื่อที่ฉันใช้indexOf- มันส่งกลับค่าเท็จ iff อาร์กิวเมนต์แรกคือคำนำหน้าของการthisโต้แย้ง

เป็นตัวแทนของตัวอักษรฟังก์ชั่น


1
สะดุดคำอธิบายและจบลงด้วยการแขวนสาขา
Ørjan Johansen

2

TI-Basic (83 series), 578 ไบต์

8XFact8-ΔTbl
seq(X and XX≤8+8 or 8≤X and X≤Xmax or 7+7≤X and X<9+9 or 7+7+7≤X and X<8π or 9π<X and X<πXmax or 9 nCr 7≤X and X+X<77 or X=7²-7 or 7²≤X and X≤7*9-9 or X=70-9 or X=8²+ΔTbl or X=78-Xmax or X=9*8 or X=89-7-7 or X=89-7 or X=89 or X=900-807 or X=88+8 or 809-707<X and X≤97+77-70 or 9X=999 or 8X=990-70 or X=888-770 or X=899-777 or 8*7+77-8≤X and X+X<Ans or 7²X/77=77+7 or 999+77<8X and 7X<970-9-7 or 8²X=8888+8 or X+X=99+99+88 or 7X=9099-8077 or 9+8≤X/9 and X<997-770-70 or X=99+8² or X=87+80 or X=80+90 or X=87+87 or X=87+90 or X=87+97 or X=98+90 or X=999-808 or X=97+98 or X=99+99 or X=99+99+7 or 9²8<πX and X+X+X≤70*9 or 70π-π-π<Xand X+X+X≤9²8 or 70π<X and X<70π+π or 997-770≤X and X+X+X≤99*7 or 77+79+79≤X and X+8+9≤Ans or 77π<X and X<Ans-Xmax or 7*8*9-8≤X+X and X+X≤7*8*9 or X=Ans,X,0,Ans
8XFact+Ansseq(X,X,⁻8XFact,70π+π

TI-Basic มี"code-page" ที่พิเศษมากพร้อมด้วยตัวเลือกการออกแบบแปลก ๆ เช่นการย้ายอักขระช่องว่างไปที่ 0x29 เพื่อให้ 0x20 เป็นrandM(คำสั่ง

มันเป็นเรื่องยากที่จะคิดออกว่าจะรับ TI-Basic เพื่อส่งออกชนิดของวัตถุที่ถูกต้องได้อย่างไร สตริงไม่ทำงานด้วยเหตุผลหลายประการ: ไม่มีวิธีในการอ้างอิงโทเค็นโดยไม่ใช้โทเค็นและเราไม่ได้รับอนุญาตให้ใช้"อักขระ เราไม่สามารถเขียนรายการเพราะ{และ}ถูกห้าม เราได้รับอนุญาต[และ]อักขระสำหรับเมทริกซ์ แต่เมทริกซ์ขนาด 1 คูณ 256 ไม่ทำงานเนื่องจากอนุญาตให้ใช้เมทริกซ์ได้ไม่เกิน 99 แถวและคอลัมน์ เราไม่สามารถใช้เพื่อกำหนดให้กับตัวแปรและเราไม่สามารถรับค่าตัวแปรลิสต์ʟหรือL₁ผ่านL₆ได้

ดังนั้นที่นี่เราเขียนสูตรตรรกะที่ซับซ้อนด้วยความไม่เท่าเทียมกันที่บอกว่าเมื่อตัวละครเป็นหนึ่งในตัวที่เราต้องการออก จากนั้นเราใช้seq(คำสั่งเพื่อสร้างรายการด้วย1ในตำแหน่งเหล่านั้นและ0ที่อื่น ๆ จากที่นั่นseq(คำสั่งอื่นและเลขคณิตบางอย่างจะเสร็จสิ้นงาน

นั่นคือส่วนที่น่าตื่นเต้น ส่วนที่เหลือคือการเล่นกอล์ฟค่าคงที่และฉันอาจไม่ได้ทำมากที่สุด หนึ่งในเทคนิคที่ฉันใช้คือค่าเริ่มต้นXmaxคือ 10 XFactคือ 4 และΔTbl1


ในขณะที่เมทริกซ์ 1 * 256 ไม่ทำงานคุณสามารถสร้างเมทริกซ์ 3 * 99 และใช้ div / mod เพื่อสร้างดัชนีเมทริกซ์ได้หรือไม่?
user202729

โอ้เราไม่สามารถจัดทำดัชนีสิ่งต่าง ๆ ได้เพราะ(ถูกห้าม
Misha Lavrov

มีการแสดงออกตามเงื่อนไข (ถ้าแล้ว b อื่น ๆ c) หรือพื้นหรือ mod? ความแม่นยำของจำนวนคือทศนิยม 15 หลักใช่ไหม
user202729

สิ่งเหล่านี้มีอยู่จริง เราไม่สามารถเข้าถึงเมทริกซ์ด้วย[A](I,J)และจากสิ่งที่ฉันเข้าใจว่าคุณต้องการทำสิ่งที่ต้องการ[A](int(I/99),I-99int(I/99))อ่านองค์ประกอบทั้งหมดของเมทริกซ์[A]- เราก็ทำเช่นนั้นไม่ได้ (โดยวิธี)นี้ก็เป็นสิ่งต้องห้ามเช่นกันโชคดีที่เราไม่จำเป็นต้องปิดวงเล็บปิด แต่มัน จำกัด วิธีที่เราสามารถใช้คำสั่งมากมาย)
Misha Lavrov

ฉันกำลังคิดเกี่ยวกับการใช้ตัวเลขเพื่อเข้ารหัสอาร์เรย์คล้ายกับ bitmask กดไลค์ (123456789 >> X) & 1 ใน Python
user202729

1

Brain-Flak -r, 3894 bytes

(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())<((())((()())()))>)))(((((((()()()()()()()())(()()()()()()()()())(()()()()()()()()()())()()()()())))<((((((((()()()()()()()()()()()()()())((((((((((()()()()()()()()()()()()()()())((()()()()()()()()()()()()()()()())()))))<((((((((((((()()()()()()()()()()()()()()()()()()()()())())())())())()()()()()()())))<((((((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()())())())()))))()()()())())())>)))()()()()()()()()()())>))))))()()())())())())())())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())>)))())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())())())<((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))>()()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())())())())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())>()())())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())())())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())

ลองออนไลน์!

ฉันเขียนโปรแกรมเพื่อสร้างโปรแกรม Brain-Flak ที่ดีที่สุดสำหรับผลลัพธ์ใด ๆ สมมติว่า:

  • <> ไม่ได้ใช้
  • โปรแกรมของฉันถูกต้อง

ดังนั้นวิธีนี้เหมาะสมที่สุด

O(n5)


1

Python 2 , 162 157 bytes

คำเตือน : อักขระที่ไม่สามารถพิมพ์ได้ล่วงหน้า!

print map(lambda(i,x):(x>'0'and i-0xe0/7)+0xe0/7,enumerate(bin(reduce(lambda x,y:(x<<0xd-7)-x+y,bytearray('7?QcZ;+BqiQJUS!?B0W![<LBU7X!frQd(SQdB\0')))))

ลองออนไลน์!

ตามคำตอบที่มีอยู่ของ TFeldแต่มีการเปลี่ยนแปลงเล็กน้อย:

A bytearrayคล้ายกับstrที่มันทำซ้ำได้ แต่การทำซ้ำจะให้จำนวนเต็มไม่ใช่ตัวอักษร เราสามารถใช้มันเพื่อเข้ารหัสเบส - เอ็นตัวอักษรและreduce(lambda x,y: x*N+y, my_bytearray)ถอดรหัสมัน

เนื่องจากไฟล์ Python 2 ไม่มีการเข้ารหัสตามค่าเริ่มต้นจึงสามารถใช้เฉพาะอักขระใน ASCII (0..127) ไบต์ว่าง, บรรทัดใหม่, แบ็กสแลชและเครื่องหมายคำพูดใช้เวลา 1 ไบต์ขึ้นไป

นอกจากนี้ยังไม่สามารถใช้ฐานทั้งหมดได้

ฉันเขียนโปรแกรมเพื่อค้นหาการนำเสนอสั้นที่สุดnโดยมีข้อ จำกัด เหล่านั้น

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