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

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

4
มีอินสแตนซ์กำลังทำงานกี่อินสแตนซ์
เขียนโปรแกรมที่ทำงานอยู่เรื่อย ๆ เพื่อรายงานจำนวนอินสแตนซ์ของตัวเองที่กำลังทำงานอยู่ แต่ละอินสแตนซ์ของโปรแกรมควรรายงานลำดับที่เปิดจากอินสแตนซ์ที่กำลังทำงานอยู่ทั้งหมด ตัวอย่าง ผู้ใช้เปิดตัวโปรแกรมเป็นครั้งแรก - เราจะเรียกอินสแตนซ์นี้ว่า 1 อินสแตนซ์ 1 แสดง1/1เนื่องจากเป็นอินสแตนซ์แรกที่เปิดใช้จากอินสแตนซ์ที่กำลังทำงานอยู่ทั้งหมด1อินสแตนซ์ ในขณะที่อินสแตนซ์ 1 กำลังทำงานผู้ใช้จะเรียกใช้โปรแกรมเป็นครั้งที่สองเพื่อกลายเป็นอินสแตนซ์ 2 ตอนนี้อินสแตนซ์ 1 จะปรากฏขึ้น1/2โดยเป็นอินสแตนซ์แรกจากทั้งหมด2อินสแตนซ์ที่กำลังทำงานอยู่ อินสแตนซ์ 2 แสดงขึ้น2/2เนื่องจากเป็นอินสแตนซ์ที่สองจากทั้งหมด2อินสแตนซ์ที่กำลังทำงานอยู่ สมมติว่าผู้ใช้ยังคงวางไข่เพิ่มเติมจนกว่าจะมี5คน 1/5 2/5 3/5 4/5 5/5ในคำสั่งของการเปิดตัวเอาท์พุทของพวกเขาคือ ตอนนี้ขอบอกว่าผู้ใช้ตัดสินใจที่จะยุติอินสแตนซ์ 3. อินสแตนซ์ 4 แล้วจะกลายเป็นอินสแตนซ์ใหม่ 3 และอินสแตนซ์ 5 อินสแตนซ์ใหม่ 4 เพราะพวกเขาเป็นลำดับที่สามและสี่กรณีที่จะมีการเปิดตัวออกมาจากสิ่งที่มีอยู่ในขณะนี้มีทั้งหมด4ตัวอย่าง. ดังนั้นการเปลี่ยนแปลงของแต่ละอินสแตนซ์จะเป็นดังนี้: 1/5 → 1/4 2/5 → 2/4 3/5 → (ยกเลิก) 4/5 …

25
คำนวณ Divmod ด้านบน
งาน รับจำนวนเต็มบวกสองตัว ( หารe nd และ divis o r) ให้คำนวณq uotient และr emainder ปกติมันจะคำนวณเป็นe = o*q+rที่และq*o<=e สำหรับความท้าทายนี้ก็ยังคงแต่และ ตัวอย่างและปกติก็จะเป็นตั้งแต่และ ที่นี่จะเป็นที่ไหนและ0<=r<oe = o*q+rq*o>=e-o<r<=0e=20o=320/3 -> 20=3*6+218<=200<=2<320/3 -> 20=3*7-121>=20-3<-1<=0 กรณีทดสอบ Input -> Output 20, 3 -> 7, -1 10, 5 -> 2, 0 7, 20 -> 1, -13 100, 13 -> 8, -4 o=0คุณไม่จำเป็นต้องจับ

6
ASCII Hexagon Chain
ปัญหา วาดห่วงโซ่หกเหลี่ยมxยาวแต่ละข้างมีyความยาว อินพุต x - ความยาวของโซ่ <= 50 y - ความยาวของแต่ละด้าน <= 50 ตัวอย่าง x=1,y=1 _ / \ \_/ x=4,y=1 _ _ / \_/ \_ \_/ \_/ \ \_/ \_/ x=3,y=2 __ __ / \ / \ / \__/ \ \ / \ / \__/ \__/ \ / \__/ กฎระเบียบ …

