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

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

4
องค์ประกอบสิบอันดับแรกที่คุณไม่เชื่อว่าอยู่ในชุดนี้
AKA: สร้าง Clickbait จากแถวลำดับ เมื่อกำหนดจำนวนเต็มให้สร้าง clickbait ที่คุ้มค่าขึ้นอยู่กับการจัดเรียงและความยาว: หากเป็น 20 องค์ประกอบหรือน้อยกว่าคุณสามารถสร้างรายการ X อันดับสูงสุด พารามิเตอร์: ความยาวของอาร์เรย์ ตัวเลขสำคัญคือดาราดังนั้นเมื่อใดก็ตามที่มีสองคนอยู่ติดกันมันจะผ่านเหมือนการนินทา พารามิเตอร์: สองช่วงเวลาที่อยู่ติดกันตามลำดับที่ปรากฏในอาร์เรย์ หากหมายเลขใด ๆ ปรากฏขึ้นสองครั้งหรือมากกว่าในอาเรย์นั้นมันน่าตกใจและไม่น่าเชื่อและทุกคนต้องการได้ยินเกี่ยวกับมัน หากมีตัวเลขหลายตัวปรากฏขึ้นสองครั้งให้สร้างข่าวขึ้นมาสำหรับแต่ละคน พิมพ์หนึ่งครั้งต่อหมายเลขที่ไม่ซ้ำกันเท่านั้น พารามิเตอร์: การเกิดขึ้นของจำนวนที่วัดโดยลักษณะที่ปรากฏทั้งหมด หากคุณเห็นองค์ประกอบ 3 รายการเรียงตามลำดับที่ เพิ่มขึ้นแบบ monotonicallyตามด้วยการลดลงอย่างกะทันหันให้บอกว่าพวกเขาเรียงลำดับแล้วหยอกล้อว่าจะเกิดอะไรขึ้นต่อไป ทำเช่นนี้เพียงครั้งเดียวต่อตรง พารามิเตอร์: ความยาวของเส้นตรง นี่คือ clickbaits ที่เกี่ยวข้องที่คุณควรใช้: The Top {{N}} Array Elements {{N1}} And {{N2}} Were Spotted Together, You Won't Believe What …

2
เกาะโดดเดี่ยว
การป้อนข้อมูล: อาร์เรย์ 2 มิติที่มีค่าแตกต่างกันสองค่า ฉันจะใช้0และ1เมื่ออธิบายกฎ รูปแบบการป้อนข้อมูลมีความยืดหยุ่นแน่นอน ท้าทาย: เลขศูนย์คือน้ำและอีกอันคือเกาะ เพื่อให้มั่นใจในความเหงางานของคุณคือล้อมรอบเกาะด้วยน้ำโดยการแทรกแถวและคอลัมน์ของศูนย์ คุณไม่ต้องการเสียน้ำดังนั้นคุณต้องลดปริมาณน้ำที่เติมเข้าไป ในกรณีที่มีวิธีการแก้ปัญหามากกว่าหนึ่งวิธีที่ต้องใช้น้ำในปริมาณเดียวกันคุณควรเพิ่มคอลัมน์ของน้ำไม่ใช่แถว ฉันจะแสดงสิ่งนี้ในกรณีทดสอบ เอาท์พุท: อาร์เรย์ 2D ใหม่ที่ได้รับการแก้ไข รูปแบบผลลัพธ์มีความยืดหยุ่นแน่นอน กรณีทดสอบ: อินพุตและเอาต์พุตถูกคั่นด้วยขีดกลาง เลขศูนย์ที่เพิ่มจะแสดงเป็นตัวอักษรตัวหนา ใช้หนึ่งในคำตอบที่นี่หากคุณต้องการแปลงกรณีทดสอบเป็นรูปแบบที่สะดวกกว่า 1 --- 1 1 1 --- 1 0 1 1 1 1 1 --- 1 0 1 0 0 0 1 0 1 1 0 0 1 --- 1 …

