รหัสตัวละครที่แตกต่างกัน


26

หมายเหตุ: ความท้าทายนี้อนุญาตเฉพาะคำตอบในภาษาที่รวบรวม

งาน

งานของคุณค่อนข้างง่ายทำสองโปรแกรมที่ต่างกันเมื่อรวบรวมผลลัพธ์ในผลลัพธ์เดียวกัน

เกณฑ์การให้คะแนน

ที่นี่คือที่ที่ความสนุกเข้ามาคะแนนของคุณจะเป็นจำนวนไบต์ที่ไม่ซ้ำใครในหนึ่งโปรแกรม ตัวอย่างเช่นหากโปรแกรมทั้งสองของคุณ (เข้ารหัสในIBM Code หน้า 437 ) คือ

☻☻Program A

และ

☺Program B

อักขระที่อยู่ในโปรแกรมเดียวคือ

☻☺AB

ดังนั้นคะแนนคือ 4 โปรดทราบว่า จะปรากฏสองครั้งในโปรแกรมแรก แต่จะนับเพียงครั้งเดียว

เป้าหมายของคุณคือการได้รับคะแนนสูงสุดคะแนนสูงสุดที่เป็นไปได้คือ 256

ที่นี่คือโปรแกรมการให้คะแนนที่ใช้กับโปรแกรมที่เข้ารหัส ASCII

เงื่อนไข

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

  • คุณสามารถใช้การรวมสถานะใด ๆ ก็ได้ตราบใดที่ทั้งสองโปรแกรมทำงานด้วยค่าสถานะเดียวกัน

  • การรวบรวมผลลัพธ์ควรเป็นแบบคงที่ (เช่นไม่ควรเปลี่ยนแปลงจากการเรียกใช้เพื่อเรียกใช้) หากผลลัพธ์แตกต่างจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่งแสดงว่าเครื่องมีจุดประสงค์เพื่อใช้งาน

  • เอาต์พุตของการคอมไพล์ควรเป็นไบต์สำหรับไบต์ที่ไม่เหมือนกัน "เทียบเท่า" หรือ "คล้ายกันมากพอ"

  • ผลลัพธ์ของการคอมไพล์ควรไม่ว่างเปล่า

  • คำเตือน / ข้อผิดพลาดไม่จำเป็นต้องเหมือนกันระหว่างการรวบรวม

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


มันค่อนข้างไม่ชัดเจนเนื่องจากสามารถประกาศตัวแปรที่มีชื่อabcdefghijqlmnop...ให้ใช้อักขระที่ไม่ซ้ำกันมากกว่า 20 ตัว สิ่งนี้ได้รับอนุญาตหรือไม่?
Mr. Xcoder

1
@ Mr.Xcoder ตราบใดที่มันเป็นไปตามข้อกำหนดแรก (อาจจะไม่ใช่)
ข้าวสาลีตัวช่วยสร้าง

นี่เป็นCode-Bowlingคำถามที่ยอดเยี่ยม!
Albert Renshaw

1
สร้างเครื่องมือให้คะแนนออนไลน์แบบง่าย ๆ ที่ไม่ต้องให้คุณต้องหลบหนีสิ่งต่าง ๆ / แก้ไขโค้ดให้เหมาะกับสตริงอินพุตของ Python ใน TIO ในกรณีที่เป็นปัญหาสำหรับทุกคน: jsfiddle.net/vybsgh4p
Albert Renshaw

อาจมีคนสร้างคำตอบใน CoffeeScript
mbomb007

คำตอบ:


18

Perl, คะแนน 254 + 2 = 256

นี่คือการดัมพ์แบบ hex ของหนึ่งโปรแกรม:

