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

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

12
ความท้าทายที่เชื่อมโยงกัน
กิจกรรมที่ฉันทำในบางครั้งเมื่อฉันเบื่อคือการเขียนอักขระสองสามตัวในคู่ที่ตรงกัน จากนั้นฉันก็ลากเส้น (บนยอดไม่เกินด้านล่าง) เพื่อเชื่อมต่อตัวละครเหล่านี้ ยกตัวอย่างเช่นผมอาจจะเขียนขคขคแล้วผมจะวาดเส้นเป็น:abcbacabcbacabcbac หรือฉันอาจเขียนขขคคabbcacabbcacabbcac เมื่อฉันวาดเส้นเหล่านี้ฉันพยายามที่จะวาดลูปแบบปิดล้อมรอบชิ้นเพื่อให้วงของฉันไม่ได้ตัดเส้นใด ๆ ที่ฉันเพิ่งวาด ยกตัวอย่างเช่นในวงแรกวงเดียวที่เราวาดได้นั้นอยู่รอบตัวทั้งหมด แต่ในวงที่สองเราสามารถวาดวงรอบ ๆ แค่bbb s (หรือทุกอย่างอื่น) หากเราเล่นกับสิ่งนี้สักครู่ในขณะที่เราจะพบว่าบางสายสามารถวาดเพื่อให้วงปิดมีตัวอักษรทั้งหมดหรือไม่มีตัวอักษร (เช่นตัวอย่างแรกของเรา) เราจะเรียกสตริงดังกล่าวว่าสตริงที่เชื่อมโยงกันดี โปรดทราบว่าบางสายสามารถวาดได้หลายวิธี ตัวอย่างเช่นbbbbbbbbbbbbสามารถวาดได้ทั้งสองวิธีต่อไปนี้ (และไม่รวมอยู่ในรายการที่สาม): หรือ หากหนึ่งในวิธีเหล่านี้สามารถวาดได้ว่าวงรอบปิดสามารถสร้างขึ้นเพื่อให้มีอักขระบางตัวได้โดยไม่ต้องตัดเส้นใด ๆ จากนั้นสตริงจะไม่ถูกเชื่อมโยงกัน (ดังนั้นbbbbbbbbbbbbไม่ได้เชื่อมโยงกัน) งาน งานของคุณคือการเขียนโปรแกรมเพื่อระบุสตริงที่เชื่อมโยงกัน การป้อนข้อมูลของคุณจะประกอบด้วยสตริงที่อักขระทุกตัวปรากฏเป็นจำนวนครั้งและผลลัพธ์ของคุณควรเป็นหนึ่งในสองค่าที่สอดคล้องกันอย่างใดอย่างหนึ่งหนึ่งถ้าสตริงมีการเชื่อมโยงดีและอื่น ๆ นอกจากนี้โปรแกรมของคุณจะต้องมีความหมายของสตริงที่เชื่อมโยงกัน ตัวละครทุกตัวปรากฏเป็นจำนวนครั้งในโปรแกรมของคุณ มันควรส่งออกค่าความจริงเมื่อผ่านตัวเอง โปรแกรมของคุณควรสามารถสร้างเอาต์พุตที่ถูกต้องสำหรับสตริงใด ๆ ที่ประกอบด้วยอักขระจาก ASCII ที่พิมพ์ได้หรือโปรแกรมของคุณเอง ด้วยตัวละครแต่ละตัวปรากฏเป็นจำนวนครั้ง คำตอบจะได้คะแนนตามความยาวเป็นไบต์โดยมีจำนวนไบต์น้อยกว่าซึ่งเป็นคะแนนที่ดีกว่า เปรย สตริงจะไม่ได้รับการเชื่อมโยงอย่างดีถ้ามีสตริงย่อยแบบ จำกัด ที่ไม่ต่อเนื่องที่ไม่ต่อเนื่องกันอยู่ซึ่งอักขระแต่ละตัวจะปรากฏเป็นจำนวนครั้งในสตริงย่อยนั้น กรณีทดสอบ abcbac -> True abbcac -> …

