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

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

30
วงเล็บแบบยืดได้
พิจารณาสตริงที่ไม่ว่างเปล่าของวงเล็บที่สมดุลอย่างถูกต้อง: (()(()())()((())))(()) เราสามารถจินตนาการได้ว่าวงเล็บแต่ละคู่แสดงถึงวงแหวนในโครงสร้างแบบยืดหดได้ ลองขยายกล้องโทรทรรศน์ออก: ( )( ) ()( )()( ) () ()() ( ) () อีกวิธีในการดูคือวงเล็บที่ความลึกnถูกย้ายไปที่บรรทัดnในขณะที่รักษาตำแหน่งแนวนอนไว้ งานของคุณคือการใช้สตริงของวงเล็บที่มีความสมดุลและสร้างเวอร์ชันเพิ่มเติม คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น, รับอินพุตผ่าน STDIN (หรือเทียบเท่าที่ใกล้เคียงที่สุด), อาร์กิวเมนต์บรรทัดคำสั่งหรือพารามิเตอร์ฟังก์ชัน, และสร้างเอาต์พุตผ่าน STDOUT (หรือเทียบเท่าที่ใกล้เคียงที่สุด), ค่าส่งคืนหรือฟังก์ชัน (ออก) คุณอาจสมมติว่าสายป้อนข้อมูลที่ถูกต้องคือประกอบด้วยวงเล็บเท่านั้นซึ่งมีความสมดุลอย่างถูกต้อง คุณอาจพิมพ์ช่องว่างต่อท้ายในแต่ละบรรทัด แต่ไม่ต้องเว้นวรรคนำหน้าเกินความจำเป็น ยอดรวมบรรทัดต้องไม่ยาวเกินกว่าสองเท่าของความยาวของสตริงป้อนเข้า คุณสามารถเลือกที่จะพิมพ์ขึ้นบรรทัดใหม่ได้ ตัวอย่าง นอกเหนือจากตัวอย่างข้างต้นต่อไปนี้เป็นกรณีทดสอบอีกสองสามรายการ (อินพุตและเอาต์พุตถูกคั่นด้วยบรรทัดว่าง) () () (((()))) ( ) ( ) ( ) () ()(())((()))(())() ()( )( )( )() …

30
หน่วยความจำรั่วในไบต์น้อยที่สุด
งานของคุณคือการเขียนโค้ดที่จะรั่วอย่างน้อยหนึ่งไบต์ของหน่วยความจำในไม่กี่ไบต์เท่าที่จะทำได้ หน่วยความจำที่จะต้องมีการรั่วไหลออกมาไม่ได้เป็นเพียงการจัดสรร หน่วยความจำรั่วคือหน่วยความจำที่โปรแกรมจัดสรร แต่สูญเสียความสามารถในการเข้าถึงก่อนที่จะสามารถจัดสรรคืนหน่วยความจำได้อย่างถูกต้อง สำหรับภาษาระดับสูงส่วนใหญ่หน่วยความจำนี้จะต้องมีการจัดสรรในกอง ตัวอย่างใน C ++ จะเป็นโปรแกรมต่อไปนี้: int main(){new int;} สิ่งนี้ทำให้new intบนฮีปโดยไม่มีตัวชี้ไป หน่วยความจำนี้รั่วไหลออกมาทันทีเพราะเราไม่สามารถเข้าถึงได้ นี่คือสิ่งที่สรุปการรั่วไหลจากValgrindอาจมีลักษณะ: LEAK SUMMARY: definitely lost: 4 bytes in 1 blocks indirectly lost: 0 bytes in 0 blocks possibly lost: 0 bytes in 0 blocks still reachable: 0 bytes in 0 blocks suppressed: 0 bytes in …
79 code-golf 

