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

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

22
คำตอบของชีวิตจักรวาลและศิลปะ ASCII
ความท้าทายอย่างง่าย: พยายามส่งออกข้อความต่อไปนี้ในเวลาไม่กี่ไบต์เท่าที่จะทำได้ the answer toli fetheuniv ersea nde ver ything the ans wer tol ife the uni ver sean dev ery thin gth ean swer tolifetheuni ver seandeveryth ing the ans wer tol ifetheuniver sea ndeverything รูปวาดต้นฉบับประกอบด้วย 332 อักขระ กฎระเบียบ ไม่มีอินพุตหรืออินพุตที่ไม่ได้ใช้ เอาต์พุตสามารถอยู่ในรูปแบบที่สมเหตุสมผล (สตริง, รายการสตริง, เมทริกซ์ของตัวอักษรและอื่น ๆ ) คุณสามารถใช้ตัวพิมพ์ใหญ่แทนตัวพิมพ์เล็กสำหรับการวาดหากคุณต้องการ อนุญาตช่องว่างที่ต่อท้ายและการขึ้นบรรทัดใหม่ นี่คือรหัสกอล์ฟดังนั้นโปรแกรม …

25
หมายเลข Magic Popcount
มีอัลกอริทึมหากินที่มีชื่อเสียงสำหรับการนับจำนวนบิตที่ตั้งค่าในจำนวนเต็มแบบ 32 บิตที่ไม่ได้ลงนาม: int popcount(unsigned x) { x = (x & 0x55555555) + ((x >> 1) & 0x55555555); x = (x & 0x33333333) + ((x >> 2) & 0x33333333); x = (x & 0x0F0F0F0F) + ((x >> 4) & 0x0F0F0F0F); x = (x & 0x00FF00FF) + ((x >> 8) & …

8
สงครามเศษส่วน Bowlers-Golfers
บทนำ เริ่มต้นด้วยการจัดเรียงเศษส่วนทั้งหมดตั้งแต่ 0 ถึง 1 ตามลำดับตัวส่วนที่ต่ำที่สุดแล้วตัวเศษต่ำสุด: 1/2, 1/3, 2/3, 1/4, 3/4, 1/5, 2/5, 3/5, 4/5, 1/6, 5/6, 1/7 ... โปรดทราบว่าจะไม่นับรายการที่ซ้ำกันดังนั้นฉันจึงไม่ได้ระบุ 2/4, 2/6, 3/6 หรือ 4/6 เนื่องจากมีรายการที่ปรากฏในรูปแบบที่เรียบง่ายของพวกเขาแล้ว (1/2, 1/3 และ 2 / 3) ตอนนี้งานของคุณง่าย: กำหนดจำนวนเต็มบวกnเป็นอาร์กิวเมนต์บรรทัดคำสั่งพิมพ์ไปยังเอาต์พุตมาตรฐานnส่วนที่ th ในรายการ ดังนั้นอินพุต5ควรให้เอาต์พุตของ3/4( ไม่ใช่ 0.75) เลอร์ส เป้าหมายของคุณคือการแก้ปัญหานี้ในโปรแกรมที่ยาวที่สุดเท่าที่จะทำได้ คะแนนของคุณคือจำนวนตัวอักษร นักกอล์ฟ เป้าหมายของคุณคือใช้คำตอบที่มีอยู่และกอล์ฟพวกเขา เมื่อเล่นคำตอบเหล่านั้นให้ลบตัวอักษรอย่างน้อยหนึ่งตัวออกจากรหัสแล้วเลือกที่จะจัดเรียงตัวอักษรที่เหลืออยู่ใหม่เพื่อให้รหัสที่ได้นั้นยังคงเป็นคำตอบที่ถูกต้องในภาษาเดียวกัน คะแนนของคุณคือผลผลิตของการลดลงทั้งหมด (ดังนั้นหากคุณลบ 10 ตัวอักษรจากคำตอบเดียวและอีก 15 …

30
The 465 Arrangement
นี่คือความท้าทาย เขียนโค้ดเพื่อเอาท์พุทจำนวนเต็มทั้งหมดในช่วง ฟังดูง่าย แต่นี่เป็นส่วนที่ยุ่งยาก มันจะเริ่มต้นด้วยจำนวนต่ำสุดจากนั้นสูงที่สุด ดังนั้นจำนวนต่ำสุดที่ยังไม่ได้อยู่ในอาร์เรย์ จากนั้นสูงสุดซึ่งยังไม่ได้อยู่ในนั้น ตัวอย่าง: ให้ใช้เวลา 1 ถึง 5 เป็นการเริ่มต้นของเรา ตัวเลขคือ [1, 2, 3, 4, 5] เราใช้เวลาก่อนดังนั้น [1] จำนวนที่เหลืออยู่คือ [2, 3, 4, 5] เราใช้อาร์เรย์สุดท้ายใหม่คือ [1, 5] จำนวนที่เหลืออยู่คือ [2, 3, 4] เรานำอาร์เรย์แรกมาใหม่คือ [1, 5, 2] จำนวนที่เหลืออยู่คือ [3, 4] เรารับช่วงสุดท้ายอาร์เรย์ใหม่คือ [1, 5, 2, 4] จำนวนที่เหลืออยู่คือ [3] เรานำอาร์เรย์แรกมาใหม่คือ [1, 5, …
24 code-golf 

4
ไม่มีทาง! …หรือเปล่า
บทนำ การพูดคุยตามสตรีทอาจเป็นเรื่องยากที่จะเข้าใจโดยเฉพาะอย่างยิ่งโปรแกรมเมอร์ที่ไม่รู้ว่าเป็นสตรีทมาก เป็นหน้าที่ของคุณในการสร้างล่ามเพื่อช่วยให้เราทุกคนอยู่รอดในสภาพแวดล้อมในเมือง ท้าทาย ให้ประโยคภาษาอังกฤษเป็นอินพุตให้สร้างโปรแกรมหรือฟังก์ชันที่พิจารณาว่าผลลัพธ์ของประโยคนั้นเป็นบวกหรือลบ ประโยคที่จะมี0การ2คำเชิงลบ ดังที่โปรแกรมเมอร์คนใดรู้ดีว่าผลลัพธ์เชิงลบสองเท่าจะส่งผลในเชิงบวก ดังนั้นรหัสของคุณจะต้องส่งออกหรือส่งกลับค่าความจริง / เท็จตามกฎต่อไปนี้: No negative words -> truthy One negative word -> falsey Two negative words -> truthy รายการคำศัพท์เชิงลบ: no, not,none สิ่งที่ลงท้ายด้วย n't never, neither,nor nobody, nothing,nowhere มีเคสขอบหนึ่งอัน เมื่อใดก็ตามที่ประโยคเริ่มต้นด้วยNo,คำนั้นจะไม่ถือว่าเป็นคำเชิงลบเมื่อพิจารณาผลลัพธ์ (จะนับรวมกับจำนวนคำที่เป็นลบ ประโยคจะเป็นไปตามกฎไวยากรณ์พื้นฐาน (ตัวพิมพ์ใหญ่, เครื่องหมายวรรคตอน) และจะมีเฉพาะคำที่สามารถพบได้ในพจนานุกรม (โชคดีที่สิ่งนี้ไม่ได้ทำให้ชื่อคำถามผิด) ประโยคจะไม่มีคำนามที่เหมาะสม (ขออภัยดร. ไม่คุณไม่อยู่) กรณีทดสอบ Truthy: Yes. It's noon. …

30
ASCII art uncompression จากหมายเลข base-n
นี้เป็นแรงบันดาลใจจากคำตอบ 05AB1Eโดยเมจิก octupus โกศ รับสองข้อโต้แย้งเป็นจำนวนเต็มบวกและสตริง / รายการของตัวละคร: แปลตัวเลขเป็น base-n โดยที่ n คือความยาวของสตริง สำหรับอักขระแต่ละตัวให้แทนที่ทุกลักษณะที่ปรากฏของดัชนีของอักขระนั้นในหมายเลข base-n ด้วยอักขระนั้น พิมพ์หรือส่งคืนสตริงใหม่ ตัวอย่าง: Input: 2740, ["|","_"] 2740 -> 101010110100 in base 2 -> Replace 0s with "|" and 1s with "_" Output: _|_|_|__|_|| Input: 698911, ["c","h","a","o"] 698911 -> 2222220133 in base 4 -> Replace 0s with …

21
ฉันควรกดปุ่มนี้กี่ครั้ง
พวกเราทุกคนเคยชินกับปุ่มกดโทรศัพท์เก่า ๆ ใช่มั้ย สำหรับการอ้างอิงนี่คือสิ่งที่ดูเหมือนว่า: รับสตริงที่ประกอบด้วยตัวอักษร ASCII ตัวพิมพ์เล็กและเว้นวรรคเดียวงานของคุณคือส่งคืนจำนวนก๊อกหนึ่งที่ควรทำเพื่อพิมพ์สตริงเต็มด้วยแป้นกดโทรศัพท์ตามที่กล่าวไว้ข้างต้น สำหรับผู้ที่ไม่คุ้นเคยกับสิ่งนี้นี่คือวิธีการใช้งาน: 2ตัวอย่างเช่นคีย์ที่มีตัวเลขนั้นยังมีสตริงที่abcจดไว้ ในการพิมพ์aคุณจะต้องกดปุ่มนี้หนึ่งครั้งเพราะbคุณต้องกดสองครั้งและcต้องกดสามครั้ง สำหรับตัวอักษรต่อเนื่องที่อยู่บนคีย์เดียวกันคุณต้องรอ 1 วินาทีก่อนกดอีกครั้ง ดังนั้นหากคุณต้องการพิมพ์cbคุณจะต้องกด 3 ครั้งcรอหนึ่งวินาทีจากนั้นกดสองครั้งเพื่อbให้ยังคง 5 ก๊อก เช่นเดียวกันกับปุ่มอื่น ๆ ทั้งหมดยกเว้นพื้นที่เดียวซึ่งต้องการเพียง 1 กด ยังทราบว่าปุ่ม7และ9มีสี่ตัวอักษรบนพวกเขา มีการใช้อัลกอริทึมเดียวกันความแตกต่างเพียงอย่างเดียวคือจำนวนตัวอักษร สตริงที่เกี่ยวข้องกับแต่ละคีย์สามารถพบได้ในภาพด้านบน (แต่เป็นตัวพิมพ์เล็ก) หรือในรายการต่อไปนี้ที่มีอักขระทั้งหมดที่คุณอาจได้รับ: "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz", " " กรณีทดสอบ อินพุต -> เอาต์พุต (คำอธิบาย) "" -> 0 (ไม่ควรแตะสิ่งใด) "water" -> 8 …

9
สร้างตาราง Graeco-Latin
คำแถลงการณ์ปฏิเสธความรับผิดชอบ: ฉันไม่ทราบถึงวิธีแก้ไขปัญหาใด ๆ สแควร์เกรโคละตินคือสำหรับสองชุดยาวเดียวกันnnnเป็นn×nn×nn \times nการจัดเรียงตัวของเซลล์แต่ละที่ไม่ซ้ำกัน (ในตารางทั้งหมด) คู่ขององค์ประกอบของชุดแรกและองค์ประกอบของชุดที่สองเช่น ว่าองค์ประกอบแรกและองค์ประกอบที่สองทั้งหมดของคู่มีความพิเศษในแถวและคอลัมน์ ชุดที่ใช้บ่อยที่สุดคือหนึ่งตัวอักษรnnnตัวแรกของตัวอักษรกรีกและละติน นี่คือภาพของจตุรัส Graeco-Latin ขนาด 4x4: nnnn×nn×nn\times n อินพุต n>2n>2n > 2n×nn×nn\times nn≠6n≠6n \ne 6 เอาท์พุต ตาราง Graeco-Latin ที่มีความยาวด้าน n เป็นอาร์เรย์สองมิติอาร์เรย์ของอาร์เรย์อาร์เรย์แบบแบนหรือเอาต์พุตโดยตรง หมายเหตุ คุณไม่จำเป็นต้องใช้ตัวอักษรกรีกและละตินโดยเฉพาะ ตัวอย่างเช่นอนุญาตให้ส่งออกคู่ของจำนวนเต็มบวกได้เช่นกัน หากคุณเลือกที่จะใช้ตัวอักษรที่ไม่สามารถขยายได้ตามอำเภอใจคุณต้อง (ในทางทฤษฎีรหัสของคุณไม่จำเป็นต้องเสร็จสิ้นก่อนที่ความร้อนจากเอกภพจะตาย) สนับสนุนความยาวด้านสูงสุดอย่างน้อย 20 นี่คือรหัสกอล์ฟดังนั้นรหัสที่สั้นที่สุดชนะ!
24 code-golf 

3
การวาดต้นไม้จากอาร์เรย์
ได้รับอาจจะซ้อนกันอาร์เรย์ที่ไม่ว่างเปล่าของจำนวนเต็มบวกหลักเดียว (ไม่รับประกันไม่ซ้ำกัน) เอาท์พุทเป็นตัวแทน ASCII ┌ ┴ ┐ ─ │ ┬ ┼ศิลปะเหมือนต้นไม้โดยใช้ตัวอักษรกล่องวาดภาพ (สิ่งเหล่านี้ถูกคัดลอกมาจากรหัสหน้า 437 แต่คุณสามารถใช้การแทนที่เทียบเท่ากันได้) จำนวนเต็มของอาร์เรย์ทุกตัวควรเป็นใบไม้ของต้นไม้ องค์ประกอบที่ระดับเดียวกันลึกลงในอาร์เรย์ควรมีอยู่ในระดับเดียวกันของต้นไม้ องค์ประกอบทั้งหมดควรคั่นด้วยช่องว่างเพียงพอที่จะแตกต่างกัน (ขึ้นอยู่กับคุณเพื่อกำหนดความกว้างต่ำสุดของช่องว่างระหว่าง) ตัวอย่างเช่นอาร์เรย์ที่กำหนด[[1, [2]], [3, [4, 5]]]เอาท์พุทต้นไม้ต่อไปนี้ ┌─┴─┐ ┌┴┐ ┌┴─┐ 1 │ 3 ┌┴┐ 2 4 5 สำหรับอาร์เรย์[1, 2, 3]ต้นไม้อาจมีลักษณะเช่น ┌─┼─┐ 1 2 3 แต่อาร์เรย์[[1, 2, 3]]จะดูเหมือน │ ┌─┼─┐ 1 2 3 ในขณะที่อาร์เรย์[1, [1, …

13
สอง palindromes ไม่เพียงพอ
ตัวเลขบางตัวเช่น142411424114241เป็น palindromes ในฐาน 10: ถ้าคุณเขียนตัวเลขในลำดับที่กลับกันคุณจะได้รับหมายเลขเดียวกัน ตัวเลขบางตัวเป็นผลรวมของ 2 palindromes; ตัวอย่างเช่น110 = 88 + 22110=88+22110=88+22หรือ2380 = 939 + 14412380=939+14412380=939+1441 1441 สำหรับตัวเลขอื่น ๆ 2 palindromes ไม่เพียงพอ; ตัวอย่างเช่น 21 ไม่สามารถเขียนเป็นผลรวมของ 2 palindromes และดีที่สุดที่คุณสามารถทำได้คือ 3: 21 = 11 + 9 + 121=11+9+121=11+9+1 1 เขียนฟังก์ชั่นหรือโปรแกรมที่รับอินพุตจำนวนเต็มnและส่งออกnตัวเลข th ซึ่งไม่สามารถย่อยสลายเป็นผลรวมของ 2 palindromes สอดคล้องกับการนี้OEIS A035137 ตัวเลขหลักเดียว (รวมถึง 0) คือ palindromes …

7
ขยายรูปหกเหลี่ยม
กำหนดรูปหกเหลี่ยมศิลปะ ASCII เป็นอินพุตเอาต์พุตหนึ่งซึ่งมีด้านข้างเป็นหนึ่งหน่วยอีกต่อไป _____ ____ / \ / \ / \ / \ / \ \ \ => \ \ \ / \ / \____/ \ / \_____/ รูปหกเหลี่ยมที่ป้อนเข้าจะมีความสมมาตร 180 องศา แต่มิฉะนั้นด้านข้างอาจมีความยาวต่างกัน ด้านบนความยาวด้านข้าง (2, 4, 3) ขยายให้เป็น (3, 5, 4) ความยาวด้านจะไม่ใช่ศูนย์ รูปหกเหลี่ยมที่ทำจากขีด_, ทับและเครื่องหมาย/ \โปรดสังเกตว่าขอบแนวนอน (ทำด้วยขีดล่าง) ขอบด้านบนอยู่ในบรรทัดของตัวเอง แต่ขอบด้านล่างไม่ได้ I / O …

17
สร้างรายการของหมายเลข snaking ต่ำกว่า 50,000
Snaking Number Challenge ฉันสงสัยว่ามีจำนวนการจับงูอยู่ระหว่าง 1 ถึง 50,000? Snaking Numbers ในเกมนี้เป็นตัวเลขที่สามารถพิมพ์ได้บนแป้นตัวเลขแบบดั้งเดิม (รูปแบบด้านล่าง) โดยการเลื่อนหนึ่งคีย์ขึ้นลงซ้ายหรือขวา 7 8 9 4 5 6 1 2 3 0 ตัวอย่างเช่นถ้าคุณเริ่มต้นด้วยหมายเลข 5 คุณสามารถเลือก 4, 6, 8, หรือ 2 เป็นการย้ายที่ถูกต้องครั้งต่อไปของคุณอย่างไรก็ตาม 7, 3, 9 และ 1 เป็นค่า จำกัด เนื่องจากตำแหน่งเหล่านี้อยู่ในแนวทแยงมุมกับปุ่มปัจจุบัน . ดังนั้นถ้าคุณมี 5, 2 แล้วตัวเลือกที่สำคัญที่คุณใช้งานได้ต่อไปคือ 0, 1, 3 หรือ 5 อีกครั้ง …
24 code-golf 

11
วาดรูปแบบเพชรนี้
รูปแบบด้านล่างจะเป็นพื้นฐานของความท้าทายนี้ /\ \/ /\ / \ / \ /\/ \/\ \/\ /\/ \ / \ / \/ /\ \/ เมื่อกำหนดความกว้างและความสูงของอินพุตแต่ละ>=1รูปแบบแสดงผลลัพธ์ ASCII ข้างต้นซ้ำหลายครั้งรวมกัน (และทับซ้อนกัน) ที่เพชรขนาดเล็ก ตัวอย่างเช่นนี่คืออินพุตพร้อมwidth = 2และheight = 1: /\ /\ \/ \/ /\ /\ / \ / \ / \ / \ /\/ \/\/ \/\ \/\ /\/\ /\/ \ …

1
เพิ่มประสิทธิภาพคอมไพเลอร์สำหรับการเขียนโปรแกรมภาษาโปแลนด์ย้อนกลับง่าย
ลักษณะ จินตภาพการเขียนโปรแกรมภาษา (IPL) ใช้สัญลักษณ์ย้อนกลับโปแลนด์ มันมีคำสั่งดังต่อไปนี้: i - ใส่หมายเลขแล้วดันไปที่สแต็ก o - เอาท์พุทแบบไม่ทำลายด้านบนของสแต็ค (จำนวนยังคงอยู่บนสแต็ก) d - ยกเลิกด้านบนสุดของสแต็ก จำนวนเต็ม - กดตัวเลขนี้ไปที่สแต็ก + - * - ป๊อปอัพตัวเลขสองตัวจากสแต็คดำเนินการที่สอดคล้องกันและผลักดันผลลัพธ์ ไม่มีการแบ่งใน IPL IPL ทำงานได้เฉพาะกับจำนวนเต็มและใช้สำหรับการคำนวณอย่างง่าย โปรแกรม IPL ถูกเขียนบนหนึ่งบรรทัดและคั่นด้วยช่องว่าง สตริงว่างเปล่าเป็นโปรแกรม IPL ที่ถูกต้อง โปรแกรม IPL: i i + o ใส่ตัวเลขสองตัวเพิ่มเข้าด้วยกันแล้วส่งผลลัพธ์ จำนวนอินพุตและจำนวนเต็มที่สามารถพุชไปยังสแต็กนั้นอยู่ในช่วง [-999, 999] แต่เอาต์พุตสามารถมีได้ หากภาษาของคุณไม่รองรับตัวเลขขนาดใหญ่ก็ถือว่าใช้ได้ รูปแบบอินพุต / เอาต์พุต คุณสามารถเลือกรูปแบบอินพุต / …

30
ฉัน! n! s! E! R! T! n!! ข! E! T! W! E! E! n!
โพสต์จากที่นี่ ความท้าทายนี้เป็นอย่างมาก "กลั่น" จากนี้คำถาม ขอขอบคุณเป็นพิเศษที่ @Akababa! ในงานนี้คุณควรแทรกเครื่องหมายอัศเจรีย์ที่จุดเริ่มต้นของสตริงและหลังอักขระทุกตัว กฎระเบียบ จะมีอินพุตที่ไม่ใช่สตริงว่างเสมอ อินพุตจะไม่มีแท็บด้วย คุณสามารถสันนิษฐานได้ว่าอินพุตนั้นมีอักขระที่พิมพ์ได้และอักขระขึ้นบรรทัดใหม่ที่ไม่ขยายของ ASCII เท่านั้น ข้อมูลที่ป้อนจะไม่มีบรรทัดขึ้นบรรทัดใหม่ตราบใดที่ภาษาของคุณไม่สามารถตรวจพบบรรทัดใหม่ได้ นี่คือการแข่งขันรหัส - กอล์ฟ คำตอบที่สั้นที่สุดควรชนะ ตัวอย่าง มีการขึ้นบรรทัดใหม่ 4 บรรทัดในเครื่องหมายตกใจ 5 บรรทัด มันยากมากที่จะใส่ข้อความนี้เป็นข้อความมาร์กดาวน์ดังนั้นจึงมีการระบุไว้แทน 1 2 3 4 5 6 129591 129012 129127 129582 0 เอาท์พุท ! 1! ! 2! ! 3! ! 4! ! 5! 6! ! 1! …
24 code-golf  string 

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