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

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

23
ฉันโอนรหัสที่มาคุณแปลงข้อมูล!
rip-offของrip-offของrip-offของrip-off ลงคะแนนโหวตเหล่านั้น! งานของคุณถ้าคุณต้องการที่จะยอมรับมันคือการเขียนโปรแกรม / ฟังก์ชั่นที่เอาต์พุต / ส่งกลับอินพุต / อาร์กิวเมนต์¹ ส่วนที่ยุ่งยากคือถ้าฉันแปลงรหัสต้นฉบับ²ของคุณผลลัพธ์ / ผลก็ต้องถูกเปลี่ยนเช่นกัน คุณสามารถเลือกชนิดข้อมูล 2D ที่โซลูชันของคุณสามารถยอมรับได้ ตัวอย่างเช่นรายการของรายการ, เมทริกซ์, รายการของสตริง, ฯลฯ ระบุสถานะที่มันจัดการ คุณอาจสันนิษฐานว่าอินพุตจะเป็นรูปสี่เหลี่ยมผืนผ้าเสมอและจะมีความยาว 1 หรือมากกว่าตามแต่ละมิติ สำหรับจุดประสงค์ในการเคลื่อนย้ายบรรทัดสั้น ๆ ในซอร์สโค้ดของคุณจะถูกพิจารณาว่าเป็นเบาะที่มีช่องว่างต่อท้ายจนกว่าจะเป็นรูปสี่เหลี่ยมผืนผ้า เนื่องจากนี่คือโค้ดกอล์ฟเป้าหมายคือการเพิ่มประสิทธิภาพนับจำนวนไบต์ของซอร์สโค้ดต้นฉบับ (ไม่ใช่เวอร์ชันที่ถูกย้าย) ตัวอย่าง สมมติว่าโซลูชันของคุณใช้เมทริกซ์ตัวเลขและซอร์สโค้ดของคุณคือ AB DEF และอินพุต / อาร์กิวเมนต์ของมันคือ [[1,2],[3,4],[5,6]]ข้อโต้แย้งของมันคือ ถ้าฉันเขียน AD BE F แทนและเรียกใช้ผลผลิต / [[1,3,5],[2,4,6]]ผลต้อง สมมติว่าโซลูชันของคุณใช้สตริงที่คั่นด้วยตัวป้อนบรรทัดและซอร์สโค้ดของคุณคือ ABC และอินพุต / อาร์กิวเมนต์ของมันคือ "96\n"ข้อโต้แย้งของมันคือ ถ้าฉันเขียน …

5
เครื่องเสมือน 8 บิต
พื้นหลัง ฉันชอบชิป 8 บิต 6502 แบบเก่าของฉัน มันสนุกมากที่จะไขความท้าทายบางอย่างที่นี่บน PPCG ในรหัสเครื่อง 6502 แต่บางสิ่งที่ควรจะง่าย (เช่นอ่านข้อมูลหรือส่งออกไปยัง stdout) นั้นยุ่งยากโดยไม่จำเป็นในรหัสเครื่อง ดังนั้นจึงมีความคิดคร่าวๆในใจของฉัน: คิดค้นเครื่องเสมือน 8 บิตของตัวเองที่ได้รับแรงบันดาลใจจาก 6502 แต่ด้วยการออกแบบที่ปรับเปลี่ยนให้ใช้งานได้มากกว่าสำหรับความท้าทาย เริ่มใช้บางสิ่งฉันรู้ว่านี่อาจเป็นความท้าทายที่ดีถ้าการออกแบบ VM ลดลงจนเหลือน้อยที่สุด :) งาน ใช้เครื่องเสมือน 8 บิตที่สอดคล้องกับข้อกำหนดต่อไปนี้ นี่คือโค้ดกอล์ฟดังนั้นการติดตั้งที่มีไบต์น้อยที่สุดจะชนะ อินพุต การใช้งานของคุณควรใช้อินพุตต่อไปนี้: ไบต์ที่ไม่ได้ลงนามเดียวpcนี่คือตัวนับโปรแกรมเริ่มต้น (ที่อยู่ในหน่วยความจำที่ VM เริ่มดำเนินการ0- ตาม) รายการไบต์ที่มีความยาวสูงสุดของ256รายการนี่คือ RAM สำหรับเครื่องเสมือน (ที่มีเนื้อหาเริ่มต้น) คุณสามารถรับอินพุตนี้ในรูปแบบที่สมเหตุสมผล เอาท์พุต รายการไบต์ซึ่งเป็นเนื้อหาสุดท้ายของ RAM หลังจาก VM ยกเลิก (ดูด้านล่าง) คุณสามารถสมมติว่าคุณได้รับการป้อนข้อมูลที่นำไปสู่การยกเลิกในที่สุด อนุญาตรูปแบบที่เหมาะสม …

