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

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

25
ลำดับเพื่อนบ้านใหม่
จำนวนเต็มที่ไม่เป็นลบนั้นเบื่อที่จะมีเพื่อนบ้าน * สองคนเหมือนกันเสมอดังนั้นพวกเขาจึงตัดสินใจรวมสิ่งต่าง ๆ เข้าด้วยกันเล็กน้อย อย่างไรก็ตามพวกเขายังขี้เกียจและต้องการที่จะอยู่ใกล้กับตำแหน่งเดิมมากที่สุด พวกเขามาพร้อมกับอัลกอริทึมต่อไปนี้: องค์ประกอบแรกคือ 0 องค์ประกอบเป็นจำนวนที่น้อยที่สุดที่ยังไม่อยู่ในลำดับและที่ไม่ได้เป็นเพื่อนบ้านขององค์ประกอบnt hnเสื้อชั่วโมงn^{th}( n - 1 )t h(n-1)เสื้อชั่วโมง(n-1)^{th} สิ่งนี้จะสร้างลำดับที่ไม่สิ้นสุดต่อไปนี้: 0,2,4,1,3,5,7,9,6,8,10,12,14,11,13,15,17,19,16,18,20,22,24,21,23,25,27,29,26,28 ... 0เป็นองค์ประกอบแรก 1เป็นจำนวนที่น้อยที่สุดยังไม่ได้อยู่ในลำดับ 0แต่มันเป็นของเพื่อนบ้าน จำนวนที่น้อยที่สุดถัดไปคือ2ดังนั้นมันจึงเป็นองค์ประกอบที่สองของลำดับ ตอนนี้ตัวเลขที่เหลือเป็น1,3,4,5,6,...แต่ขณะที่ทั้งสอง1และ3เป็นเพื่อนบ้านของ2, 4เป็นสมาชิกที่สามของลำดับ ในฐานะที่1ไม่ใช่เพื่อนบ้านของ4มันในที่สุดก็สามารถใช้สถานที่เป็นองค์ประกอบที่สี่ งาน เขียนฟังก์ชั่นหรือโปรแกรมเป็นไบต์น้อยที่สุดซึ่งสร้างลำดับข้างต้น คุณอาจ เอาท์พุทลำดับไม่สิ้นสุด รับอินพุตและส่งคืนองค์ประกอบของลำดับหรือnnnnt hnเสื้อชั่วโมงn^{th} ใช้การป้อนข้อมูลและกลับคนแรกที่องค์ประกอบของลำดับnnnnnn ทั้งการทำดัชนีเป็นศูนย์หรือหนึ่งครั้งนั้นใช้ได้ในกรณีที่คุณเลือกหนึ่งในสองตัวเลือกหลัง คุณไม่จำเป็นต้องทำตามอัลกอริทึมที่ระบุไว้ข้างต้นวิธีการใด ๆ ที่สร้างลำดับเดียวกันก็ใช้ได้ แรงบันดาลใจจากกอล์ฟรหัสการเปลี่ยนแปลงที่ดีที่สุด ปรากฎนี้เป็นA277618 * Zero มีเพื่อนบ้านเพียงคนเดียวและไม่สนใจ

30
ตรวจสอบว่าสตริงทำจากสตริงย่อยเดียวกันทั้งหมดหรือไม่
สิ่งนี้นำมาจากคำถามนี้ (ได้รับอนุญาตจากหลักสูตร) ฉันจะพูด: สร้างฟังก์ชั่นซึ่งจะใช้เวลาสตริงและมันควรจะกลับจริงหรือเท็จขึ้นอยู่กับว่าการป้อนข้อมูลประกอบด้วยเพียงลำดับตัวอักษรซ้ำแล้วซ้ำอีก ความยาวของสตริงที่กำหนดมีค่ามากกว่า 1 เสมอและลำดับอักขระต้องมีการทำซ้ำอย่างน้อยหนึ่งครั้ง ตัวอย่างบางส่วน: 'aa' //true 'aaa' //true 'abcabcabc' //true 'aba' //false 'ababa' //false 'weqweqweqweqweqw' // false โดยเฉพาะอย่างยิ่งการตรวจสอบสตริงที่ประกอบด้วยสตริงย่อยที่ซ้ำกัน ( อัพเดต ) สามารถส่งเอาต์พุตการแสดงใด ๆ ที่เป็นจริงหรือเท็จได้ สตริงตัวอักษรผสมตัวเลขอย่างเคร่งครัด มิฉะนั้นกฎรหัสมาตรฐานกอล์ฟ นี่คือ Code Golf ดังนั้นคำตอบสั้น ๆ เป็นไบต์สำหรับแต่ละภาษาที่ชนะ