00000000: 6c65 6e67 7468 2700 0102 0304 0506 0708  length'.........
00000010: 090a 0b0c 0d0e 0f10 1112 1314 1516 1718  ................
00000020: 191a 1b1c 1d1e 1f20 2123 2425 2628 292a  ....... !#$%&()*
00000030: 2b2c 2d2e 2f30 3132 3334 3536 3738 393a  +,-./0123456789:
00000040: 3b3c 3d3e 3f40 4142 4344 4546 4748 494a  ;<=>?@ABCDEFGHIJ
00000050: 4b4c 4d4e 4f50 5152 5354 5556 5758 595a  KLMNOPQRSTUVWXYZ
00000060: 5b5d 5e5f 6061 6263 6465 6667 6869 6a6b  []^_`abcdefghijk
00000070: 6c6d 6e6f 7071 7273 7475 7677 7879 7a7b  lmnopqrstuvwxyz{
00000080: 7c7d 7e7f 8081 8283 8485 8687 8889 8a8b  |}~.............
00000090: 8c8d 8e8f 9091 9293 9495 9697 9899 9a9b  ................
000000a0: 9c9d 9e9f a0a1 a2a3 a4a5 a6a7 a8a9 aaab  ................
000000b0: acad aeaf b0b1 b2b3 b4b5 b6b7 b8b9 babb  ................
000000c0: bcbd bebf c0c1 c2c3 c4c5 c6c7 c8c9 cacb  ................
000000d0: cccd cecf d0d1 d2d3 d4d5 d6d7 d8d9 dadb  ................
000000e0: dcdd dedf e0e1 e2e3 e4e5 e6e7 e8e9 eaeb  ................
000000f0: eced eeef f0f1 f2f3 f4f5 f6f7 f8f9 fafb  ................
00000100: fcfd feff 273d 3d32 3533 6f72 2078 2829  ....'==253or x()

และนี่คือโปรแกรมอื่น:

"\\"

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

LISTOP (0x564fcd99f020) leave [1] 
    OP (0x564fcd99f148) enter 
    COP (0x564fcd99f068) nextstate 
    OP (0x564fcd99f100) null [5] 

คำอธิบาย

Perl แทนที่ข้อความทั้งหมดที่ไม่มีผลกระทบ (เช่นตัวอักษรสตริงด้วยตัวเอง) ด้วยคำสั่ง "hardcoded" ที่ไม่มีผลกระทบ "ในรหัสไบต์ผลลัพธ์ดังนั้นทั้งสองโปรแกรมจะคอมไพล์ในสิ่งเดียวกัน ในแง่ของการแทนที่ตัวอักษรการแทนที่อักขระส่วนใหญ่จากโปรแกรม 1 ด้วยอะพอสโทรฟีจะทำให้คอมไพล์ล้มเหลว (หรือแทนที่อะพอสโทรฟีด้วย0) ในโปรแกรม 2 การแทนที่อักขระใด ๆ ด้วยcจะทำให้โปรแกรมล้มเหลวในการคอมไพล์ (เช่น\cรับอาร์กิวเมนต์)

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

ฉันเริ่มอ่านคำถามผิดนับเป็นการนับตัวอักษรที่ไม่ซ้ำใครจากโปรแกรมเดียวและพยายามปรับให้เหมาะสม เห็นได้ชัดว่าโปรแกรม 2 ต้องมีอักขระอย่างน้อยหนึ่งตัวเพื่อสร้าง "คำสั่งที่ไม่มีผลกระทบ" ซึ่งหมายความว่าคะแนนที่ดีที่สุดในหนึ่งโปรแกรมคือ 255 ฉันยังไม่พบวิธีที่จะรวมแบ็กสแลชในโปรแกรม 1 ในลักษณะที่ตัวละครที่ตามมาไม่สามารถแทนที่ได้ในลักษณะที่ทำให้โปรแกรมแตก แต่มันจะไม่ทำให้ฉันประหลาดใจถ้ามันเป็นไปได้ (นำไปสู่คะแนน 255 + 1 = 256 )


@WeateatWizard: ความท้าทายจะง่ายขึ้นเล็กน้อย แต่ฉันคิดว่าฉันน่าจะปรับคำตอบนี้ให้ทำงานกับข้อตกลงดังกล่าวได้โดยใช้เคล็ดลับการตรวจสอบปกติ (ซึ่ง Perl สามารถปรับให้เหมาะสมได้) ฉันจะลบคำตอบนี้และยกเลิกการลบเมื่อฉันมีคำตอบใหม่

1
@Weateatizard: และทำ ปรากฎว่าการอัปเดตไม่ยากเกินไป

15

C, 231

โปรแกรม A

i[]={'','','','','','','',','   ','
                                       ','
                                          ','','','','','','','','','','','','','','','','','','',' ','!','"','#','$','%','&','\'','(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\\',']','^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','{','|','}','~','','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�'};main(){}

มีรอยขีดข่วนด้านบนมากมาย นี่คือ xxd hexdump:

00000000: 695b 5d3d 7b27 0127 2c27 0227 2c27 0327  i[]={'.','.','.'
00000010: 2c27 0427 2c27 0527 2c27 0627 2c27 0727  ,'.','.','.','.'
00000020: 2c27 0827 2c27 0927 2c27 0b27 2c27 0c27  ,'.','.','.','.'
00000030: 2c27 0e27 2c27 0f27 2c27 1027 2c27 1127  ,'.','.','.','.'
00000040: 2c27 1227 2c27 1327 2c27 1427 2c27 1527  ,'.','.','.','.'
00000050: 2c27 1627 2c27 1727 2c27 1827 2c27 1927  ,'.','.','.','.'
00000060: 2c27 1a27 2c27 1b27 2c27 1c27 2c27 1d27  ,'.','.','.','.'
00000070: 2c27 1e27 2c27 1f27 2c27 2027 2c27 2127  ,'.','.',' ','!'
00000080: 2c27 2227 2c27 2327 2c27 2427 2c27 2527  ,'"','#','$','%'
00000090: 2c27 2627 2c27 5c27 272c 2728 272c 2729  ,'&','\'','(',')
000000a0: 272c 272a 272c 272b 272c 272c 272c 272d  ','*','+',',','-
000000b0: 272c 272e 272c 272f 272c 2730 272c 2731  ','.','/','0','1
000000c0: 272c 2732 272c 2733 272c 2734 272c 2735  ','2','3','4','5
000000d0: 272c 2736 272c 2737 272c 2738 272c 2739  ','6','7','8','9
000000e0: 272c 273a 272c 273b 272c 273c 272c 273d  ',':',';','<','=
000000f0: 272c 273e 272c 273f 272c 2740 272c 2741  ','>','?','@','A
00000100: 272c 2742 272c 2743 272c 2744 272c 2745  ','B','C','D','E
00000110: 272c 2746 272c 2747 272c 2748 272c 2749  ','F','G','H','I
00000120: 272c 274a 272c 274b 272c 274c 272c 274d  ','J','K','L','M
00000130: 272c 274e 272c 274f 272c 2750 272c 2751  ','N','O','P','Q
00000140: 272c 2752 272c 2753 272c 2754 272c 2755  ','R','S','T','U
00000150: 272c 2756 272c 2757 272c 2758 272c 2759  ','V','W','X','Y
00000160: 272c 275a 272c 275b 272c 275c 5c27 2c27  ','Z','[','\\','
00000170: 5d27 2c27 5e27 2c27 5f27 2c27 6027 2c27  ]','^','_','`','
00000180: 6127 2c27 6227 2c27 6327 2c27 6427 2c27  a','b','c','d','
00000190: 6527 2c27 6627 2c27 6727 2c27 6827 2c27  e','f','g','h','
000001a0: 6927 2c27 6a27 2c27 6b27 2c27 6c27 2c27  i','j','k','l','
000001b0: 6d27 2c27 6e27 2c27 6f27 2c27 7027 2c27  m','n','o','p','
000001c0: 7127 2c27 7227 2c27 7327 2c27 7427 2c27  q','r','s','t','
000001d0: 7527 2c27 7627 2c27 7727 2c27 7827 2c27  u','v','w','x','
000001e0: 7927 2c27 7a27 2c27 7b27 2c27 7c27 2c27  y','z','{','|','
000001f0: 7d27 2c27 7e27 2c27 7f27 2c27 8027 2c27  }','~','.','.','
00000200: 8127 2c27 8227 2c27 8327 2c27 8427 2c27  .','.','.','.','
00000210: 8527 2c27 8627 2c27 8727 2c27 8827 2c27  .','.','.','.','
00000220: 8927 2c27 8a27 2c27 8b27 2c27 8c27 2c27  .','.','.','.','
00000230: 8d27 2c27 8e27 2c27 8f27 2c27 9027 2c27  .','.','.','.','
00000240: 9127 2c27 9227 2c27 9327 2c27 9427 2c27  .','.','.','.','
00000250: 9527 2c27 9627 2c27 9727 2c27 9827 2c27  .','.','.','.','
00000260: 9927 2c27 9a27 2c27 9b27 2c27 9c27 2c27  .','.','.','.','
00000270: 9d27 2c27 9e27 2c27 9f27 2c27 a027 2c27  .','.','.','.','
00000280: a127 2c27 a227 2c27 a327 2c27 a427 2c27  .','.','.','.','
00000290: a527 2c27 a627 2c27 a727 2c27 a827 2c27  .','.','.','.','
000002a0: a927 2c27 aa27 2c27 ab27 2c27 ac27 2c27  .','.','.','.','
000002b0: ad27 2c27 ae27 2c27 af27 2c27 b027 2c27  .','.','.','.','
000002c0: b127 2c27 b227 2c27 b327 2c27 b427 2c27  .','.','.','.','
000002d0: b527 2c27 b627 2c27 b727 2c27 b827 2c27  .','.','.','.','
000002e0: b927 2c27 ba27 2c27 bb27 2c27 bc27 2c27  .','.','.','.','
000002f0: bd27 2c27 be27 2c27 bf27 2c27 c027 2c27  .','.','.','.','
00000300: c127 2c27 c227 2c27 c327 2c27 c427 2c27  .','.','.','.','
00000310: c527 2c27 c627 2c27 c727 2c27 c827 2c27  .','.','.','.','
00000320: c927 2c27 ca27 2c27 cb27 2c27 cc27 2c27  .','.','.','.','
00000330: cd27 2c27 ce27 2c27 cf27 2c27 d027 2c27  .','.','.','.','
00000340: d127 2c27 d227 2c27 d327 2c27 d427 2c27  .','.','.','.','
00000350: d527 2c27 d627 2c27 d727 2c27 d827 2c27  .','.','.','.','
00000360: d927 2c27 da27 2c27 db27 2c27 dc27 2c27  .','.','.','.','
00000370: dd27 2c27 de27 2c27 df27 2c27 e027 2c27  .','.','.','.','
00000380: e127 2c27 e227 2c27 e327 2c27 e427 2c27  .','.','.','.','
00000390: e527 2c27 e627 2c27 e727 2c27 e827 2c27  .','.','.','.','
000003a0: e927 2c27 ea27 2c27 eb27 2c27 ec27 2c27  .','.','.','.','
000003b0: ed27 2c27 ee27 2c27 ef27 2c27 f027 2c27  .','.','.','.','
000003c0: f127 2c27 f227 2c27 f327 2c27 f427 2c27  .','.','.','.','
000003d0: f527 2c27 f627 2c27 f727 2c27 f827 2c27  .','.','.','.','
000003e0: f927 2c27 fa27 2c27 fb27 2c27 fc27 2c27  .','.','.','.','
000003f0: fd27 2c27 fe27 2c27 ff27 7d3b 6d61 696e  .','.','.'};main
00000400: 2829 7b7d 0a                             (){}.