23
คุณช่วยหยุดสำรับไพ่และเล่นได้แล้ว
ท้าทาย: การป้อนข้อมูล:รายการของจำนวนเต็มบวกที่แตกต่างกันอยู่ในช่วงต่อ A [1,list-size][1,list-size][1, \text{list-size}] ] เอาท์พุท:จำนวนเต็ม: จำนวนครั้งที่รายการเป็นระลอกคลื่นน้อย-สับ สำหรับรายการนี่หมายถึงรายการถูกแบ่งออกเป็นสองส่วนและแบ่งเป็นสองส่วน (เช่น riffle-shuffling รายการ[1,2,3,4,5,6,7,8,9,10]จะส่งผลครั้งเดียว[1,6,2,7,3,8,4,9,5,10]ดังนั้นสำหรับความท้าทายนี้อินพุต[1,6,2,7,3,8,4,9,5,10]จะส่งผลให้1) กฏท้าทาย: คุณสามารถสมมติว่ารายการจะมีจำนวนเต็มบวกในช่วง[1,list-size][1,list-size][1, \text{list-size}] (หรือ[0,list-size−1][0,list-size−1][0, \text{list-size}-1]หากคุณเลือกที่จะมี 0-indexed input-list) คุณสามารถสมมติว่ารายการอินพุตทั้งหมดจะเป็นรายการ riffle-shuffled ที่ถูกต้องหรือรายการที่เรียงลำดับซึ่งไม่ได้สับ (ในกรณีที่เอาต์พุตเป็น0) คุณสามารถสันนิษฐานว่ารายการอินพุตจะมีค่าอย่างน้อยสามค่า ตัวอย่างทีละขั้นตอน: การป้อนข้อมูล: [1,3,5,7,9,2,4,6,8] Unshuffling ครั้งหนึ่งมันเคยกลายเป็น: [1,5,9,4,8,3,7,2,6]เพราะทุกรายการแม้ 0 การจัดทำดัชนีมาก่อน[1, ,5, ,9, ,4, ,8]แล้วทุกรายการ 0 [ ,3, ,7, ,2, ,6, ]คี่จัดทำดัชนีหลังจากนั้น ยังไม่ได้สั่งรายการดังนั้นเราจึงดำเนินการต่อไป: การแยกรายการอีกครั้งจะกลายเป็น: [1,9,8,7,6,5,4,3,2] อีกครั้งกลายเป็น: [1,8,6,4,2,9,7,5,3] แล้ว: [1,6,2,7,3,8,4,9,5] …