30
ปูพรม
แรงบันดาลใจจากคำถาม SOนี้ ท้าทาย: การป้อนข้อมูล: สตริงsss ตัวละครคcc เอาท์พุท: สร้างรูปสี่เหลี่ยม ASCII รูปสี่เหลี่ยมขนมเปียกปูนของสตริงในทั้งสี่ทิศทางด้วยอักขระตัวแรกของสตริงที่อยู่ตรงกลางและออกไปด้านนอก ซึ่งอยู่ภายในพรมรูปสี่เหลี่ยม ASCII โดยมีตัวละครเป็นสารตัวเติม นี่อาจฟังดูไม่ชัดดังนั้นนี่เป็นตัวอย่าง: อินพุต: = , = เอาท์พุท:sssstringคcc. ..........g.......... ........g.n.g........ ......g.n.i.n.g...... ....g.n.i.r.i.n.g.... ..g.n.i.r.t.r.i.n.g.. g.n.i.r.t.s.t.r.i.n.g ..g.n.i.r.t.r.i.n.g.. ....g.n.i.r.i.n.g.... ......g.n.i.n.g...... ........g.n.g........ ..........g.......... กฏท้าทาย: อินพุตสตริงอาจเป็นรายการของอักขระ เอาท์พุทอาจเป็นรายการของสายอักขระหรือเมทริกซ์ของอักขระ อินพุตสตริงและอักขระรับประกันว่าไม่ว่างเปล่า สตริงรับประกันว่าจะไม่มีตัวอักษร ทั้งสตริงและอักขระจะสามารถพิมพ์ได้เฉพาะ ASCII (ช่วง Unicode [32,126], เว้นวรรค '' ถึงและรวมเครื่องหมายตัวหนอน '~') กฎทั่วไป: นี่คือโค้ดกอล์ฟดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ อย่าปล่อยให้ภาษาโค้ดกอล์ฟกีดกันคุณจากการโพสต์คำตอบด้วยภาษาที่ไม่ได้เข้ารหัส พยายามหาคำตอบสั้น ๆ ที่เป็นไปได้สำหรับภาษาโปรแกรม …

30
พิมพ์ตารางการคูณทางกายภาพ
รูปสี่เหลี่ยมมีคุณสมบัติที่ดี - รูปสี่เหลี่ยมผืนผ้าประกอบด้วยตัวอักษร !n × mn×mn \times mn × mn×mn \times m A. คุณสมบัติที่น่าสนใจคือสี่เหลี่ยมสามารถจัดเรียงอย่างดีในตารางสูตรคูณ - ตัวอย่างเช่นตาราง :3 × 33×33 \times 3 # ## ### # ## ### # ## ### # ## ### # ## ### # ## ### ความท้าทายของคุณคือกำหนดหมายเลข ( ) เอาท์พุทตารางการคูณที่จัดรูปแบบnnnn > 1n>1 n > 1n × nn×nn …

30
ลบเลขศูนย์โดยรอบของอาร์เรย์ 2d
นี้เป็นรุ่นที่ 2 มิติของคำถามนี้ รับอาร์เรย์ / เมทริกซ์ 2 มิติที่ไม่ว่างเปล่าที่มีจำนวนเต็มไม่ลบเท่านั้น: ⎡⎣⎢⎢⎢⎢⎢⎢0000000000000100101000110⎤⎦⎥⎥⎥⎥⎥⎥[0000000010000010011100000] \begin{bmatrix} {\color{Red}0} & {\color{Red}0} & {\color{Red}0} & {\color{Red}0} & {\color{Red}0} \\ {\color{Red}0} & {\color{Red}0} & 0 & 1 & 0 \\ {\color{Red}0} & {\color{Red}0} & 0 & 0 & 1 \\ {\color{Red}0} & {\color{Red}0} & 1 & 1 & 1 \\ …

30
ในการค้นหาของเนื้อคู่
กำหนดรายชื่อ จำกัด ว่างของจำนวนเต็ม, เอาท์พุทtruthyค่าถ้ามีตรงสองรายการที่เท่าเทียมกันและรายการอื่น ๆ ทั้งหมดที่มีความแตกต่างและfalseyคุ้มค่าเป็นอย่างอื่น ตัวอย่าง truthy: [1,1] [1,2,1] [1,6,3,4,4,7,9] falsey: [0] [1,1,1] [1,1,1,2] [1,1,2,2] [2,1,2,1,2] [1,2,3,4,5]

