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

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

10
เครื่องกำเนิดบัตรอวยพรวันวาเลนไทน์
สร้างโปรแกรมที่ให้ชื่อเป็นอินพุตจะสร้างการ์ดอวยพรวันวาเลนไทน์ที่มีชื่อนั้นพร้อมกับซอร์สโค้ดที่มีธีมวันวาเลนไทน์ด้วย คำทักทายอาจเป็นศิลปะ ASCII หรือภาพที่สร้างขึ้น เงื่อนไขเพิ่มเติม: ซอร์สโค้ดต้องมีลักษณะคล้ายกับธีมวันวาเลนไทน์ (เช่นหัวใจหรือบทกวีหรืออะไรก็ได้สร้างสรรค์) รหัสและสินทรัพย์ที่เกี่ยวข้องทั้งหมดต้องสอดคล้องกับคำตอบของคุณ คุณสามารถใช้การเชื่อมต่อเครือข่าย แต่คุณสามารถดาวน์โหลดหน้านี้ได้เท่านั้น (ในกรณีที่คำถามนี้ได้มาหลายหน้าคุณสามารถดาวน์โหลดได้เช่นกัน) คุณสามารถใช้ StackApps API ได้หากต้องการ กฎ "ต้องมีลักษณะคล้ายกับสิ่งที่ธีมวันวาเลนไทน์ใช้กับทุกสิ่งที่คุณพยายามใช้จากหน้านี้ (หากใช้การเชื่อมต่อเครือข่าย) ไม่อนุญาตไฟล์ภายนอกอื่น ๆ คุณสามารถใช้ไลบรารีมาตรฐานของภาษาของคุณ แต่ไม่อนุญาตให้ใช้แพ็คเกจภายนอก ข้อ จำกัด อื่น ๆ : ไม่มี. นี่คือการประกวดความนิยม เกณฑ์การให้คะแนน: การโหวตแต่ละครั้งที่มองเห็นได้ (= upvotes ลบด้วย downvotes) มีค่า 10 คะแนน ทุก ๆ สอง upvote บนความคิดเห็นในคำตอบของคุณคุณจะได้รับ 1 คะแนน คำตอบที่มีคะแนนมากที่สุดจะได้รับการยอมรับในวันวาเลนไทน์ (14 กุมภาพันธ์ 2014) ** …

27
แปลงจากฐาน 10 เป็นฐาน 2 โดยไม่มีการแปลงในตัว
พื้นหลัง : คุณได้รับมอบหมายให้แปลงเลขฐาน 10 เป็นฐาน 2 โดยไม่ต้องใช้ฟังก์ชันการแปลงพื้นฐานใด ๆ คุณไม่สามารถใช้ห้องสมุดที่นำเข้ามาได้ ปัญหา : แปลงสตริงอินพุตจากฐาน 10 (ฐานสิบ) เป็นฐาน 2 (ไบนารี) คุณไม่สามารถใช้รหัสการแปลง / ฟังก์ชัน / วิธีการแปลงพื้นฐานหรือไลบรารีที่นำเข้ามา เนื่องจากนี่คือโค้ดกอล์ฟคำตอบที่สั้นที่สุดเป็นไบต์จะเป็นผู้ชนะ อินพุตจะเป็นอะไรก็ได้ตั้งแต่ -32768 ถึง 32767 (รวมถึงการจัดการไบต์สัญญาณในรหัสของคุณ)
16 code-golf  number 

30
โปรแกรมที่สั้นที่สุดในการแยกสตริงที่ไม่ใช่ตัวเลขโดยไม่มี RegExps
แก้ไข: หากคุณใช้เสียงกระเพื่อมฉันได้ให้แนวทางบางอย่างที่ด้านล่างในการนับไบต์ วัตถุประสงค์:สร้างฟังก์ชันที่สั้นที่สุดที่แยกสตริงที่ไม่ใช่ตัวเลขและส่งกลับอาร์เรย์ที่ประกอบด้วยตัวเลขเท่านั้นในแต่ละสตริงโดยไม่ต้องใช้นิพจน์ทั่วไปใด ๆ เลขศูนย์นำหน้าจะรวมอยู่ในแต่ละสาย อันดับปัจจุบัน (แยกเป็นหมวดหมู่): C / C ++ / C # / Java: 68 (C) .... GolfScript / APL / J: 13 (APL) อื่น ๆ ทั้งหมด: 17 (Bash, use tr), 24 (Ruby) กฎ: (ฉันขอโทษสำหรับความยาว) รูปแบบต้องเป็นฟังก์ชันที่มีอาร์กิวเมนต์สตริงเดี่ยว อาจมีการเพิ่มอาร์กิวเมนต์เพิ่มเติมได้สองรายการหากจำเป็นสำหรับการส่งคืนอาเรย์ที่เหมาะสม (เช่น sh / csh / DOS Batch ต้องการการอ้างอิงตัวแปรเพิ่มเติมเพื่อกลับมาเป็นต้น) การประกาศฟังก์ชั่นหลักไม่นับรวมและจะไม่นำเข้าไลบรารีมาตรฐานอื่น ๆ `# …
16 code-golf  string 

