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

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

11
ตัวเลขนี้เป็นกำลังที่แน่นอนของ -2: (มาก) โหมดยาก
นี่เป็นรุ่นของการท้าทายล่าสุดตัวเลขนี้เป็นจำนวนเต็ม -2 หรือไม่ ด้วยชุดของเกณฑ์อื่นที่ออกแบบมาเพื่อเน้นลักษณะที่น่าสนใจของปัญหาและทำให้การท้าทายยากขึ้น ฉันใส่พิจารณาบางเป็นมันนี่ ความท้าทายที่ Toby กล่าวไว้อย่างน่าอัศจรรย์ในคำถามที่เชื่อมโยงคือ: มีวิธีการที่ชาญฉลาดในการระบุว่าเป็นจำนวนเต็มเป็นพลังที่แท้จริงของ 2 นั่นคือไม่ได้เป็นปัญหาที่น่าสนใจเพื่อให้ตรวจสอบว่าเป็นจำนวนเต็มให้เป็นพลังที่แท้จริงของการมี-2 ตัวอย่างเช่น: -2 => yes: (-2)¹ -1 => no 0 => no 1 => yes: (-2)⁰ 2 => no 3 => no 4 => yes: (-2)² กฎ: จำนวนเต็มคือ 64 บิตเซ็นชื่อเป็นส่วนประกอบสองอย่าง นี่เป็นประเภทข้อมูลเดียวที่คุณสามารถใช้งานได้ คุณสามารถใช้การดำเนินการดังต่อไปนี้เท่านั้น แต่ละสิ่งเหล่านี้นับเป็นการดำเนินการครั้งเดียว n << k, n >> k: เลื่อนไปทางซ้าย …

30
หมายเลขของฉันนานเท่าไหร่
ท้าทาย กำหนดจำนวนเต็มQในช่วง-(2^100) ≤ Q ≤ 2^100ส่งออกจำนวนหลักในจำนวนนั้น (ในฐาน 10) กฎระเบียบ ใช่คุณอาจใช้ตัวเลขเป็นสตริงและค้นหาความยาว อนุญาตให้ใช้ฟังก์ชันทางคณิตศาสตร์ทั้งหมดได้ คุณอาจรับอินพุตในฐานใดก็ได้ แต่ผลลัพธ์จะต้องเป็นความยาวของตัวเลขในฐาน 10 อย่านับเครื่องหมายลบสำหรับจำนวนลบ ตัวเลขจะไม่มีจุดทศนิยม ศูนย์สามารถมีได้หนึ่งหรือศูนย์หลัก สมมติว่าอินพุตจะเป็นจำนวนเต็มที่ถูกต้องเสมอ ตัวอย่าง Input > Output -45 > 2 12548026 > 8 33107638153846291829 > 20 -20000 > 5 0 > 1 or 0 การชนะ รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ

3
เกมแห่ง arrowslits ชีวิต
พื้นหลัง ความท้าทายนี้เป็นเกียรติของapsillersผู้ชนะรางวัลNot as simple ตามหมวดหมู่ Best of PPCG 2016 ด้วยความท้าทายกล่องดนตรี 4 โน้ตของฉันสามารถเล่นเพลงนั้นได้หรือไม่? ขอแสดงความยินดี! ในหน้า "เกี่ยวกับฉัน" ผู้ใช้รายนี้มีตัวจำลองที่ประณีตมากสำหรับออโตเมติกเซลเกมแห่งชีวิต (อย่างจริงจังไปตรวจสอบออก) ในทางกลับกันคำว่าaspilleraเป็นภาษาสเปนสำหรับ "ลูกศรเรืองแสง " จากข้อเท็จจริงเหล่านี้ความท้าทายนี้เกี่ยวกับ arrowslits ใน Game of Life เกมแห่ง arrowslits ชีวิต กอลเราจะเป็นตัวแทนของลูกศรโดยเครื่องร่อนและผนังโดยลำดับของบล็อก ร่อนเดี่ยวเข้าใกล้กำแพงจากด้านบนและพยายามที่จะบินผ่านช่องว่างในกำแพง งานของคุณคือการตรวจสอบว่าเครื่องร่อนผ่านลูกศรไฟหรือชนเข้ากับผนัง อินพุต อินพุตของคุณคือตารางบิตซึ่งแสดงถึงการกำหนดค่า GoL คุณสามารถนำไปใช้ในรูปแบบที่สมเหตุสมผล (สตริงหลายบรรทัดของอักขระ ASCII ที่พิมพ์ได้สองรายการ, รายการสตริง, อาร์เรย์ 2D ของจำนวนเต็ม, อาร์เรย์ 2D ของ booleans ฯลฯ ) เพื่อความชัดเจนฉันจะใช้สตริงหลายบรรทัดของตัวละคร.#ดังต่อไปนี้ …

