การเขียนโปรแกรมปริศนา & รหัสกอล์ฟ

คำถาม & คำตอบสำหรับผู้ชื่นชอบการเขียนโปรแกรมปริศนา

5
เรียงลำดับที่เร็วที่สุดใน BrainF ***
หลังจากนำQuickSortมาใช้ใน BrainF ***ฉันรู้ว่าอาจไม่รวดเร็วเท่านี้ การดำเนินการที่เป็น O (1) ในภาษาปกติ (เช่นการจัดทำดัชนีแถวลำดับ) นั้นยาวกว่าใน BF อย่างมาก กฎส่วนใหญ่สำหรับสิ่งที่ทำให้การเรียงลำดับที่มีประสิทธิภาพสามารถโยนออกไปนอกหน้าต่างเมื่อคุณกำลังเขียนโค้ดในTuring tarpit ดังนั้นนี่คือความท้าทายในการใช้ "การเรียงลำดับสมองที่เร็วที่สุด *** ฉันจะจับเวลารายการทั้งหมดโดยใช้ล่ามด้านล่าง ผู้บุกรุกใช้เทป 16K ของอักขระที่ไม่ได้ลงนาม ทั้งเทปและเซลล์ห่อเมื่อขั้นสูง / เพิ่มขึ้นผ่านขีด จำกัด การอ่าน EOF จะใส่ 0 ในเซลล์ปัจจุบัน เวลาที่วัดได้รวมทั้งเวลาในการวิเคราะห์ไฟล์ต้นฉบับและเวลาในการประมวลผลไฟล์อินพุตทั้งหมด รหัสที่เร็วที่สุดชนะ เวกเตอร์ทดสอบจะเป็นชุดของไฟล์ Ascii ที่ออกแบบมาเพื่อทดสอบการเรียงตัวขอบกรณีรวมถึง รายการที่เรียงลำดับแล้ว: "สั่งแล้ว" !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ รายการที่เรียงกลับกัน: "ย้อนกลับ" ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! ไฟล์ประกอบด้วยสำเนาที่ไม่ซ้ำกันหลายค่า: "onlynine" ibbkninbkrauickabcufrfckbfikfbbakninfaafafbikuccbariauaibiraacbfkfnbbibknkbfankbbunfruarrnrrrbrniaanfbruiicbuiniakuuiubbknanncbuanbcbcfifuiffbcbckikkfcufkkbbakankffikkkbnfnbncbacbfnaauurfrncuckkrfnufkribnfbcfbkbcrkriukncfrcnuirccbbcuaaifiannarcrnfrbarbiuk ไฟล์ ascii แบบสุ่มสมบูรณ์: "random" 'fQ`0R0gssT)70O>tP[2{9' 0.HMyTjW7-!SyJQ3]gsccR'UDrnOEK~ca 'KnqrgA3i4dRR8g.'JbjR;D67sVOPllHe,&VG"HDY_'Wi"ra?n.5nWrQ6Mac;&}~T_AepeUk{:Fwl%0`FI8#h]J/Cty-;qluRwk|S …

8
ใช้ S-box ของ Rijndael
S-box ของ Rijndaelเป็นการดำเนินการที่ใช้บ่อยในการเข้ารหัสAESและถอดรหัส โดยทั่วไปแล้วจะใช้งานเป็นตารางค้นหาขนาด 256 ไบต์ เร็วมาก แต่หมายความว่าคุณต้องระบุตารางการค้นหาขนาด 256- ไบต์ในรหัสของคุณ ฉันเดิมพันคนในฝูงชนนี้สามารถทำได้ด้วยรหัสน้อยลงเนื่องจากโครงสร้างทางคณิตศาสตร์พื้นฐาน เขียนฟังก์ชั่นในภาษาที่คุณชื่นชอบซึ่งใช้ S-box ของ Rijndael รหัสที่สั้นที่สุดชนะ