7
ช่วงเวลาของการแทนทศนิยม
เขียนฟังก์ชั่นซึ่งจะเป็นจำนวนเต็มบวกเดียวnและผลตอบแทนระยะเวลาของการแสดงทศนิยมของ 1 / n กรณีทดสอบ: 1 -> 1 # 1/1 = 1.0000...... = 1._0 2 -> 1 # 1/2 = 0.5000...... = 0.5_0 3 -> 1 # 1/3 = 0.3333...... = 0._3 7 -> 6 # 1/7 = 0.14285714.. = 0._142857 13 -> 6 14 -> 6 123 -> 5 …

6
เคล็ดลับการเล่นกอล์ฟใน Perl 6
คุณมีเคล็ดลับทั่วไปสำหรับการเล่นกอล์ฟใน Perl 6 อย่างไร ฉันกำลังมองหาความคิดที่สามารถนำไปใช้กับปัญหารหัสกอล์ฟโดยทั่วไปซึ่งอย่างน้อยค่อนข้างเฉพาะกับ Perl 6 (เช่น "ลบความคิดเห็น" ไม่ใช่คำตอบ) กรุณาโพสต์หนึ่งเคล็ดลับต่อคำตอบ โปรดทราบว่า Perl 6 ไม่ใช่ Perl 5 ดังนั้นคำถามนี้ไม่ซ้ำกัน เคล็ดลับส่วนใหญ่สำหรับการเล่น Perl 5 ไม่ใช้กับ Perl 6
16 code-golf  tips 

28
จุดเปลี่ยน
โปรแกรมของคุณจะต้องพิมพ์ช่องว่างจำนวนหนึ่งตามด้วยจุดและขึ้นบรรทัดใหม่ จำนวนช่องว่างคือตำแหน่ง x ของจุดที่คุณกำหนดด้วย 0 <x <30 ทุกบรรทัดใหม่คือเทิร์น โปรแกรมของคุณทำงานเป็นเวลา 30 รอบ โปรแกรมของคุณเริ่มต้นด้วยการสุ่มตำแหน่ง x และการหมุนทุกครั้งจะเลื่อนตำแหน่งนี้แบบสุ่มไปทางซ้ายหรือขวา 1 โดยอยู่ในพื้นที่ที่กำหนด ทุกจุดของคุณจะต้องเปลี่ยนตำแหน่งโดย 1 คะแนนของคุณคือจำนวนตัวอักษร คุณจะได้รับ 10 คะแนนโบนัสหากทุกบรรทัดที่พิมพ์ประกอบด้วยอักขระ 30 ตัว (และขึ้นบรรทัดใหม่) คุณจะได้รับ 50 คะแนนโบนัสหากในขณะที่สุ่มโปรแกรมของคุณมีแนวโน้มที่จะอยู่ตรงกลางของพื้นที่ที่กำหนด แก้ไข: คะแนนโบนัส 50 คะแนนมีจุดประสงค์เพื่อดึงจุดของคุณให้อยู่ตรงกลาง ตัวอย่างเช่นการใช้นี้ถ้าจุดของคุณอยู่ที่ x = 20 และมีโอกาส 66% ที่จะไปทางซ้ายและ 33% เพื่อไปทางขวา สิ่งนี้จะต้องเป็นอิสระจากจุดเริ่มต้นและควรเกิดขึ้นโดยการเปลี่ยนค่าร้อยละของซ้าย / ขวาแบบไดนามิก ไม่อนุญาตให้อินพุตใด ๆ เอาต์พุตจะต้องอยู่ในคอนโซลการทำงาน! เพื่อความเข้าใจที่ดีขึ้นต่อไปนี้เป็นตัวอย่างที่อ่านได้ใน java ซึ่งจะให้คะแนน …
16 code-golf 