โปรแกรม B

i[]={1,2,3,4,5,6,7,010,011,013,014,016,017,020,021,022,023,024,025,026,027,030,031,032,033,034,035,036,037,040,041,042,043,044,045,046,047,050,051,052,053,054,055,056,057,060,061,062,063,064,065,066,067,070,071,072,073,074,075,076,077,0100,0101,0102,0103,0104,0105,0106,0107,0110,0111,0112,0113,0114,0115,0116,0117,0120,0121,0122,0123,0124,0125,0126,0127,0130,0131,0132,0133,0134,0135,0136,0137,0140,0141,0142,0143,0144,0145,0146,0147,0150,0151,0152,0153,0154,0155,0156,0157,0160,0161,0162,0163,0164,0165,0166,0167,0170,0171,0172,0173,0174,0175,0176,0177,-0200,-0177,-0176,-0175,-0174,-0173,-0172,-0171,-0170,-0167,-0166,-0165,-0164,-0163,-0162,-0161,-0160,-0157,-0156,-0155,-0154,-0153,-0152,-0151,-0150,-0147,-0146,-0145,-0144,-0143,-0142,-0141,-0140,-0137,-0136,-0135,-0134,-0133,-0132,-0131,-0130,-0127,-0126,-0125,-0124,-0123,-0122,-0121,-0120,-0117,-0116,-0115,-0114,-0113,-0112,-0111,-0110,-0107,-0106,-0105,-0104,-0103,-0102,-0101,-0100,-077,-076,-075,-074,-073,-072,-071,-070,-067,-066,-065,-064,-063,-062,-061,-060,-057,-056,-055,-054,-053,-052,-051,-050,-047,-046,-045,-044,-043,-042,-041,-040,-037,-036,-035,-034,-033,-032,-031,-030,-027,-026,-025,-024,-023,-022,-021,-020,-017,-016,-015,-014,-013,-012,-011,-010,-7,-6,-5,-4,-3,-2,-1};main(){}