14
คำนวณสิทธิ์ของผู้ใช้ใน CodeGolf.SE
ความท้าทาย เป้าหมายของคุณคือการเขียนโปรแกรมที่สั้นที่สุดเท่าที่จะเป็นไปได้ซึ่งจะมีรายการเหตุการณ์ (เช่น upvote, downvote, ฯลฯ ) และส่งคืนชื่อเสียงของผู้ใช้และสิทธิพิเศษที่เขาได้รับ เหตุการณ์ประเภทใด นี่คือแผนภูมิกิจกรรมที่ระบุไว้ตามลำดับชื่อเสียงที่ได้รับ: -15 answer unaccepted -10 answer unupvoted -5 question unupvoted -2 answer downvoted -2 question downvoted -2 unaccept answer -1 downvote answer +1 join website +1 undownvote answer +2 accept answer +2 question undownvoted +2 answer undownvoted +5 question upvoted +10 …

7
ถัดไปคืออะไร
รับรายการจำนวนเต็มคั่นด้วยช่องว่างงานของคุณคือค้นหาจำนวนเต็มถัดไปในลำดับ จำนวนเต็มในแต่ละลำดับเป็นผลมาจากการใช้การคำนวณทางคณิตศาสตร์เดียว (คน+, -, *หรือ/) เป็นจำนวนเต็มก่อนหน้านี้และแต่ละลำดับถูกสร้างขึ้นจากจำนวนตัวแปรของการดำเนินการเช่น ( แต่ไม่เกิน 10) ไม่มีลำดับใดที่จะยาวกว่าครึ่งหนึ่งของลำดับเลขจำนวนเต็มดังนั้นคุณจะมีลำดับการดำเนินการแต่ละรายการปรากฏขึ้นอย่างน้อยสองครั้งเพื่อยืนยัน ข้อมูลที่ป้อนจะผ่าน stdin (หรือpromptสำหรับโซลูชัน JavaScript) นี่คือตัวอย่างที่อธิบาย การป้อนข้อมูล: 1 3 5 7 9 11 เอาท์พุท: 13 ค่อนข้างง่ายคนนี้ +2ค่าทั้งหมดเป็นค่าก่อนหน้านี้ การป้อนข้อมูล: 1 3 2 4 3 5 4 6 5 7 6 ouput: 8 ขั้นตอนที่สองในลำดับนี้แล้ว+2-1 การป้อนข้อมูล: 2 6 7 3 9 10 6 18 …

10
ปิรามิดอียิปต์
มหาปิรามิดแห่งกิซ่าพีระมิดที่ใหญ่ที่สุดในอียิปต์ไม่เพียง แต่เป็นสิ่งมหัศจรรย์ที่เก่าแก่ที่สุดในเจ็ดสิ่งมหัศจรรย์ของโลกโบราณเท่านั้น แต่ยังเป็นสิ่งเดียวที่ยังคงสภาพสมบูรณ์อยู่ ปิรามิดอียิปต์อาจใช้เวลาถึง 20 ปีในการสร้างและมีขนาดใหญ่เพื่อให้อัลอาซิซอู ธ แมนลูกชายของศอลาฮุดดีที่บดแซ็กซอนมีที่จะให้ขึ้นรื้อปิรามิดแห่งกิซ่าที่ดีเพราะมันก็ถือว่างานมากเกินไป ปิรามิดของอียิปต์ส่วนใหญ่สร้างขึ้นเพื่อเป็นสุสานสำหรับฟาโรห์ของประเทศและที่มาของพวกเขาในช่วงยุคกลางและยุคกลาง (ค. 2686–1690 ก่อนคริสตศักราช) และในปี 2008 มีการค้นพบปิรามิดอียิปต์ 138 แห่ง ภารกิจคือการสร้างโปรแกรมที่ป้อนลำดับของระยะทางคั่นด้วยช่องว่างและสร้างปิรามิดข้อความ 10 × 10 คั่นด้วยระยะทางเหล่านั้น ระยะทาง 1 เท่ากับอักขระสองตัว ปิรามิดข้อความจะมีลักษณะเช่นนี้: /\ /--\ /----\ /------\ /--------\ /----------\ /------------\ /--------------\ /----------------\ /------------------\ ถ้าใส่ประกอบด้วยเพียงแบ่งบรรทัดแล้วหนึ่งพีระมิดจะมีการผลิตเป็นดังกล่าวข้างต้น พีระมิดแต่ละตัวจะแสดงปิรามิดไปทางซ้ายราวกับว่าอยู่ข้างหน้า ตัวอย่างที่ 1 การป้อนข้อมูล: 4 3 1 เอาท์พุท: /\ /\ /\/\ /--\ /--\ …