10
โปรแกรมตรวจสอบความบ้า
บ้า: ทำสิ่งเดียวกันซ้ำแล้วซ้ำอีกและคาดหวังผลลัพธ์ที่แตกต่าง เขียนโปรแกรมที่เพิ่งส่งข้อยกเว้น (ข้อผิดพลาดรันไทม์) ทุกครั้งที่มีการเรียกใช้ ความท้าทายที่จะมีความเป็นไปได้ที่จะสร้างความผิดพลาดมากกว่าหนึ่งครั้งโดยไม่ต้องเรียกข้อยกเว้นโดยตรง (ไม่มีthrowคำสั่ง) และไม่ใช้ฟังก์ชั่นการนับจำนวนสุ่มหรือ cpu tick 10 คะแนนสำหรับข้อผิดพลาดที่เป็นไปได้แต่ละข้อ 25 คะแนนโบนัสหากข้อผิดพลาด / ความผิดพลาดเกิดขึ้นในกระบวนการอื่นหรือระบบ กฎระเบียบ คำตอบต้องระบุข้อผิดพลาดที่เป็นไปได้และวิธีสร้างข้อผิดพลาด ไม่สามารถใช้ตัวสร้างหมายเลขสุ่มของระบบ (ในตัว) เว้นแต่จะได้รับการหว่านด้วยหมายเลขเดียวกันทุกครั้งที่โปรแกรมทำงาน ไม่สามารถใช้จำนวนของสำบัดสำนวนหรือรอบ cpu เว้นแต่ว่าพวกเขาจะถูกนับค่อนข้างเริ่มต้นของเธรดโปรแกรมหลัก อนุญาตให้ใช้มัลติเธรด (ถ้าไม่สนับสนุน) แก้ไข 1 การสร้าง GUID อยู่ภายใต้ตัวสร้างตัวเลขสุ่มในตัว อนุญาตการสร้าง GUID "แบบกำหนดเอง" ที่กำหนดเองได้ การเข้าถึงระบบไฟล์ได้รับอนุญาตสำหรับ I / O ของไฟล์ยกเว้นเมื่อทำเพื่อข้ามกฎ (อ่านไฟล์ของบิตสุ่มหรือเวลาประทับ) แก้ไข 2 การโทรabort()หรือassert()ฝ่าฝืนจิตวิญญาณของความท้าทายในการทำซอฟต์แวร์บ้าดังนั้นจะไม่มีการให้คะแนน 10 คะแนนสำหรับโหมดความล้มเหลวนี้ โชคดี!

24
คำนวณ 6 * 9 ในฐานที่ต่างกัน
เอาท์พุทผลลัพธ์ต่อไปนี้ (ซึ่งเป็นผลมาจากการคำนวณ 6 * 9 ในฐานตั้งแต่ 2 ถึง 36) ตรวจสอบให้แน่ใจว่าตัวอักษรเป็นตัวพิมพ์ใหญ่และตัวคูณจะถูกส่งออกในทุกบรรทัด 6 * 9 = 110110 6 * 9 = 2000 6 * 9 = 312 6 * 9 = 204 6 * 9 = 130 6 * 9 = 105 6 * 9 = 66 6 * 9 = 60 …

9
เส้นทางที่สั้นที่สุดของ Portal Maze
เป้าหมายของคุณคือการเขียนโปรแกรมที่สร้างแบบสุ่ม 10x10 แผนที่ใช้0, 1และ2และพบว่าเส้นทางที่สั้นที่สุดจากด้านบนซ้ายไปขวาล่างสมมติว่า: 0หมายถึงทุ่งหญ้า: ใคร ๆ ก็สามารถเดินไปได้ 1หมายถึงกำแพง: คุณไม่สามารถข้ามได้ 2หมายถึงพอร์ทัล: เมื่อเข้าสู่พอร์ทัลคุณสามารถย้ายไปที่พอร์ทัลอื่นในแผนที่ รายละเอียด: องค์ประกอบด้านซ้ายบนและด้านล่างขวาหนึ่งจะต้อง0 ; เมื่อสร้างแผนที่แบบสุ่มทุกฟิลด์ควรมีโอกาส 60% ที่จะเป็น0 , 30% ของการเป็น1และ 10% ของการเป็น2 ; คุณสามารถย้ายในเขตข้อมูลที่อยู่ติดกัน (แม้แต่เส้นทแยงมุม); โปรแกรมของคุณควรแสดงแผนที่และจำนวนขั้นตอนของเส้นทางที่สั้นที่สุด หากไม่มีเส้นทางที่ถูกต้องซึ่งนำไปสู่ฟิลด์ล่างขวาโปรแกรมของคุณควรแสดงแผนที่เท่านั้น คุณสามารถใช้ทรัพยากรใด ๆ ที่คุณต้องการ; รหัสที่สั้นที่สุดชนะ การคำนวณขั้นตอน: ขั้นตอนเป็นการเคลื่อนไหวจริง ทุกครั้งที่คุณเปลี่ยนฟิลด์คุณจะเพิ่มตัวนับ เอาท์พุท: 0000100200 0100100010 1000000111 0002001000 1111100020 0001111111 0001001000 0020001111 1100110000 0000020100 9

