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

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

15
เกมแห่งเมือง
บทนำ เกมดังกล่าวเกิดขึ้นในโลกใบเล็กที่มีเมืองต่าง ๆ ผู้ปกครองของเมืองต่างเกลียดชังซึ่งกันและกันและต้องการที่จะปกครองโลก ผู้คนถูกแบ่งออกเป็นสองกลุ่มคือนักรบและผู้ไร้บุตร อย่างไรก็ตาม lowborn สามารถเลี้ยงดูนักรบได้ คุณเป็นผู้ปกครองของสามเมืองเหล่านี้ เพลย์ เมื่อเกมเริ่มต้นคุณครองสามเมือง ในแต่ละเมืองมี 100 คน คุณต้องแบ่งพวกมันออกเป็นอัศวินและลูกน้อย จากนั้นเกมจริงจะเริ่มขึ้นซึ่งเป็นแบบเลี้ยว เลี้ยวลักษณะเช่นนี้"Produce" knights=> execute command of first town=> execute command of next town(ซ้ำสำหรับทุกเมือง) try a rebellion=> เปิดแต่ละโปรแกรมของคุณจะถูกเรียกสำหรับแต่ละเมืองที่เป็นของคุณ คุณสามารถโจมตีเมือง , สนับสนุนเมืองหรือเพียงแค่รอ การกระทำเหล่านี้จะถูกดำเนินการตามลำดับไม่พร้อมกัน ทุกเทิร์นที่สามคุณจะได้รับอัศวินหนึ่งตัวต่อผู้ถือลูกน้อย 2 คน (23 ลูกหัวปี => 11 อัศวิน) ปริมาณของ lowborn ยังคงเหมือนเดิม อัศวินในเมืองมีโบนัสการป้องกัน 1.2 หากคุณถูกโจมตีอัศวินของคุณจะถูกคูณด้วยหมายเลขนี้ …

30
ใช้อักษรตัวแรกของป้อนคำให้พิมพ์ใหญ่
อันนี้ค่อนข้างเร็ว แต่ฉันแน่ใจว่าคุณจะชอบ Codegolf เป็นโปรแกรมที่จะป้อนข้อมูลในรูปแบบของประโยคและให้ผลลัพธ์ด้วยตัวอักษรตัวแรกในแต่ละคำ กฎ: ข้อมูลที่ส่งอาจไม่อยู่ในรูปแบบของฟังก์ชัน ดังนั้นไม่: function x(y){z=some_kind_of_magic(y);return z;} เป็นคำตอบสุดท้ายของคุณ ... รหัสของคุณจะต้องแสดงว่ามันต้องใช้อินพุตและให้เอาต์พุต รหัสจะต้องรักษาอักษรตัวใหญ่อื่น ๆ ที่มีการป้อนข้อมูล ดังนั้น eCommerce and eBusiness are cool, don't you agree, Richard III? จะถูกแสดงผลเป็น ECommerce And EBusiness Are Cool, Don't You Agree, Richard III? บางคนอาจจะคิดว่า "ง่ายฉันจะใช้ regex!" และการใช้ regex ดั้งเดิมในภาษากอล์ฟที่คุณเลือกจะมีโทษ 30 ตัวซึ่งจะถูกนำไปใช้กับการนับรหัสสุดท้ายของคุณ ปีศาจหัวเราะ "คำ" ในกรณีนี้คือสิ่งที่คั่นด้วยช่องว่าง ดังนั้นจึงpalate …