7
เริ่มการปฏิวัติในโอเชียเนีย
ผู้ชนะ (ตัดสินใจเมื่อ 14/09/14) คำตอบที่ชนะโดย Markuz (Python) - 63 คะแนน วิ่งขึ้นโดย kuroi neko (PHP) - 55 โหวต บทนำ คุณอยู่ในโลกของหนังสือเล่มนี้Nineteen Eighty-Fourโดย George Orwell คุณเป็นโปรแกรมเมอร์สำหรับงานปาร์ตี้และได้รับมอบหมายให้เขียนโปรแกรมสำหรับ telescreens มันควรส่งออกข้อความของบุคคลที่สามและคุณได้เลือกข้อความที่แสดงในงานที่ 1 ด้านล่าง อย่างไรก็ตามคุณเพิ่งเริ่มดูถูกพรรคและคุณต้องการให้โปรแกรมจุดประกายการปฏิวัติ คุณทำให้โปรแกรมพูดว่า "ลงกับพี่ใหญ่!" คุณต้องให้เวลากับตัวเองในการหลบหนีเพราะคุณจะถูกทรมานเมื่อผู้คนตระหนักถึงสิ่งที่โปรแกรมของคุณทำดังนั้นคุณจึงทำตัวเป็น "ไทม์บอม" ที่จะระเบิดหลังจากที่คุณปลอดภัย หมายเหตุ:สิ่งนี้จะไม่จุดประกายการปฏิวัติ แต่คุณอยู่ในความเกลียดชังต่อพรรคที่คุณคิดว่าจริง ๆ แล้วมันจะสร้างความแตกต่าง งาน เขียนโปรแกรมที่: ก่อน 14/09/2014 จะส่งออกบรรทัดต่อไปนี้บนการหมุนเสมอ (เช่นพิมพ์หนึ่งบรรทัดรอ 10 วินาทีพิมพ์บรรทัดถัดไป ฯลฯ ไม่มีที่สิ้นสุด): War is Peace Freedom …

30
ตรวจหา MS Windows
ท้าทาย สร้างโปรแกรมที่ส่งกลับค่าความจริงเมื่อทำงานบน Microsoft Windows (เพื่อความง่ายเราจะติดกับ Windows 7, 8.1 และ 10) และค่าที่ไม่แน่นอนเมื่อทำงานบนระบบปฏิบัติการอื่น (OSX, FreeBSD, Linux) กฎระเบียบ รหัสที่ล้มเหลวในการรัน / คอมไพล์บนแพลตฟอร์มจะไม่นับเป็นค่าที่ไม่ถูกต้อง เกณฑ์การชนะ ฉันติดป้ายกำกับนี้เป็นcode-golfดังนั้นคะแนนต่ำสุดชนะ แต่ฉันก็สนใจที่จะเห็นวิธีแก้ปัญหาที่สร้างสรรค์สำหรับปัญหานี้

30
สวัสดีชาวโลก 0.0!
แหล่งที่มา: Dilbert, 8 กันยายน 2535 ฉันหวังว่าจะเพิ่มความแปลกใหม่ให้กับ "Hello World!" โครงการ โค้ดโปรแกรมที่เอาต์พุตHello World!โดยไม่มี: ตัวอักษรสตริง / ตัวอักษร ตัวเลข (ฐานใด ๆ ) ฟังก์ชั่นที่สร้างไว้ล่วงหน้าที่กลับมา "Hello World!" ตัวอักษร RegEx ด้วยข้อยกเว้นของ "O" †และ 0 † "O" เป็นตัวพิมพ์ใหญ่ "o" ไม่เป็นที่ยอมรับ

30
-ENDED- ทำสิ่งที่ดูเหมือนเป็นอย่างอื่น [ปิด]
เขียนตัวอย่างฟังก์ชั่นโปรแกรม ... ที่ทำให้งงงวยในลักษณะที่เห็นได้ชัดตั้งแต่แรกเห็นว่ามันทำอย่างอื่น ตัวอย่างเช่น: เขียนโค้ดที่เพิ่มสองตัวเลข แต่เมื่อคุณถามใครบางคนว่า "มันทำอะไร?" เขาจะบอกคุณว่ามันพิมพ์ "Hello, World!" กฎระเบียบ รหัสจะต้องสามารถอ่านได้สำหรับคนที่รู้ภาษาที่คุณใช้อย่างคร่าว ๆ (หลีกเลี่ยงการใช้ภาษาที่ทำให้สับสนเช่น APL เพื่อผลประโยชน์ของคุณเอง) รหัสจะต้องทำสิ่งที่ไม่คาดคิดที่ผู้อ่านไม่สามารถทำนายได้ในตอนแรก เมื่อคุณถามผู้อ่านที่แตกต่างกันพวกเขาจะต้องมีความคิดเห็น (ผิด) เหมือนกันเกี่ยวกับสิ่งที่รหัสทำ อันดับ โปรดอ่านรหัสผู้เข้าแข่งขันคนอื่น ๆ ในช่วงเวลา 10-20 วินาทีสูงสุดเพื่อให้ทราบว่าเกิดอะไรขึ้น เพิ่มความคิดเห็นในคำตอบที่บอกว่าคุณคิดว่ารหัสทำอะไร หากคำตอบที่คุณต้องการให้มีอยู่แล้วเพียงแค่+1ความคิดเห็น (หากคุณพลาดคำตอบนั้นและเพิ่มความคิดเห็นอื่นไม่ต้องห่วงมันจะไม่ถูกนับเป็นคำตอบอื่น) คะแนนจะเพิ่มขึ้นด้วยวิธีนี้: ( maxFalseOpinion- goodGuess) / totalOpinion(ดูตัวอย่างด้านล่าง) ให้คะแนนผู้เข้าแข่งขันรายอื่นด้วย fairplayและอย่าคอมเม้นต์รหัสของคุณเอง เพิ่มความคิดเห็นที่เป็นประโยชน์เท่านั้น หลีกเลี่ยงการ "ฉันไม่รู้" และ "สิ่งที่ดี!" พวกเขาจะไม่นำมาพิจารณาสำหรับการจัดอันดับ แต่มันเป็นรหัสและไม่ใช่การจัดอันดับที่จะต้องทำให้งงงวย ตัวอย่างการให้คะแนน ตัวอย่างเพิ่มตัวเลขสองตัว ความคิดเห็นที่พูดว่า: (3) แสดงข้อความ "Hello, …