21
จุดสุ่มบนทรงกลม
ความท้าทาย เขียนโปรแกรมหรือฟังก์ชั่นที่ไม่มีอินพุตและเอาต์พุตเวกเตอร์ที่มีความยาว111ในทิศทางสุ่มแบบตามหลักทฤษฏี นี่เทียบเท่ากับจุดสุ่มบนทรงกลมที่อธิบายโดยx2+ y2+ z2= 1x2+Y2+Z2=1x^2+y^2+z^2=1 ส่งผลให้เกิดการกระจายเช่นนี้ เอาท์พุต ทุ่นลอยสามอันจากการแจกแจงแบบสุ่มในทางทฤษฎีซึ่งสมการx2+y2+z2=1x2+y2+z2=1x^2+y^2+z^2=1มีค่าเป็นจริงถึงขีด จำกัด ที่แม่นยำ คำพูดที่ท้าทาย การกระจายแบบสุ่มจะต้องมีเครื่องแบบในทางทฤษฎี นั่นคือถ้าตัวสร้างตัวเลขสุ่มหลอกถูกแทนที่ด้วย RNG จริงจากตัวเลขจริงมันจะส่งผลให้มีการกระจายจุดสุ่มบนทรงกลมอย่างสม่ำเสมอ การสร้างตัวเลขสุ่มสามตัวจากการแจกแจงเครื่องแบบและการทำให้เป็นมาตรฐานนั้นไม่ถูกต้อง: จะมีอคติต่อมุมของพื้นที่สามมิติ ในทำนองเดียวกันการสร้างตัวเลขสุ่มสองตัวจากการแจกแจงเครื่องแบบและใช้พวกมันเป็นพิกัดทรงกลมนั้นไม่ถูกต้อง: จะมีอคติต่อขั้วของทรงกลม ความสม่ำเสมอที่เหมาะสมสามารถทำได้โดยอัลกอริทึมรวมถึง แต่ไม่ จำกัด เพียง: สร้างตัวเลขสุ่มสามตัวxxx , yyyและzzzจากการแจกแจงแบบปกติ (เกาส์เซียน) ประมาณ000และทำให้เป็นมาตรฐาน ตัวอย่างการนำไปปฏิบัติ สร้างสามตัวเลขสุ่มxxx , yyyและzzzจากเครื่องแบบกระจายอยู่ในช่วง(−1,1)(−1,1)(-1,1) ) คำนวณความยาวของเวคเตอร์โดยl=x2+y2+z2−−−−−−−−−−√l=x2+y2+z2l=\sqrt{x^2+y^2+z^2} 2 จากนั้นถ้าl>1l>1l>1ให้ปฏิเสธเวกเตอร์และสร้างชุดตัวเลขใหม่ มิฉะนั้นถ้าl≤1l≤1l \leq 1ให้เวกเตอร์เป็นปกติและกลับผลลัพธ์ ตัวอย่างการนำไปปฏิบัติ สร้างตัวเลขสุ่มสองตัวที่iiiและjjjจากการแจกแจงเครื่องแบบในช่วง(0,1)(0,1)(0,1)และแปลงให้เป็นพิกัดทรงกลมดังนี้: θϕ=2×π×i=cos−1(2×j−1)θ=2×π×iϕ=cos−1⁡(2×j−1)\begin{align}\theta &= 2 \times \pi \times i\\\\\phi &= …

10
ค้นหาผลิตภัณฑ์ดอทของ Rationals
ฉันอยู่ที่บ้านเพื่อนเพื่อทานอาหารค่ำและพวกเขาแนะนำแนวคิดของ "พื้นที่เวกเตอร์ไพรม์แฟคเตอร์" ในพื้นที่นี้จำนวนเต็มบวกจะแสดงเป็นเวกเตอร์ดังกล่าวที่n TH องค์ประกอบในเวกเตอร์คือจำนวนครั้งที่n TH แบ่งนายกจำนวน (โปรดทราบว่านี่หมายความว่าเวกเตอร์ของเรามีจำนวนคำไม่ จำกัด ) ตัวอย่างที่20คือ 2 0 1 0 0 0 ... เพราะตัวประกอบที่สำคัญของมันคือ2 * 2 * 5 เนื่องจากการแยกตัวประกอบเฉพาะนั้นไม่เหมือนใครแต่ละตัวเลขจึงสอดคล้องกับเวกเตอร์หนึ่งตัว เราสามารถเพิ่มเวกเตอร์โดยการเพิ่มรายการของพวกเขาในแนวนอน นี่เหมือนกับการคูณตัวเลขที่สัมพันธ์กัน เราสามารถทำการคูณสเกลาร์ซึ่งคล้ายกับการเพิ่มจำนวนที่เกี่ยวข้องกับกำลัง ปัญหาคือว่าพื้นที่นี้ไม่ได้เป็นพื้นที่เวคเตอร์ในความเป็นจริงเพราะไม่มีผู้รุกราน ถ้าเราไปข้างหน้าและเพิ่มผู้รุกรานและปิดพื้นที่เวกเตอร์ตอนนี้เรามีวิธีแสดงจำนวนตรรกยะเชิงบวกทุกอย่างในฐานะเวกเตอร์ ถ้าเราเก็บความจริงที่ว่าการบวกเวกเตอร์แทนการคูณ จากนั้นค่าผกผันของจำนวนธรรมชาติคือส่วนกลับของ ตัวอย่างเช่นหมายเลข20มีเวกเตอร์ 2 0 1 0 0 0 ... ดังนั้นเศษส่วน1/20จึงเป็นค่าผกผัน -2 0 -1 0 0 0 ... ถ้าเราอยากหาเวกเตอร์ที่เกี่ยวข้องกับเศษส่วนเช่น14/15เราก็จะได้14 1 0 …