22
รายการคาร์ทีเซียนของรายการด้วยตัวเอง n ครั้ง
เมื่อได้รับรายชื่อ aa และค่าจำนวนเต็มบวกnรหัสของคุณควรเอาท์พุทผลิตภัณฑ์คาร์ทีเซียนของรายการด้วยnเวลาตัวเอง ตัวอย่างเช่นใน pseudocode ฟังก์ชั่นของคุณอาจคล้ายกับ: for x1 in list: for x2 in list: for x3 in list: ... for xn in list: print x1, x2, x3, ... , xn ตัวอย่าง: repeated_cart([1,2,3], 3) 1 1 1 1 1 2 1 1 3 1 2 1 1 2 2 1 2 …

30
ค้นหาตำแหน่งตัวอักษร
แรงบันดาลใจจากCodewars กะตะ เป้าหมายของคุณคือใช้สตริงอินพุตเช่นอันนี้: "'Twas a dark and stormy night..." และส่งคืนสตริงที่มีตำแหน่งของอักขระแต่ละตัวในตัวอักษรคั่นด้วยช่องว่างและละเว้นอักขระที่ไม่ใช่ตัวอักษรเช่นนี้ "20 23 1 19 1 4 1 18 11 1 14 4 19 20 15 18 13 25 14 9 7 8 20" สำหรับความท้าทายเพิ่มเติมคุณสามารถแทนที่ตัวอักษรตัวเลขใด ๆ ในสายเดิมด้วยตัวเอง + 27. ตัวอย่างเช่นจะกลายเป็น"25" "29, 32"นี่เป็นทางเลือกที่สมบูรณ์ คุณต้องใช้ 1 การจัดทำดัชนี ( 'a'==1, 'b'==2ฯลฯ ) กฎเพิ่มเติม: คุณต้องส่งคืนสตริงไม่ใช่อาร์เรย์ …