23
การเข้ารหัสแฮชกอล์ฟ
การประกวดครั้งนี้จบแล้ว เนื่องจากลักษณะของความท้าทายตำรวจและโจรความท้าทายตำรวจกลายเป็นเรื่องง่ายขึ้นมากเมื่อความสนใจในความท้าทายโจรที่เกี่ยวข้องได้ลดลง ดังนั้นในขณะที่คุณยังสามารถโพสต์ฟังก์ชันแฮชคำตอบของคุณจะไม่ได้รับการยอมรับหรือเป็นส่วนหนึ่งของกระดานแต้มนำ ความท้าทายนี้คือการค้นหาการใช้งานฟังก์ชันแฮชที่สั้นที่สุดที่ทนทานต่อการชนกล่าวคือควรหาข้อความที่แตกต่างกันสองข้อความที่มีแฮชเดียวกัน ในฐานะตำรวจคุณพยายามคิดค้นและใช้ฟังก์ชันแฮชเพื่อหาการประนีประนอมที่ดีที่สุดระหว่างขนาดรหัสและการต่อต้านการชน ใช้จำนวนไบต์มากเกินไปและตำรวจอีกคนจะเร็วกว่าคุณ! ในฐานะโจรคุณพยายามสกัดกั้นความพยายามของตำรวจโดยการทำหน้าที่ของพวกเขาให้แตกเพื่อพิสูจน์ว่าพวกเขาไม่เหมาะสม สิ่งนี้จะบังคับให้พวกเขาใช้จำนวนไบต์มากขึ้นเพื่อเสริมอัลกอริทึมของพวกเขา! ตำรวจท้าทาย งาน ใช้การเข้ารหัสลับฟังก์ชันแฮชH: ฉัน -> Oที่คุณเลือกที่ฉันเป็นชุดของทั้งหมดไม่ integers เชิงลบด้านล่าง 2 2 30และOเป็นชุดของทั้งหมดไม่ integers เชิงลบด้านล่าง 2 128 คุณสามารถใช้Hเป็นฟังก์ชันจริงที่ยอมรับและส่งคืนจำนวนเต็มเดียวการแทนค่าสตริงของจำนวนเต็มหรืออาร์เรย์ของจำนวนเต็มหรือโปรแกรมเต็มรูปแบบที่อ่านจาก STDIN และพิมพ์ไปยัง STDOUT ในฐาน 10 หรือ 16 เกณฑ์การให้คะแนน Hว่ามันต้องต่อต้านความท้าทายโจรที่กำหนดไว้ด้านล่าง ถ้าโจรเอาชนะส่งของคุณใน 168 ชั่วโมงแรกหลังการโพสต์มันก็ถือว่าแตก การดำเนินการของHควรสั้นที่สุด การส่งที่ไม่ได้ติดตามที่สั้นที่สุดจะเป็นผู้ชนะของความท้าทายของตำรวจ กฎเพิ่มเติม หากคุณใช้งานHเป็นฟังก์ชั่นโปรดใส่กระดาษห่อเพื่อใช้งานฟังก์ชั่นจากภายในโปรแกรมที่ทำงานตามที่อธิบายไว้ข้างต้น โปรดระบุเวกเตอร์ทดสอบอย่างน้อยสามรายการสำหรับโปรแกรมหรือ wrapper ของคุณ (ตัวอย่างอินพุตและเอาต์พุตที่สอดคล้องกัน) Hสามารถออกแบบนวนิยายของคุณ (ที่ต้องการ) หรืออัลกอริทึมที่รู้จักกันดีตราบใดที่คุณใช้มันด้วยตัวคุณเอง ห้ามมิให้ใช้ฟังก์ชั่นแฮชในตัว, ฟังก์ชั่นการบีบอัด, ตัวเลข, …

30
ฟังก์ชัน Ackermann
ฟังก์ชัน Ackermann นั้นมีความโดดเด่นในการเป็นหนึ่งในตัวอย่างที่ง่ายที่สุดของฟังก์ชันที่คำนวณได้ทั้งหมดซึ่งไม่ได้เรียกซ้ำแบบดั้งเดิม เราจะใช้คำจำกัดความของA(m,n)การรับในจำนวนเต็มสองไม่ใช่ลบที่ A(0,n) = n+1 A(m,0) = A(m-1,1) A(m,n) = A(m-1,A(m,n-1)) คุณอาจใช้ ฟังก์ชันที่ระบุชื่อหรือไม่ระบุชื่อโดยรับค่าจำนวนเต็มสองค่าเป็นอินพุตคืนค่าจำนวนเต็มหรือ โปรแกรมที่ใช้จำนวนเต็มสองช่องว่างหรือจำนวนเต็มคั่นบรรทัดใหม่บน STDIN พิมพ์ผลลัพธ์ไปที่ STDOUT คุณไม่สามารถใช้ฟังก์ชัน Ackermann หรือฟังก์ชั่น hyperexponentiation จากห้องสมุดหากมีอยู่ แต่คุณสามารถใช้ฟังก์ชันอื่นจากห้องสมุดอื่น ๆ อนุญาตให้ใช้การยกกำลังแบบปกติ ฟังก์ชันของคุณจะต้องสามารถหาค่าของA(m,n)m of 3 และ n ≤ 10 ในเวลาน้อยกว่าหนึ่งนาที อย่างน้อยที่สุดมันจะต้องยุติตามทฤษฎีในอินพุตอื่น ๆ : เนื่องจากสแต็กสเปซที่ไม่มีที่สิ้นสุด, ประเภท Bigint ดั้งเดิม, และระยะเวลานานตามอำเภอใจ, มันจะกลับคำตอบ. แก้ไข:หากภาษาของคุณมีค่าความลึกการเรียกซ้ำเริ่มต้นที่ จำกัด เกินไปคุณอาจกำหนดค่าใหม่ได้โดยไม่ต้องเสียค่าตัวอักษร การส่งที่มีจำนวนอักขระสั้นที่สุดจะชนะ นี่คือค่าบางอย่างเพื่อตรวจสอบคำตอบของคุณ: A …