17
ใครเป็นผู้ชนะ Game of Bar Dice
ท้าทาย Bar Dice เป็นเกมง่ายๆที่เล่นใน Bar with Dice (ชื่อนี้) คุณหมุนลูกเต๋าหกเหลี่ยม 5 ลูกและพยายามทำให้มือดีที่สุด การให้คะแนนขึ้นอยู่กับการรวบรวมจำนวนลูกเต๋าที่มากที่สุดด้วยตัวเลขเดียวกัน แต่ละมือต้องมี "เอซ" อย่างน้อยหนึ่งครั้งหรืออย่างใดอย่างหนึ่งเพื่อให้เป็นมือที่ถูกต้อง Aces ทำหน้าที่เป็น "wilds" และสามารถจับคู่กับหลักอื่น ๆ ได้ ความแข็งแรงของมือผู้เล่นขึ้นอยู่กับจำนวนของตัวเลขและค่าของตัวเลขเหล่านั้น ยกตัวอย่างเช่นมือ (นับจำนวนไวลด์) ที่มีสี่ 3 นั้นดีกว่ามือที่มีสาม 5 แต่ไม่ดีกว่ามือที่มีห้า 2 นำมาจากบทความ Wikipedia ซึ่งหมายความว่ามืออันดับสูงสุดทำจากทั้งหมด 6 ของและ 1 และอันดับต่ำสุดคือมือใด ๆ ที่ไม่มี 1 ความท้าทายของคุณคือการจับสองมือและคืนผู้เล่นคนใดที่ชนะหรือหากพวกเขาผูกไว้ อินพุต สองรายการที่ไม่เรียงลำดับของตัวเลข 5 หมายเลขตั้งแต่ 1 ถึง 6 แต่ละรายการแสดงถึงมือของผู้เล่น รูปแบบอินพุตมีความยืดหยุ่น …

18
PronunciationSort ™
เราทุกคนรู้ถึงอัลกอริธึมการเรียงลำดับแฟนซีที่แตกต่างกัน แต่ไม่มีสิ่งใดที่จะบอกตัวเลขในวิธีที่ง่ายต่อการออกเสียง เพื่อแก้ไขสิ่งนี้ฉันเสนอให้ใช้ PronunciationSort ™วิธีที่เป็นธรรมชาติที่สุดในการเรียงลำดับรายการตัวเลข การออกเสียง กฎอย่างเป็นทางการสำหรับตัวเลขการออกเสียง (ในการท้าทายนี้) คือตัวเลขจะออกเสียงทีละตัวและสตริงผลลัพธ์จะเรียงตามลำดับพจนานุกรม เป็นตัวอย่างซึ่งหมายความว่าตัวเลข845นั้นออกเสียง"eight four five"และควรเรียงตาม ตัวเลขติดลบ ตัวเลขลบจะออกเสียงโดยการเติมคำ"minus"นั้น ดังนั้นจะออกเสียงเป็น-23 "minus two three"โปรดทราบว่าสิ่งนี้ทำให้ตัวเลขติดลบจบลงตรงกลางของเอาต์พุตขวาระหว่างตัวเลขที่ขึ้นต้นด้วย4(สี่) และ9(เก้า) คำแนะนำอย่างเป็นทางการของคำศัพท์สำหรับ PronunciationSort ™คือ: แปด ห้า สี่ ลบ เก้า หนึ่ง เจ็ด หก สาม สอง ศูนย์ นั่นคือ, 8, 5, 4, -, 9, 1, 7, 6, 3, 2, 0 อินพุต รายการจำนวนเต็มในช่วงที่มีองค์ประกอบมากที่สุด 100 รายการ ไม่อนุญาตให้ป้อนข้อมูลเป็นรายการสตริง …

14
ปัญหาหมุนวน
Spiral number คือกริดที่ไม่มีที่สิ้นสุดซึ่งจตุรัสซ้ายบนมีหมายเลข 1 นี่คือห้าชั้นแรกของ Spiral: งานของคุณคือค้นหาตัวเลขในแถว y และคอลัมน์ x ตัวอย่าง: Input: 2 3 Out : 8 Input: 1 1 Out : 1 Input: 4 2 Out : 15 บันทึก: อนุญาตให้ใช้ภาษาโปรแกรมใดก็ได้ นี่เป็นความท้าทายของนักกอล์ฟที่จะได้รหัสที่สั้นที่สุด ขอให้โชคดี! ที่มา: https://cses.fi/problemset/task/1071
24 code-golf  math 