28
แถวแถวแถวเรือของคุณ
ทุกคนมีความคุ้นเคยกับเพลงต่อไปนี้ซึ่งเป็นรอบดนตรี : พื้นหลัง คนที่น้อยลงอาจจำได้ว่าพยายามร้องเพลงเวอร์ชั่น 4 คนกับเพื่อนไม่กี่คนและล้มเหลว การหักล้างเนื้อเพลงของเพลงที่มีระยะห่างที่กลมกลืนกันเป็นที่รู้จักกันในชื่อการร้องเพลง "รอบ" และนั่นคือสิ่งที่เราอยู่ที่นี่เพื่อจำลองวันนี้โดยใช้เอาต์พุตแบบคงที่ นี่คือตัวอย่างของคนที่ปฏิบัติจริงชิ้น (เชื่อมโยงไปยังเสียง / วิดีโอจะมีเสียง) ความท้าทาย ความท้าทายนี้คือการส่งออกข้อความดังนี้ดังนี้: Row, row, row your boat, |-----------------------------------|-----------------------------------|----------------------------------- Gently down the stream. |Row, row, row your boat, |-----------------------------------|----------------------------------- Merrily, merrily, merrily, merrily,|Gently down the stream. |Row, row, row your boat, |----------------------------------- Life is but a dream. |Merrily, …

11
ระยะทางสามเหลี่ยมแมนฮัตตัน
ระยะแมนฮัตตันบนตารางปกติเป็นจำนวนขั้นตอนฉากหนึ่งที่ต้องใช้เวลาในการเข้าถึงเซลล์หนึ่งจากที่อื่น ขั้นตอนมุมฉากเป็นขั้นตอนที่ผ่านขอบของเซลล์กริด (ตรงข้ามกับมุมซึ่งจะทำให้เราระยะทาง Chebyshev ) เราสามารถกำหนดระยะทางที่ใกล้เคียงกันบนกริดอื่น ๆ เช่นตารางสามเหลี่ยม เราสามารถระบุที่อยู่ของแต่ละเซลล์ในตารางด้วยชุดรูปแบบการทำดัชนีต่อไปนี้โดยที่แต่ละเซลล์มีx,yคู่: ____________________________________... /\ /\ /\ /\ /\ / \ 1,0/ \ 3,0/ \ 5,0/ \ 7,0/ \ / 0,0\ / 2,0\ / 4,0\ / 6,0\ / 8,0\ /______\/______\/______\/______\/______\... \ /\ /\ /\ /\ / \ 0,1/ \ 2,1/ \ 4,1/ \ 6,1/ …

6
กราฟ Cayley ของ ASCII
ในขณะที่ทำวิจัยบางอย่างสำหรับความท้าทายที่แตกต่างกันฉันกำหนด, ฉันมาข้ามกราฟเคย์ลีโดยเฉพาะคนนี้ ตั้งแต่ฉันหนึ่งในด้านบน ascii-ศิลปะนักเขียนท้าทายแน่นอนผมจะต้องทำให้ความท้าทายศิลปะ ASCII สำหรับเรื่องนี้ ความท้าทายของคุณคือการสร้างผลงานศิลปะ ASCII ของกราฟ Cayley ของกลุ่มฟรีในเครื่องกำเนิดสองเครื่องดังนี้ + +++ + | + ++-+-++ + | + + | + +++ | +++ + | | | + ++-+----+----+-++ + | | | + +++ | +++ + | + + | + +++ | +++ + …