30
ฉันเป็นอาร์เรย์ที่ไม่มีนัยสำคัญหรือไม่?
อาร์เรย์ที่ไม่มีนัยสำคัญเป็นอาร์เรย์ของจำนวนเต็มบวกที่แตกต่างแน่นอนระหว่างองค์ประกอบติดต่อกันทุกคนที่มีขนาดเล็กกว่าหรือเท่ากับ1 ตัวอย่างเช่นอาร์เรย์ต่อไปนี้ไม่มีนัยสำคัญ: [1, 2, 3, 4, 3, 4, 5, 5, 5, 4] เนื่องจากความแตกต่าง (สัมบูรณ์) ที่สอดคล้องกันคือ: [1, 1, 1, 1, 1, 1, 0, 0, 1] ซึ่งทั้งหมดมีขนาดเล็กกว่าหรือเท่ากับ1 งานของคุณคือการพิจารณาว่าอาร์เรย์จำนวนเต็มที่กำหนดนั้นไม่มีนัยสำคัญหรือไม่ คุณอาจคิดว่าอาร์เรย์มีองค์ประกอบอย่างน้อยสององค์ประกอบเสมอ ใช้กฎอินพุตและเอาต์พุตมาตรฐาน คุณสามารถรับอินพุต (และเอาท์พุท) ในรูปแบบที่สมเหตุสมผล ช่องโหว่เริ่มต้นเป็นสิ่งต้องห้าม ค่าความจริง / เท็จต้องชัดเจนและสอดคล้องกัน นี่คือโค้ดกอล์ฟดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ กรณีทดสอบ อินพุต -> เอาท์พุท [1, 2, 3, 4, 3, 4, 5, 5, 5, 4] …

22
ฐานที่ดีที่สุดคือ 10 ... มาถึงกันแล้ว!
การป้อนข้อมูล: เป็นจำนวนเต็มบวกnซึ่งประกอบด้วยตัวเลขในช่วง0-9 ท้าทาย: ถ้าdเป็นหลักที่สูงที่สุดในจำนวนเต็มสมมติฐานของตัวเลขคือ1 + d เช่นถ้าจำนวนเต็ม1256คุณจะถือว่ามันอยู่ในbase-7ถ้ามันคือ10110คุณก็จะสมมุติว่ามันคือbase-2 (ไบนารี) และถ้ามันเป็น159ก็จะเป็นทศนิยม ทีนี้ทำสิ่งต่อไปนี้จนกว่าคุณจะ 1: ถึงจำนวนเต็ม10 ฐานหรือ 2: ถึงจำนวนเต็มหลักเดียว แปลงจำนวนเต็มจากbase- (d + 1)เป็นbase-10 ค้นหาฐานของจำนวนเต็มใหม่นี้ (อีกครั้งฐาน - (d + 1)โดยที่dคือตัวเลขสูงสุดในจำนวนใหม่) ไปยังขั้นตอนที่ 1 ตัวอย่าง: สมมติใส่เป็นn = 413574 ตัวเลขสูงสุดd = 7ดังนั้นนี่คือเบส -8 (ฐานแปด) แปลงนี้เพื่อทศนิยมและได้รับ137,084 หลักสูงสุดd = 8ดังนั้นนี้เป็นฐาน-9 แปลงนี้เพื่อทศนิยมและได้รับ83,911 ตัวเลขสูงสุดคือ9ดังนั้นนี่คือตัวเลขทศนิยมและเราหยุด การส่งออกจะเป็น83,911 สมมติใส่เป็นn = 13552 หลักสูงสุดคือd = 5ดังนั้นนี้เป็นฐาน-6 แปลงนี้เพื่อทศนิยมและได้รับ2156 …