9
ป้ายทะเบียนของฉันมีกี่จุด
(นี่คือคำถามรหัสกอล์ฟครั้งแรกของฉัน) เมื่อฉันยังเป็นเด็กพ่อของฉันและฉันคิดค้นเกมที่แผ่นป้ายทะเบียนรถที่เราเห็นบนรถสามารถให้คะแนนตามกฎง่ายๆ: จำนวน X ของตัวอักษรหรือตัวเลขเดียวกันให้ X-1 คะแนนตัวอย่าง: 22 = 1 point aa = 1 point 5555 = 3 points ตัวเลขต้องอยู่ถัดจากแต่ละคนดังนั้น3353ให้ 1 คะแนนเท่านั้นเนื่องจาก 5 แบ่งลำดับของ 3 ลำดับของตัวเลข X ในลำดับจากน้อยไปหามากหรือจากมากไปน้อยอย่างน้อย 3 ให้เป็นคะแนน X ตัวอย่าง: 123 = 3 points 9753 = 4 points 147 = 3 points ระบบคะแนนใช้งานได้กับตัวเลข 1 หลักเท่านั้นดังนั้น1919อย่าให้แต้มและ14710ให้ 3, (147) เท่านั้น …
31 code-golf  string 

30
การจำลองการกระจายลูกเต๋า
งานของคุณคือการสร้างโปรแกรมที่ใช้จำนวนเต็มn > 1และแสดงผลการหมุนของnแม่พิมพ์แบบด้านเดียว อย่างไรก็ตามลูกเต๋านี้เป็นไปตามกฎระเบียบสำหรับการระเบิดลูกเต๋า เมื่อคุณหมุนแม่พิมพ์ให้ตรวจสอบค่าที่คุณสะสม หากคุณมีค่าสูงสุดสำหรับการตายชนิดนั้น (บน d4 มาตรฐานที่จะเป็น 4 หรือ 6 ใน d6 เป็นต้น) ให้หมุนอีกครั้งและเพิ่มการม้วนใหม่ไปยังผลรวมนั้น แต่ละม้วนจะเพิ่มไปยังผลรวมจนกว่าคุณจะไม่หมุนหมายเลขสูงสุดอีกต่อไป หมายเลขสุดท้ายนั้นยังคงถูกเพิ่มเข้ามา โปรแกรมของคุณควรใช้จำนวนเต็มหนึ่งตัวnและหมุนตัวnตายด้านระเบิด นี่คือการกระจายตัวอย่างที่จะแสดงสิ่งที่มันควรมีลักษณะเหมือน n=4โปรดทราบว่าคุณไม่ควรส่งออกทวีคูณใด ๆเนื่องจากจะระเบิดเสมอn คุณสามารถสันนิษฐานได้ว่าสแต็คขนาดสำหรับการเรียกซ้ำใด ๆ ที่คุณทำคือไม่มีที่สิ้นสุดและฟังก์ชั่นแบบสุ่มของคุณต้องเป็นไปตามมาตรฐานของเราสำหรับการสุ่ม (ในตัวเครื่องกำเนิดไฟฟ้าแบบสุ่มหรือเวลา / วัน ) ฟังก์ชั่นการสุ่มของคุณควรจะสม่ำเสมอที่สุดเท่าที่จะเป็นไปได้เทียบกับการกระจายตัวแบบเรขาคณิตเพราะนี่คือลูกเต๋าที่เรากำลังพูดถึง
31 code-golf  random 