6
หมุนวนตัวอักษร!
ดูที่สตริงต่อไปนี้ สังเกตรูปแบบหรือไม่ ABEFNOPEFGH DC GQI MHRJ LKJI SK DTL CUM BAZYXWV N EO DP CQ BAZYXWVUTSR บางคนอาจสังเกตเห็นว่ามันเป็นเกลียวของตัวอักษรโดยที่ระยะทางระหว่างแถว / คอลัมน์ค่อยๆเพิ่มขึ้น 1 ช่องว่าง / บรรทัดใหม่ คำจำกัดความที่เข้มงวด ลองมีตัวนับcซึ่งเริ่มเป็น 0 เราเขียนออกมาเป็นครั้งแรกC + 1Aตัวอักษรของตัวอักษรจากซ้ายไปขวา: จากนั้นจากบนลงล่างต่อไป(C + 1) (C + 2) / 2ตัวอักษร (เพิ่ม):BAB จากซ้ายไปขวาถัดไป(c + 1) (c + 2) / 2 (เพิ่มC): AB C และจากล่างขึ้นบนจะใช้ตัวอักษรc …

4
มันคือสองฝ่าย?
ฝ่ายกราฟเป็นกราฟที่มีจุดสามารถแบ่งออกเป็นสองชุดเคลื่อนเช่นว่าขอบไม่เชื่อมต่อสองจุดอยู่ในชุดเดียวกัน กราฟเป็นสองฝ่ายถ้าหากมันเป็น 2 สี ท้าทาย งานของคุณคือการให้กราฟadjacencyของกราฟง่าย ๆ ไม่ได้บอกทิศทางว่าเป็นกราฟสองฝ่ายหรือไม่ นั่นคือถ้าขอบเชื่อมต่อจุดยอด i และ j ทั้งสองรายการ (i, j) และ (j, i) ของเมทริกซ์คือ 1 เนื่องจากกราฟนั้นไม่ได้บอกทิศทางและเรียบง่ายเมทริกซ์ adjacency จึงมีความสมมาตรและมีเพียง 0 และ 1 ข้อมูลจำเพาะ คุณควรใช้เมทริกซ์ N-by-N เป็นอินพุต (ในรูปแบบใด ๆ เช่นรายการของรายการ, รายการสตริง, C-like int**และขนาด, อาร์เรย์ที่แบน, อินพุตดิบ ฯลฯ ) ฟังก์ชั่น / โปรแกรมควรกลับ / ส่งออกค่าความจริงถ้ากราฟเป็นสองฝ่ายและเป็นเท็จอย่างอื่น กรณีทดสอบ ['00101', '00010', '10001', '01000', …

21
ย้ำลำดับพี
ที่เกี่ยวข้อง: ซ้ำพี (n) ฟังก์ชั่น ความท้าทายของคุณคือการคำนวณฟังก์ชั่นซ้ำซ้อน: f(n) = number of iterations of φ for n to reach 1. ที่ไหนφเป็นtotient ฟังก์ชันออยเลอร์ ที่เกี่ยวข้องOEIS นี่คือกราฟของมัน: กฎ: เป้าหมายของคุณคือการส่งออกf(n)จากการn=2n=100 นี่คือรหัส - กอล์ฟดังนั้นรหัสที่สั้นที่สุดจึงชนะ นี่คือค่าที่คุณสามารถตรวจสอบได้: 1, 2, 2, 3, 2, 3, 3, 3, 3, 4, 3, 4, 3, 4, 4, 5, 3, 4, 4, 4, 4, 5, 4, …

14
ปิรามิด Scheme Negation
ในPyramid Schemeภาษาของฉันมีโครงสร้างที่ตลกเล็กน้อย: สามเหลี่ยมว่าง: ^ - 0เมื่อได้รับการขัดแย้งใดก็จะส่งกลับ เพื่อสร้าง1โดยใช้โครงสร้างนี้เราสามารถใช้สิ่งนี้: ^ /!\ ^--- - นี่จะผ่าน0ไปยังฟังก์ชันลบ เราสามารถคัดค้านผลลัพธ์นี้ต่อไป: ^ /!\ ---^ /!\ ^--- - ในการรับ 0. การปฏิเสธเพิ่มอีกหนึ่งรายการ: ^ /!\ ^--- /!\ ---^ /!\ ^--- - ท้าทาย รับจำนวนเต็มn ≥ 1 ส่งออกพีระมิดที่ว่างเปล่าเมื่อตะกี้nครั้งในรูปแบบที่อธิบายไว้ กรณีทดสอบ input output 1 ^ /!\ ^--- - 2 ^ /!\ ---^ /!\ ^--- - …

23
ลำดับวงจรของตัวเลขหลักพร้อมอัตราต่อรองระหว่าง
พิจารณาลำดับต่อไปนี้: 1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 0, 1, ... เลขคู่เริ่มต้นจาก0และจัดกลุ่มเป็นความยาวที่เพิ่มขึ้น พวกเขาจะจัดวนหมายความว่าพวกเขาจะถูกจัดเรียงในลำดับจนถึง8ถึงแล้วขี่จักรยานกลับมาจาก0 1แยกการวิ่งของเลขคู่และมันก็เริ่มต้นลำดับ มาดูกันว่าลำดับนี้เกิดขึ้นได้อย่างไร: 1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, …

10
การนับ Fibonacci Orbits
หากเรากำหนดลำดับ Fibonacci-like เป็นf k (n) = (f k (n-1) + f k (n-2))% k , สำหรับจำนวนเต็มkจำนวนหนึ่ง(โดยที่%คือตัวดำเนินการโมดูโล), ลำดับ จำเป็นจะต้องเป็นวงกลมเพราะมีเพียงk 2ค่าที่แตกต่างกันสำหรับ(ฉk (n-1), F k (n-2)) อย่างไรก็ตามรอบนี้มักจะไม่รวมค่าที่เป็นไปได้ทั้งหมดดังนั้นขึ้นอยู่กับค่าเริ่มต้นสองค่าf k (0)และf k (1)เราอาจได้รับรอบที่แตกต่างกัน ตัวอย่างเช่นสำหรับk = 2เรามีความเป็นไปได้สี่อย่างดังต่อไปนี้ขึ้นอยู่กับค่าสองค่าแรก: 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0, 1, 1, 0, 1, 1, 0, 1, 1, …

9
ซ้ำจำนวนเฉพาะ
ลำดับอื่นความท้าทายอื่น * คำนิยาม นายกpอยู่ในลำดับนี้ขอเรียกว่าA, IFF ทุกหลักdในp's ขยายตัวทศนิยมคุณแทนที่dด้วยdสำเนาdและเลขที่ส่งผลให้ยังคงเป็นนายก; ไม่อนุญาตศูนย์ ตัวอย่างเช่น11มีเพียงเล็กน้อยในลำดับนี้ (เป็นหมายเลขแรกโดยไม่ได้ตั้งใจ) ลำดับถัดไปคือ31เนื่องจาก3331เป็นตำแหน่งเฉพาะเช่นกัน แล้วก็53เพราะ55555333มันก็เป็นนายกและอื่น ๆ ท้าทาย รับอินพุตn, ส่งคืนA(n), คือnไอเท็ม th ในลำดับนี้ ตัวอย่าง ต่อไปนี้เป็นคำศัพท์ 20 คำแรกที่ให้คุณเริ่มต้นได้ นี่คือA057628สำหรับ OEIS 11, 31, 53, 131, 149, 223, 283, 311, 313, 331, 397, 463, 641, 691, 937, 941, 1439, 1511, 1741, 1871 นี่หมายถึงA(0) = 11, A(1) = …

3
คำแนะนำสำหรับทับทิม
ฉันจะย่อให้สั้นลงได้อย่างไร: p=gets.to_i a=gets b=gets.to_i หากอินพุตของฉันเป็นจำนวนเต็มตามด้วยสตริงตามด้วยจำนวนเต็ม?
13 code-golf  tips  ruby 

24
ได้โปรดส่งไอศครีมมาให้ฉัน
ทำให้ฉันเป็นไอศครีมโคน เรามีร้านไอศครีมที่ยอดเยี่ยมมากมายในนิวอิงแลนด์ ส่วนใหญ่ปิดให้บริการในฤดูหนาวดังนั้น ... .-@@-. (======) (--------) (==========) (__________) \/\/\/\/\/ \/\/\/\/ \/\/\/ \/\/ \/ เป้าหมาย เอาท์พุทไอศครีมโคนด้านบนอย่างแน่นอน (หรือส่งคืนจากฟังก์ชัน) นี่คือรหัสกอล์ฟเพื่อให้ได้คำตอบที่สั้นที่สุดชนะ

16
เหตุการณ์ที่เกิดขึ้นสูงสุดหรือต่ำสุด?
ท้าทาย: ปัจจัยการผลิต: สตริงที่มี ASCII ที่พิมพ์ได้ (ไม่รวมช่องว่างแท็บและบรรทัดใหม่) บูลีน† เอาท์พุท: ส่วนของสตริงจะแบ่งออกเป็นสี่กลุ่ม: อักษรตัวพิมพ์เล็ก ตัวอักษรตัวพิมพ์ใหญ่ ตัวเลข อื่น ๆ ขึ้นอยู่กับบูลีนเราจะแสดงเหตุการณ์ที่เกิดขึ้นสูงสุดหนึ่งกลุ่ม (หรือหลายกลุ่ม) ของกลุ่มสี่กลุ่มนี้หรือกลุ่มต่ำสุดแทนที่กลุ่มอื่นด้วยช่องว่าง ตัวอย่างเช่น: ข้อมูลเข้า: "Just_A_Test!" ประกอบด้วย: - 3 ตัวอักษรตัวพิมพ์ใหญ่: JAT - 6 ตัวอักษรตัวพิมพ์เล็ก: ustest - 0 หลัก - 3 อื่น ๆ :__! เหล่านี้จะเป็นผลลัพธ์สำหรับtrueหรือfalse: true: " ust est " // digits have the lowest occurrence (none), …
13 code-golf  string 

10
จัดการเด็ค ASCII
ไม่เคยมีความท้าทาย ASCAI-cards ที่แน่นอน AFAIK ดังนั้นใช้สำรับไพ่ ASCII ต่อไปนี้: .------..------..------..------..------..------..------..------..------..------..------..------..------. |2.--. ||3.--. ||4.--. ||5.--. ||6.--. ||7.--. ||8.--. ||9.--. ||T.--. ||J.--. ||Q.--. ||K.--. ||A.--. | | (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) | | …

5
พับเมทริกซ์ขึ้น!
รับเมทริกซ์รวมค่าของขึ้น / ลงหรือซ้าย / ขวาเพื่อสร้าง X, พับมันขึ้นและกลับรายการ ฉันอธิบายอัลกอริทึมที่นี่: ขั้นตอนวิธี ข้อมูลที่คุณป้อนจะเป็นเมทริกซ์จตุรัสที่มีขนาดเป็นจำนวนคี่ในความสามารถเชิงตัวเลขที่สมเหตุสมผลของภาษาของคุณ ลองดูเมทริกซ์ต่อไปนี้เป็นตัวอย่าง: 1 2 3 2 1 0 3 2 3 0 4 2 5 6 3 7 4 7 9 4 0 6 7 2 5 ก่อนอื่นให้เพิ่มหมายเลขทุกตัวในจำนวนที่ใกล้เคียงที่สุดที่อยู่บนเส้นทแยงมุมหลักหรือเส้นทแยงมุม นั่นคือแบ่งเมทริกซ์ออกเป็นสี่ส่วนตามแนวทแยงมุมหลักและเส้นทแยงมุมแล้วรวมตัวเลขทั้งหมดในแต่ละส่วนเข้าหากึ่งกลางเช่น: 1 2 3 2 1 ↓ ↓ ↓ 0 → 3 2 …
13 code-golf  matrix 

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