รวบรวมเหล่านี้เพื่อรหัสวัตถุเดียวกันได้อย่างแม่นยำ GCC ฝังชื่อไฟล์ในรหัสวัตถุดังนั้นคุณจะต้องตั้งชื่อไฟล์ให้เหมือนกัน (ในไดเรกทอรีต่าง ๆ )

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

    .file   "diffchar.c"
    .globl  i
    .data
    .align 32
    .type   i, @object
    .size   i, 1012
i:
    .long   1
    .long   2
    .long   3
    .long   4
    .long   5
    .long   6
    .long   7
    .long   8
    .long   9
    .long   11
    .long   12
    .long   14
    .long   15
    .long   16
    .long   17
    .long   18
    .long   19
    .long   20
    .long   21
    .long   22
    .long   23
    .long   24
    .long   25
    .long   26
    .long   27
    .long   28
    .long   29
    .long   30
    .long   31
    .long   32
    .long   33
    .long   34
    .long   35
    .long   36
    .long   37
    .long   38
    .long   39
    .long   40
    .long   41
    .long   42
    .long   43
    .long   44
    .long   45
    .long   46
    .long   47
    .long   48
    .long   49
    .long   50
    .long   51
    .long   52
    .long   53
    .long   54
    .long   55
    .long   56
    .long   57
    .long   58
    .long   59
    .long   60
    .long   61
    .long   62
    .long   63
    .long   64
    .long   65
    .long   66
    .long   67
    .long   68
    .long   69
    .long   70
    .long   71
    .long   72
    .long   73
    .long   74
    .long   75
    .long   76
    .long   77
    .long   78
    .long   79
    .long   80
    .long   81
    .long   82
    .long   83
    .long   84
    .long   85
    .long   86
    .long   87
    .long   88
    .long   89
    .long   90
    .long   91
    .long   92
    .long   93
    .long   94
    .long   95
    .long   96
    .long   97
    .long   98
    .long   99
    .long   100
    .long   101
    .long   102
    .long   103
    .long   104
    .long   105
    .long   106
    .long   107
    .long   108
    .long   109
    .long   110
    .long   111
    .long   112
    .long   113
    .long   114
    .long   115
    .long   116
    .long   117
    .long   118
    .long   119
    .long   120
    .long   121
    .long   122
    .long   123
    .long   124
    .long   125
    .long   126
    .long   127
    .long   -128
    .long   -127
    .long   -126
    .long   -125
    .long   -124
    .long   -123
    .long   -122
    .long   -121
    .long   -120
    .long   -119
    .long   -118
    .long   -117
    .long   -116
    .long   -115
    .long   -114
    .long   -113
    .long   -112
    .long   -111
    .long   -110
    .long   -109
    .long   -108
    .long   -107
    .long   -106
    .long   -105
    .long   -104
    .long   -103
    .long   -102
    .long   -101
    .long   -100
    .long   -99
    .long   -98
    .long   -97
    .long   -96
    .long   -95
    .long   -94
    .long   -93
    .long   -92
    .long   -91
    .long   -90
    .long   -89
    .long   -88
    .long   -87
    .long   -86
    .long   -85
    .long   -84
    .long   -83
    .long   -82
    .long   -81
    .long   -80
    .long   -79
    .long   -78
    .long   -77
    .long   -76
    .long   -75
    .long   -74
    .long   -73
    .long   -72
    .long   -71
    .long   -70
    .long   -69
    .long   -68
    .long   -67
    .long   -66
    .long   -65
    .long   -64
    .long   -63
    .long   -62
    .long   -61
    .long   -60
    .long   -59
    .long   -58
    .long   -57
    .long   -56
    .long   -55
    .long   -54
    .long   -53
    .long   -52
    .long   -51
    .long   -50
    .long   -49
    .long   -48
    .long   -47
    .long   -46
    .long   -45
    .long   -44
    .long   -43
    .long   -42
    .long   -41
    .long   -40
    .long   -39
    .long   -38
    .long   -37
    .long   -36
    .long   -35
    .long   -34
    .long   -33
    .long   -32
    .long   -31
    .long   -30
    .long   -29
    .long   -28
    .long   -27
    .long   -26
    .long   -25
    .long   -24
    .long   -23
    .long   -22
    .long   -21
    .long   -20
    .long   -19
    .long   -18
    .long   -17
    .long   -16
    .long   -15
    .long   -14
    .long   -13
    .long   -12
    .long   -11
    .long   -10
    .long   -9
    .long   -8
    .long   -7
    .long   -6
    .long   -5
    .long   -4
    .long   -3
    .long   -2
    .long   -1
    .text
    .globl  main
    .type   main, @function