30
ฉันหารด้วยผลรวมของตัวเลขหลักของฉันได้หรือไม่?
รับค่าเป็นจำนวนเต็มบวกเป็นอินพุตงานของคุณคือส่งออกค่าจริงถ้าจำนวนหารด้วยผลรวมของตัวเลขสองหลักและค่าเท็จเป็นอย่างอื่น ( OEIS A134516 ) ในคำอื่น ๆ : (sum_of_digits)*2 | number แทนค่าความจริง / เท็จสำหรับกรณีจริงและเท็จคุณอาจระบุชุดของค่า จำกัด สำหรับกรณีจริง / เท็จและเติมเต็มค่าอื่น ๆ สำหรับตัวอย่างง่ายๆคุณสามารถใช้0สำหรับกรณีจริงและตัวเลขอื่น ๆ ทั้งหมดสำหรับคดีเท็จ (หรือกลับกันหากคุณต้องการ) ใช้กฎอินพุตและเอาต์พุตมาตรฐาน ช่องโหว่เริ่มต้นยังใช้ คุณสามารถรับอินพุตเป็นจำนวนเต็มหรือแทนสตริงของจำนวนเต็มนั้นได้ นี่คือcode-golfดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ! ฉันใหม่สำหรับ PPCG ดังนั้นฉันต้องการให้คุณโพสต์คำอธิบายหากเป็นไปได้ กรณีทดสอบ อินพุต - เอาต์พุต - (เหตุผล) 80 - Truthy - (16 หาร 80) 100 - ความจริง - (2 หาร 100) …

30
การย้ายขั้นต่ำที่เจียมเนื้อเจียมตัว
ได้รับแรงบันดาลใจจากคำถามที่ Stack Overflow ชื่อที่นี่เป็นความผิดทั้งหมดของฉัน ความท้าทาย รับรายการจำนวนเต็มบวกที่มีอย่างน้อยสองรายการแทนที่แต่ละตัวเลขด้วยจำนวนต่ำสุดของรายการทั้งหมดยกเว้นตัวเอง กรณีทดสอบ [4 3 2 5] -> [2 2 3 2] [4 2 2 5] -> [2 2 2 2] [6 3 5 5 8] -> [3 5 3 3 3] [7 1] -> [1 7] [9 9] -> [9 9] [9 8 9] -> …

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

30
จำนวนเต็มมากมาย!
จำนวนมากมายเป็นจำนวนใด ๆ ที่ผลรวมของตัวหารที่เหมาะสมของมันมีค่ามากกว่าจำนวนเดิม ตัวอย่างเช่นตัวหารที่เหมาะสมของ 12 คือ: 1, 2, 3, 4, 6 และการรวมผลลัพธ์เหล่านี้ใน 16 เนื่องจาก 16 มีขนาดใหญ่กว่า 12, 12 จึงอุดมสมบูรณ์ โปรดทราบว่าสิ่งนี้ไม่รวม "Perfect numbers" เช่นตัวเลขที่เท่ากับผลรวมของตัวหารที่เหมาะสมเช่น 6 และ 28 งานของคุณในวันนี้คือการเขียนโปรแกรมหรือฟังก์ชั่นที่พิจารณาว่ามีจำนวนมากหรือไม่ โปรแกรมของคุณควรใช้จำนวนเต็มเดียวเป็นอินพุทและเอาท์พุทค่าความจริง / ผิดพลาดขึ้นอยู่กับว่ามันมีอยู่มากมายหรือไม่ คุณสามารถสันนิษฐานได้ว่าอินพุตนั้นจะถูกต้องเสมอและมากกว่า 0 ดังนั้นสำหรับอินพุตที่ไม่ดีพฤติกรรมที่ไม่ได้กำหนดนั้นดี คุณสามารถนำเข้าและส่งออกของคุณในรูปแบบที่เหมาะสมเช่น STDIN / STDOUT ไฟล์หรือค่าอาร์กิวเมนต์ / ค่าส่งคืนจะยอมรับได้ สำหรับการอ้างอิงต่อไปนี้เป็นจำนวนที่มากถึง 100: 12, 18, 20, 24, 30, 36, 40, 42, …