5
รับรู้ไซต์แลกเปลี่ยนสแต็คด้วยไอคอนของพวกเขา
หลังจากใช้เวลาสักครู่ในการแลกเปลี่ยนแบบสแต็คฉันสามารถจดจำไซต์ส่วนใหญ่ในคำถามเครือข่ายที่น่าสนใจด้วยไอคอนเล็ก ๆ ของพวกเขา (ซึ่งเป็นfaviconของพวกเขาด้วย) แต่ก็ไม่ได้ทั้งหมด ลองเขียนโปรแกรมที่สามารถทำได้! คุณจะเขียนโค้ดที่กำหนดไซต์โดยกำหนดหนึ่งใน (ปัจจุบัน) 132 favicons รวมถึง Stack Overflow ในภาษาญี่ปุ่น (ซึ่งยังอยู่ในรุ่นเบต้าส่วนตัว): ฉันได้อัปโหลดไฟล์ ZIP พร้อมด้วยภาพทั้งหมดเหล่านี้เป็น PNGs บน GitHub คลิกปุ่ม "ดิบ" เพื่อดาวน์โหลด ลำดับของไอคอนด้านบนคือลำดับตัวอักษรของชื่อไฟล์ในรหัสไปรษณีย์ ชื่อไซต์ที่เกี่ยวข้อง (ตามลำดับนี้) คือ: แสดงตัวอย่างโค้ด Academia Android Enthusiasts Anime & Manga Ask Different Arduino Ask Ubuntu Astronomy Aviation Video Production Beer Bicycles Biology Bitcoin Blender Board …

30
จำนวนมากที่สุดในสิบไบต์ของรหัส
เป้าหมายของคุณคือพิมพ์จำนวนสูงสุดที่เป็นไปได้โดยใช้รหัสเพียงสิบตัวอักษร คุณสามารถใช้คุณสมบัติใด ๆ ของภาษาของคุณยกเว้นฟังก์ชั่นการยกกำลังในตัว ในทำนองเดียวกันคุณไม่สามารถใช้สัญลักษณ์ทางวิทยาศาสตร์เพื่อป้อนตัวเลขได้ (เช่นนั้นไม่มี9e+99) โปรแกรมจะต้องพิมพ์หมายเลขโดยไม่ต้องป้อนข้อมูลใด ๆ จากผู้ใช้ ในทำนองเดียวกันไม่มีการอ่านจากไฟล์อื่น ๆ หรือจากเว็บและอื่น ๆ โปรแกรมของคุณจะต้องคำนวณหมายเลขเดียวและพิมพ์ คุณไม่สามารถพิมพ์สตริงและไม่สามารถพิมพ์ตัวเลขหลักพันเท่ากันได้ คุณสามารถยกเว้นรหัสได้ไม่เกิน 10 ตัวที่จำเป็นสำหรับการพิมพ์อะไรก็ได้ ตัวอย่างเช่นใน Python 2 ซึ่งใช้print xไวยากรณ์คุณสามารถใช้อักขระได้สูงสุด 16 ตัวสำหรับโปรแกรมของคุณ โปรแกรมต้องประสบความสำเร็จในผลลัพธ์จริง ๆ หากใช้เวลานานกว่าหนึ่งชั่วโมงในการทำงานบนคอมพิวเตอร์ที่เร็วที่สุดในโลกมันไม่ถูกต้อง การส่งออกอาจจะอยู่ในรูปแบบใด ๆ (เพื่อให้คุณสามารถพิมพ์999, 5e+100ฯลฯ ) อินฟินิตี้เป็นแนวคิดที่เป็นนามธรรมไม่ใช่ตัวเลข ดังนั้นจึงไม่ใช่เอาต์พุตที่ถูกต้อง