11
Anagram Quines (ด้ายตำรวจ)
นี่คือตำรวจและโจรที่ท้าทายเธรดของโจรสามารถพบได้ที่นี่ ความท้าทายของคุณคือการเขียนโปรแกรมที่ส่งออกแอนนาแกรมของซอร์สโค้ด แต่ไม่ใช่ซอร์สโค้ดตัวเอง ตัวอย่างเช่นโปรแกรม Python ดังต่อไปนี้ print`'print*2``'*2` พิมพ์ 'print*2``print*2``' ซึ่งมีอักขระเหมือนกันทั้งหมดกับแหล่งต้นฉบับ แต่ในลำดับที่แตกต่างกัน เมื่อคุณพบโปรแกรมดังกล่าวแล้วให้รวมเอาท์พุทของโปรแกรมเป็นคำตอบที่ไม่ใช้โปรแกรมที่สร้างขึ้นมา ตามที่คุณอาจเดาได้โจรจะพยายามค้นหาโปรแกรมที่คุณซ่อนไว้หรือโปรแกรมที่ตรงตามข้อกำหนด เป้าหมายของคุณคือการทำให้โปรแกรมสั้นที่สุดที่โจรไม่สามารถถอดรหัสได้ กฎระเบียบ เช่นเดียวกับที่สุดตำรวจและโจรท้าทายถ้ายังคงเป็นคำตอบของคุณ uncracked สำหรับสัปดาห์คุณอาจจะเพิ่มการแก้ปัญหาที่มีจุดมุ่งหมายเพื่อคำตอบของคุณและทำเครื่องหมายเป็นที่ปลอดภัย เมื่อปลอดภัยแล้วคำตอบก็ไม่สามารถถอดรหัสได้โดยโจร คุณไม่จำเป็นต้องรวมภาษาของโซลูชันที่ต้องการอย่างไรก็ตามหากคุณไม่รวมถึงโจรภาษาสามารถถอดรหัสในภาษาใด ๆ ที่มีความท้าทายก่อนที่จะถึงแม้ว่าคุณจะระบุภาษาพวกเขาอาจแตกในที่เดียวเท่านั้น ใช้กฎมาตรฐานสำหรับ Quines

25
Pigeonhole Principle & Code Golf
หลักรังนกพิราบระบุว่า หากมีการใส่รายการNลงในกล่องMโดยมีN > Mอย่างน้อยหนึ่งกล่องจะต้องมีมากกว่าหนึ่งรายการ สำหรับหลาย ๆ คนหลักการนี้มีสถานะพิเศษเมื่อเทียบกับการคำนวณทางคณิตศาสตร์อื่น ๆ ในฐานะที่เป็น EW Dijkstra เขียน , มันถูกล้อมรอบไปด้วยความลึกลับบางอย่าง บทพิสูจน์ที่ใช้มันมักถูกมองว่าเป็นสิ่งที่พิเศษ ความท้าทาย จุดประสงค์ของการท้าทายนี้คือเพื่อแสดงให้เห็นถึงหลักการของนกพิราบในช่องว่างโดยใช้การแทนด้วยศิลปะ ASCII โดยเฉพาะ: ใช้เป็นอินพุตN(จำนวนรายการ) และM(จำนวนกล่อง) โดยNไม่ลบและMบวก Nอาจมีขนาดเล็กกว่าM(แม้ว่าหลักการไม่ได้ใช้ในกรณีนั้น) สุ่มเลือกหนึ่งในการกำหนดรายการที่เป็นไปได้ให้กับกล่อง แต่ละการมอบหมายควรมีความน่าจะเป็นที่ไม่เป็นศูนย์ในการเลือก สร้างการแทนค่า ASCII art ของการมอบหมายดังนี้: มีMเส้นแต่ละเส้นตรงกับกล่อง |แต่ละบรรทัดเริ่มต้นด้วยตัวอักษรที่ไม่ใช่ช่องว่างเช่น การติดตามตัวละครนั้นเป็นอีกตัวที่ไม่ใช่ช่องว่างเช่น#ซ้ำหลายครั้งเนื่องจากมีรายการในกล่องนั้น พิจารณาตัวอย่างเช่น,N = 8 M = 5หาก assigment เลือกของรายการที่จะเป็นกล่อง4, 1, 0, 3, 0ตัวแทนคือ |#### |# | |### | การทำงานที่แตกต่างกัน …