30
ฉันเป็นตัวเองหรือไม่
จำนวนตัวเอง (เรียกว่ายังมีจำนวนโคลอมเบียหรือ Devlali) เป็นจำนวนธรรมชาติxที่สมการมีโซลูชั่นสำหรับจำนวนธรรมชาติใดn + <digit sum of n> = x ๆ nยกตัวอย่างเช่น21ไม่ได้เป็นจำนวนตนเองเป็นผลในการn = 15 15 + 1 + 5 = 21ในขณะที่20 เป็นจำนวนตัวเองที่ไม่nสามารถพบได้ซึ่งตอบสนองความเท่าเทียมกัน เนื่องจากคำจำกัดความนี้อ้างถึงผลรวมหลักจึงขึ้นอยู่กับฐาน สำหรับจุดประสงค์ของการท้าทายนี้เราจะพิจารณาตัวเลขฐาน 10 ตัวเท่านั้นซึ่งเป็นลำดับA003052ใน OEIS เลขฐานสอง ( A010061 ) และหมายเลขฐาน 100 ( A283002 ) ยังได้รับการปรับเทียบ ความท้าทาย รับจำนวนเต็มบวกxเป็นอินพุตให้ส่งออกค่าจริงถ้าxเป็นตัวเลขตัวเองในฐาน 10 และค่าความเท็จเป็นอย่างอื่น สำหรับการชี้แจงของ truthy และ falsey ค่าอ้างอิงไปยังโพสต์เมตานี้ในเรื่อง คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบและอาจมีการป้อนข้อมูลและเอาท์พุทในช่องสัญญาณปกติ แน่นอนช่องโหว่มาตรฐานถูกห้าม นี่คือcode-golfดังนั้นยิ่งคำตอบของคุณสั้นลงเท่านั้น …

3
ออกแบบคอมพิวเตอร์ชุดคำสั่งหนึ่งชุด!
หมายเหตุ: ฉันยินดีที่จะให้รางวัลกับคำตอบที่ฉันคิดว่าน่าสนใจ ความท้าทายของคุณคือการออกแบบคอมพิวเตอร์ชุดคำสั่งทัวริงที่สมบูรณ์ (OISC): OISC เป็นเครื่องที่เป็นนามธรรมที่ใช้เพียงคำสั่งเดียว - obviating ความต้องการ opcode ภาษาเครื่อง ด้วยตัวเลือกที่ชาญฉลาดสำหรับการเรียนการสอนเดียวและได้รับทรัพยากรที่ไม่ จำกัด OISC จึงสามารถเป็นคอมพิวเตอร์สากลได้ในลักษณะเดียวกับคอมพิวเตอร์ทั่วไปที่มีคำสั่งมากมาย ที่นี่นี้เป็นตัวอย่างของคำสั่งเดียวที่ทำให้ OISC สมบูรณ์แบบของทัวริง กฎ: คุณต้องให้การตีความหรือการพิสูจน์ดังกล่าว คุณต้องจัดเตรียมล่ามสำหรับภาษาของคุณ ล่ามนี้ควรถูก จำกัด โดยหน่วยความจำ / เวลา (เช่นต้องไม่มีข้อ จำกัด ที่ผู้ใช้กำหนด) หากคุณไม่ได้จัดหาล่ามให้กับภาษาของคุณ (ไม่ว่าจะด้วยเหตุผลใดก็ตามนอกจากความเกียจคร้าน) คุณต้องพิสูจน์ว่าเป็นไปได้ที่จะมีคนเขียน ล่ามจะต้องเป็นไปได้ต้องเป็นไปได้ คุณต้องพิสูจน์ความสมบูรณ์ของทัวริง คุณต้องรวมหลักฐานที่เป็นทางการว่าภาษาของคุณนั้นทัวริงสมบูรณ์ วิธีง่ายๆในการทำเช่นนี้คือการพิสูจน์ว่าสามารถตีความหรือมีพฤติกรรมเช่นเดียวกับภาษาทัวริงที่สมบูรณ์แบบอื่น ภาษาพื้นฐานที่สุดในการตีความจะBrainf ** k ตัวอย่างเช่นภาษาปกติที่มีคำสั่งทั้งหมดเหมือนกับ Brainf ** k (และข้อ จำกัด หน่วยความจำที่ผู้ใช้กำหนด) คือทัวริงสมบูรณ์เพราะสิ่งใดก็ตามที่สามารถนำมาใช้ใน Brainf ** k …