30
เรียกวิธีการโดยไม่เรียกมัน [ปิด]
แรงบันดาลใจจากคำถาม StackOverflow ลบในขณะนี้ คุณสามารถหาวิธีที่จะเรียกใช้วิธีการเฉพาะโดยไม่เรียกอย่างชัดเจนได้หรือไม่? ยิ่งอ้อมยิ่งดี นี่คือสิ่งที่ฉันหมายถึงอย่างแน่นอน (C ใช้สำหรับการแสดงตัวอย่างทุกภาษาที่ยอมรับ): // Call this. void the_function(void) { printf("Hi there!\n"); } int main(int argc, char** argv) { the_function(); // NO! Bad! This is a direct call. return 0; } คำถามเดิม:

30
N (e (s (t))) สตริง
ในการ "function ซ้อน" สตริงคุณต้อง: ปฏิบัติต่ออักขระตัวแรกเป็นฟังก์ชันและอักขระต่อไปนี้เป็นอาร์กิวเมนต์ของฟังก์ชันนั้น ตัวอย่างเช่นถ้าสตริงอินพุตเป็นHelloดังนั้นขั้นตอนแรกจะเป็น: H(ello) จากนั้นทำซ้ำขั้นตอนเดียวกันนี้สำหรับทุกสตริงย่อย ดังนั้นเราจึงได้รับ: H(ello) H(e(llo)) H(e(l(lo))) H(e(l(l(o)))) งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ "ฟังก์ชั่นรัง" สตริง ตัวอย่างเช่นถ้าสตริงอินพุตเป็นHello world!ดังนั้นคุณควรส่งออก: H(e(l(l(o( (w(o(r(l(d(!))))))))))) อินพุตจะมีASCII ที่พิมพ์ได้เท่านั้นและคุณสามารถรับอินพุตและเอาต์พุตในรูปแบบที่เหมาะสม ตัวอย่างเช่น STDIN / STDOUT อาร์กิวเมนต์ของฟังก์ชันและค่าส่งคืนการอ่านและการเขียนไปยังไฟล์ ฯลฯ เพื่อความเรียบง่ายคุณอาจสมมติว่าอินพุตจะไม่มีวงเล็บและจะไม่ว่างเปล่า Input: Nest a string Output: N(e(s(t( (a( (s(t(r(i(n(g)))))))))))) Input: foobar Output: f(o(o(b(a(r))))) Input: 1234567890 Output: 1(2(3(4(5(6(7(8(9(0))))))))) Input: code-golf Output: c(o(d(e(-(g(o(l(f)))))))) Input: …

15
Progruzzle & Colf
เคยลองสร้างแฮชแท็ก Twitter ที่ยอดเยี่ยมเช่น#brexitหรือ#brangelinaหรือไม่ กอล์ฟนี้เหมาะสำหรับคุณ เขียนโปรแกรมที่ยอมรับสองสตริง A & B เป็นอินพุทและผสานมันตามอัลกอริทึมต่อไปนี้: อนุญาตnเป็นจำนวนกลุ่มเสียงสระใน A (เช่นbritainมีกลุ่มเสียงสระ 2 กลุ่ม: iในตำแหน่งที่ 3 และaiในตำแหน่งที่ 5) ถ้า n = 1: ตัดปลาย A เริ่มต้นที่ตำแหน่งกลุ่มเสียงสระแรก (ตัวอย่าง: bill=> b) ถ้า n> 1: truncate A เริ่มต้นที่n-1ตำแหน่งกลุ่มเสียงสระ th (ตัวอย่าง: programming=> progr, britain=> br) ลบพยัญชนะทั้งหมดที่จุดเริ่มต้นของ B ( jennifer=> ennifer) เชื่อมต่อ A&B ที่แก้ไข สระคือaeiou; bcdfghjklmnpqrstvwxyzพยัญชนะ …
76 code-golf 