12
สหภาพช่วงเวลา
รับรายการช่วงเวลาดำเนินการสหภาพของพวกเขาและลดการทับซ้อน นั่นหมายถึงชิ้นส่วนที่ทับซ้อนกันจะลดลง ( [a, b] U [c, d] = [a, d]ถ้าb > c) สมมติว่าทุก <b [a, b]ในช่วงเวลาทั้งหมด ใช้เป็นฟังก์ชั่นของรายการช่วงเวลาอินพุต -> รายการช่วงเวลาเอาต์พุต รหัสที่สั้นที่สุดชนะ คุณไม่สามารถใช้ห้องสมุดที่มีอยู่ใด ๆ ชี้แจง: ช่วงเวลาที่เปิดและปิดจะไม่แตกต่าง ช่วงเวลาสำหรับจำนวนจริงไม่ใช่จำนวนเต็ม ( [2, 3], [4, 5] -> [2, 3], [4, 5]) ไม่จำเป็นต้องเรียงลำดับช่วงเอาต์พุต ลำดับถ้าอินพุตไม่สำคัญ อินพุตที่ผิดกฎหมายเป็นเพียง[a, b]ที่ซึ่งb >= aไม่มีส่วนเกี่ยวข้องกับลำดับของช่วงเวลาอินพุตและจำนวนของช่วงเวลาอินพุต คุณไม่จำเป็นต้องแสดงข้อความแสดงข้อผิดพลาดเกี่ยวกับพฤติกรรมที่ไม่ได้กำหนด ตัวอย่าง (พร้อมหมายเลขบรรทัด) [2, 4], [7, 9] --> …
15 code-golf 

17
Code-Golf: Lattice Points ภายในวงกลม
ภาพต่อไปนี้แสดงปัญหา: เขียนฟังก์ชันที่ให้เลขจำนวนเต็มเป็นรัศมีวงกลมคำนวณจำนวนจุดขัดแตะภายในวงกลมกลาง (รวมถึงขอบเขต) ภาพแสดง: f[1] = 5 (blue points) f[2] = 13 (blue + red points) ค่าอื่น ๆ สำหรับการตรวจสอบ / การดีบักของคุณ: f[3] = 29 f[10] = 317 f[1000] = 3,141,549 f[2000] = 12,566,345 ควรมีประสิทธิภาพที่สมเหตุสมผล สมมติว่าน้อยกว่าหนึ่งนาทีสำหรับ f [1000] รหัสที่สั้นที่สุดชนะ มีการใช้กฎเกณฑ์ของสนามกอล์ฟตามปกติ กรุณาโพสต์การคำนวณและเวลาของ f [1001] เป็นตัวอย่าง