30
ศูนย์รวมความท้าทายชั้นนำ
ความท้าทาย กำหนดจำนวนเต็มสองค่าเป็นอินพุต ( xและy), ส่งออกxเป็นสตริงที่มีเลขศูนย์นำหน้าจำนวนมากที่จำเป็นเพื่อให้yอักขระมีความยาวโดยไม่มีเครื่องหมาย กฎระเบียบ หากxมีมากกว่าyตัวเลขเอาท์พุทxเป็นสตริงโดยไม่มีการดัดแปลง ไม่ยอมรับเอาต์พุตเป็นจำนวนเต็มแม้ว่าจะไม่มีเลขศูนย์นำหน้า เมื่อxใดที่เป็นลบให้รักษา-ตามที่เป็นและดำเนินการกับค่าสัมบูรณ์ ค่าลบyควรถือเป็น 0 ซึ่งหมายความว่าคุณแสดงผลxตามที่เป็น (แต่เป็นสตริง) ตัวอย่าง: IN: (1,1) OUT: "1" IN: (1,2) OUT: "01" IN: (10,1) OUT: "10" IN: (-7,3) OUT: "-007" IN: (-1,1) OUT: "-1" IN: (10,-1) OUT: "10" IN: (0,0) OUT: "0" IN: (0,1) OUT: "0" IN: (0,4) OUT: "0000" …
31 code-golf  string 

30
ฟีโบนักชีไบนารี
ท้าทาย คุณต้องสร้างโปรแกรมหรือฟังก์ชั่นที่ใช้จำนวนเต็มบวก N คำนวณคำศัพท์ N แรกของลำดับฟีโบนักชีในรูปแบบไบนารีต่อกันเป็นเลขฐานสองเดียวแปลงตัวเลขนั้นกลับเป็นทศนิยมจากนั้นจึงส่งทศนิยมเป็น จำนวนเต็ม. ตัวอย่างเช่น 1 -> [0] -> 0 to decimal outputs 0 3 -> [0, 1, 1] -> 011 to decimal outputs 3 4 -> [0, 1, 1, 10] -> 01110 to decimal outputs 14 คุณไม่จำเป็นต้องเอาท์พุท->เพียงแค่จำนวน (เช่นถ้าผู้ใช้พิมพ์4เอาท์พุท14) ลูกศรเป็นเพียงเพื่อช่วยอธิบายสิ่งที่โปรแกรมต้องทำ กรณีทดสอบ 1 -> 0 2 -> 1 …

