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

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

7
เคล็ดลับสำหรับการเขียน quines
ควินเป็นโปรแกรมที่ผลิตออกที่เหมือนกันกับรหัสที่มาของโปรแกรมที่ ในเว็บไซต์นี้เรามักจะสนใจเฉพาะควินส์ที่เหมาะสม (ในขณะที่เขียนความหมายปัจจุบันคือ "บางส่วนของผลลัพธ์ถูกเข้ารหัสโดยส่วนต่าง ๆ ของโปรแกรม") คุณมีคำแนะนำอะไรสำหรับการเขียนควินินที่เหมาะสมหรือโปรแกรมที่มีคุณสมบัติเหมือนควินิน ตามปกติแต่ละเคล็ดลับควรอยู่ในคำตอบที่แตกต่างกัน
30 tips  quine 

30
นับตามแนวทแยง!
เรามีแกนแนวนอนมากมายสำหรับตัวเลข แต่ฉันคิดว่าพวกเขาน่าเบื่อจริงๆ งานของคุณในวันนี้คือการสร้างส่วนหนึ่งของแกนทแยงมุมระหว่างจำนวนเต็มสองจำนวนที่ไม่เป็นลบที่แตกต่างกันซึ่งถูกกำหนดให้เป็นอินพุต วิธีการสร้างแกนแนวทแยง? 0, 5ลองมาตัวอย่างเช่นมีการป้อนข้อมูล แกนของเราควรมีลักษณะเช่นนี้: 0 1 2 3 4 5 อย่างไรก็ตามแกนของเราควรดูดีสำหรับตัวเลขที่มีตัวเลขมากกว่า! ถ้าอินพุทคือ0, 14แกนใหม่ควรเป็น: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 แนวคิดคือตัวเลขตัวแรกของตัวเลขถัดไปบนแกนจะต้องถูกวางไว้อย่างแน่นอนเสมอหลังจากตัวเลขสุดท้ายของตัวเลขก่อนหน้า เพื่อทำความเข้าใจแนวคิดที่ดียิ่งขึ้นนี่เป็นอีกตัวอย่างหนึ่งของ997, 1004: 997 998 999 1000 1001 1002 1003 1004 กฎระเบียบ คุณอาจสมมติว่าอินพุตอยู่ในลำดับขึ้นหรือลง (คุณอาจเลือกระหว่าง5,3และ3,5) คุณอาจสมมติว่าความแตกต่างระหว่างจำนวนเต็มสองตัวนั้นต่ำกว่า 100 คุณอาจมี newline ชั้นนำหรือพื้นที่ชั้นนำที่สอดคล้องกัน …

18
เลขสามเหลี่ยมพลิก
สมมติว่าคุณแสดงรายการจำนวนเต็มบวกในรูปสามเหลี่ยมจากนั้นพลิกจากซ้ายไปขวา กำหนดตัวเลขส่งออกตัวเลขที่ส่งไป นี่คือการแม็พแบบย้อนกลับด้วยตนเอง 1 1 2 3 3 2 4 5 6 <---> 6 5 4 7 8 9 10 10 9 8 7 11 12 13 14 15 15 14 13 12 11 นี่คือองค์ประกอบที่nของA038722 ที่มีการจัดทำดัชนีแล้ว: 1, 3, 2, 6, 5, 4, 10, 9, 8, 7, 15, 14, 13, 12, …

18
เอกลักษณ์เมทริกซ์ N มิติ
รับค่าจำนวนเต็มบวกnเอาท์พุทN"มิติ" เอกลักษณ์มิติซึ่งเป็นN^Nอาร์เรย์1ที่มีส่วนประกอบทั้งหมดของดัชนีเท่ากันและ0อย่างอื่น N^Nหมายถึง N-by-N-by-N-by-... 1 -> [1] 2 -> [[1,0],[0,1]] 3 -> [[[1,0,0],[0,0,0],[0,0,0]],[[0,0,0],[0,1,0],[0,0,0]],[[0,0,0],[0,0,0],[0,0,1]]] 4 -> [[[[1,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]],[[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,1,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]],[[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]],[[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,1]]]] ตัวอย่างเช่นถ้าaเป็น4มิติตัวตน "เมทริกซ์" จากนั้นรายการเท่านั้นที่มี1จะเป็นa[0][0][0][0], a[1][1][1][1], และa[2][2][2][2]a[3][3][3][3] นี่คือรหัสกอล์ฟ คำตอบที่สั้นที่สุดในการชนะไบต์ ช่องโหว่มาตรฐานใช้