3
การจัดเรียงฟอง
หมายเหตุ: ความท้าทายคัดลอกมาจากคำถามที่ถามที่math.stackexchange เมื่อเร็ว ๆ นี้ฉันมีทักษะในการเป่าฟองสบู่ ตอนแรกฉันจะเป่าฟองสบู่แบบนี้ แต่สิ่งต่าง ๆ เริ่มแปลกประหลาด: หลังจากผ่านไปครู่หนึ่งฉันก็เป่าฟองแปลก ๆ หลังจากเป่าไปหลายร้อยฟองอาจจะถึงพันแล้วหน้าผากของฉันก็เหี่ยวย่นกับคำถาม: เมื่อได้รับฟอง n คุณสามารถจัดเรียงพวกเขาได้ในหลายวิธี ตัวอย่างเช่นถ้า n = 1 จะมีเพียง 1 การจัดเรียงเท่านั้น ถ้า n = 2 จะมีการจัดเรียง 2 แบบ ถ้า n = 3 มีการจัดเรียง 4 รายการ ถ้า n = 4 มีการจัดเรียง 9 รายการ ต่อไปนี้คือการจัดเรียง 9 ฟอง 4 รายการ: หลังจากเป่าฟองสบู่มหัศจรรย์ทั้งหมดนี้ฉันตัดสินใจว่าฉันควรแบ่งปันความสุขในการนับการจัดการกับพวกเขา ดังนั้นนี่คืองานของคุณ: …

24
เมื่อจำนวนเต็มเข้าร่วมคิว
บทนำ คิวเป็นชนิดข้อมูลนามธรรมที่องค์ประกอบเพิ่มไปด้านหน้า (enqueue) และลบออกจากด้านหลัง (dequeue) นอกจากนี้ยังเป็นที่รู้จักกันFIFO (First In First Out)หลักการ มันจะแสดงที่ดีที่สุดด้วยตัวอย่าง: ท้าทาย รับอาร์เรย์ที่ไม่ว่างเปล่าที่มีจำนวนเต็มบวกและองค์ประกอบที่ระบุdequeue (ลบองค์ประกอบ) ออกรายการสุดท้ายของคิว สมมุติว่าXเป็น dequeue ในตัวอย่างนี้ ลองดูรายการต่อไปนี้: [45, X, X, 37, 20, X, 97, X, 85] สิ่งนี้สามารถแปลเป็นรหัสคิวหลอกต่อไปนี้: Queue Enqueue 45 -> 45 Dequeue -> Dequeue -> (dequeue on an empty queue is a no-op) Enqueue 37 -> 37 …

