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

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

10
ข้อความไซน์
เป้าหมาย:เขียนโปรแกรมหรือฟังก์ชั่นที่พิมพ์สตริงอินพุตในรูปแบบไซน์ ไซน์ไซนัส ASCII นี่คือช่วงเวลาหนึ่งของไซนัสอยด์: ....... ... ... .. .. . . . . . . . . . . . . . . . .. .. ... ... ....... โปรดทราบว่าแต่ละจุดมีจุดหนึ่งจุดอย่างแน่นอน อักขระแต่ละตัวในสตริงอินพุตจะแทนที่จุดในรูปร่างด้านบนจากซ้ายไปขวา ช่องว่างในอินพุตจะต้องถูกเอาต์พุตเช่นอักขระปกติแทนจุด อักขระเริ่มต้นสอดคล้องกับจุดซ้ายสุดในรูปด้านบน นี่เป็นเพียงช่วงเวลาเดียวอินพุตอาจยาวกว่าจำนวนจุดด้านบน อินพุต อินพุตเป็นสตริง ASCII ที่มีเฉพาะอักขระระหว่าง ASCII ทศนิยม 32 (ช่องว่าง) และ ASCII ทศนิยม 126 (Tilde ~) อินพุตจะเป็นหนึ่งบรรทัดเท่านั้น (ไม่มีการแบ่งบรรทัด) …

29
Quine ในทุกบรรทัด
เป้าหมายของคุณคือการสร้างโปรแกรมที่พิมพ์ตัวเองไปเรื่อย ๆ โดยมีบรรทัดใหม่หลังจากแต่ละบรรทัด ดังนั้นหากโปรแกรมของคุณเป็นหนึ่งซับมันจะถูกทำซ้ำในทุกบรรทัดของเอาต์พุต ตัวอย่าง โปรแกรม: A เอาท์พุท: A A A ... กฎระเบียบ ต้องเป็นโปรแกรมที่สมบูรณ์ไม่ใช่ตัวอย่างหรือฟังก์ชั่น โปรแกรมควรวนซ้ำตลอดไปโดยไม่มีข้อผิดพลาดในการสแต็กมากเกินไปหรือ จำกัด การเรียกซ้ำ เอาต์พุตคือ stdout หรือทางเลือกที่ใกล้เคียงที่สุด ไม่รับอินพุตโปรแกรม ช่องโหว่มาตรฐานไม่ได้รับอนุญาตเช่นการเปิดไฟล์ของโปรแกรมหรือการเข้าถึงทรัพยากรภายนอก โปรแกรมที่ว่างเปล่าไม่อนุญาตให้ใช้เป็นช่องโหว่มาตรฐาน หากรหัสโปรแกรมของคุณลงท้ายด้วยการขึ้นบรรทัดใหม่สิ่งนี้จะไม่นับเป็นการขึ้นบรรทัดใหม่ที่จำเป็นระหว่างการคว้านและคุณจะต้องพิมพ์ใหม่ codegolf - รหัสที่สั้นที่สุดชนะ!
30 code-golf  quine 

15
มาร์จิ้นแคบเกินไป
ประมาณปี 1637 ปิแอร์เดอแฟร์มาต์เขียนในขอบของสำเนา Arithmetica ของเขา: It is impossible to separate a cube into two cubes, or a fourth power into two fourth powers, or in general, any power higher than the second, into two like powers. I have discovered a truly marvelous proof of this, which this margin is too …
30 code-golf  number 

30
คำนำหน้าทั่วไปที่ยาวที่สุดของ 2 สาย
เขียนโปรแกรมที่รับ 2 สายเป็นอินพุตและส่งคืนคำนำหน้าทั่วไปที่ยาวที่สุด นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดคือจำนวนไบต์ที่ชนะ Test Case 1: "global" , "glossary" "glo" Test Case 2: "department" , "depart" "depart" Test Case 3: "glove", "dove" ""
30 code-golf  string 