21
ค้นหาจำนวนที่ใกล้เคียงที่สุด
งาน รับอาร์เรย์ของจำนวนเต็มใด ๆ เช่น: [-1,476,578,27,0,1,-1,1,2] และดัชนีของอาร์เรย์นั้น (ตัวอย่างนี้ใช้การจัดทำดัชนีตาม 0แม้ว่าคุณสามารถใช้การจัดทำดัชนีตาม 1เช่นกัน): index = 5 v [-1,476,578,27,0,1,-1,1,2] จากนั้นส่งคืนตัวเลขที่ใกล้ที่สุดซึ่งมากกว่าองค์ประกอบที่ดัชนีนั้น ในตัวอย่างจำนวนที่ใกล้เคียงที่สุดที่มากกว่า 1 คือ 27 (ห่างจาก 2 ดัชนี) index = 5 v [-1,476,578,27,0,1,-1,1,2] ^ Nearest greater number Output = 27 สมมติฐาน ที่ใกล้ที่สุดไม่รวมการห่อ โปรแกรมจะไม่ได้รับอาร์เรย์ที่มีความยาว 1 (เช่น; [55]) คุณจะต้องถือว่ามีเสมอมากขึ้นกว่าจำนวนองค์ประกอบที่กำหนด หากมีจำนวนมากกว่า 2 องค์ประกอบในระยะทางเท่ากันคุณสามารถส่งคืนได้ทั้งคู่ คู่ I / O Input: Index …

30
การกลับคำ
โซน่าอยู่ในบ้านของเธอพร้อมกับลูกสาวอายุ 10 ขวบ เธอต้องไปโรงเรียนเพื่อพาเด็กกลับจากโรงเรียนอีกเพราะโรงเรียนเลิกเวลา 14.00 น. ข้างนอกมันร้อนดังนั้นเธอจึงอยากจะทิ้งลูกคนเล็กไว้ที่บ้าน เธอให้เชือกกับลูกของเธอเพื่อให้เธอยุ่งในขณะที่เธอหายไป เธอขอให้เธอย้อนกลับคำในสตริง มีสายอักขระมากมายดังนั้นคุณต้องช่วยลูกสาวของเธอในการแก้ปัญหาอันยิ่งใหญ่นี้ ดังนั้นให้สตริงที่มีคำที่คั่นด้วยช่องว่างเดียวกลับคำในสตริง คุณสามารถสมมติได้ว่าไม่มีช่องว่างนำหน้าหรือต่อท้าย สตริงจะมีเฉพาะ[a-zA-z ]ดังนั้นคุณไม่จำเป็นต้องจัดการเครื่องหมายวรรคตอน คุณจะได้รับสตริงเป็นอินพุตและคุณควรส่งออกสตริง กรณีทดสอบตัวอย่าง: Input: Man bites dog Output: dog bites Man Input: The quick brown fox jumps over the lazy dog Output: dog lazy the over jumps fox brown quick The Input: Hello world Output: world Hello …

29
ชาวโรมันผู้โลภ!
ให้เป็นจำนวนเต็มบวกอย่างเคร่งครัดคืนตัวเลขโรมันที่สั้นที่สุดโดยใช้กฎการบวกเท่านั้น เอาต์พุตจะต้องประกอบด้วยอักขระแต่ละตัวMDCLXVIในศูนย์หรือมากกว่านั้น จำนวน14ดังนั้นจึงต้องให้มากกว่าXIIIIXIV ค่าตัวเลขของอักขระคือM= 1,000, D= 500, C= 100,L = 50, X= 10, V= 5, I= 1 ตัวอย่าง 3 → III 4 → IIII 9 → VIIII 42 → XXXXII 796 → DCCLXXXXVI 2017 → MMXVII 16807 → MMMMMMMMMMMMMMMMDCCCVII