16
Rosetta Stone Challenge: ค้นหากฎสำหรับซีรี่ส์
เป้าหมายของการท้าทาย Rosetta Stone คือการเขียนวิธีแก้ปัญหาในภาษาต่างๆให้ได้มากที่สุด แสดงการเขียนโปรแกรมได้หลายภาษาของคุณ! ความท้าทาย ความท้าทายของคุณคือการใช้โปรแกรมที่ป้อนข้อมูลจะแสดงรายชื่อของตัวเลขและการส่งออกกฎที่ใช้ในการสร้างแต่ละหมายเลขเนื่องในซีรีส์ที่เป็นหลายภาษาการเขียนโปรแกรมที่เป็นไปได้ คุณได้รับอนุญาตให้ใช้ฟังก์ชั่นไลบรารีมาตรฐานทุกประเภทที่ภาษาของคุณมีเนื่องจากนี่เป็นการนำเสนอภาษาเป็นส่วนใหญ่ "ซีรีส์คืออะไร" ซีรีย์คือรายการที่เรียงลำดับของจำนวนเต็ม แต่ละหมายเลขที่ต่อเนื่องกันในซีรีส์สามารถสร้างขึ้นได้โดยใช้กฎง่ายๆกับหมายเลขก่อนหน้าในซีรีส์ ในการท้าทายนี้กฎประกอบด้วยการคูณจำนวนด้วยค่าคงที่แล้วเพิ่มค่าคงที่ที่สอง ค่าคงที่ทั้งสองสามารถเป็นจำนวนเต็มใดก็ได้ เป้าหมายของการท้าทายนี้คือการส่งออกค่าคงที่ทั้งสอง สำหรับซีรีส์กฎสามารถเขียนเป็น2 5 11 2 1ซึ่งหมายความว่าแต่ละหมายเลขเป็นหมายเลขก่อนหน้าคูณ 2 และ 1 ข้อเท็จจริงที่สำคัญคือชุดส่วนใหญ่มีกฎเดียวทั้งหมด บางซีรี่ส์มีจำนวนอนันต์หรือไม่มีเลย แต่คุณจะไม่ต้องจัดการกับเรื่องนี้ อินพุต การป้อนข้อมูลจะเป็นรายการของสามจำนวนเต็มที่แตกต่างกันซึ่งเป็นตัวเลขในลำดับ ตัวเลขสามารถเว้นวรรคจุลภาคหรือขึ้นบรรทัดใหม่ได้ แต่โปรดระบุว่า ฉันจะยืดหยุ่นตามข้อ จำกัด นี้เพราะบางภาษาอาจมีข้อ จำกัด ในการป้อนข้อมูล นี่คือสี่ตัวอย่างของการป้อนข้อมูล: 0 7 14 2 5 11 2 0 -4 5 -19 77 เอาท์พุต เอาต์พุตจะเป็นจำนวนเต็มสองจำนวนซึ่งแทนกฎที่ใช้ในการสร้างชุดข้อมูล จำนวนแรกจะเป็นค่าคงที่การคูณในขณะที่ตัวเลขที่สองจะเป็นค่าคงที่การเติม …

5
รหัส - กอล์ฟ: ไฟดับ!
รหัสที่สั้นที่สุดในการส่งผ่านความเป็นไปได้ทั้งหมดชนะ เกมที่ใช้กริดเป็นจำนวนมากถูกสร้างขึ้นโดยเริ่มจากกริดของแสงที่เปิดอยู่ การกดปุ่มใด ๆ ของแสงจะทำให้แสงและไฟสี่ดวงติดกันเพื่อทำการสลับ เมื่อมีการสลับแสงไฟจะปิดหรือเปิดขึ้นอยู่กับว่าเปิดหรือปิดโดยตั้งใจ เป้าหมายคือการยิงแสงในลำดับที่ส่งผลให้แสงทั้งหมดถูกปิดในตอนท้าย "X" หมายถึงไฟที่เปิดอยู่ "O" หมายถึงไฟที่ปิดอยู่ "P" หมายถึงสี่เหลี่ยมที่กด XOO XOO XOX XOX XXX XOX XOP -> XXO -> OPO -> XOX OOX OOX POO XXO XOO Intial Grid Press 1 Press 2 Press 3 Ending Grid อินพุตสามารถนำโดยตรงจากไฟล์ที่ส่งผ่านเป็นอาร์กิวเมนต์หรือเป็นอินพุตมาตรฐาน บรรทัดแรกของการป้อนข้อมูลจะมีx (1 <= x <= 20) ขนาดของตารางของไฟที่มีความหมายxโดยx บรรทัดที่สองจะมีy …