8
คิดนอกกรอบ
คุณกำลังพยายามใส่ทรงกลมลงในกล่องแบบ 5 ด้าน แต่บางครั้งก็ไม่พอดี เขียนฟังก์ชันเพื่อคำนวณว่าทรงกลมอยู่นอกกรอบ (เหนือขอบ) กล่องเท่าใด มี 3 สถานการณ์ที่เป็นไปได้: ทรงกลมพอดีในกล่อง คำตอบจะเป็น 0 ทรงกลมตั้งอยู่บนขอบของกล่อง คำตอบจะมากกว่าครึ่งหนึ่งของปริมาณทั้งหมด ทรงกลมตั้งอยู่ที่ด้านล่างของกล่อง คุณสามารถดูแต่ละสถานการณ์ได้ที่นี่: คุณต้องเขียนโปรแกรมหรือฟังก์ชั่นเพื่อคำนวณค่านี้ให้เป็นตัวเลขที่มีนัยสำคัญอย่างน้อย 4 หลัก อินพุต: ตัวเลขจริงที่ไม่ใช่ลบ 4 ตัวในรูปแบบใดก็ได้ที่สะดวก * - ความกว้างความยาวความลึกของกล่อง (การวัดภายใน) และเส้นผ่านศูนย์กลางของทรงกลม เอาต์พุต: 1 จำนวนจริงที่ไม่เป็นลบในรูปแบบที่ใช้งานได้ * - ปริมาตรรวม (ไม่ใช่เปอร์เซ็นต์) ของทรงกลมที่อยู่นอกกล่อง * ต้องแปลงเป็น / จากสตริงทศนิยม คุณควร จำกัด การใช้ตรีโกณมิติให้มากที่สุด นี่คือการประกวดความนิยมดังนั้นคิดนอกกรอบ!

3
เครื่องคิดเลขตัวเลขภาษาอังกฤษ
ท้าทาย เขียนเครื่องคิดเลขที่รับข้อมูลในรูปวาจา (อาจพูดเป็นสมการได้) และเอาท์พุทเป็นรูปวาจา กฎระเบียบ เครื่องคิดเลขควรจะ: เพิ่ม, ลบ, คูณและหาร จัดการตัวถูกดำเนินการระหว่างค่าลบหนึ่งล้านถึงหนึ่งล้าน จัดการผลผลิตระหว่างลบหนึ่งพันล้านกับหนึ่งพันล้าน จัดการกับจุดทศนิยมในอินพุตและวางอย่างถูกต้องในเอาต์พุต จัดการเอาต์พุตทศนิยมไปยังตำแหน่งที่ร้อยปัดเศษตามต้องการ การดำเนินการทั้งหมดที่ให้ผลลัพธ์เป็นเศษส่วนควรปัดเศษไปยังตำแหน่งที่ใกล้ที่สุดนับร้อย (เหมือนกันกับการจัดรูปแบบผลลัพธ์) รายงานที่มีเอาต์พุต "E" (สำหรับข้อผิดพลาด) เมื่ออินพุตจะทำให้โปรแกรมล้มเหลวเนื่องจากมีการจัดรูปแบบหรือหารด้วย 0 ไม่ถูกต้อง โดยทั่วไปโปรแกรมไม่ควรผิดพลาดในการป้อนข้อมูลที่ไม่ดีเพราะนั่นจะเป็นเครื่องคิดเลขหมัด อนุญาตให้ใช้เครื่องคิดเลขได้แต่ไม่จำเป็นต้องรายงานข้อผิดพลาดเมื่อตัวถูกดำเนินการหรือเอาต์พุตหลุดออกจากขอบเขต นี่หมายถึงการทำให้ปัญหาง่ายขึ้น แต่ถ้าคุณไม่เห็นด้วยกับฉันอย่าลังเลที่จะทำให้เครื่องคิดเลขสามารถจัดการตัวถูกดำเนินการและเอาท์พุทได้อย่างถูกต้องมากขึ้นโดยไม่ต้องรายงานข้อผิดพลาด เอาต์พุต "E" ในกรณีที่ตัวถูกดำเนินการสำหรับการดำเนินการเกินขอบเขตที่กำหนดไว้สำหรับตัวถูกดำเนินการ เอาต์พุต "E" ในกรณีที่เอาต์พุตเกินขอบเขตที่อธิบายไว้สำหรับเอาต์พุต วิธีที่โปรแกรมจัดการกับตัวพิมพ์เล็กและช่องว่างถูกปล่อยทิ้งไว้ให้นักกอล์ฟเช่นเดียวกับตัวเลือกของอังกฤษหรืออเมริกันอังกฤษ 1 โปรแกรมที่ข้ามการใช้งานเครื่องคิดเลขโดยใช้ภาษาหรือไลบรารีที่ใช้งานไปแล้วหน้าที่ที่อธิบายไว้ข้างต้นจะไม่มีสิทธิ์ได้รับชัยชนะ ผู้ชนะ โปรแกรมที่มีจำนวนอักขระต่ำสุดชนะ ตัวอย่าง อินพุต:สองบวกสอง เอาท์พุท:สี่ อินพุต:ยี่สิบเอ็ดจุดห้าลบหนึ่งจุดห้า เอาท์พุท:ยี่สิบ อินพุต:หนึ่งลบสอง เอาต์พุต:ลบหนึ่ง อินพุต:ห้าครั้งห้า เอาต์พุต:ยี่สิบห้า อินพุต:ยี่สิบห้าหารด้วยห้า เอาต์พุต:ห้า อินพุต:สองบวกสองลบห้าคูณห้าหารด้วยศูนย์ลบจุดห้า เอาท์พุท:สิบ อินพุตหนึ่งล้านคูณหนึ่งพัน …
16 code-golf 