25
พิมพ์ลำดับ
21, 21, 23, 20, 5, 25, 31, 24,? ได้รับแรงบันดาลใจจากPuzzle นี้โดยกำหนดเป็นจำนวนเต็มn > 0n>0n>0ให้พิมพ์ลำดับต่อไปนี้จนกระทั่งถึง non-Integer (ในกรณีที่คุณต้องการแก้ปริศนาด้วยตัวเองก่อน) a0= na0=na_0 = n a4k+1=a4k⋅(4k+1)a4k+1=a4k⋅(4k+1)a_{4k+1} = a_{4k} \cdot(4k+1) a4k+2=a4k+1+(4k+2)a4k+2=a4k+1+(4k+2)a_{4k+2} = a_{4k+1} + (4k+2) a4k+3=a4k+2−(4k+3)a4k+3=a4k+2−(4k+3)a_{4k+3} = a_{4k+2} - (4k+3) a4 k + 4= a4 k + 3/(4k+4)a4k+4=a4k+3/(4k+4)a_{4k+4} = a_{4k+3} / (4k+4) หรือมากกว่านั้นโดยสังหรณ์: * 1, +2, -3, / …

30
ปัดเศษจากศูนย์
ปัดเศษจากศูนย์ แรงบันดาลใจจากรอบต่อศูนย์ ให้การป้อนตัวเลขด้วยวิธีการที่สมเหตุสมผลรอบตัวเลข "ห่างจากศูนย์" - ตัวเลขบวกปัดขึ้นและตัวเลขลบปัดเศษลง หากคุณตั้งใจจะรับอินพุตเป็นสตริง (เช่น STDIN เป็นต้น) คุณควรจะสามารถจัดการกับตัวเลขที่มีหรือไม่มีจุดทศนิยม หากคุณใช้เป็นตัวเลขอย่างน้อยก็ควรจะสามารถจัดการกับความแม่นยำจุดลอยตัว (ไม่จำเป็นต้องมีความแม่นยำสองครั้ง) หรือจำนวนตรรกยะ คุณสามารถส่งออกตัวเลขทศนิยมด้วยจุดทศนิยม (เช่น 42.0) หากต้องการ (หรือมีบางกรณีทดสอบเอาท์พุทจุดลอยและจำนวนเต็มเอาท์พุทถ้ามันทำให้คำตอบของคุณสั้นลง) ไม่อนุญาตช่องโหว่มาตรฐาน ฯลฯ เป็นต้น กรณีทดสอบ -99.9 => -100 -33.5 => -34 -7 => -7 -1.1 => -2 0 => 0 2.3 => 3 8 => 8 99.9 => 100 42.0 => 42 …
24 code-golf  number 

15
ปริศนาจิ๊กซอว์เมทริกซ์
การป้อนข้อมูล: จำนวนเต็ม n เมทริกซ์จตุรัสขนาดเท่ากันสองค่า (ที่ความกว้าง / ความสูงเป็นพหุคูณของn) เอาท์พุท: หนึ่งในสองค่าที่แตกต่างกันของทางเลือกของคุณเองเป็นหนึ่งเพื่อให้ได้ผลลัพธ์ truthy และหนึ่งสำหรับผลการ falsey (ดังนั้นใช่1/0แทนtrue/falseแม้ว่าจะมีผลที่ถูกต้องสำหรับภาษาเช่น Java, พวกเขาไม่ได้รับการพิจารณาอย่างเป็นทางการ truthy / ค่า falsey ) เอาต์พุตความจริง / เท็จแสดงว่าเราสามารถจัดเรียงบล็อกขนาดใหม่n by nในเมทริกซ์เดียวเพื่อให้เท่ากับเมทริกซ์อื่น ตัวอย่าง: การป้อนข้อมูล: Matrix 1: 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 8 7 …

3
การแข่งขันรอบแทร็ค
ฉันกำลังมองหานักแข่งที่เร็วที่สุด แสดงรอบที่เร็วที่สุดของคุณรอบแทร็ก 18x14 นี้ที่แสดงด้านล่าง ______ / \ / \ / ____ \ / / \ \ / / \ \ | | | | | | | | | | | | | | | | \ \ / / \ \____/ / \ / \ / \______/ งานของคุณคือการเคลื่อนย้ายรถด้านล่างรอบแทร็กหนึ่งครั้งในตำแหน่งที่เป็นไปได้ทั้งหมด _ …