30
Jolly Jumper Sequence
ลำดับของจำนวนเต็ม n> 0 เรียกว่าจัมเปอร์จัลลี่ถ้าค่าสัมบูรณ์ของความแตกต่างระหว่างองค์ประกอบที่ต่อเนื่องจะใช้กับค่าทั้งหมด 1 ถึง n-1 ดังนั้นลำดับ [4,1,2,4] จึงมีความแตกต่างแน่นอน [3,1,2] ซึ่งเท่ากับชุด [1,2,3] (1 ถึง n-1 โดยที่ n คือความยาวของลำดับดั้งเดิม) ดังนั้นจึงเป็นจัมเปอร์ที่ร่าเริง ลำดับมีความยาว n> 0 สมมติว่า n = 1 เป็นจัมเปอร์ jolly โหมดง่าย ๆ :ไม่ต้องกังวลกับ stdin / stdout เพียงแค่ฟังก์ชั่นที่ยอมรับการโต้เถียงและส่งคืนบางสิ่งที่บ่งบอกว่าร่าเริงหรือไม่ โหมดฮาร์ด:อินพุตบน stdin (คั่นด้วยช่องว่าง) และเอาต์พุตคือ "Jolly" / "Not jolly" การใช้อักษรตัวพิมพ์ใหญ่มีความสำคัญ นี่คือรหัสกอล์ฟ แก้ไข: ลำดับสามารถมีจำนวนเต็มลบและอินพุตบน stdin คือการเว้นวรรค …

6
สลายการเปลี่ยนรูปเป็นวัฏจักร
มีทฤษฎีบทที่รู้จักกันดีว่าคือการเปลี่ยนแปลงใด ๆ ที่สามารถย่อยสลายเป็นชุดของรอบ งานของคุณคือการเขียนโปรแกรมที่สั้นที่สุดเท่าที่จะทำได้ การป้อนข้อมูล: สองเส้น ตัวแรกประกอบด้วยตัวเลขNส่วนที่สองมีNจำนวนเต็มชัดเจนในช่วง[0,N-1]คั่นด้วยช่องว่าง จำนวนเต็มเหล่านี้แสดงถึงการเปลี่ยนแปลงของNองค์ประกอบ เอาท์พุท: หนึ่งบรรทัดสำหรับแต่ละรอบในการเปลี่ยนแปลง แต่ละบรรทัดควรเป็นรายการจำนวนเต็มคั่นด้วยช่องว่างตามลำดับวงรอบ รอบสามารถส่งออกในลำดับใด ๆ และแต่ละรอบสามารถส่งออกเริ่มต้นที่ตำแหน่งใด ๆ ตัวอย่างที่ 1: 8 2 3 4 5 6 7 0 1 อินพุตนี้เข้ารหัสการเปลี่ยนแปลง 0-> 2, 1-> 3, 2-> 4, 3-> 5, 4-> 6, 5-> 7, 6-> 0, 7-> 1 สิ่งนี้จะสลายตัวเป็นวัฏจักรเช่นนี้: 0 2 4 6 1 3 …