24
เข้าร่วมสำเนาตัวอย่างของ N เพื่อสร้างตัวละคร N ^ 2
ท้าทาย เขียนข้อมูลที่สั้นที่สุดของรหัสที่เป็นไปได้ดังกล่าวว่าเมื่อไม่มีสำเนาของมันจะถูกตัดแบ่งกันจำนวนของการส่งออกของตัวละครคือ N 2 N จะเป็นจำนวนเต็มบวก ตัวอย่างเช่นหากตัวอย่างข้อมูลsoln();จากนั้นการเรียกใช้soln();จะพิมพ์ตัวอักษร 1 ตัวและการsoln();soln();พิมพ์จะทำงานอย่างแน่นอน 4 ตัวอักษรและการรันsoln();soln();soln();จะพิมพ์อย่างแน่นอน 9 ตัวอักษรเป็นต้น อักขระใด ๆ อาจอยู่ในเอาต์พุตตราบใดที่จำนวนอักขระทั้งหมดถูกต้อง เพื่อหลีกเลี่ยงความสับสนข้ามระบบปฏิบัติการ\r\nบรรทัดใหม่จะถูกนับเป็นหนึ่งอักขระ โปรแกรมต้องไม่อ่านซอร์สของตนเองหรืออ่านขนาดไฟล์หรือใช้ช่องโหว่อื่น ๆ รักษาเช่นนี้อย่างเคร่งครัดควินท้าทาย ผลลัพธ์อาจไปที่ stdout หรือไฟล์หรือทางเลือกอื่นที่คล้ายกัน ไม่มีอินพุต ความคิดเห็นในโค้ดนั้นใช้ได้เนื่องจากกำลังออกจากการดำเนินการกลาง ตัวละครใด ๆ อาจอยู่ในโปรแกรม การส่งที่สั้นที่สุดในหน่วยไบต์ชนะ