3
แผ่นเพลงเครื่องกำเนิดไฟฟ้า ASCII-art
หมายเหตุ : Anders Kaseorg เตือนฉันว่านี่อาจเป็นปัญหาซ้ำซ้อนของคำถามก่อนหน้านี้อีกคำถามหนึ่ง ดูเหมือนจะเป็นเช่นนั้นและฉันขอโทษที่ฉันไม่พบคำถามนั้นก่อนโพสต์คำถามนี้ อย่างไรก็ตามคำถามนั้นได้รับคำตอบเพียงคำตอบเดียวและคำถามนี้ง่ายกว่าในกรณีที่คุณต้องการลองครั้งนี้ ฉันจะเข้าใจว่าคำถามนี้ท้ายถูกทำเครื่องหมายว่าซ้ำกัน ความท้าทาย รับอินพุตเช่นนี้: 8g 8Df 4cs 2C 1A เขียนโปรแกรม / ฟังก์ชั่นที่สั้นที่สุดที่สร้างเอาต์พุตเช่นนี้: /\ -o- | | ---|-|---------------------------------------------------|-| |/ | | ---/|--------|\----b-*-----------------------------------|-| / | | | | o | | -|--|--------|------|-----------------|------------------|-| | (| \ | | | | | | -|--|--)----*-------|/---------|------|------------------|-| \ | / | …