13
ค้นหารูท 10-adic cube ของ 3
ฉันชอบคิดเลข 10 adic เป็นตัวเลขที่ไปทางซ้ายไม่ จำกัด หรือโมดูโลจำนวนเต็มเป็นพลังงานที่มีขนาดใหญ่มากของ 10 สิ่งต่าง ๆ ดำเนินไปทางซ้ายและหายไป หากต้องการดูสิ่งที่ฉันหมายถึงโปรดทราบว่า...6667 * 3 = 1ในดินแดน 10 adic ตั้งแต่ "2" ที่ดำเนินการไปทางซ้ายจะไม่มีที่สิ้นสุด การเพิ่มและการคูณทำให้เข้าใจได้สำหรับตัวเลข 10 adic เนื่องจากnตัวเลขสุดท้ายของผลรวม / ผลิตภัณฑ์จะขึ้นอยู่กับnตัวเลขสุดท้ายของการสรุป / การคูณ ป.ร. ให้nไว้คุณจะต้องพิมพ์nตัวเลขสุดท้ายของราก 10-adic คิวบ์ที่ 3 คือที่xน่าx*x*x = 3พอใจ มันจบลงแล้ว: ...878683312291648481630318492665160423850087895134587 รหัสของคุณจะต้องยุติn=1000ก่อนส่ง สมมติว่าถ้าจำนวนที่คุณต้องการพิมพ์เริ่มต้นด้วยศูนย์คุณไม่จำเป็นต้องพิมพ์เลขศูนย์นำหน้าเพราะมันไม่ใช่จุดที่จะพิมพ์เลขศูนย์พิเศษ นี่คือรหัสกอล์ฟ คำตอบที่สั้นที่สุดในการชนะไบต์

15
แปดทั้งหมดเดียว
ได้รับไม่ว่างเปล่าอาร์เรย์สี่เหลี่ยมของจำนวนเต็มจาก0การ9ส่งออกจำนวนของเซลล์ที่เป็นและไม่ได้มีเพื่อนบ้านที่เป็น8 8การทำความเข้าใจเพื่อนบ้านที่นี่ในความหมายของมัวร์นั่นคือรวมถึงเส้นทแยงมุม ดังนั้นแต่ละเซลล์มี8เพื่อนบ้านยกเว้นเซลล์ที่ขอบของอาร์เรย์ ตัวอย่างเช่นกำหนดอินพุต 8 4 5 6 5 9 3 8 4 8 0 8 6 1 5 6 7 9 8 2 8 8 7 4 2 3การส่งออกที่ควรจะเป็น เซลล์ที่มีคุณสมบัติสามเซลล์ต่อไปนี้จะถูกทำเครื่องหมายด้วยเครื่องหมายดอกจัน (แต่ควรมีเฉพาะจำนวนของรายการดังกล่าว): * 4 5 6 5 9 3 8 4 * 0 8 6 1 5 6 7 9 …

10
ระยะทางอัศวิน
ในหมากรุกอัศวินในกริด (x, y) อาจย้ายไปที่ (x-2, y-1), (x-2, y + 1), (x-1, y-2), (x-1, y + 2), (x + 1, y-2), (x + 1, y + 2), (x + 2, y-1), (x + 2, y + 1) ในขั้นตอนเดียว ลองนึกภาพกระดานหมากรุกที่ไม่มีที่สิ้นสุดที่มีเพียงอัศวินใน (0, 0): จำเป็นต้องมีกี่ขั้นตอนสำหรับการย้ายอัศวินจาก (0, 0) ถึง (t x , t y ) …