8
เพลงของ Beatles และ Hexagons
เขียนโปรแกรมรูปสามเหลี่ยมสองรูป (เช่นปิรามิด) คนแรกควรเป็นสามเหลี่ยมข้อความชี้ขึ้นไปที่มีความกว้างฐานขั้นต่ำที่สามตัวอักษร ดังนั้นมันจะมีโครงสร้างเหมือน X XXX หรือ X XXX XXXXX หรือ X XXX XXXXX XXXXXXX หรือใหญ่กว่า แต่ละตัวXจะถูกแทนที่ด้วยตัวอักษรของรหัสจริงของคุณซึ่งอาจเป็นอะไรก็ได้ยกเว้นตัวต่อบรรทัด (เพื่อให้Xสามารถเว้นวรรคได้) ทั้งหมดXจะต้องถูกแทนที่และเว้นวรรคและการขึ้นบรรทัดใหม่ที่จะช่วยในการสร้างรูปสามเหลี่ยมนั้นจะต้องคงอยู่เหมือนเดิม โปรแกรมที่สองจะต้องมีขนาดและรูปร่างเท่ากับโปรแกรมแรกยกเว้นว่ารูปสามเหลี่ยมจะชี้ลง ดังนั้นหากโปรแกรมแรกของคุณดูเหมือน X XXX XXXXX จากนั้นโปรแกรมที่สองของคุณจะดูเหมือน yyyyy yyy y โดยที่yอักขระแต่ละตัวคุณต้องกรอกรหัสจริงของคุณ (อาจแตกต่างจากXรหัสของคุณ) ช่องว่างและการขึ้นบรรทัดใหม่จะต้องอยู่ที่นี่เหมือนกัน งานของคุณคือการเขียนโปรแกรมเหล่านี้เพื่อให้แต่ละเอาต์พุต (ไปยัง stdout หรือทางเลือกที่ใกล้เคียงที่สุด) ชื่อเพลงBeatles ที่แตกต่างกันโดยไม่ต้องป้อนข้อมูลใด ๆ บทความ Wikipedia นี้จะทำหน้าที่เป็นรายการเพลงอย่างเป็นทางการของเราสำหรับ The Beatles I Want You (She's So Heavy)เอาท์พุทควรจะเป็นหนึ่งของชื่อเรื่องตรงตามที่ระบุไว้เช่น อย่างไรก็ตามมันค่อนข้างง่ายแม้จะมีความต้องการของโปรแกรมสามเหลี่ยมแปลก …

9
พิกเซลแยกกันโดยไม่ซ้ำกัน
สำหรับภาพNโดยNค้นหาชุดของพิกเซลที่ไม่มีระยะห่างในการแยกมากกว่าหนึ่งครั้ง นั่นคือถ้าพิกเซลสองตัวถูกคั่นด้วยระยะทางdดังนั้นพวกเขาจะเป็นสองพิกเซลเท่านั้นที่แยกจากกันด้วยd (โดยใช้ระยะทางแบบยุคลิด ) โปรดทราบว่าdไม่จำเป็นต้องเป็นจำนวนเต็ม ความท้าทายคือการหาชุดที่มีขนาดใหญ่กว่าคนอื่น สเปค ไม่จำเป็นต้องป้อนข้อมูล - สำหรับการประกวดครั้งนี้Nจะได้รับการแก้ไขที่ 619 (เนื่องจากมีคนถามกันเรื่อย ๆ - ไม่มีอะไรพิเศษเกี่ยวกับหมายเลข 619 มันถูกเลือกให้มีขนาดใหญ่พอที่จะทำให้การแก้ปัญหาที่ดีที่สุดไม่น่าเป็นไปได้และมีขนาดเล็กพอที่จะให้ภาพ N แสดงขนาดเต็มมากถึง 630 x 630 และฉันตัดสินใจที่จะไปกับนายกที่ใหญ่ที่สุดที่ไม่เกินขนาดนั้น) เอาต์พุตเป็นรายการที่คั่นด้วยช่องว่างของจำนวนเต็ม จำนวนเต็มแต่ละตัวในเอาต์พุตแสดงถึงหนึ่งพิกเซลที่กำหนดหมายเลขตามลำดับการอ่านภาษาอังกฤษจาก 0 ตัวอย่างเช่นสำหรับN = 3 ตำแหน่งจะถูกกำหนดหมายเลขตามลำดับนี้: 0 1 2 3 4 5 6 7 8 คุณสามารถส่งออกข้อมูลความคืบหน้าในระหว่างการทำงานหากคุณต้องการตราบใดที่ผลลัพธ์การให้คะแนนขั้นสุดท้ายนั้นสามารถทำได้ง่าย คุณสามารถส่งออกไปยัง STDOUT หรือไฟล์หรืออะไรก็ตามที่ง่ายที่สุดสำหรับการวางลงใน Stack Snippet Judge ด้านล่าง ตัวอย่าง N = …

30
ตัวเลขที่วิ่งหลายรอบ
งาน ค้นหาชุดของตัวเลขที่การแสดงเลขฐานสองมีการรัน1อย่างน้อยสองรายการคั่นด้วยอย่างน้อยหนึ่ง0รายการ ตัวอย่างเช่นตัวเลขที่มีความยาว 4 บิต: 0 0000 (no ones) 1 0001 (only one run) 2 0010 (only one run) 3 0011 (only one run) 4 0100 (only one run) 5 0101 Valid 6 0110 (only one run) 7 0111 (only one run) 8 1000 (only one run) 9 1001 Valid …
30 code-golf  binary 

6
วาดเส้นโค้ง Hilbert โดยใช้เครื่องหมายทับ
โค้ง Hilbertเป็นเศษส่วนพื้นที่บรรจุที่สามารถแสดงเป็นระบบ Lindenmayerกับรุ่นหลังที่มีลักษณะเช่นนี้ ขอขอบคุณที่http://www.texample.net/tikz/examples/hilbert-curve/สำหรับภาพ เป้าหมาย เขียนโปรแกรมที่สั้นที่สุดเท่าที่จะเป็นไปได้ (เป็นไบต์) ที่รับค่าจำนวนเต็มบวก n จาก stdin และดึงเส้นโค้ง Hilbert ลำดับที่ n มาที่ stdout โดยใช้เฉพาะเครื่องหมายทับด้านหน้า, สแลชย้อนหลัง, ช่องว่างและบรรทัดใหม่ ตัวอย่างเช่นถ้าอินพุตเป็น1เอาต์พุตต้องเป็น \ \/ หากอินพุตเป็น2เอาต์พุตจะต้องเป็น / \/\ /\ \ / /\/ \ \ \/ หากอินพุตเป็น3เอาต์พุตจะต้องเป็น \ /\/ / /\ \/\ \ \ /\ / / / / / \/ \/\ \ …

11
พิมพ์, เพิ่ม, ลด, นามแฝง - ตีความตีความ
Prindeal (เด่นชัดปริญญ์-Dee-AL ) เป็นใหม่ลึกลับเขียนโปรแกรมภาษาที่มีเพียงสี่คำสั่ง: PR int , ใน crement , เด crementและอัล IAS แม้จะมีความเรียบง่าย แต่การดำเนินการทางคณิตศาสตร์ที่ซับซ้อนสามารถทำได้ใน Prindeal โดยการรวมคำสั่งทั้งสี่อย่างชาญฉลาด งานของคุณในการแข่งขันกอล์ฟรหัสนี้คือการเขียนโปรแกรมที่สั้นที่สุดที่สามารถเรียกใช้รหัส Prindeal ข้อมูลจำเพาะยาว แต่ฉันพยายามทำให้ชัดเจนที่สุดและฉันเชื่อว่าหากคุณใช้ความพยายามในการเรียนรู้ Prindeal คุณจะพบว่ามันดูหรูหรามาก! การตีความหมายที่ชัดเจน กระบวนการเตรียมการผลิต ก่อนที่โปรแกรม Prindeal จะสามารถตีความสิ่งเหล่านี้จำเป็นต้องลบออกจากลำดับนี้: สิ่งใดก็ตามหลังจาก#สัญญาณไปยังจุดสิ้นสุดของบรรทัดที่มันเปิดอยู่รวมทั้ง#ตัวของมันเอง (นี่คือความคิดเห็น) ช่องว่างต่อท้ายในบรรทัดใด ๆ เส้นที่ว่างเปล่าโดยสิ้นเชิง ตัวอย่างเช่นโปรแกรม Prindeal p cat #The next line has 7 trailing spaces. p dog #p mouse จะถูกประมวลผลล่วงหน้าเป็น p …

9
คำนวณค่าผกผันของแฟคทอเรียล
เขียนรหัสที่สั้นที่สุดที่จะใช้จำนวนจริงใด ๆ ที่มากกว่า 1 เป็นอินพุตและจะส่งออกปัจจัยการผกผันในเชิงบวก มันจะตอบคำถามที่ว่า "เลขแฟคทอเรียลเท่ากับจำนวนนี้คืออะไร" ใช้ฟังก์ชันแกมมาเพื่อขยายคำนิยามสำหรับปัจจัยที่จะจำนวนจริงใด ๆ ตามที่อธิบายไว้ที่นี่ ตัวอย่างเช่น: input=6 output=3 input=10 output=3.390077654 เพราะ3! = 6และ3.390077654! = 10 กฎระเบียบ ห้ามมิให้ใช้ฟังก์ชันแบบแฟคทอเรียลหรือฟังก์ชันแกมม่าหรือฟังก์ชันที่พึ่งพาฟังก์ชันเหล่านี้ โปรแกรมควรจะสามารถคำนวณให้เป็นทศนิยม 5 หลักด้วยความสามารถทางทฤษฎีในการคำนวณความแม่นยำใด ๆ (มันควรมีจำนวนที่สามารถทำให้ใหญ่หรือเล็กตามอำเภอใจเพื่อความแม่นยำโดยพลการ) อนุญาตให้ใช้ภาษาใดก็ได้รหัสที่สั้นที่สุดจะเป็นตัวอักษรที่ชนะ ฉันทำตัวอย่างการทำงานที่นี่ ได้ดู

26
ทำเครื่องหมายจำนวนเต็มเป็นเกรด
รับจำนวนเต็มบวก (0 และสูงกว่าไม่มีสูงสุด) แปลงเป็นเกรดตามกฎเหล่านี้: A = 100+ B = 90 - 99 C = 80 - 89 D = 70 - 79 E = 60 - 69 F = 59 and less. สิ่งนี้รู้สึกเบื่อเล็กน้อยดังนั้นให้เกรด a +ถ้ามันเป็น 7,8 หรือ 9 และ a -ถ้ามันเป็น 0,1 หรือ 2 ไม่สนใจสิ่งนี้สำหรับกรณี F และ A ตัวอย่าง: การป้อนข้อมูล: …
30 code-golf 

12
สารวัตรทับทิมอย่างเป็นทางการ
นี่คือทับทิมศิลปะ ASCII ง่ายๆ: ___ /\_/\ /_/ \_\ \ \_/ / \/_\/ ในฐานะนักอัญมณีสำหรับ บริษัท อัญมณี ASCII งานของคุณคือการตรวจสอบทับทิมที่เพิ่งซื้อมาใหม่และจดบันทึกเกี่ยวกับข้อบกพร่องที่คุณพบ โชคดีที่มีข้อบกพร่องเพียง 12 ประเภทเท่านั้นที่เป็นไปได้ และซัพพลายเออร์ของคุณรับประกันว่าไม่มีทับทิมจะมีข้อบกพร่องมากกว่าหนึ่งข้อ 12 ข้อบกพร่องที่สอดคล้องกับการเปลี่ยนของหนึ่งในชั้น 12 _, /หรือ\ตัวละครของทับทิมที่มีอักขระช่องว่าง ( ) ปริมณฑลด้านนอกของทับทิมไม่เคยมีข้อบกพร่อง ข้อบกพร่องจะถูกกำหนดหมายเลขตามตัวอักษรด้านในซึ่งมีช่องว่างอยู่ ดังนั้นทับทิมที่มีข้อบกพร่อง 1 จะมีลักษณะดังนี้: ___ /\_/\ /_/ _\ \ \_/ / \/_\/ ทับทิมที่มีตำหนิ 11 มีลักษณะดังนี้: ___ /\_/\ /_/ \_\ \ \_/ / …

12
กล่าวทักทายผู้บุกเบิกวิทยาศาสตร์คอมพิวเตอร์
เลือกนักวิทยาศาสตร์คอมพิวเตอร์ที่มีชื่อเสียงที่คุณชื่นชอบหรือเป็นผู้บุกเบิกด้านวิทยาศาสตร์คอมพิวเตอร์ที่เกิดในปี 1942 หรือก่อนหน้า (ในปี 1943 นับเป็นจุดเริ่มต้นของการสร้างคอมพิวเตอร์ 'แรก' ) พวกเขาควรมีหน้า Wikipedia หรือเว็บไซต์อื่น ๆ ที่แสดงรายการปีเกิดและบอกว่าความสำเร็จของพวกเขาเกี่ยวข้องกับวิทยาศาสตร์คอมพิวเตอร์อย่างไร คุณอาจเลือกแบบเดียวกันกับคนอื่น แต่เลือกคนใหม่ที่ได้รับการสนับสนุน ใช้ชื่อที่พวกเขารู้จักกันโดยทั่วไป นี่น่าจะเป็นชื่อและนามสกุล แต่อาจมีตัวย่อหรือชื่อกลางหากเป็นชื่อสามัญ ตัวอย่างเช่นสำหรับTony Hoareทั้งสองTony HoareและC. A. R. Hoareจะเป็นที่ยอมรับ ทุกตัวอักษรในชื่อจะต้องเป็นASCII พิมพ์ หากชื่อมีอักขระที่ไม่สามารถพิมพ์ได้ ASCII ก็ใช้ได้ถ้าคุณเลือกบางอย่างโดยประมาณ เช่นแทนKurt GodelKurt Gödel ใช้ชุดของตัวละครที่ไม่ซ้ำกันในชื่อ (เช่นC. ARHoare) และเลื่อนระดับ ASCII ที่พิมพ์ได้โดยปีเกิดของนักวิทยาศาสตร์ของคุณวนไปรอบ ๆ จาก~พื้นที่ (โดยทั่วไปจะเพิ่มปีเกิด 95 โมดูโล) สิ่งนี้จะทำให้คุณมีชุดอักขระ ASCII ที่พิมพ์ได้ (ส่วนใหญ่) ยกตัวอย่างเช่น CAR โฮร์เกิดในปี …

3
สร้างรางรถไฟและโกงรัฐบาล
คุณเป็นผู้ประกอบการทางรถไฟในสหรัฐอเมริกาในศตวรรษที่ 19 เมื่อรถไฟกลายเป็นที่นิยมเพราะเป็นวิธีที่มีประสิทธิภาพมากที่สุดในการขนส่งวัสดุจำนวนมากทางบก มีความต้องการระดับชาติสำหรับเส้นทางรถไฟจากชายฝั่งตะวันออกผ่านดินแดนอาณานิคมที่เพิ่งเกิดขึ้นทางทิศตะวันตก เพื่อรองรับความต้องการนี้รัฐบาลสหรัฐฯกำลังจะเรียกเก็บภาษีเพื่ออุดหนุนทางรถไฟ พวกเขาสัญญาว่าจะจ่ายเงินให้กับ บริษัท รถไฟของคุณสำหรับการติดตามแต่ละไมล์ เนื่องจากการวางรางในพื้นที่ที่เป็นภูเขาและภูเขามีราคาแพงกว่าการวางรางในพื้นที่ราบพวกเขาจึงปรับจำนวนที่ให้ นั่นคือรัฐบาลจะจ่าย $ 5,000 ต่อไมล์ของแทร็กที่ถูกวางในพื้นราบ $ 12,500 ต่อไมล์ของแทร็คที่วางในดินแดนที่เป็นภูเขา $ 20,000 ต่อไมล์ของเส้นทางที่วางในภูเขา แน่นอนว่าแผนนี้ไม่ได้สะท้อนถึงค่าใช้จ่ายจริง ๆ ในการวางรางรถไฟ คุณได้จ้างนักทำแผนที่เพื่อวาดแผนที่โล่งอกของภูมิภาคที่คุณกำลังวางแผนเพื่อวิเคราะห์ระดับความสูง นี่คือแผนที่หนึ่งแผนที่: S12321 121234 348E96 แต่ละหลักหมายถึงหนึ่งตารางไมล์ของที่ดิน Sเป็นจุดเริ่มต้นEคือจุดสิ้นสุด แต่ละหมายเลขแสดงถึงความเข้มของการเปลี่ยนแปลงระดับความสูงในภูมิภาคนั้น ที่ดินเลขที่ 1-3 ถือเป็นที่ราบ เลข 4-6 ถือเป็นดินแดนที่เป็นภูเขา ที่ดินเลขที่ 7-9 ถือเป็นเทือกเขา คุณมีประสบการณ์หลายปีในการสร้างรางรถไฟประเมินว่าค่าใช้จ่ายในการสร้างราง (เป็นดอลลาร์) เป็นไปตามสูตรนี้: Cost_Per_Mile = 5000 + (1500 * (Elevation_Rating - …

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