1
เรือกวาดทุ่นระเบิด Solver
เราสร้างเขตข้อมูล Minesweeperแล้ว แต่มีบางคนต้องกวาดเหมืองที่สร้างขึ้นก่อนที่ PCG จะระเบิด! งานของคุณคือการเขียน Minesweeper Solver ที่เข้ากันได้กับโซลูชันที่ได้รับการยอมรับเล็กน้อยของ“ Working Minesweeper” (การกระทำถูกคั่นด้วยช่องว่างเพื่อให้มีฟิลด์ขนาดใหญ่) อินพุต:ฟิลด์ Minesweeper ฟิลด์คั่นด้วยช่องว่าง บรรทัดแรกแสดงจำนวนเหมืองทั้งหมด x: ไม่มีใครแตะต้อง !: ตั้งค่าสถานะ หลัก: จำนวนเหมืองรอบ ๆ สนาม ตัวอย่าง: 10 0 0 1 x x x x x 0 0 2 x x x x x 0 0 2 ! x x x x …

5
เลเซอร์ไปไหน?
ใช้กริด 2 มิติและวาดส่วนของเส้นตรงจำนวนหนึ่งเพื่อแสดงมิเรอร์ ตอนนี้เลือกจุดที่จะวางเลเซอร์ทฤษฎีและมุมเพื่อกำหนดทิศทางที่ชี้ไป คำถามคือ: หากคุณติดตามเส้นทางลำแสงเลเซอร์ในระยะทางที่กำหนดไว้คุณจะทำจุดประสานงานอะไร ตัวอย่าง: ในภาพนี้Lเป็นที่ตั้งของเลเซอร์tคือมุมของมัน (วัดจากแกน X ในเชิงบวก) M1, M2และM3มีทั้งหมดกระจกส่วนของเส้นและEเป็นจุดบนเส้นทางลำแสงเลเซอร์หลังจากที่หน่วยงานที่เริ่มต้นจากD = d1 + d2 + d3 + d4L เป้าหมาย เขียนโปรแกรมที่สั้นที่สุด (ไบต์) ที่เอาท์พุทEให้L, t, Dและรายการของกระจก (ใช้http://mothereff.in/byte-counterเพื่อนับจำนวนไบต์) รูปแบบอินพุต อินพุตจะมาจาก stdin ในรูปแบบ: Lx Ly t D M1x1 M1y1 M1x2 M1y2 M2x1 M2y1 M2x2 M2y2 ... ค่าทั้งหมดจะถูกจุดที่ตรงกับ regex [-+]?[0-9]*\.?[0-9]+นี้ลอย: มีช่องว่างระหว่างแต่ละหมายเลขเสมอ อนุญาตให้ใช้เครื่องหมายคำพูดรอบอินพุตได้ …
34 code-golf 

10
คุณไปได้สูงแค่ไหน? (ความท้าทายการเข้ารหัส + อัลกอริทึม)
ตอนนี้ทุกคนได้พัฒนาความเชี่ยวชาญระดับต่ำในการเขียนโค้ดสำหรับPython ช้าแค่ไหน? (หรือภาษาของคุณเร็วแค่ไหน)และPython ช้าแค่ไหน (ตอนที่ 2) จริงหรือ ถึงเวลาสำหรับความท้าทายที่จะยืดความสามารถของคุณในการปรับปรุงอัลกอริทึม รหัสต่อไปนี้คำนวณรายการความยาว 9 ตำแหน่งiในรายการนับจำนวนครั้งอย่างน้อยiศูนย์ติดต่อกันของเขาถูกพบเมื่อคำนวณผลิตภัณฑ์ภายในระหว่างและF Sการทำเช่นนี้ว่ามัน iterates มากกว่าทุกรายการที่เป็นไปได้Fของความยาวnและรายชื่อของความยาวSn+m-1 #!/usr/bin/python import itertools import operator n=8 m=n+1 leadingzerocounts = [0]*m for S in itertools.product([-1,1], repeat = n+m-1): for F in itertools.product([-1,1], repeat = n): i = 0 while (i<m and sum(map(operator.mul, F, S[i:i+n])) == 0): leadingzerocounts[i] …

17
สร้าง AI สีน้ำท่วม
ในเกม Flood Paint เป้าหมายของเกมคือการทำให้บอร์ดทั้งหมดเป็นสีเดียวกันในเวลาไม่กี่รอบเท่าที่จะทำได้ เกมเริ่มต้นด้วยบอร์ดที่มีลักษณะดังนี้: 3 3 5 4 1 3 4 1 5 5 1 3 4 1 1 5 2 1 6 5 2 3 4 3 3 4 3 4 4 4 5 5 5 4 1 4 6 2 5 3[3]1 1 6 6 5 5 …

12
รหัส Golf of Death [ปิด]
เขียนโค้ดที่ทำให้ BSOD หรือเคอร์เนลตกใจ! กฎ: บน Windows คุณต้องทำให้ BugCheck (Blue Screen of Death) บน Linux (หรือระบบ * nix อื่น ๆ ) คุณต้องทำให้เคอร์เนลตกใจ ต้องไม่เกิดความเสียหายกับระบบ (เช่นควรทำงานเมื่อรีบูต) อนุญาตให้ใช้ไดรเวอร์โหมดเคอร์เนล ระบุข้อมูลระบบปฏิบัติการและเวอร์ชั่นของคุณ อธิบายว่าเกิดความผิดพลาดได้อย่างไร ไม่ใช่กฎที่ใช้เครื่องมือที่ออกแบบมาโดยเฉพาะเพื่อให้เกิดความผิดพลาด แต่การทำเช่นนั้นไม่สร้างสรรค์มาก! ผู้ชนะสูงสุดจะได้รับชัยชนะ

22
วาดรูปหัวใจ
ท้าทาย วาดรูปหัวใจ ... ในฐานะศิลปะ ASCII! งานศิลปะของคุณไม่จำเป็นต้องเหมือนของฉัน แต่มันต้องมีรูปร่างเหมือนหัวใจ ภายในใจต้องมีคำว่า "รัก" อย่างน้อย 20 ครั้ง กฎระเบียบ โปรแกรมต้องเขียนภาพตัดปะไปยังคอนโซล รหัสที่สั้นที่สุด (เป็นไบต์ภาษาใดก็ได้) จะชนะ ผู้ชนะจะถูกเลือกในวันที่ 14 กุมภาพันธ์ในวันวาเลนไทน์

4
สี่เหลี่ยมของ Flippin
สร้างโปรแกรมหรือฟังก์ชั่นเพื่อแยกส่วนของตารางโดยการพลิก (กลับจุดศูนย์กลาง) เฉพาะแถวและคอลัมน์เท่านั้น อินพุต อินพุตจะเป็นตาราง 9x9 ของตัวเลขในรูปแบบของสตริง 9 บรรทัดดังนี้: 986553229 264564891 759176443 643982153 567891234 526917874 685328912 891732537 117644378 รูปแบบอินพุตนี้ไม่สามารถต่อรองได้ - โซลูชันใด ๆ ที่เป็น "โฆษณา" ที่มีรูปแบบอินพุตจะถือว่าไม่ถูกต้อง เอาท์พุต เอาต์พุตควรเป็นรายการของการเคลื่อนไหวแบบพลิกซึ่งเมื่อใช้กับอินพุตตามลำดับที่กำหนดควรสร้างกริดเป้าหมายใหม่ ตัวอย่างเอาต์พุต (ไม่ใช่โซลูชันสำหรับตัวอย่างอินพุตก่อนหน้า): 28IF5D3EAB9G3 รูปแบบผลลัพธ์นี้ยังไม่สามารถต่อรองได้ ไม่ควรมีการขึ้นบรรทัดใหม่หรือเว้นวรรคในเอาต์พุตเฉพาะอักขระ1- 9และA- I(อักขระตัวพิมพ์เล็กสามารถใช้ได้กับอักขระตัวพิมพ์ใหญ่หากคุณต้องการ) กริดเป้าหมาย (สถานะที่คุณต้องการสร้างใหม่) มีดังนี้: 123456789 234567891 345678912 456789123 567891234 678912345 789123456 891234567 912345678 ควรใช้ตัวเลข1- 9เป็นคำแนะนำในการพลิกแถวและตัวอักษรA- Iควรใช้สำหรับคอลัมน์ สิ่งนี้แสดงอยู่ด้านล่างพร้อมกริดในสถานะที่ถูกกู้คืน …
34 code-golf 

18
Jumblers vs Rebuilders: การเข้ารหัสด้วย Tetris Bricks
ในแบบดั้งเดิมTetris , มี 7 ที่แตกต่างกันtetrominoอิฐแต่ละแทนด้วยตัวอักษรคล้ายกับรูปร่างของมัน # # # # # ## # # ### ## ## # ## ## ## # ## ## I O L J T Z S ลองพิจารณาการจัดเรียงของอิฐเหล่านี้ที่สามารถสร้างรูปสี่เหลี่ยมผืนผ้า W × H ที่เป็นของแข็งสำหรับจำนวนเต็มบวก W และ H บางตัวอย่างเช่นการใช้ 2 I, 1 L, 1 J, 1 J, 2 T's และ …

30
ROT-13 แปลงอินพุตมาตรฐาน
ความท้าทาย: เพื่ออ่านอินพุตของความยาวโดยพลการและสร้างROT13ของอินพุต อักขระทั้งหมดที่นอกเหนือจาก AZ ควรคัดลอกไปที่คำต่อคำเอาต์พุตและควรเก็บไว้ในกรณีที่เป็นไปได้ ภาษาใด ๆ ที่สามารถอ่านและเขียนสตรีมมาตรฐานเป็นเกมที่ยุติธรรม

30
นี่เป็นความชั่วร้ายหรือเปล่า?
บทนำ ในทฤษฎีตัวเลขตัวเลขนั้นถือว่าชั่วร้ายหากมีจำนวน 1 คู่ในการแทนเลขฐานสอง ในการท้าทายในวันนี้คุณจะสามารถระบุได้หรือไม่ว่าตัวเลขที่ระบุนั้นเป็นความชั่ว ท้าทาย งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบซึ่งยอมรับจำนวนเต็มเดียวที่ไม่เป็นลบเป็นอินพุตและเอาต์พุต (หรือส่งคืน) ว่าหมายเลขนั้นเป็นความชั่วหรือไม่ คุณสามารถส่งออกค่าความจริงใด ๆถ้าจำนวนเป็นความชั่วร้ายและมูลค่าที่เป็นเท็จหากจำนวนนั้นไม่ได้เป็นความชั่วร้าย คุณอาจเข้าและส่งออกในรูปแบบที่ยอมรับใด ๆ ช่องโหว่มาตรฐานไม่ได้รับอนุญาต ลำดับ OEIS A001969เป็นลำดับที่มีตัวเลขชั่วร้ายทั้งหมด นี่คือรายการของ 10,000 ตัวร้ายหมายเลขแรกสำหรับการอ้างอิง (และกรณีทดสอบเพิ่มเติม!) คำถามนี้คือcode-golfดังนั้นยิ่งสั้นยิ่งดี อย่าถูกเลื่อนออกไปโดยคำตอบสั้น ๆ ในภาษากอล์ฟ ฉันขอแนะนำให้คุณส่งเป็นภาษาที่คุณต้องการ นี่คือกรณีทดสอบบางส่วน: 3 => True 11 => False 777 => True 43 => True 55 => False 666 => False กระดานผู้นำ ที่ด้านล่างของหน้าเป็นตัวอย่างสแต็กที่มีกระดานผู้นำสำหรับคำถามนี้ (ขอบคุณ @MartinEnder) เพื่อให้แน่ใจว่าคำตอบของคุณปรากฏขึ้นโปรดเริ่มคำตอบด้วยหัวข้อโดยใช้เทมเพลต …

30
สตริง Interlace
ความท้าทายของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นซึ่งเมื่อได้รับความยาวเท่ากันสองสายจะทำการสลับอักขระอื่น ๆ และเอาท์พุท / ส่งคืนสตริงผลลัพธ์ตามลำดับอย่างใดอย่างหนึ่ง ตัวอย่าง "Hello," "world!" --> "Hollo!" "werld," "code" "golf" --> "codf" "gole" "happy" "angry" --> "hnpry" "aagpy" "qwerty" "dvorak" --> "qvertk" "dworay" "1, 2, 3" "a, b, c" --> "1, b, 3" "a, 2, c" "3.141592653589" "2.718281828459" --> "3.111291623489" "2.748582858559" "DJMcMayhem" "trichoplax" --> "DrMcMoylex" "tJichapham" "Doorknob" …
34 code-golf  string 

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