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

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

25
คำนวณความเร็วสัมพัทธภาพ
ในทฤษฎีสัมพัทธภาพพิเศษความเร็วของวัตถุเคลื่อนที่ที่สัมพันธ์กับวัตถุอื่นที่เคลื่อนที่ในทิศทางตรงกันข้ามนั้นได้รับจากสูตร: s= v + u1 + v u / c2.s=โวลต์+ยู1+โวลต์ยู/ค2.\begin{align}s = \frac{v+u}{1+vu/c^2}.\end{align} s = ( v + u ) / ( 1 + v * u / c ^ 2) ในสูตรนี้โวลต์โวลต์vและยูยูuคือขนาดของความเร็วของวัตถุและคคcคือความเร็วของแสง (ซึ่งประมาณ3.0 × 108m / s3.0×108ม./s3.0 \times 10^8 \,\mathrm m/\mathrm sใกล้พอสำหรับความท้าทายนี้ประมาณ) ตัวอย่างเช่นถ้าวัตถุหนึ่งถูกย้ายที่v = 50,000 m/sและวัตถุอื่นกำลังจะย้ายไปที่u = 60,000 m/sความเร็วของวัตถุแต่ละเทียบกับคนอื่น ๆ s …

30
กลุ่มของรายการที่เกิดซ้ำ
คำอธิบายการท้าทาย ให้ลิสต์ / อาร์เรย์ของไอเท็มแสดงกลุ่มรายการที่เกิดซ้ำตามลำดับทั้งหมด คำอธิบายอินพุต / เอาต์พุต ข้อมูลที่คุณป้อนเป็นรายการ / อาเรย์ของรายการ (คุณสามารถถือว่าทั้งหมดเป็นประเภทเดียวกัน) คุณไม่จำเป็นต้องสนับสนุนภาษาทุกประเภทของคุณ แต่จะต้องสนับสนุนอย่างน้อยหนึ่งภาษา (โดยเฉพาะอย่างยิ่งintแต่ประเภทที่ต้องการbooleanแม้ว่าจะไม่น่าสนใจก็ยังใช้ได้เช่นกัน) ตัวอย่างผลลัพธ์: [4, 4, 2, 2, 9, 9] -> [[4, 4], [2, 2], [9, 9]] [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4] -> [[1, 1, 1], [2, 2], [3, 3, 3], [4, …

9
ในเรื่องของรหัสผ่าน
ในKeep Talking and Nobody Explodesผู้เล่นจะได้รับมอบหมายให้ปลดชนวนระเบิดตามข้อมูลจาก "ผู้เชี่ยวชาญ" ของพวกเขา (คนอื่น ๆ ที่มีคู่มือ) การวางระเบิดแต่ละครั้งประกอบด้วยโมดูลซึ่งหนึ่งในนั้นอาจเป็นรหัสผ่านซึ่งผู้เชี่ยวชาญจะได้รับรายการรหัสผ่านที่เป็นไปได้นี้มีความยาวห้าตัวอักษร: about after again below could every first found great house large learn never other place plant point right small sound spell still study their there these thing think three water where which world would write และผู้เล่นจะได้รับรายชื่อตัวอักษรที่เป็นไปได้ 6 ตัวสำหรับแต่ละสถานที่ในรหัสผ่าน เมื่อได้รับการผสมผสานตัวอักษรที่เป็นไปได้ส่งออกรหัสผ่านที่ถูกต้อง …
10 code-golf 

1
มันจะลอยหรือไม่
ความท้าทาย รับสาย 2d ที่แสดงด้านล่างของเรือเป็นอินพุตคุณต้องพิจารณาว่าเรือจะลอยหรือไม่ สตริง 2D นี้สามารถอยู่ในรูปแบบใดก็ได้ที่สะดวกที่สุด (สตริงที่มีการขึ้นบรรทัดใหม่รายการของสตริงรายการของตัวอักษร ฯลฯ ) พิมพ์ค่าจริงถ้ามันจะลอยและค่าเท็จถ้ามันจะจม เรือจะหงายท้องถ้าก้นมีความหนาแน่นไม่คงที่ดังนั้นตัวละครทุกตัวจะต้องเหมือนกัน นอกจากนี้ถ้าเรือมีรูขนาดใหญ่แสดงด้วยช่องว่างมันจะจมดังนั้นเรือของคุณจะต้องไม่มีรูที่มีพื้นที่มากกว่า 4 นี่คือตัวอย่าง: ######## # #### ######## # ## ## # ##### ######## เรือลำนี้ใช้ได้เพราะหลุมที่ใหญ่ที่สุดในนั้นมีพื้นที่ 4 เรือนี้: ######## ######## # ## # ##### ######## ไม่ถูกต้องเนื่องจากมีรูที่มีพื้นที่ 7 คุณสามารถสันนิษฐานได้อย่างปลอดภัยว่าภายนอกของอินพุตทุกอันจะเป็นรูปสี่เหลี่ยมผืนผ้าที่มั่นคงโดยไม่มีรู นี่คือการทดสอบเพิ่มเติม: $$$$$$$$ ***$$$$$ ***$$$$$ ***$$$$$ $$$$$$$$ Invalid density. Sink. %%%%%%%% % % …

2
นี่เป็นการเชื่อมโยงที่เป็นเอกลักษณ์หรือไม่?
ในความท้าทายนี้เกี่ยวกับรหัสคำนำหน้าเราได้เรียนรู้ว่ารหัสคำนำหน้านั้นสามารถต่อกันได้อย่างมีเอกลักษณ์ นั่นหมายความว่าพวกเขาสามารถรวมตัวกันได้โดยไม่ต้องมีตัวคั่นและไม่มีความกำกวม ตัวอย่างเช่นเนื่องจาก [1,2,45] เป็นรหัสนำหน้าฉันสามารถเข้าร่วมได้โดยไม่ต้องมีตัวคั่นดังนี้: 1245245112145 และจะไม่มีความคลุมเครือ อย่างไรก็ตามการสนทนาไม่เป็นความจริงเสมอไป ตัวอย่างเช่น [3,34] ไม่ใช่รหัสนำหน้า อย่างไรก็ตามฉันสามารถทำเช่นเดียวกัน: 3333434334333 และจะไม่มีความกำกวม คุณจะต้องมีเครื่องมือแยกวิเคราะห์ที่ชาญฉลาด อย่างไรก็ตาม [1,11] นั้นไม่สามารถต่อเนื่องกันได้เนื่องจาก 1111 สามารถตีความได้ 5 วิธี เป้าหมาย งานของคุณคือการเขียนโปรแกรม / ฟังก์ชั่นที่ใช้รายการของสตริง (ASCII) เป็นอินพุตและตรวจสอบว่าพวกเขาจะเข้ากันไม่ซ้ำกัน รายละเอียด การทำซ้ำนับเป็นเท็จ เกณฑ์การให้คะแนน นี่คือรหัสกอล์ฟ ทางออกที่สั้นที่สุดในหน่วยไบต์ชนะ Testcases จริง: [12,21,112] [12,112,1112] [3,4,35] [2,3,352] เท็จ: [1,1] [1,2,112] [1,23,4,12,34] [1,2,35,4,123,58,8]
10 code-golf 

8
กอล์ฟอัลกอริทึม K- หมายถึง
K- mean เป็นอัลกอริทึมการจัดกลุ่มแบบไม่ได้รับการจัดการมาตรฐานซึ่งกำหนดชุดของ "คะแนน" และกลุ่มของ K จำนวนหนึ่งจะกำหนด "จุด" แต่ละจุดให้กับหนึ่งในกลุ่ม K Pseudo-Code ของ K-mean โปรดทราบว่า K-Mean มีหลากหลายรูปแบบ คุณต้องใช้อัลกอริทึมที่ฉันอธิบายด้านล่าง คุณอาจมีการเปลี่ยนแปลงบางอย่างเกี่ยวกับอัลกอริทึมหรือใช้บิวด์อินตราบเท่าที่คุณจะได้รับผลลัพธ์เช่นเดียวกับอัลกอริทึมนี้ที่ให้คะแนนเริ่มต้นเหมือนกัน ในการท้าทายนี้อินพุตทั้งหมดจะเป็นจุดบนระนาบ 2D (แต่ละจุดจะถูกแทนด้วยพิกัดใน x และ y) Inputs: K, the number of clusters P, the set of points Choose K points of P uniformly at random Each chosen point is the initial centroid …

1
รูปนี้มีกี่รูปร่าง?
เด็กดีมากในการจำแนกวัตถุและนับพวกเขา คอมพิวเตอร์ดูเหมือนจะมีปัญหามากกว่า นี่เป็นเวอร์ชันที่ง่ายของปัญหานี้ คุณสามารถเขียนโปรแกรมขนาดเล็กที่สามารถจำแนกและนับจำนวนวัตถุในภาพได้หรือไม่? ปัญหา: กำหนดรูปภาพที่มีวงกลมและสี่เหลี่ยมหนึ่งวงกลมขึ้นไปส่งคืนจำนวนเต็ม 2 จำนวนด้วยการนับวงกลมและจำนวนสี่เหลี่ยม กฎระเบียบ ภาพอินพุตจะเป็นตัวเลขสีดำบนพื้นหลังสีขาวในรูปแบบบิตแมปใด ๆ ที่คุณเลือก ความกว้างและความสูงของภาพจะอยู่ระหว่าง 100 ถึง 1,000 พิกเซล รูปภาพจะถูกเก็บไว้ในรูปภาพ ตัวเลขจะมีความกว้าง 1 พิกเซล รูปภาพจะไม่ใช้การลบรอยหยัก พวกเขาจะเป็นสีดำบนพื้นขาวเท่านั้น ตัวเลขอาจสัมผัสตัดกันหรืออยู่ในรูปอื่น ตัวเลขที่ตัดกันจะมีพิกเซลทั่วไปสูงสุด 4 พิกเซล แวดวงจะมีขนาดเส้นผ่าศูนย์กลาง 20 พิกเซลขึ้นไป ด้านสี่เหลี่ยมผืนผ้าจะมีความยาว 10 พิกเซลขึ้นไป คุณไม่สามารถใช้บิวด์อินหรือไลบรารี่ที่จดจำรูปร่างหรือฟังก์ชั่นอื่นใดที่ทำให้ความท้าทายนี้เป็นเรื่องเล็กน้อย ส่งคืนหรือพิมพ์จำนวนเต็ม 2 จำนวนด้วยการนับวงกลมและสี่เหลี่ยม ตัวอย่างที่ 1 คำตอบ: 3 4 ตัวอย่างที่ 2: คำตอบ: 4 13 นี่เป็นความท้าทายของรหัสกอล์ฟดังนั้นโปรแกรมหรือฟังก์ชั่นที่สั้นที่สุดในแต่ละภาษาจะเป็นผู้ชนะ

3
วาดลูกบาศก์ง่ายๆ
เราไม่ได้มีความท้าทายเดียวเกี่ยวกับการวาดลูกบาศก์ 3 มิติที่แท้จริงดังนั้นที่นี่จะไป: ท้าทาย งานของคุณคือการวาดลูกบาศก์หมุนด้วยมุมมอง สามารถอยู่ในหน้าต่างแยกต่างหากหรือเป็นภาพ อินพุต ข้อมูลที่คุณป้อนเป็นตัวเลข 3 หมายเลขที่แยกกันระหว่าง 0 ถึง 359.99 ... สิ่งเหล่านี้แสดงถึงการหมุนรอบแกน x, y และ z ในหน่วยองศา 0 0 0 30 0 40 95 320 12 เอาท์พุต คุณสามารถแสดงในหน้าต่างแยกต่างหากหรือบันทึกรูปภาพ คุณสามารถใช้การแสดงผลทุกประเภท (แบบเวกเตอร์, แบบแรสเตอร์, ฯลฯ ) แก้ไข: อนุญาตให้ใช้ ASCII ได้เช่นกันเพื่ออนุญาตให้ใช้ภาษาการเล่นกอล์ฟที่มีเอาต์พุตแบบข้อความเท่านั้น เอาต์พุตสำหรับกราฟิกแรสเตอร์หรือ ASCII ต้องมีอย่างน้อย 50 * 50 (พิกเซลสำหรับการแรสเตอร์และอักขระสำหรับ ASCII) ข้อมูลเพิ่มเติม แกน …

4
บอร์ด Solitaire Mancala ที่ได้รับรางวัล
Mancalaเป็นชื่อของครอบครัวของเกมกระดานที่มักจะเกี่ยวข้องกับชุดถ้วยที่เต็มไปด้วยเม็ดที่ผู้เล่นจัดการ ความท้าทายนี้จะใช้กฎเฉพาะที่กำหนดไว้สำหรับชุดตัวเลือกเล่นไพ่คนเดียวของเกม กระดานประกอบด้วย "ตะกร้า" ที่ปลายด้านหนึ่งแล้วตามด้วยจำนวนถ้วยนับไม่ถ้วนเริ่มต้นจาก 1 ถ้วยบางถ้วยจะมีเม็ดประคำอยู่จำนวนหนึ่ง หากnถ้วยที่สามมีnเม็ดบีดอยู่ตรงนั้นคุณอาจ "หว่าน" เม็ดบีดจากมัน การหว่านหมายถึงการนำnลูกปัดทั้งหมดออกจากถ้วยแล้วนำไปใส่ครั้งละหนึ่งถ้วยในตะกร้า ลูกปัดสุดท้ายจะเข้าสู่ตะกร้า ผู้เล่นชนะเมื่อทุกเม็ดบนกระดานอยู่ในตะกร้า เห็นได้ชัดว่ามีหลายบอร์ดที่ไม่สามารถเอาชนะได้เช่นถ้ามีลูกปัดหนึ่งเม็ดในถ้วยที่สอง ไม่มีการเล่นที่ถูกกฎหมายเพราะถ้วยทั้งหมดที่มี 0 เม็ดไม่สามารถหว่านได้และถ้วยที่สองไม่มีเม็ดพอที่จะหว่าน เห็นได้ชัดว่ามันไม่สนุกดังนั้นงานของคุณคือการสร้างกระดานที่มีชัย งาน กำหนดจำนวนเต็มบวกแทนจำนวนของลูกปัดออกรายการของจำนวนเต็มไม่ลบแสดงจำนวนลูกปัดที่ควรใส่ในแต่ละถ้วยเพื่อให้คณะกรรมการมีชัยตามที่อธิบายไว้ข้างต้น รายการนี้ไม่ควรมีศูนย์ใด ๆ ต่อท้าย สำหรับเม็ดบีดที่กำหนดจำนวนใด ๆ จะมีการกำหนดค่าบอร์ดที่ชนะได้หนึ่งชุดเสมอ สาธิต นี่คือการสาธิตวิธีการเล่นกระดานชัยและใส่ของ 4. [0, 1, 3]คณะกรรมการมีชัยคือ [1, 2, 0]เราเริ่มต้นด้วยการย้ายที่ใช้ได้เฉพาะหว่านเม็ดจากถ้วยที่สามที่จะได้รับ ตอนนี้เรามีทางเลือกจริง [0, 2, 0]แต่ถูกต้องเพียงหนึ่งคือการหว่านเมล็ดถ้วยแรกที่ได้รับ: จากนั้นเราหว่านถ้วยที่สองที่ให้ผลผลิต[1, 0, 0]และในที่สุดเราก็หว่านถ้วยแรกอีกครั้งเพื่อให้ได้ถ้วยเปล่าทั้งหมด กรณีทดสอบ: 1 => [1] 2 => [0, 2] …

3
420 <s> Blaze </s> เล่นกอล์ฟ
นี่เป็นความท้าทายที่ค่อนข้างง่าย แต่ (ฉันหวังว่า) ความสนุก งาน หากตอนนี้ทั้งเดือนคือ4และวันที่เป็น20ชั่วโมง (ในนาฬิกา 12 ชั่วโมง) คือ4และนาที20หรือหรือนาที4และวินาทีและคือ20พิมพ์ศิลปะ ascii นี้: . .:. :|: .:|:. ::|:: :. ::|:: .: :|:. .::|::. .:|: ::|:. :::|::: .:|:; `::|:. :::|::: .:|::' ::|::. :::|::: .::|:; `::|::. :::|::: .::|::' :::|::. :::|::: .::|::; `:::|::. :::|::: .::|::;' `::. `:::|::. :::|::: .::|::;' .:;' `:::.. `;::|::. :::|::: .::|::: …

4
ค้นหาวิธีที่สั้นที่สุดเพื่อเลื่อนเคาน์เตอร์ไปยังหมายเลขที่กำหนด
ฉันมีเคาน์เตอร์ เป็นอุปกรณ์ขนาดเล็กที่มีลักษณะดังนี้: การแสดงผลไปจากการ0000 9999มีปุ่มกดเล็ก ๆ ที่ด้านบนที่เพิ่มการนับ 1 และลูกบิดเล็ก ๆ ด้านขวาซึ่งมีจุดประสงค์เพื่อรีเซ็ตตัวนับกลับเป็น 0 ตอนนี้สิ่งที่เกี่ยวกับปุ่มเล็ก ๆ คือถ้าคุณหมุนไปข้างหลังคุณสามารถเพิ่มตัวเลขใด ๆ ที่คุณต้องการได้เมื่อคุณหมุนมันไปข้างหน้าอีกครั้ง ดังนั้นถ้าฉันกดปุ่มนับ 10 ครั้งเพื่อให้การแสดงที่เคาน์เตอร์0010ผมแล้วสามารถเปิดย้อนกลับลูกบิดจนกว่าฉันจะได้ยินเสียงคลิกเล็ก ๆ 0090แล้วเปิดไปข้างหน้าอีกครั้งและทำให้มันตรงไปที่ แต่ลูกบิดจะเพิ่มตัวเลขที่เกิดขึ้นทั้งหมด 1 เสมอทุกครั้งที่ผลักตัวเลขไปข้างหน้า ดังนั้นหากการแสดงที่เคาน์เตอร์6060คุณสามารถทำให้มันเพิ่มขึ้นเป็น7070ไม่หรือ6070 7060นอกจากนี้ลูกบิดจะม้วน9s ไป0โดยไม่ดำเนินการดังนั้น0990จะเลื่อนไป0000แทนหรือ10001100 ฉันต้องการทราบวิธีที่มีประสิทธิภาพที่สุดในการตั้งค่าตัวนับเป็นตัวเลขที่แน่นอน งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่จะกำหนดลำดับที่สั้นที่สุดของการกดปุ่มและความก้าวหน้าของปุ่มที่จำเป็นในการทำเช่นนั้น โปรแกรมของคุณจะป้อนตัวเลข 4 หลักจาก0000ถึง9999และส่งคืนชุดของขั้นตอนในรูปแบบต่อไปนี้: &gt; 0001 C &gt; 0093 C12345678C12345678CCC &gt; 1000 C12345678C12345678C12345678C12345678C12345678C12345678C12345678C &gt; 9999 012345678 โดยที่Cสำหรับ "กดปุ่มตัวนับ" และตัวเลขใด ๆDจาก 0 ถึง …

5
การสั่งซื้อคำให้พอดีกับสตริงที่กำหนด
กำหนดสตริงตัวอักษรและชุดคำเอาท์พุทการเรียงลำดับของคำเพื่อให้พวกเขาสามารถพบได้ในสตริงโดยวางตัวอักษรที่ไม่จำเป็น คำอาจเกิดขึ้นมากกว่าหนึ่งครั้งในชุดคำ สตริงอินพุตและคำทั้งหมดจะประกอบด้วยตัวอักษรตัวพิมพ์เล็ก 1 ถึง 1,000 ตัว ตัวอักษรที่จะถูกปล่อยอาจเกิดขึ้นภายในคำหรือระหว่างคำ โปรแกรมหรือฟังก์ชั่นของคุณสามารถยอมรับสตริงตัวอักษรและคำเป็นรายการสตริงหรือจาก STDIN และต้องส่งออกคำทั้งหมดในลำดับที่ถูกต้องเป็นรายการหรือเอาท์พุทสตริง หากมีโซลูชันที่ถูกต้องมากกว่าหนึ่งรายการให้ส่งออกหนึ่งรายการเท่านั้น หากไม่มีวิธีที่ถูกต้องที่เป็นไปได้ให้ส่งออกรายการว่างหรือสตริงว่าง ตัวอย่าง: dogcatfrog cat frog dog -&gt; dog cat frog xxcatfixsxhingonxgrapexxxfishingcxat cat grape catfish fishing -&gt; catfish grape fishing cat dababbabadbaccbcbaaacdacdbdd aa bb cc dd ba ba ba ab ac da db dc -&gt; da ab ba ba …
10 code-golf  string 

7
สร้างยิมออกกำลังกายของคุณเองและติดตามไปตาม irl
เรามาออกกำลังกายด้วยกันใช่ไหม เพียงแค่ติดตามการเคลื่อนไหวของ stickman คุณถามอะไร stickman คนที่เรากำลังจะสร้าง! สร้างโปรแกรมที่อนุญาตให้มีการป้อนสตริงเท่านั้นที่มีจำนวนเต็มและส่งออกตัวเลขเก้าตัวต่อไปนี้โดยมีช่วงเวลาระหว่าง: @ \@/ |@_ _@| @/ \@ |@| \@\ /@/ /|\ | | | | | | | | / \ / \ / \ / \ /|\ /|\ / \ / \ / \ 1 2 3 4 5 6 7 8 9 …

11
เขาจะใช้เวลาขั้นต่ำกี่วันในการทำงานให้เสร็จสมบูรณ์จำนวนหน่วย
บุคคลที่มีสมบูรณ์Nหน่วยของการทำงาน; ลักษณะของงานเหมือนกัน เพื่อที่จะได้รับการแขวนของการทำงานเขาเสร็จสิ้นเพียงหนึ่งหน่วยของการทำงานในวันแรก เขาปรารถนาที่จะฉลองความสำเร็จของการทำงานเขาจึงตัดสินใจที่จะเสร็จสมบูรณ์หน่วยหนึ่งของการทำงานในวันสุดท้าย เขาได้รับอนุญาตเท่านั้นที่จะเสร็จสมบูรณ์x, x+1หรือx-1หน่วยของการทำงานในแต่ละวันซึ่งxเป็นหน่วยงานที่ทำเสร็จเมื่อวันก่อน งานของคุณคือการสร้างโปรแกรมหรือฟังก์ชั่นที่จะคำนวณจำนวนวันขั้นต่ำที่เขาจะใช้ในNการทำงานให้เสร็จสมบูรณ์ ตัวอย่างอินพุตและ Ouput: input -&gt; output (corresponding work_per_day table) -1 -&gt; 0 [] 0 -&gt; 0 [] 2 -&gt; 2 [1,1] 3 -&gt; 3 [1,1,1] 5 -&gt; 4 [1,1,2,1] or [1,2,1,1] 9 -&gt; 5 [1,2,3,2,1] 13 -&gt; 7 [1,2,2,2,3,2,1] อินพุตอาจถูกนำมาผ่านSTDINหรือเป็นอาร์กิวเมนต์ของฟังก์ชันหรือด้วยวิธีการที่เหมาะสม ผลลัพธ์อาจถูกพิมพ์หรือเป็นผลลัพธ์ของฟังก์ชันหรือด้วยวิธีการที่เหมาะสม นี่คือรหัสกอล์ฟ ทางออกที่สั้นที่สุดชนะ

2
โอเอกซ์ด้วยการข้ามที่รวดเร็วที่สุดเท่านั้น
ตามคำขอของลุคและการเพิ่มของปีเตอร์เทย์เลอร์ความท้าทายนี้ บทนำ ทุกคนรู้เกมโอเอกซ์ แต่ในความท้าทายนี้เราจะแนะนำการบิดเล็กน้อย เราจะใช้ไม้กางเขนเท่านั้น คนแรกที่วางสามกากบาทในแถวแพ้ ข้อเท็จจริงที่น่าสนใจคือจำนวนข้ามสูงสุดก่อนที่ใครบางคนจะสูญเสียเท่ากับ6 : X X - X - X - X X นั่นหมายความว่าสำหรับบอร์ด 3 x 3 จำนวนสูงสุดคือ6 6ดังนั้นสำหรับ N = 3 เราต้องเอาท์พุท 6 อีกตัวอย่างหนึ่งสำหรับ N = 4 หรือบอร์ด 4 x 4: X X - X X X - X - - - - X X …

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