3
การแข่งขันกอล์ฟน้ำแข็ง
เป้าหมายของการท้าทายนี้คือการเขียนโปรแกรมหรือฟังก์ชั่นที่คืนค่าจำนวนนัดน้อยที่สุดที่จำเป็นในการจบหลักสูตร อินพุต เลย์เอาต์ของหลักสูตรสามารถส่งผ่านในรูปแบบและรูปแบบที่คุณต้องการ (อ่านจากคอนโซลผ่านเป็นพารามิเตอร์อินพุตอ่านจากไฟล์หรืออื่น ๆ หลายบรรทัดสตริงสตริงอาร์เรย์อักขระสองมิติ / อาร์เรย์ไบต์) ตำแหน่งเริ่มต้นของลูกบอลและหลุมสามารถส่งผ่านเป็นอินพุตได้เช่นกันโดยไม่จำเป็นต้องแยกวิเคราะห์จากอินพุต ในกรณีทดสอบพวกเขาจะรวมอยู่ในหลักสูตรเพื่อให้แน่ใจว่าไม่มีความสับสนเกี่ยวกับตำแหน่งที่แท้จริง คุณสามารถทำการแมปอักขระที่ป้อนเข้ากับสิ่งอื่นได้ตราบใดที่ยังจำได้ว่าเป็นอักขระที่แตกต่าง (เช่นอักขระ ASCII ที่พิมพ์ได้) เอาท์พุต โปรแกรมจะต้องส่งคืนคะแนนต่ำสุดที่เป็นไปได้ (จำนวนการนัดหยุดงานที่น้อยที่สุดที่จำเป็นในการเข้าถึงรู) สำหรับหลักสูตรใด ๆ ที่ผ่านเป็นอินพุตในรูปแบบที่เหมาะสม (สตริงจำนวนเต็มลอยหรือไฮกุอธิบายผลลัพธ์) หากหลักสูตรเป็นไปไม่ได้ที่จะเอาชนะให้ส่งคืน-1(หรือมูลค่าที่ผิดพลาดอื่น ๆ ที่คุณเลือกซึ่งจะไม่ถูกส่งคืนสำหรับหลักสูตรที่เอาชนะได้) ตัวอย่าง: ในตัวอย่างนี้ตำแหน่งจะถูกระบุด้วย 0, X / Y, จากซ้ายไปขวา, จากบนลงล่าง - แต่คุณสามารถใช้รูปแบบใดก็ได้ที่คุณต้องการเนื่องจากผลลัพธ์นั้นเป็นรูปแบบที่ไม่ขึ้นอยู่กับความสมบูรณ์ การป้อนข้อมูล: ########### # ....# # ...# # ~ . # # ~~~ . # # ~~~~ …

30
จำนวนเงิน Sign-Swapping
รับรายการที่ไม่ว่างของจำนวนเต็มบวก , งานของคุณคือการกำหนดจำนวนค่าที่ไม่ซ้ำของ± x ± y ± z ± …(x,y,z,…)(x,y,z,…)(x, y, z, \dots)±x±y±z±…±x±y±z±…\pm x \pm y \pm z \pm \dots ตัวอย่างเช่นพิจารณารายการ ) มีวิธีที่เป็นไปได้แปดวิธีในการสร้างผลรวม:(1,2,2)(1,2,2)(1, 2, 2) +1+2+2→+5+1+2+2→+5+ 1 + 2 + 2 \to +5 +1+2−2→+1+1+2−2→+1+ 1 + 2 − 2 \to +1 +1−2+2→+1+1−2+2→+1+ 1 − 2 + 2 \to +1 +1−2−2→−3+1−2−2→−3+ …

15
การออกอากาศแบบแยกส่วน
ความท้าทายนี้จะเกี่ยวข้องกับบางส่วนของคุณสมบัติภาษา MATL ที่เป็นส่วนหนึ่งของพฤษภาคม 2018 ภาษาของเดือนเหตุการณ์ บทนำ ใน MATL ฟังก์ชั่นสองอินพุตหลายทำงานองค์ประกอบที่ชาญฉลาดด้วยการออกอากาศ นี่หมายความว่า: Element-wise (หรือvectorized ): ฟังก์ชันใช้เป็นอินพุตสองอาร์เรย์พร้อมขนาดที่ตรงกัน การดำเนินการที่กำหนดโดยฟังก์ชั่นจะใช้กับรายการที่เกี่ยวข้องแต่ละคู่ ตัวอย่างเช่นการใช้สัญลักษณ์หลังการแก้ไข: [2 4 6] [10 20 30] + ให้ ouput [12 24 36] นอกจากนี้ยังทำงานร่วมกับอาร์เรย์หลายมิติ สัญกรณ์[1 2 3; 4 5 6]แสดงถึงอาร์เรย์2× 3(เมทริกซ์) 1 2 3 4 5 6 ซึ่งมีขนาด2ตามมิติแรก (แนวตั้ง) และ3ตามขนาดที่สอง (แนวนอน) ตัวอย่างเช่น [2 4 6; …

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