24
รหัสสั้นที่สุดที่จะโยน SIGILL
พื้นหลัง เรามีความท้าทายเกี่ยวกับการขว้าง SIGSEGVแล้วทำไมจึงไม่ท้าทายการขว้าง SIGILL? SIGILL คืออะไร SIGILL เป็นสัญญาณสำหรับคำสั่งที่ผิดกฎหมายที่โปรเซสเซอร์ซึ่งเกิดขึ้นน้อยมาก การกระทำเริ่มต้นหลังจากที่ได้รับ SIGILL กำลังยกเลิกโปรแกรมและเขียนข้อมูลหลัก รหัสสัญญาณ SIGILL คือ 4. คุณพบ SIGILL sudo kill -s 4 <pid>น้อยมากและฉันมีความคิดอย่างวิธีการสร้างมันในรหัสของคุณผ่านทางยกเว้นไม่มี กฎระเบียบ คุณจะมีรูทในโปรแกรมของคุณ แต่ถ้าคุณไม่ต้องการด้วยเหตุผลใดก็ตามคุณอาจใช้ผู้ใช้ปกติ ฉันใช้คอมพิวเตอร์ Linux ที่มีภาษาเยอรมันและไม่ทราบข้อความภาษาอังกฤษที่ปรากฏหลังจากที่จับ SIGILL ได้ แต่ฉันคิดว่ามันเป็น 'การสอนที่ผิดกฎหมาย' โปรแกรมที่สั้นที่สุดซึ่งทำให้ SIGILL ชนะ
76 code-golf 

30
มันเป็นเพียงข้อบกพร่อง
แรงบันดาลใจจากผลลัพธ์ที่บั๊กในคำตอบ Clojure ของ@Carcigenicateสำหรับการพิมพ์ท้าทายเพชรนี้ พิมพ์ข้อความที่แน่นอนนี้: 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 …

30
ตำรวจและโจร: Reverse Regex Golf
หมายเหตุ : ความท้าทายนี้ปิดตอนนี้ การส่งตำรวจในอนาคตใด ๆ จะไม่ได้รับการพิจารณาสำหรับคำตอบที่ได้รับการยอมรับ นี่คือเพื่อให้แน่ใจว่าไม่มีใครสามารถโพสต์ regex ที่ง่ายมากในอนาคตที่ยังคงไม่ได้แยกออกเพราะไม่มีใครสนใจในการท้าทายอีก The Cops 'Challenge คุณต้องเขียน regex สั้น ๆ ที่ยุ่งเหยิงเพื่อให้เป็นไปตามข้อกำหนดต่อไปนี้: คุณสามารถเลือกรสชาติที่สามารถทดสอบออนไลน์ได้อย่างอิสระ มีรายการที่ดีของการทดสอบออนไลน์เป็นมากกว่าใน StackOverflow โดยเฉพาะอย่างยิ่งRegex101น่าจะดีสำหรับคุณในการเริ่มต้นเนื่องจากรองรับ PCRE, ECMAScript และ Python รสชาติ คุณสามารถเพิ่มการ จำกัด การหมดเวลาได้โดยคลิกที่ประแจที่มุมขวาบนหากจำเป็น โปรดระบุผู้ทดสอบที่คุณเลือกในคำตอบของคุณ หากไม่มีผู้ทดสอบที่เหมาะสมสำหรับรสนิยมที่คุณเลือกคุณอาจใช้ล่ามออนไลน์เช่นideoneและเขียนสคริปต์เล็กน้อยในภาษาโฮสต์ซึ่งผู้คนสามารถใช้เพื่อทดสอบการส่งของคุณ คุณสามารถใช้คุณลักษณะใดก็ได้ของรสชาตินั้นซึ่งไม่ได้เรียกใช้ภาษาโฮสต์โดยตรง (เช่นคุณสมบัติการประเมินโค้ดของ Perl) ในทำนองเดียวกันคุณสามารถใช้ตัวดัดแปลงใด ๆ (ถ้ารสชาติของคุณมี) ยกเว้นว่าพวกเขาส่งผลในการประเมินรหัส regex ของคุณจะต้องยอมรับอย่างน้อยหนึ่งสตริงSและปฏิเสธอย่างน้อยหนึ่งสตริงTแต่ละอันมีอย่างน้อย 16 และไม่เกิน 256 อักขระที่มีความยาวในระยะเวลาที่เหมาะสม (ไม่เกินหนึ่งนาที) SและTอาจมีอักขระ Unicode ที่ไม่ใช่ ASCII ตราบใดที่มีวิธีป้อนอักขระเหล่านั้นลงในเครื่องมือทดสอบออนไลน์ …

30
พิมพ์เพชรนี้
คำถามนี้แพร่กระจายอย่างไวรัสในที่ทำงานของฉัน มีวิธีการที่หลากหลาย: พิมพ์ต่อไปนี้: 1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321 12345678987654321 123456787654321 1234567654321 12345654321 123454321 1234321 12321 121 1 คำตอบจะได้คะแนนเป็นตัวอักษรโดยมีจำนวนอักขระน้อยกว่า

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