26
ค่าเฉลี่ยถ่วงน้ำหนัก - ปัญหาแนวโน้มการกด
สมมติว่าอาร์เรย์นี้มีจำนวนการกดอัพที่ฉันทำได้ในแต่ละวันในช่วง 28 วันที่ผ่านมา: [ 20,20,20,30,30,30,30, 35,35,40,40,40,45,45, 50,50,50,50,50,50,50, 60,70,80,90,100,110,120 ] อย่างที่คุณเห็นมันเป็นแนวโน้มที่สูงชันในสัปดาห์ที่ผ่านมาและนั่นเป็นส่วนหนึ่งของข้อมูลนี้ที่ฉันสนใจมากที่สุดยิ่งในอดีตที่ผ่านมายิ่งฉันต้องการให้ข้อมูลนั้นมีค่าเฉลี่ยน้อยลง จำนวนกด ด้วยเหตุนี้ฉันต้องการคำนวณ 'ค่าเฉลี่ย' ซึ่งแต่ละสัปดาห์มีค่ามากกว่าสัปดาห์ที่แล้ว ข้อมูลความเป็นมาไม่ใช่ส่วนหนึ่งของปัญหานี้ ค่าเฉลี่ยปกติ: ผลรวมของค่าทั้งหมด / จำนวนของค่า สำหรับด้านบน: 1440/28 = 51.42857142857143 ค่าเฉลี่ยถ่วงน้ำหนัก: แบ่งอาร์เรย์ออกเป็น 4 กลุ่มจาก 7 และเริ่มอาร์เรย์ใหม่ เพิ่มกลุ่มแรกลงในอาร์เรย์ เพิ่มกลุ่มที่สองในอาร์เรย์สองครั้ง เพิ่มกลุ่มที่สามลงในอาร์เรย์สามครั้ง เพิ่มกลุ่มที่สี่ลงในอาร์เรย์สี่ครั้ง รวมอาเรย์ใหม่ทั้งหมดแล้วหารด้วยความยาวของอาเรย์ใหม่ สำหรับด้านบน: แปลงอาเรย์เป็น: [ 20,20,20,30,30,30,30, # first week once 35,35,40,40,40,45,45, 35,35,40,40,40,45,45, # second week twice 50,50,50,50,50,50,50, 50,50,50,50,50,50,50, …

14
ค้นหารูปแบบในลำดับเลขนี้ของ 1 และ 0
เขียนโปรแกรมหรือฟังก์ชั่นที่สั้นที่สุดซึ่งสร้าง 1,000 หมายเลขหรือลำดับ (0- หรือ 1-indexed) ซึ่งขึ้นต้นด้วย [0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, …

2
เคล็ดลับสำหรับการเล่นกอล์ฟแบบ numpy, scipy หรือ pylab
แล้วมีรายการที่ครอบคลุมของเคล็ดลับสำหรับการหลามที่นี่ดังนั้นสิ่งที่ฉันขอเป็นเคล็ดลับที่เฉพาะนำไปใช้กับการใช้numpy, scipyหรือpylabห้องสมุด สิ่งเหล่านี้อาจเป็นวิธีการย่อรหัสที่ใช้ไปแล้วnumpyหรือวิธีการลดขนาดการดำเนินการของงูใหญ่โดยใช้ไลบรารีเหล่านี้ กรุณาหนึ่งเคล็ดลับต่อคำตอบ
10 code-golf  tips  python 

6
โปรแกรมกระดานหมากรุกรูปสามเหลี่ยมที่ตรวจสอบตัวเอง
โปรแกรมกระดานหมากรุกเป็นโปรแกรมที่ค่าลำดับของตัวละครแต่ละตัวจะเปลี่ยนจากคู่ไปเป็นคี่โดยไม่รวมตัวยุติบรรทัด (ซึ่งอาจเป็นจุดสิ้นสุดบรรทัดมาตรฐาน) โปรแกรมรูปสามเหลี่ยมเป็นโปรแกรมที่แต่ละบรรทัดมีหนึ่งอักขระเพิ่มเติมนอกเหนือจากบรรทัดก่อนหน้าโดยที่บรรทัดแรกจะมีหนึ่งอักขระ คุณไม่จำเป็นต้องจัดการอินพุตว่าง งานของคุณคือการสร้างโปรแกรมที่ตรวจสอบว่าข้อมูลที่กำหนดให้เป็นไปตามเกณฑ์เหล่านั้นและเอาท์พุท / ส่งกลับบางสิ่งที่เป็นจริงถ้าโปรแกรมตรงตามเกณฑ์หรือบางสิ่งบางอย่างผิดพลาด โปรแกรมของคุณจะต้องตรงตามเกณฑ์เหล่านี้ ตัวอย่างของโปรแกรมที่ถูกต้อง G `e @u^ 5r{B ^ cB +$C VA01 กฎระเบียบ โปรแกรมของคุณอาจเริ่มต้นด้วยคี่หรือไบต์คู่ตราบใดที่พาริตี้ของอักขระสลับกัน โปรแกรมของคุณต้องตรวจสอบโปรแกรมที่เริ่มต้นด้วยตัวอักษรคี่หรือคู่ สำหรับอักขระยูนิโค้ดค่าไบต์พื้นฐานจะต้องมีการสลับพาริตี คุณสามารถสันนิษฐานได้ว่าอินพุตนั้นมีอักขระที่พิมพ์ได้เท่านั้น หากโปรแกรมของคุณมี unprintables ก็ควรจะตรวจสอบตัวเอง โปรแกรมของคุณอาจมีการขึ้นบรรทัดใหม่หนึ่งบรรทัดซึ่งไม่จำเป็นต้องได้รับอนุญาตจากการตรวจสอบของคุณเนื่องจากคุณสามารถสันนิษฐานได้ว่าสิ่งนี้จะถูกลบก่อนที่จะทำการตรวจสอบ ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม รหัสสั้นที่สุดเป็นไบต์ในแต่ละภาษาชนะ

7
ที่นั่นฉันแก้ไขมัน (มีเชือก)
ที่เกี่ยวข้อง: ความท้าทายค่อนข้างคล้ายกัน (แต่ง่ายกว่ามาก) ในแนวนอน: ที่นั่นฉันซ่อมมัน (ด้วยเทป) ท้าทาย: กำหนดสตริงที่มีตัวอักษรพิมพ์ใหญ่และ / หรือตัวพิมพ์เล็ก (แล้วแต่จำนวนใดก็ได้ที่คุณต้องการ) และขึ้นบรรทัดใหม่ใส่ในropeแนวตั้งเพื่อแก้ไข เราทำสิ่งนี้โดยการตรวจสอบความแตกต่างของตัวอักษรสองตัวที่อยู่ติดกันในตัวอักษร (ละเว้นการล้อมรอบและลงไปด้านล่างเท่านั้น) และเติมเต็มพื้นที่ROPE/ มากเท่าropeที่เราต้องการ หมายเหตุ: ความแตกต่างที่สำคัญอีกข้อหนึ่งระหว่างการท้าทายนี้และการท้าทายที่นั่นฉันแก้ไข (ด้วยเทป)คือเราไม่ต้องเสียropeเวลาเช่นนี้กับที่เราทำกับtape(แนะนำโดย@JonathanAllanในส่วนหนึ่งของการท้าทาย) ตัวอย่าง: การป้อนข้อมูล: abc bcd ddd eex gfz hka imh เอาท์พุท: abc bcd Rdd deE efR OPO gEP hRE iOR kO PP mE R O P E R O P E R …

4
เศษส่วนต่อเนื่องของผลรวมหลักของ Square Roots
บทนำ งานของคุณคือการสร้างคำศัพท์ 1,000 คำแรกในการแสดงเศษส่วนต่อเนื่องของผลรวมหลักที่สองของรากที่สองของ 2 และรากที่สองของ 3 กล่าวอีกนัยหนึ่งให้ผลิตรายการต่อไปนี้อย่างแน่นอน (แต่รูปแบบผลลัพธ์มีความยืดหยุ่น) [2, 6, 1, 5, 7, 2, 4, 4, 1, 11, 68, 17, 1, 19, 5, 6, 1, 5, 3, 2, 1, 2, 3, 21, 1, 2, 1, 2, 2, 9, 8, 1, 1, 1, 1, 6, 2, 1, 4, 1, 1, …

9
การบรรจบกันของกระบวนการมาร์คอฟ
ท้าทาย ให้เมทริกซ์ซ้ายหรือขวาสุ่มซึ่งขีด จำกัด เมื่อ x เข้าใกล้อนันต์ของเมทริกซ์กับกำลังของ x เข้าใกล้เมทริกซ์ด้วยค่า จำกัด ทั้งหมดคืนเมทริกซ์ที่เมทริกซ์ลู่เข้าหากัน โดยพื้นฐานแล้วคุณต้องการคูณเมทริกซ์ด้วยตัวเองจนกว่าผลลัพธ์จะไม่เปลี่ยนแปลงอีกต่อไป กรณีทดสอบ [[7/10, 4/10], [3/10, 6/10]] -> [[4/7, 4/7], [3/7, 3/7]] [[2/5, 4/5], [3/5, 1/5]] -> [[4/7, 4/7], [3/7, 3/7]] [[1/2, 1/2], [1/2, 1/2]] -> [[1/2, 1/2], [1/2, 1/2]] [[1/3, 2/3], [2/3, 1/3]] -> [[1/2, 1/2], [1/2, 1/2]] [[1/10, 2/10, …
10 code-golf  matrix 

3
ล่าม RoboZZle
งานของคุณคือการเขียนล่าม RoboZZle หากคุณไม่คุ้นเคยกับเกมนี้โปรดดูวิดีโอที่ robozzle.comหรืออ่านคำอธิบายของฉันด้านล่าง หุ่นยนต์อาศัยอยู่บนกริดสี่เหลี่ยมของสี่เหลี่ยมสีแดงเขียวน้ำเงินหรือดำ สี่เหลี่ยมสีดำไม่สามารถเข้าถึงได้ คนอื่นสามารถเข้าถึงได้และบางคนก็มีดาว เป้าหมายคือการรวบรวมดาวทั้งหมดโดยไม่ต้องเหยียบบนช่องสี่เหลี่ยมสีดำหรือตกจากแผนที่ หุ่นยนต์ใช้พื้นที่หนึ่งตารางเมตรและหันไปทิศทางใดทิศทางหนึ่ง - ซ้าย, ขวา, ขึ้นหรือลง มันทำตามคำแนะนำเหมือนการประกอบที่จัดกลุ่มเป็นรูทีนย่อย F1, F2, ... , F5 คำสั่งเป็นคู่ของคำกริยา ("ไม่มี", "ถ้าเป็นสีแดง", "ถ้าเป็นสีเขียว", "ถ้าเป็นสีน้ำเงิน") และการกระทำ ("ไปข้างหน้า", "เลี้ยวซ้าย", "เลี้ยวขวา", "วาดสี่เหลี่ยมจัตุรัสสีแดงปัจจุบัน", "ทาสีเขียว", "ทาสีฟ้า", "ไม่ทำอะไรเลย", "เรียก F1", ... , "เรียก F5") การเรียกรูทีนย่อยใช้ stack และสามารถเรียกซ้ำได้ เช่นเดียวกับในการเขียนโปรแกรมทั่วไปหลังจากคำสั่งสุดท้ายของรูทีนย่อยเสร็จสมบูรณ์การดำเนินการจะดำเนินต่อจากจุดที่เรียกรูทีนย่อย การประหารเริ่มต้นจากคำสั่งแรกของ F1 และดำเนินต่อไปจนกระทั่งทั้งหุ่นยนต์ได้เยี่ยมชมช่องสี่เหลี่ยมที่มีดาวทั้งหมดหรือเมื่อหุ่นยนต์เหยียบบนสี่เหลี่ยมสีดำหรือนอกแผนที่หรือมีการดำเนินการคำสั่ง 1,000 ครั้ง (เพรดิเคตที่ล้มเหลว ไม่นับ) หรือไม่มีคำแนะนำในการดำเนินการอีกต่อไป …

11
N คูณโปรแกรมสำหรับหมายเลข N-th
ให้อาร์เรย์ของจำนวนเต็มบวกAเป็นอินพุตสร้างโปรแกรมที่เมื่อทำซ้ำหลายkครั้งให้ส่งออกค่าkth (1-index) ของอาร์เรย์ ตัวอย่างเช่นถ้าอาร์เรย์เป็น[1,11]ผลผลิตที่ควรจะเป็นโปรแกรมที่เอาท์พุทและเมื่อซ้ำกันสองครั้งเอาท์พุท1 11โค้ดเช่นเดียวกับprint(end="1");Python 3 ใช้งานได้: print(end="1");พิมพ์ 1 และprint(end="1");print(end="1");พิมพ์ 11 ผลรวมขนาดเล็กที่สุดของความยาวรหัสเพื่อแก้ปัญหากรณีทดสอบทั้งหมดชนะ รหัสเมตาของคุณควรแก้ไข 500 กรณีทดสอบใน 60 วินาทีและรหัสโซลูชันของคุณแต่ละรายการควรกลับมาเป็น 10 วินาที รหัส Meta และรหัสโซลูชันไม่จำเป็นต้องเป็นภาษาเดียวกัน แต่โซลูชันทั้งหมดที่โปรแกรมเมตาที่คุณสร้างขึ้นควรเป็นภาษาเดียวกัน สามารถดูข้อมูลและตัวกำเนิดล่วงหน้าได้ที่นี่ 7 วันต่อมาจะใช้เวลารวมของการส่ง (เช่น 12:34 หมายถึง 1234) เพื่อเป็นเมล็ดสุ่มและสร้างกรณีทดสอบอื่นเป็นกรณีทดสอบสุดท้าย เมล็ดสุดท้ายคือ 7335 ใน GMT + 8 ดังนั้นข้อมูลการทดสอบขั้นสุดท้ายอยู่ที่นี่

3
สร้างรายการโดยใช้หมายเลขเฉพาะ
คุณได้รับเหรียญ N กอง คุณได้ตัดสินใจแบ่งกองB 1 , B 2 , ... , B N แต่ละกองในกลุ่มคนที่แยกกัน จำนวนคนที่รับเหรียญจะต้องเป็นจำนวนเฉพาะและจำนวนเงินที่มอบให้กับแต่ละคนจะต้องแตกต่างกันในแต่ละกอง อินพุต: N, B 1 , B 2 , ... , B N (จำนวนเหรียญในแต่ละกอง) เอาท์พุท: NP 1 , NP 2 , ... , NP Nโดย NP เป็นจำนวนคน (จำนวนเฉพาะ) ที่ได้รับเหรียญ ถ้าเรื่องนี้เป็นไปไม่ได้แล้วให้ผลผลิตผลบางอย่าง unachievable (เช่น0, -1, None, []หรือ"impossible") หรือเพิ่มข้อผิดพลาด …

2
สี่เหลี่ยมจัตุรัสที่ใหญ่ที่สุดในกริด [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Code Golf Stack Exchange ปิดให้บริการใน2 ปีที่ผ่านมา ท้าทาย ให้กริดแบบนี้ 1 2 3 4 5 6 7 8 1 . . . . . . . . 2 . # . . . # . . 3 . . . . . . . . 4 . …

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