9
คัดลอกไฟล์ - สไตล์ Windows
ความท้าทายนี้ได้รับแรงบันดาลใจจากxkcd : ท้าทาย: คุณจะจำลองการคัดลอกไฟล์ขนาดใหญ่ (1 กิกะไบต์) อัตราการถ่ายโอนจะแตกต่างกันระหว่าง 10 kB / วินาทีถึง 100 MB / วินาที งานของคุณคือการส่งออกเวลาที่เหลือของการถ่ายโอนไฟล์ ผลลัพธ์ควรมีลักษณะดังนี้: Time remaining: 03:12 (meaning it's 3 minutes and 12 seconds left) Time remaining: 123:12 (meaning it's 2 hours, 3 minutes and 12 seconds left) Time remaining: 02:03:12 (optional output, meaning the same as …
40 code-golf 

7
การแบ่งปัน (ตัวละคร) คือการดูแล!
ภาพรวม พิจารณางานต่อไปนี้: รับจำนวนเต็มบวกn> 0 , ส่งออกสแควร์รูทของจำนวนเต็ม จำนวนเต็มรากที่สองของจำนวนnเป็นค่าที่ใหญ่ที่สุดของxที่x 2 ≤ nfloor(sqrt(n))มักจะแสดงสูตร 25 -> 5ตัวอย่าง: 24 -> 4, 40 -> 6, 1 -> 1, งานนี้ง่ายพอสำหรับตัวเอง อย่างไรก็ตามในการท้าทายนี้งานของคุณคือการแก้ปัญหานี้ในภาษาต่างๆให้ได้มากที่สุดโดยใช้ชุดอักขระเพียง25 ตัว ตัวอย่าง ก่อนอื่นคุณต้องเลือกชุด (ไม่ซ้ำกัน) จำนวน 25 ไบต์ อาจมีลักษณะเช่นนี้ (สังเกตพื้นที่นำ): ()*-.05:=>Mabdhilmnqrst| ความท้าทายของคุณคือการใช้ตัวอักษรเพียงตัวเดียวในชุดนี้สร้างวิธีแก้ปัญหาในภาษาที่ใช้ข้อความ (ขออภัย Piet) มากที่สุดเท่าที่จะทำได้ คุณสามารถใช้อักขระได้หลายครั้งตามที่จำเป็น แต่คุณต้องไม่ใช้อักขระนอกชุด โซลูชันอาจเป็นโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบแต่ไม่ใช่ตัวอย่าง ตัวอย่างเช่นการใช้ชุดอักขระนี้ฉันสามารถทำ: M -> (int) Math.sqrt(M) // Java (lambda expression) …

22
พิมพ์ตารางธาตุ
ความท้าทายของคุณคือการพิมพ์ / ส่งออก / คืนข้อความนี้: _____ _____ | 1 | | 2 | | H | | He | |_____|_____ _____________________________|_____| | 3 | 4 | | 5 | 6 | 7 | 8 | 9 | 10 | | Li | Be | | B | C | N …

7
สร้างพิกเซลที่ไม่ดี
งานของคุณคือการเขียนโปรแกรมที่ทำให้หน้าจอของคุณมีพิกเซลที่ไม่ดี คุณควรเลือกหนึ่งพิกเซลอย่างแน่นอนบนหน้าจอและช่องเดียวระหว่างสีแดงสีเขียวและสีน้ำเงินและทำให้ค่าของมันเป็น 0 เสมอหรือสูงสุดเสมอ (ปกติคือ 255) ค่าของช่องอื่น ๆ ควรเหมือนกันกับว่าโปรแกรมของคุณไม่ทำงาน คุณสามารถเลือกพิกเซลและช่องในรูปแบบใดก็ได้เช่นฮาร์ดโค้ดหรือสร้างแบบสุ่มในแต่ละการรัน แต่จะต้องสามารถมองเห็นได้บนฮาร์ดไดรฟ์ที่ทันสมัยพอสมควร หากสีที่ควรปรากฏบนพิกเซลนั้นมีการเปลี่ยนแปลงในตอนแรกโปรแกรมของคุณควรอัปเดตในเวลาน้อยกว่า 0.5 วินาทีเมื่อระบบเร็วพอ คุณไม่สามารถตั้งสมมติฐานเกี่ยวกับสิ่งที่ปรากฏบนหน้าจอในปัจจุบัน (เช่นแถบงานโดยใช้ชุดรูปแบบเริ่มต้น) โปรแกรมของคุณไม่จำเป็นต้องทำงานเมื่อโปรแกรมรักษาหน้าจอหน้าจอเข้าสู่ระบบผลจากโปรแกรมจัดการหน้าต่าง ฯลฯ ทำงานอยู่ รหัสที่สั้นที่สุดชนะ

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