main:
.LFB0:
    .cfi_startproc
    pushq   %rbp
    .cfi_def_cfa_offset 16
    .cfi_offset 6, -16
    movq    %rsp, %rbp
    .cfi_def_cfa_register 6
    movl    $0, %eax
    popq    %rbp
    .cfi_def_cfa 7, 8
    ret
    .cfi_endproc
.LFE0:
    .size   main, .-main
    .ident  "GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609"
    .section    .note.GNU-stack,"",@progbits

โปรดทราบว่าในโปรแกรม B (ส่วนใหญ่) ค่าถ่านจะได้รับในแปด พวกเขาอาจได้รับเป็นทศนิยม แต่ด้วยการใช้ฐานแปดเราได้รับอักขระพิเศษสองสามตัว - 8และ9- ในชุดความแตกต่าง

GCC ดูเหมือนจะไม่เช่น CR, LF และ (ด้วยเหตุผลที่ชัดเจน) ตัวละคร NUL ''ภายในราคาเดียว

ลองมันออนไลน์และคะแนน


มีวิธีการใช้สตริงตัวอักษรแทนหากรูปแบบอาร์เรย์ยุ่งยากหรือไม่ (ฉันไม่ค่อยรู้เรื่อง C มากนัก)
Wheat Wizard

@WheatWizard ใช่แล้วตัวแปรจะต้องได้รับการประกาศอย่างชัดเจนว่าcharแทนที่จะเป็นนัยintถึงความเสียหายของคะแนน
Digital Trauma