8
เราควรเป็นเพื่อนกันไหม
หมายเหตุนี่เป็นคำถามที่เน้นไปที่โครงสร้างข้อมูลเป็นหลัก บทนำ Bacefook ต้องการให้ผู้คนเป็นมิตร! ดังนั้นพวกเขาจึงใช้ระบบใหม่เพื่อแนะนำเพื่อน! งานของคุณคือช่วย Bacefook ในการใช้ระบบแนะนำใหม่ของพวกเขา ข้อมูลจำเพาะ: โปรแกรมของคุณจะต้องเป็น REPL (ห่วงอ่าน EVAL-พิมพ์) สนับสนุน 3 ประเภทของคำสั่งFRIEND, และSUGGESTKNOW FRIEND X Y- ระบุว่าXและYเป็นเพื่อนในเครือข่ายสังคมออนไลน์ ถ้า X เป็นเพื่อนกับ Y ดังนั้น Y คือเพื่อนกับ X ทำได้ แต่ไม่จำเป็นต้องมีเอาต์พุต X เป็นเพื่อนกับ X เสมอ KNOW X Y - เอาท์พุทค่าความจริงถ้า X และ Y เป็นเพื่อนเท็จไม่อย่างนั้น KNOW X X จะส่งออกค่าความจริงเสมอ SUGGEST X …

4
หมุนเมทริกซ์ 2D
สมมติว่าฉันมีเมทริกซ์ต่อไปนี้ (2D): [[1, 2, 3, 4 ], [5, 6, 7, 8 ], [9, 10, 11, 12], [13, 14, 15, 16]] หมุนเมทริกซ์ทวนเข็มนาฬิกา Rครั้ง (ไม่เพิ่มทีละ 90 องศาเพียง 1 ครั้งต่อครั้ง) 1 2 3 4 2 3 4 8 3 4 8 12 5 6 7 8 --> 1 7 11 12 --> 2 …

30
การสร้างสตริงตัวอักษรผสมตัวเลขความยาว N
อะไรคือวิธีที่สั้นที่สุดในการสร้างสตริงแบบสุ่มที่มีความยาวที่กำหนดและอนุญาตให้ใช้ตัวอักษรและตัวเลขเท่านั้น? ตัวอย่างของสตริงสุ่ม: โดยมี N = 9 เอาต์พุตจะเป็น aZua7I0Lk ความยาวที่กำหนด N สามารถสันนิษฐานได้ว่ามากกว่า 0 หากจำเป็นคุณสามารถสมมติว่า 256 เป็นค่าสูงสุดสำหรับ N แต่ควรใช้โซลูชันที่มีขีด จำกัด สูงกว่าสำหรับ N และยังต้องการเวลาในการคำนวณที่รวดเร็ว อักขระที่อนุญาต: 0-9, az และ AZ อักขระสามารถเกิดขึ้นได้มากกว่าหนึ่งครั้งในสตริงเอาต์พุต สตริงที่เป็นไปได้แต่ละอันควรมีแนวโน้มเท่ากัน

1
ตกปลาสำหรับแหอวน Cube
คิวบ์สามารถทำหกสี่เหลี่ยมเป็นด้านข้าง แต่คุณสามารถพับสี่เหลี่ยม 2x1 สามอันครึ่งแล้วแปะให้เข้าด้วยกันเพื่อสร้างลูกบาศก์ ตอนนี้ในการท้าทายนี้คุณจะได้ชิ้นส่วนที่ทำจากสี่เหลี่ยมและคุณต้องพิจารณาว่าคุณสามารถเลือกชิ้นส่วนเพื่อสร้างคิวบ์ยูนิตได้หรือไม่ ไม่จำเป็นต้องใช้ชิ้นส่วนทั้งหมดอาจมีบางชิ้นที่เหลือ รายละเอียด ชิ้นส่วนจะได้รับเป็นสตริงของอักขระสองตัวที่แตกต่างกันหรือภาพขาวดำหรือรูปแบบแรสเตอร์ 2D ที่สะดวกสบาย ในต่อไปนี้ฉันคิดว่าพิกเซลที่ประกอบกันเป็นสีดำและพื้นหลังเป็นสีขาว พิกเซลสองอันที่แบ่งด้านจะถือว่าเป็นของชิ้นเดียวกัน ชิ้นส่วนสามารถพับได้ตามแนวกริดซึ่งแยกพิกเซลและไม่สามารถตัดได้ แต่ละด้านของคิวบ์มีขนาดหนึ่งพิกเซลและแต่ละด้านของคิวบ์สามารถสร้างได้เพียงชั้นเดียวเท่านั้น การส่งออกจะต้องเป็นtruthyหรือfalseyค่า Testcases ในต่อไปนี้ช่องว่างคือพื้นหลังและสัญลักษณ์แฮช#แสดงถึงส่วนต่างๆ (เพิ่มเติมที่จะเพิ่ม) ถูกต้อง ## ## ## # #### # # # # # # # # # ## ## # โมฆะ ### ### # # #### ### ## #### เรียกใช้ตัวอย่างต่อไปนี้เพื่อทดสอบเพิ่มเติม แสดงตัวอย่างโค้ด document.getElementById("asdfasdf").style.display = "block"; …