16
เขียนโปรแกรมที่ดำเนินการผสมตัวอักษรกำลังดุร้ายจนกว่าจะพบคำว่า "รหัสผ่าน"
โปรแกรมควรพิมพ์ตัวอักษรทุกตัวรวมกัน (ตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่มันไม่สำคัญ) ตามลำดับตัวอักษร มันต้องเริ่มต้นด้วยและการรวมกันพิมพ์สุดท้ายที่ควรจะเป็นapassword ผลลัพธ์ควรเป็น: a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ... passwora passworb passworc password

10
จำลองการต่อสู้ระหว่างสองสิ่งมีชีวิต
ยินดีต้อนรับนักกอล์ฟผู้กล้ารหัส! วันนี้คุณจะยืนอยู่ท่ามกลางการต่อสู้อันยิ่งใหญ่ระหว่างกลินและเอลฟ์! goblin attacks elf! elf dodges! elf attacks goblin! elf hits goblin for 13 damage! goblin has 37 health left. goblin attacks elf! goblin hits elf for 1 damage! elf has 49 health left. elf attacks goblin! elf hits goblin for 19 damage! goblin has 18 health left. goblin …

30
สร้างลำดับของตัวเลขแบบสุ่ม
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ความท้าทาย: สร้างลำดับของตัวเลขแบบสุ่ม อินพุตเท่านั้นควรเป็นความยาวของลำดับ คะแนนอินเทอร์เน็ตเพิ่มพิเศษสำหรับโซลูชั่นที่ใช้งานได้จริง หมายเหตุ: นี่เป็นคำถามการหมุนรหัส กรุณาอย่าใช้คำถามและ / หรือคำตอบอย่างจริงจัง ข้อมูลเพิ่มเติมที่นี่

14
ร็อค, กระดาษ, กรรไกร, จิ้งจก, สป็อค [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Code Golf Stack Exchange ปิดให้บริการใน2 ปีที่ผ่านมา สร้างฟังก์ชั่นที่จะรับสองสายเป็นอินพุตและส่งกลับผลลัพธ์เดียวสำหรับผลลัพธ์ คำตอบที่ได้รับความนิยมมากที่สุดชนะ กฎของ Rock-paper-scissors-lizard-Spock คือ: กรรไกรตัดกระดาษ กระดาษบังหิน หินทับจิ้งจก Lizard พิษ Spock สป็อคแตกกรรไกร กรรไกรประหารจิ้งจก จิ้งจกกินกระดาษ กระดาษไม่รองรับสป็อค สป็อคระเหยหิน กรรไกรหินแตก เอาต์พุตสำหรับทุกกรณีอินพุตที่เป็นไปได้คือ: winner('Scissors', 'Paper') -> 'Scissors cut Paper' winner('Scissors', 'Rock') -> 'Rock breaks Scissors' winner('Scissors', 'Spock') -> 'Spock smashes Scissors' winner('Scissors', 'Lizard') -> …

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