มากกว่า 200! เป็นงานที่ดี
Wheat Wizard

สำหรับค่าคงที่ฐานแปดซึ่งเป็นทศนิยมที่ถูกต้องซึ่งมีค่าเท่ากันคุณจะต้องลบค่าศูนย์ลบมิฉะนั้นค่าเหล่านั้นสามารถลบได้โดยไม่ทำลายโปรแกรม คุณสามารถปรับปรุงคะแนนโดยใช้ digraphs และ / หรือ trigraphs ในโปรแกรมใดโปรแกรมหนึ่งได้หรือไม่

@ ais523 ใช่ประเด็นที่ดีเกี่ยวกับค่าที่ไม่ชัดเจนในฐานแปด / ทศนิยม - ฉันได้แก้ไขค่าเหล่านั้นแล้ว ฉันจะสำรวจกราฟ {di, tri} ในภายหลัง ...
Digital Trauma

4

Python คะแนน16 26 27 28

ตัวละครที่ไม่ซ้ำกัน: -+;132547698<ACBEDFOXabopsx|

คำนวณคะแนน

โปรแกรม 1:

def y():
 if 0: 0xBCAFD0|0XE|(0o4<<0O4)|48;

 return 0

ในโปรแกรม 1 มีช่องว่าง 5 บรรทัดในบรรทัดว่างที่ดูเหมือน