10
คำนวณตัวเลขของ Pi
นี่เป็นงานที่ค่อนข้างแตกต่าง คำนวณ 1024 ฐานสิบหกหลักของπเริ่มต้นที่ตำแหน่งเลขฐานสิบหกที่ 1024 เป็นทางการ: โปรแกรมของคุณควรเสร็จสมบูรณ์ในเวลาน้อยกว่า 1 นาทีและสร้างผลลัพธ์ต่อไปนี้: 25d479d8f6e8def7e3fe501ab6794c3b976ce0bd04c006bac1a94fb6409f60c45e5c9ec2196a246368fb6faf3e6c53b51339b2eb3b52ec6f6dfc511f9b30952ccc814544af5ebd09bee3d004de334afd660f2807192e4bb3c0cba85745c8740fd20b5f39b9d3fbdb5579c0bd1a60320ad6a100c6402c7279679f25fefb1fa3cc8ea5e9f8db3222f83c7516dffd616b152f501ec8ad0552ab323db5fafd23876053317b483e00df829e5c57bbca6f8ca01a87562edf1769dbd542a8f6287effc3ac6732c68c4f5573695b27b0bbca58c8e1ffa35db8f011a010fa3d98fd2183b84afcb56c2dd1d35b9a53e479b6f84565d28e49bc4bfb9790e1ddf2daa4cb7e3362fb1341cee4c6e8ef20cada36774c01d07e9efe2bf11fb495dbda4dae909198eaad8e716b93d5a0d08ed1d0afc725e08e3c5b2f8e7594b78ff6e2fbf2122b648888b812900df01c4fad5ea0688fc31cd1cff191b3a8c1ad2f2f2218be0e1777ea752dfe8b021fa1e5a0cc0fb56f74e818acf3d6ce89e299b4a84fe0fd13e0b77cc43b81d2ada8d9165fa2668095770593cc7314211a1477e6ad206577b5fa86c75442f5fb9d35cfebcdaf0c7b3e89a0d6411bd3ae1e7e4900250e2d2071b35e226800bb57b8e0af2464369bf009b91e5563911d59dfa6aa78c14389d95a537f207d5ba202e5b9c5832603766295cfa911c819684e734a41b3472dca7b14a94a โปรแกรมที่มีความยาวสั้นที่สุดจะเป็นผู้ชนะ คุณต้องคำนวณตัวเลขทั้งหมดที่รันไทม์ คุณไม่จำเป็นต้องใช้อัลกอริทึมที่คำนวณπ; หากภาษาของคุณมีฟังก์ชั่นการใช้งานนั้นอยู่แล้วคุณสามารถใช้งานได้

19
พลังที่ไม่สำคัญ
เขียนโปรแกรมที่สั้นที่สุดเพื่อพิมพ์พลังที่ไม่สำคัญ order 2 ^ 12 ตามลำดับ พลังงานที่ไม่สำคัญหมายถึงฐานและเลขชี้กำลังคือ> 1 ช่องว่างนำหน้าเป็นตัวเลือก เมื่อมีวิธีแก้ปัญหาหลายคำสั่งไม่สำคัญ 16 = 4^2, 2^4 ก็โอเค ตัวอย่างผลลัพธ์: 4 = 2^2 8 = 2^3 9 = 3^2 16 = 2^4, 4^2 25 = 5^2 27 = 3^3 32 = 2^5 36 = 6^2 49 = 7^2 64 = 2^6, 4^3, 8^2 81 …
15 code-golf  math 

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

12
ติดตั้ง glob Matcher
ใช้ฟังก์ชั่นของรูปแบบและสตริงที่จะจับคู่คืนค่าจริงถ้ารูปแบบตรงกับสตริง WHOLE มิฉะนั้นเป็นเท็จ ไวยากรณ์รูปแบบ glob ของเราคือ: ? ตรงกับตัวละครตัวใดตัวหนึ่ง + ตรงกับตัวละครหนึ่งตัวหรือมากกว่า * ตรงกับอักขระศูนย์หรือมากกว่า \ หนี กฎ: ไม่มี eval ไม่แปลงเป็นนิพจน์ทั่วไปไม่เรียกฟังก์ชัน glob ระบบ ไม่จำเป็นต้องใช้ I / O คุณสามารถเขียนฟังก์ชั่นได้ ชนะสั้นที่สุด ตัวอย่าง: glob('abc', 'abc') => true glob('abc', 'abcdef') => false IMPORTANT! glob('a??', 'aww') => true glob('a*b', 'ab') => true glob('a*b', 'agwijgwbgioeb') => true glob('a*?', 'a') …

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