5
ชีวิตคือเขาวงกต: เราใช้เส้นทางที่ผิดก่อนที่เราจะหัดเดิน
การป้อนข้อมูล: เขาวงกตที่มีตัวละคร: -- (ผนังแนวนอน); | (ผนังแนวตั้ง); + (การเชื่อมต่อ); (พื้นที่เดิน); I (ทางเข้า); U (ออก) เช่นอินพุตอาจมีลักษณะเช่นนี้: +--+--+--+--+--+--+--+--+--+--+ I | | | + +--+--+--+ + + + +--+ + | | | | | | +--+--+--+ +--+--+ + + +--+ | | | | | + +--+--+ + +--+--+ +--+ + | | …

30
ASCII art สำหรับ UI ของ torrent
ปัญหา สร้าง UI จากโปรแกรมฝนตกหนัก เมื่อไม่มีอินพุตให้เอาต์พุตต่อไปนี้: +----------+----------+----------+ |a.exe |##########|seeding | +----------+----------+----------+ |b.exe 10% |# |leeching | +----------+----------+----------+ |c.exe |##########|seeding | +----------+----------+----------+ |d.exe 20% |## |leeching | +----------+----------+----------+ |e.exe |##########|seeding | +----------+----------+----------+ |f.exe 30% |### |leeching | +----------+----------+----------+ |g.exe |##########|seeding | +----------+----------+----------+ |h.exe 40% |#### |leeching | +----------+----------+----------+ |i.exe |##########|seeding | +----------+----------+----------+ …

26
Fibonacci ผลรวมดิจิตอล
เราทุกคนคุ้นเคยกับลำดับฟีโบนักชี : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765 อย่างไรก็ตามแทนที่จะf(n) = f(n-1) + f(n-2)เราจะนำผลรวมดิจิตอลของ 2 รายการก่อนหน้า ลำดับควรเริ่มต้นด้วย0, 1หลังจากนั้นความแตกต่างจะปรากฏอย่างรวดเร็ว รายการนี้ได้รับการจัดทำดัชนี 0 คุณสามารถใช้ 1 ดัชนีเช่นกันซึ่งเป็นสถานะที่คุณใช้ f(0) = 0 f(1) = 1 f(2) = 1 # 0 + 1 …

21
ผลรวมคอลัมน์ฉลาด
รับรายการที่ไม่มีตัวเลขของแถวที่ไม่มีตัวเลขให้คำนวณผลรวมคอลัมน์ที่ชาญฉลาดซึ่งเป็นรายการอื่นที่มีความยาวของแถวที่ยาวที่สุด รายการแรกของรายการผลลัพธ์คือผลรวมของรายการแรกทั้งหมดของแถวอินพุตส่วนที่สองคือผลรวมขององค์ประกอบที่สองทั้งหมด (ถ้ามี) เป็นต้นฉันคิดว่าตัวอย่างต่อไปนี้จะอธิบายได้ดีกว่า: Input: {[1,2,3,4],[1],[5,2,3],[6,1]} Computation: [1,2,3,4] + . . . [1]. . . + + + . [5,2,3]. + + . . [6,1]. . = = = = Output: [13,5,6,4] กรณีทดสอบ {[0]} -> 0 {[1],[1,1,1,1]} -> [2,1,1,1] {[1],[1,2],[1,2,3],[1,2,3,4]} -> [4,6,6,4] {[1,6,2,-6],[-1,2,3,5]} -> [0,8,5,-1]

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