โปรแกรมที่ 2:

def y():
 if 0:return--12365790+(0b1110000)
 pass
 return 0

ความช่วยเหลือบางอย่างพบกับ ซอร์สโค้ดเครื่องมือเพิ่มประสิทธิภาพช่องมองรหัสที่มาตาแมวเพิ่มประสิทธิภาพ

ทดสอบกับสคริปต์ผู้ช่วยนี้: ลองออนไลน์!


2

Python 3.6, 2 3 5 6

โปรแกรม 1:

z=11_11;a=41_68;y=None;x=5_2_7_9;x*x

โปรแกรมที่ 2:

z=1111;a=4168;y=None;x=1111+4168;x*x

Python ไม่ได้ทำการคอมไพล์ แต่มันจะคอมไพล์ซอร์สโค้ดของมันลงในไฟล์ pyc การรวบรวมดังกล่าวรวมถึงการเพิ่มประสิทธิภาพผ่านซึ่งเปลี่ยน "1111 + 4168" เป็น 5279 ขีดล่างมีจุดประสงค์สองประการ: หนึ่งในนั้นคือการเพิ่มหนึ่งคะแนนและอีกอันคือความยาวซึ่งเก็บไว้ใน pyc ส่วนหัวเดียวกัน การกำหนดตัวแปรทั้งหมดนอกเหนือจาก 'x' จะต้องดำเนินco_constsการตามลำดับที่ถูกต้อง x*xในตอนท้ายทำหน้าที่ในการรักษาco_stacksizeเดียวกัน


ฉันใช้ 3.6.0 ด้วย ตรวจสอบให้แน่ใจว่าไฟล์ที่คุณคอมไพล์มี mtime และชื่อไฟล์เดียวกันและเพิ่มช่องว่างสองจุดที่ส่วนท้ายของไฟล์แรก (ฉันทดสอบโดยใช้compileฟังก์ชั่นในตัวซึ่งไม่ได้เพิ่มส่วนหัว นำไปใช้กับส่วนหัว
pppery

เวลาที่ไฟล์ถูกแก้ไขครั้งล่าสุด Python เตรียม bytecode ไว้ด้วยการเข้ารหัสของเวลานี้ดังนั้นมันสามารถรีเฟรช bytecode เก่าโดยอัตโนมัติ
pppery

1
ใช่ใช้os.utimeฟังก์ชั่น
pppery

ขอให้เรายังคงอภิปรายนี้ในการแชท
ข้าวสาลีตัวช่วยสร้าง

อุ๊ปส์ ฉันตีความผิดนี่เป็นรหัสกอล์ฟไม่ใช่การแข่งขันโบว์ลิ่งรหัส
pppery

0

FASM, 254

00000000h: 64 62 20 27 01 02 03 04 05 06 07 08 0B 0C 0E 0F ; db '............
00000010h: 10 11 12 13 14 15 16 17 18 19 1B 1C 1D 1E 1F 21 ; ...............!
00000020h: 22 23 24 25 26 28 29 2A 2B 2D 2E 2F 3A 3B 3C 3D ; "#$%&()*+-./:;<=
00000030h: 3E 3F 40 41 43 45 46 47 48 49 4A 4B 4C 4D 4E 4F ; >?@ACEFGHIJKLMNO
00000040h: 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F ; PQRSTUVWXYZ[\]^_
00000050h: 60 61 63 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 ; `acefghijklmnopq
00000060h: 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 ; 
00000070h: 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 ; 
00000080h: 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 ; 
00000090h: A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 ; 
000000a0h: B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 ; 
000000b0h: C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 ; 
000000c0h: D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 ; 
000000d0h: E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 27 ; 
000000e0h: 0D 64 62 20 27 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB ; 
000000f0h: FC FD FE FF 27                                  ; 

DB  1,2,3,4,5,6,7,8,11,12,14,15,16,17,18,19,20,21,22,23,24,25,27,28,29,30,31,33,34,35,36,37,38,40,41,42,43,45,46,47,58,59,60,61,62,63,64,65,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251
DB  252,253,254,255

ไม่ใช่ 0x00 และ 0x1A เนื่องจาก fasm ไม่รองรับสองสัญลักษณ์


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