18
ย่ออาร์เรย์
เป้าหมาย: กำหนดอาร์เรย์ของสตริงสร้างเวอร์ชันย่อของแต่ละสตริง รายละเอียด: สำหรับความท้าทายนี้ตัวย่อคืออักขระ N ตัวแรกของสตริง สำหรับสตริงabc: a, abและabcทั้งหมดเป็นตัวย่อที่ถูกต้องในขณะที่bcและacไม่ใช่ ด้วยอาร์เรย์ของสตริงเราต้องการค้นหาชุดย่อที่สั้นที่สุดเช่นที่ได้รับจากอินพุตและตัวย่อใด ๆ คุณสามารถกำหนดว่ารายการใดของอินพุตที่ตัวย่อถูกอ้างถึง ตัวอย่าง: การป้อนข้อมูล: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"] เราทำงานผ่านสายที่เริ่มต้นด้วยสายแรก วันจันทร์เป็นเพียงสตริงรายการด้วยดังนั้นย่อที่สั้นที่สุดคือMM วันอังคารเริ่มต้นด้วยTแต่วันพฤหัสบดีก็เช่นกัน TUวิธีการนี้ที่เราพยายามสตริง เนื่องจากไม่มีสายอื่น ๆ TUที่เริ่มต้นด้วยการที่เราจะใช้ วันพุธW, วันพฤหัสบดีและวันศุกร์คือThF ตัวอย่างเพิ่มเติม: Input: "one,two,three,four,five,six,seven" Output: "o,tw,th,fo,fi,si,se" Input: "red,orange,yellow,green,blue,purple" Output: "r,o,y,g,b,p" Input: "a,ab,abc" Output: Not valid! No abbreviation for `a` that doesn't apply to …
26 code-golf  string 