21
The Three 'R's: ย้อนกลับเรียงลำดับทำซ้ำ
ขณะที่ดูตัวเลขกับตัวเลขฉันพบการเปลี่ยนแปลงที่น่าสนใจที่คุณสามารถสร้างจากรายการตัวเลข ถ้าคุณทำซ้ำการเรียงสับเปลี่ยนแบบนี้บ่อยครั้งคุณจะกลับมาที่อาร์เรย์เดิมเสมอ ลองใช้รายการต่อไปนี้: [1, 2, 3, 4, 5] ตัวอย่างเช่น ย้อนกลับอาร์เรย์ ตอนนี้อาร์เรย์ของเราคือ [5, 4, 3, 2, 1] จัดลำดับใหม่ (สลับ) แต่ละคู่ รายการของเรามี 2 คู่และ[5, 4] [3, 2]น่าเสียดายที่เราไม่สามารถจัดกลุ่ม1เป็นคู่ได้ดังนั้นเราจะทิ้งมันไว้เป็นของตัวเอง หลังจากสลับแต่ละคู่อาร์เรย์ใหม่จะเป็น: [4, 5, 2, 3, 1] ทำซ้ำขั้นตอนที่ 1 และ 2 จนกระทั่งเรากลับสู่อาร์เรย์เดิม นี่คือ 4 ขั้นตอนถัดไป: Step 2: Start: [4, 5, 2, 3, 1] Reversed: [1, 3, …

13
ตัวจำลองการทอด
งานของคุณคือสร้างแบบจำลองผลกระทบของการปะทะกับชิ้นส่วนของอาหาร กรุณาเพิ่มเปลือกสามชั้น [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0], // in [0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0], [0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]] | V [[0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,1,2], [0,0,2,1,2,2,0,0,0,0,0,0,0,2,2,0,2,0], [0,0,2,1,1,1,2,0,0,0,0,0,2,1,1,2,0,0], [0,0,0,2,1,2,0,0,0,0,0,2,1,1,2,1,2,0], [0,0,0,0,2,0,0,0,0,0,0,0,2,1,1,1,2,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0]] | V [[0,0,3,2,3,3,0,0,0,0,0,0,0,3,3,2,1,2], [0,3,2,1,2,2,3,0,0,0,0,0,3,2,2,3,2,3], [0,3,2,1,1,1,2,3,0,0,0,3,2,1,1,2,3,0], [0,0,3,2,1,2,3,0,0,0,3,2,1,1,2,1,2,3], [0,0,0,3,2,3,0,0,0,0,0,3,2,1,1,1,2,3], [0,0,0,0,3,0,0,0,0,0,0,0,3,2,2,2,3,0]] | V [[0,4,3,2,3,3,4,0,0,0,0,0,4,3,3,2,1,2], // out [4,3,2,1,2,2,3,4,0,0,0,4,3,2,2,3,2,3], [4,3,2,1,1,1,2,3,4,0,4,3,2,1,1,2,3,4], [0,4,3,2,1,2,3,4,0,4,3,2,1,1,2,1,2,3], [0,0,4,3,2,3,4,0,0,0,4,3,2,1,1,1,2,3], [0,0,0,4,3,4,0,0,0,0,0,4,3,2,2,2,3,4]] เครื่องช่วยมองเห็นเล็กน้อย: แสดงตัวอย่างโค้ด body { background-color:#222; color:lightgray; } <pre> [[<span style="color:gold">0</span>,<span style="color:gold">0</span>,<span style="color:gold">0</span>,<span style="color:gold">0</span>,<span style="color:gold">0</span>,<span …
31 code-golf  matrix 

4
สุนัขในเครือ
ฉันมองออกไปนอกหน้าต่างห้องใต้หลังคาของฉันในบ้านของเพื่อนบ้าน พวกเขามีสุนัขถูกล่ามโซ่ไว้ที่เสากลางลาน สุนัขวิ่งไปรอบ ๆ สนาม แต่มักจะอยู่ที่ปลายโซ่ของมันดังนั้นมันจึงทิ้งรอยไว้ในดิน โดยปกติเพลงนี้จะเป็นวงกลมอย่างสมบูรณ์แบบ แต่เพื่อนบ้านของฉันมีเสาอื่น ๆ ในสนามของพวกเขาที่โซ่สุนัขถูกจับได้ ทุกครั้งที่โซ่สุนัขกระทบกับเสาสุนัขจะเริ่มหมุนรอบเสาใหม่โดยที่ความยาวของห่วงโซ่เหลือเท่ารัศมี ตั้งแต่เสาสุนัขและลูกโซ่ทุกคนมีความกว้างเป็นศูนย์ (เพื่อนบ้านของฉันเป็นนักคณิตศาสตร์) ลูกโซ่สามารถหมุนรอบเสาไปเรื่อย ๆ โดยไม่มีรัศมีของวงกลมที่สั้นลง สุนัขยังสามารถผ่านห่วงโซ่ (ไม่ใช่ปลอกคอ) ถ้าโซ่อยู่ในเส้นทาง หลังจากที่สังเกตสิ่งประหลาดนี้มาพักหนึ่งฉันก็ตัดสินใจว่าฉันจะเขียนรหัสเพื่อจำลองสุนัขเพื่อนบ้านของฉัน รหัสจะใช้สถานที่ของเสากลางซึ่งสุนัขถูกล่ามโซ่สถานที่ของเสาอื่น ๆ ในบ้านเพื่อนบ้านของฉันความยาวของห่วงโซ่และที่ตั้งเริ่มต้นของสุนัขและจะส่งออกแผนภาพแสดง เส้นทางที่สุนัขเสื่อมหญ้า คุณอาจสันนิษฐานว่าชุดค่าผสมใด ๆ ต่อไปนี้เป็นค่าคงที่ (และไม่ถือเป็นอินพุต): ที่ตั้งของเสาที่สุนัขถูกล่ามโซ่ ความยาวของโซ่ ตำแหน่งเริ่มต้นของสุนัข ดวงอาทิตย์กำลังสูงขึ้นดังนั้นพื้นที่บนพื้นห้องใต้หลังคาของฉันที่ส่องสว่างทางหน้าต่างลดลงทำให้ฉันมีพื้นที่น้อยลงในการเขียนโค้ดของฉัน โปรดพยายามลดจำนวนไบต์ของรหัสของคุณเพื่อให้ฉันมีพื้นที่ว่างที่จะร่างมันบนพื้นห้องใต้หลังคาของฉัน กรณีทดสอบ ที่นี่ผมคิดว่าสุนัขเริ่มต้น 3 หน่วยใต้จากที่เสามันจะถูกล่ามโซ่ (จุดสีแดง) 0,0ตั้งอยู่ที่ ฉันได้ระบุว่าเสาอยู่ที่จุดใดเพื่อความชัดเจนคุณไม่จำเป็นต้องรวมมันไว้ในเอาต์พุตของคุณ Poles at 1,2 -1,2 Poles at 0,.5 Poles at 0,1 …

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