8
แปลงเครื่องมือจัดฟันเป็นรั้งมือขวา (Sad Brace)
รั้งมือขวาคือรูปแบบของการใส่รหัสในการจัดฟันแบบหยักและอัฒภาคให้อยู่ในตำแหน่งเดียวที่ด้านขวาของไฟล์ aa โดยทั่วไปถือว่าเป็นการปฏิบัติที่ไม่ดีด้วยเหตุผลหลายประการ ความท้าทาย ใช้สตริงหลายบรรทัดผ่านวิธีการใด ๆ และแปลงรูปแบบการรั้งเป็น Right Hand Brace สำหรับความท้าทายนี้คุณจะต้องใช้มันเพื่อทำงานกับโค้ด Java เท่านั้นอย่างไรก็ตามในทางทฤษฎีมันควรทำงานกับโค้ดใด ๆ ที่ใช้เครื่องมือจัดฟันและเครื่องหมายอัฒภาค คุณต้องคว้า{};ตัวละครทั้งหมดในแถวด้วยช่องว่างใด ๆ ระหว่างพวกเขา เช่น. }},, ; } }\n\t\t}และจัดเรียงมันทางด้านขวาของไฟล์ผ่านการใช้ช่องว่าง ตัวอย่างเช่น: a { b; {c ควรกลายเป็น a { b ;{ c หรืออย่างเป็นนามธรรมมากขึ้นผลักช่องว่างใด ๆ และทั้งหมดจากด้านซ้ายของ{};ตัวละครทั้งหมดไปทางขวา ควรเยื้องบรรทัด บรรทัดที่มีช่องว่างหลังจากการเคลื่อนไหวของ{};ตัวละครอาจถูกลบออก ตัวอย่างเช่น: a{ b{ c; } } d; อาจกลายเป็นอย่างใดอย่างหนึ่ง a { b …

11
หมายเลขคอมโพสิตที่ทนต่อ Bitflip
บางครั้งเมื่อเขียนโปรแกรมคุณต้องใช้จำนวนเฉพาะด้วยเหตุผลบางอย่างหรืออื่น ๆ (เช่นการเข้ารหัส) ฉันคิดว่าบางครั้งคุณต้องใช้หมายเลขคอมโพสิตด้วย บางครั้งอย่างน้อยที่นี่ใน PPCG โปรแกรมของคุณจะต้องสามารถจัดการกับการเปลี่ยนแปลงโดยพลการ และในสถานการณ์ที่วางแผนจะสร้างคำถาม PPCG ที่น่าสนใจอย่างสะดวกสบายบางทีแม้แต่ตัวเลขที่คุณใช้ก็ต้องทนต่อการทุจริต ... คำนิยาม จำนวนคอมโพสิตเป็นจำนวนเต็ม≥ 4 ที่ไม่ได้เป็นนายกคือมันเป็นผลิตภัณฑ์ของจำนวนเต็มสองจำนวนที่มีขนาดเล็กมากกว่า 1 ต่อ A bitflip ทนจำนวนคอมโพสิตถูกกำหนดให้เป็นดังนี้ก็เป็นจำนวนเต็มบวกคอมโพสิตซึ่งถ้าคุณเขียนมัน ในเลขฐานสองในจำนวนบิตที่น้อยที่สุดที่เป็นไปได้คุณสามารถเปลี่ยนหนึ่งหรือสองบิตจากจำนวนและจำนวนยังคงประกอบ ตัวอย่าง ตัวอย่างเช่นพิจารณาจำนวน 84 1010100ในไบนารีว่า นี่คือตัวเลขทั้งหมดที่ต่างกันไม่เกิน 2 บิตจาก: 0000100 4 2 × 2 0010000 16 4 × 4 0010100 20 4 × 5 0010101 21 3 × 7 0010110 22 …

10
การคูณเมทริกซ์สัญลักษณ์
มีหลายวิธีในการอธิบายการคูณเมทริกซ์ ฉันจะยึดติดกับร่างเดียวเพราะฉันเชื่อว่าคนส่วนใหญ่ที่นี่คุ้นเคยกับมัน (และตัวเลขนั้นอธิบายได้ดีมาก) หากท่านต้องการข้อมูลรายละเอียดเพิ่มเติมผมขอแนะนำให้คุณไปที่วิกิพีเดียบทความหรือคำอธิบายในWolframMathWorld คำอธิบายง่ายๆ: สมมติว่าคุณมีเมทริกซ์สองตัวคือAและBโดยที่Aคือ 3-by-2 และBคือ 2-by-3 หากคุณทำการคูณเมทริกซ์เหล่านี้กับเมทริกซ์ABหรือBAคุณจะได้ผลลัพธ์ด้านล่าง: ท้าทาย: ใช้การคูณเมทริกซ์สัญลักษณ์ในภาษาของคุณ คุณจะต้องใช้เมทริกซ์สองตัวเป็นอินพุตซึ่งแต่ละองค์ประกอบในเมทริกซ์จะถูกแทนด้วยอักขระ ASCII ที่ไม่ใช่ whitespace (รหัสคะแนน 33-126) คุณต้องเอาท์พุทผลิตภัณฑ์ของเมทริกซ์เหล่านี้ กฎเกี่ยวกับผลลัพธ์: ผลิตภัณฑ์ของสองรายการจะต้องไม่มีสัญลักษณ์ใด ๆ ในระหว่าง มันabไม่ได้a*b, a·b, times(a,b)หรือสิ่งที่คล้ายกัน มันไม่ได้aaa^2 ผลรวมของเงื่อนไขควรมีช่องว่าง (รหัส ASCII จุด 32) ในระหว่าง มันa bไม่a+b, plus(a,b)หรือสิ่งที่คล้ายกัน เหตุผลสำหรับกฎทั้งสองนี้คือ: อนุญาตให้ใช้อักขระที่ไม่ใช่ white space ทั้งหมดเป็นสัญลักษณ์ในเมทริกซ์ดังนั้นการใช้มันเป็นสัญลักษณ์ทางคณิตศาสตร์จะยุ่งเหยิง ดังนั้นสิ่งที่คุณตามปกติสามารถเขียนเป็นจะเป็นa*b+c*dab cd คุณสามารถเลือกคำสั่งได้ ab cd, dc abและcd baได้รับการทางคณิตศาสตร์ที่พูดภาษาเดียวกันเพื่อให้คุณสามารถเลือกสั่งซื้อที่นี่ด้วย คำสั่งซื้อไม่จำเป็นต้องสอดคล้องกันตราบใดที่มันถูกต้องทางคณิตศาสตร์ …

12
ตัวที่ n
คุณสามารถสร้างรายการของปันส่วนทั้งหมด 0 <r ≤ 1 โดยแสดงรายการที่พวกเขาสั่งซื้อครั้งแรกโดยตัวส่วนแล้วตามด้วยตัวเศษ: 1 1 1 2 1 3 1 2 3 4 1 5 1 2 3 4 5 - - - - - - - - - - - - - - - - - 1 2 3 3 4 4 5 5 5 5 …

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