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

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

24
คำนวณลำดับของจิงโจ้
backstory คำเตือน: อาจมีข้อมูลเกี่ยวกับจิงโจ้ จิงโจ้สำรวจหลายขั้นตอนของการพัฒนา เมื่อพวกเขาโตขึ้นและแข็งแรงขึ้นพวกเขาสามารถกระโดดได้สูงขึ้นเรื่อย ๆ และสามารถกระโดดได้มากขึ้นก่อนที่พวกเขาจะหิว ในระยะที่1จิงโจ้น้อยมากและไม่สามารถกระโดดได้เลย อย่างไรก็ตามเรื่องนี้ยังคงต้องการการบำรุงอย่างต่อเนื่อง เราสามารถแสดงรูปแบบกิจกรรมของจิงโจ้ในระยะที่1เช่นนี้ o ในระยะที่2จิงโจ้สามารถกระโดดได้เล็กน้อย แต่ไม่เกิน2ก่อนที่มันจะหิว เราสามารถแสดงรูปแบบกิจกรรมของจิงโจ้ในระยะที่2เช่นนี้ o o o o o หลังจากระยะที่2จิงโจ้ก็จะดีขึ้นอย่างรวดเร็ว ในแต่ละขั้นตอนต่อมาจิงโจ้สามารถกระโดดได้สูงขึ้นเล็กน้อย (1 หน่วยในการแสดงกราฟิก) และเพิ่มขึ้นสองเท่าหลายเท่า ตัวอย่างเช่นรูปแบบกิจกรรมของจิงโจ้ระยะที่3มีลักษณะเช่นนี้ o o o o o o o o o o o o o o o o o การกระโดดทั้งหมดนั้นต้องใช้พลังงานดังนั้นจิงโจ้จึงต้องการการบำรุงหลังจากทำกิจกรรมแต่ละแบบเสร็จสิ้น จำนวนที่แน่นอนสามารถคำนวณได้ดังนี้ กำหนดแต่ละoในรูปแบบกิจกรรมของสเตจnจิงโจ้ซึ่งความสูงของมันคือตัวเลขจาก1ถึงnโดยที่1สอดคล้องกับพื้นดินและnไปยังตำแหน่งสูงสุด คำนวณผลรวมของความสูงทั้งหมดในรูปแบบกิจกรรม ตัวอย่างเช่นรูปแบบกิจกรรมของจิงโจ้ระยะที่3มีความสูงดังต่อไปนี้ 3 3 3 …

8
หลักการการเปลี่ยนแปลงของ Pigeon-hole
ในเกมซูโดกุผู้เล่นหลายคนชอบที่จะ "จับ" ตัวเลขที่เป็นไปได้ที่สามารถไปในแต่ละตาราง: แถวด้านบนสามารถแสดงเป็นอาร์เรย์ได้: [[1,2,9], [6], [5], [7], [1,2,9], [1,2,9], [3], [1,2,4], [8]] ตอนนี้สังเกตเห็นว่ามีเพียง 1 แห่งที่4สามารถไปได้ สิ่งนี้ช่วยให้เราลดความซับซ้อนของรายการด้านบนเพื่อ [[1,2,9], [6], [5], [7], [1,2,9], [1,2,9], [3], [4], [8]] เป้าหมายของการท้าทายนี้คือการใช้รายการของตัวเลขที่เป็นไปได้ในการเปลี่ยนแปลงและได้ข้อสรุปที่เป็นไปได้ที่จะถูกกำจัด เป็นอีกตัวอย่างหนึ่งสมมติว่าคุณมีความเป็นไปได้หลายอย่างดังต่อไปนี้: [[0,1,3], [0,2,3], [1,2], [1,2]] สองสถานที่สุดท้ายจะต้องเต็มไปด้วย 1 และ 2 ดังนั้นเราสามารถลบความเป็นไปได้เหล่านั้นออกจากสององค์ประกอบแรกในอาร์เรย์: [[0,3], [0,3], [1,2], [1,2]] เป็นอีกตัวอย่าง: [[0,1,2,3], [0,2], [0,2], [0,2]] มันเป็นไปไม่ได้ที่จะสร้างการเปลี่ยนแปลงจากความเป็นไปได้ดังกล่าวข้างต้นเป็นมีเพียง 1 สถานที่สำหรับทั้งสอง1และ3และคุณจะต้องการที่จะกลับอาร์เรย์ที่ว่างเปล่า คุณต้องป้อนรายการความเป็นไปได้และส่งออกความเป็นไปได้ที่เหลืออยู่หลังจากกำจัดจำนวนความเป็นไปได้สูงสุดแล้ว …

8
ตีกอล์ฟด้วยสกอร์
เมื่อตอนเป็นเด็กฉันเคยเล่นเกมไพ่" กอล์ฟ "บ่อยครั้ง ความท้าทายของคุณถ้าคุณเลือกที่จะยอมรับมันคือการคำนวณคะแนนของมือกอล์ฟ เนื่องจากมีมากกว่า 9000 รูปแบบในเกมการ์ดใบนี้1เราจะไปตามกฎที่ฉันจำได้ว่าเล่น กฎ (ของเกม) คุณจบรอบด้วยไพ่ 6 ใบและคุณต้องการแต้มน้อยที่สุด ไม่ใช้โจ๊กเกอร์ Aces และ 2s มีค่า -1, และ -2 คะแนนตามลำดับ แจ็คและราชาทั้งคู่มีค่า 0 คะแนน ไพ่จาก 3 ถึง 10 เป็นมูลค่าที่คุ้มค่า อย่างไรก็ตามสิ่งเหล่านี้จะถูกยกเลิกเมื่อคุณจับคู่ออก ตัวอย่างเช่น 5 มีค่า 5 คะแนน แต่ 5s สองตัวมีค่าเป็นศูนย์ 5 วินาทีมีค่า 5 คะแนน (ตั้งแต่ 2 คู่แรกถูกจับคู่ออก แต่ไม่ได้เป็นอันดับ 3) และ 5 วินาทีสี่มีค่าเป็น …

17
มหาปิรามิดแห่ง ASCII
บทนำ ตอนนี้ 2,600 ปีก่อนคริสตกาลและผู้คนกำลังสร้างปิรามิดตอนนี้ พวกเขาสร้างพื้นฐานของปิรามิดแล้ว แต่ไม่รู้วิธีดำเนินการต่อ ดังนั้นพวกเขาจึงโทรหาคุณเพื่อขอความช่วยเหลือ กฎของการสร้างพีระมิดค่อนข้างง่าย สำหรับเลเยอร์เหนือเลเยอร์ก่อนหน้าสิ่งที่คุณต้องทำคือทำตามคำแนะนำทีละขั้นตอนนี้: ตัดขอบออกจากเลเยอร์ก่อนหน้า เหนือ/ตัวละครจะต้องมี\ตัวละครและในทางกลับกัน สิ่งนี้ใช้ได้กับทุกตัวละครยกเว้นขอบ อักขระซ้ายสุดอยู่เสมอและตัวอักษรขวาสุดอยู่เสมอ/\ ลองมาเป็นตัวอย่างของพื้นฐานสำหรับปิรามิด: //\/\/\\ เราตัดขอบทิ้ง: /\/\/\ เราเปลี่ยนสแลชไปข้างหน้าด้วยแบ็กสแลชและในทางกลับกัน: \/\/\/ ตัวละครทางซ้ายสุดจะเป็นเสมอ/และตัวละครที่อยู่ด้านขวาสุดจะเป็นเสมอ\ดังนั้นเราจึงเปลี่ยน: //\/\\ เราวางเลเยอร์นี้ในเลเยอร์ก่อนหน้า: //\/\\ //\/\/\\ เราดำเนินต่อไปจนกว่าจะถึงด้านบน (ซึ่งดูเหมือน/\) ดังนั้นในที่สุดเราก็ได้: /\ //\\ //\/\\ //\/\/\\ นี่คือสิ่งที่คุณต้องการส่งออก งาน ให้พื้นฐานของพีระมิด (ที่มีความยาวมากกว่า 3) ส่งออกพีระมิดเต็ม คุณสามารถคิดว่าตัวละครซ้ายสุดเป็นและตัวละครขวาสุดเป็น/ \นอกจากนี้คุณยังสามารถสรุปได้ว่าความยาวของพื้นฐานอยู่เสมอแม้กระทั่ง อนุญาตให้ใช้ช่องว่างต่อท้ายได้ อนุญาตให้ใช้พื้นที่ชั้นนำได้ตราบใดที่ปิรามิดยังคงอยู่ การใช้ 1 ต่อท้ายและ 1 นำขึ้นบรรทัดใหม่ที่ได้รับอนุญาต กรณีทดสอบ Input: /\\\ Output: …

1
การประเมินชื่อโดเมน
การซื้อขายชื่อโดเมนเป็นธุรกิจขนาดใหญ่ หนึ่งในเครื่องมือที่มีประโยชน์ที่สุดสำหรับการซื้อขายชื่อโดเมนคือเครื่องมือประเมินราคาอัตโนมัติเพื่อให้คุณสามารถประเมินว่าโดเมนที่กำหนดมีมูลค่าเท่าใด น่าเสียดายที่บริการประเมินราคาอัตโนมัติหลายแห่งต้องการสมาชิก / สมัครสมาชิกเพื่อใช้งาน ในความท้าทายนี้คุณจะเขียนเครื่องมือประเมินราคาที่สามารถประมาณค่าโดเมน. com อินพุต / เอาต์พุต ในฐานะอินพุตโปรแกรมของคุณควรใช้รายชื่อโดเมนหนึ่งชื่อต่อหนึ่งบรรทัด ชื่อโดเมนแต่ละชื่อจะตรงกับ regex ^[a-z0-9][a-z0-9-]*[a-z0-9]$ซึ่งหมายความว่ามันประกอบด้วยตัวอักษรตัวพิมพ์เล็กตัวเลขและยัติภังค์ แต่ละโดเมนมีความยาวอย่างน้อยสองตัวอักษรและไม่เริ่มต้นหรือลงท้ายด้วยเครื่องหมายขีดคั่น .comถูกตัดออกจากแต่ละโดเมนเพราะมันบอกเป็นนัย ๆ ในรูปแบบของการป้อนข้อมูลทางเลือกคุณสามารถเลือกที่จะยอมรับชื่อโดเมนเป็นอาร์เรย์ของจำนวนเต็มแทนที่จะเป็นสตริงอักขระตราบใดที่คุณระบุการแปลงแบบตัวอักษรเป็นจำนวนเต็ม โปรแกรมของคุณควรแสดงรายการจำนวนเต็มหนึ่งรายการต่อบรรทัดซึ่งให้ราคาประเมินของโดเมนที่เกี่ยวข้อง อินเทอร์เน็ตและไฟล์เพิ่มเติม โปรแกรมของคุณอาจเข้าถึงไฟล์เพิ่มเติมได้ตราบใดที่คุณให้ไฟล์เหล่านี้เป็นส่วนหนึ่งของคำตอบ โปรแกรมของคุณยังได้รับอนุญาตให้เข้าถึงไฟล์พจนานุกรม (รายการคำที่ถูกต้องซึ่งคุณไม่ต้องระบุ) (แก้ไข) ฉันได้ตัดสินใจขยายความท้าทายนี้เพื่อให้โปรแกรมของคุณสามารถเข้าถึงอินเทอร์เน็ต มีข้อ จำกัด บางประการเนื่องจากโปรแกรมของคุณไม่สามารถค้นหาราคา (หรือประวัติราคา) ของโดเมนใด ๆ ได้และมีการใช้บริการที่มีอยู่ก่อนเท่านั้น การ จำกัด ขนาดโดยรวมเท่านั้นคือการ จำกัด ขนาดคำตอบที่กำหนดโดย SE ตัวอย่างอินพุต เหล่านี้คือบางโดเมนที่ขายล่าสุด ข้อจำกัดความรับผิดชอบ: แม้ว่าไม่มีเว็บไซต์ใดที่ดูเหมือนว่าเป็นอันตราย แต่ฉันไม่ทราบว่าใครเป็นผู้ควบคุมและแนะนำให้เยี่ยมชมพวกเขา 6d3 buyspydrones arcader counselar ubme 7483688 buy-bikes …

15
Transpile WordMath
เราทุกคนเห็น "maths hax" ออนไลน์ที่มีลักษณะเช่นนี้: Think of a number, divide by 2, multiply by 0, add 8. และด้วยเวทมนตร์ทุกคนก็จบลงด้วยหมายเลข 8! ภาษา ลองกำหนดภาษาการเขียนโปรแกรมที่ใช้ไวยากรณ์ของข้อความด้านบนเรียกว่า "WordMath" สคริปต์ WordMath ปฏิบัติตามแม่แบบนี้: Think of a number, <commandlist>. ซึ่งโดยทั่วไปหมายถึง: ใช้ตัวเลข (เป็นอินพุตจาก STDIN) เป็นตัวสะสมเริ่มต้นดำเนินการคำสั่งทั้งหมดที่อยู่บนมันและออกผลลัพธ์ คำสั่งถูกคั่นด้วยตัวคั่น,(เครื่องหมายจุลภาค + ช่องว่าง) คำสั่งที่ถูกต้องคือ(หมายเหตุที่#แสดงถึงจำนวนเต็มที่ไม่เป็นลบ :) : add #/ subtract #- เพิ่ม / ลบค่าจากตัวสะสม divide by #/ …

22
การตรวจสอบการ padding PKCS # 7
ในวิทยาการเข้ารหัสลับการหุ้ม PKCS # 7เป็นโครงร่างการขยายซึ่งเพิ่มจำนวนไบต์ N ≥ 1 โดยที่ค่าของแต่ละไบต์ที่เพิ่มมีค่าเท่ากับ N ตัวอย่างเช่นHello, World!ซึ่งมี 13 ไบต์มีดังต่อไปนี้ในฐานสิบหก: 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 ถ้าเราเลือกที่จะ PKCS # 7 ความยาว 16 แผ่นผลที่ได้คือ: 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 03 03 03 และถ้าเราเลือกที่จะยาวถึง …

18
แปลงเป็น Bibi-binary
Bibi-binary เป็นระบบตัวเลขที่คิดค้นโดยBoby Lapointeเพื่อเป็นตัวแทนของตัวเลขในตัวอักษรซึ่งการออกเสียงดูเหมือนเป็นเรื่องตลก งานของคุณคือการแปลงตัวเลขทศนิยมให้เป็น Bibi-binary! การแปลง ตัวเลขจะถูกแปลงเป็นฐาน 16 (เลขฐานสิบหก) และอักขระแต่ละตัวจะถูกแทนที่ด้วยชื่อ Bibi-binary: 0 = HO 1 = HA 2 = HE 3 = HI 4 = BO 5 = BA 6 = BE 7 = BI 8 = KO 9 = KA A = KE B = KI C = DO …

30
ลำดับ Hofstadter Q
คำนิยาม a (1) = 1 a (2) = 1 a (n) = a (na (n-1)) + a (na (n-2)) สำหรับ n> 2 โดยที่ n เป็นจำนวนเต็ม งาน ได้รับจำนวนเต็มบวกสร้างna(n) Testcases n a(n) 1 1 2 1 3 2 4 3 5 3 6 4 7 5 8 5 9 6 10 6 …

28
#Hashtag_or_not
ในการแข่งขันกอล์ฟรหัสนี้คุณจะตรวจสอบแฮชแท็ก! #What_your_code_should_do อินพุตเป็นสตริง เอาท์พุทค่าความจริงถ้ามันเป็นแฮชแท็กที่ถูกต้องและค่าเท็จอื่น ๆ เรากำหนดสตริงเป็น Hashtag ที่ถูกต้องหาก ... มันเริ่มต้นด้วยแฮช ( #) ไม่มีหมายเลขหลังแฮชแท็ก (เช่นแฮชแท็ก#2016USElectionไม่ถูกต้อง) ไม่มี "อักขระพิเศษ" (เช่นอักขระใด ๆ ที่ไม่ใช่ตัวอักษรขีดล่าง ( _) หรือตัวเลข) คุณสามารถสันนิษฐานได้ว่าอินพุตนั้นมีอักขระ ASCII เท่านั้น (มันคงจะไม่ยุติธรรมถ้าเราทำ Unicode ด้วย) #rules บังคับใช้กฎพื้นฐานของการเล่นกอล์ฟ #ตัวอย่าง Truthy: # #e #_ABC #thisisanunexpectedlylongstringxoxoxoxo #USElection2016 Falsy: Hello, World! #12thBday #not-valid #alsoNotValid! #!not_a_hash

9
KOTH: TNT Run Challenge
สิ่งนี้ได้รับแรงบันดาลใจจากเกมมินิ Minecraft กฎนั้นค่อนข้างเรียบง่าย: คุณวิ่งและกระโดดไปมาและทุก ๆ บล็อกที่คุณเหยียบหายไปเมื่อคุณเหยียบมัน เป้าหมายคือการเป็นคนสุดท้ายที่เหลืออยู่ บอทของคุณควรเป็นโปรแกรมที่สมบูรณ์ มันควรจะยอมรับอินพุตเป็นอาร์กิวเมนต์บรรทัดคำสั่ง ข้อมูลที่ป้อนจะเป็นแผนที่ของ "โลก" นี่คือตัวอย่าง: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxx xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx x xxxxxxxxxxxxx@xxxxxxxxxxx xxxxxx1xxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxxxxxxx x x xxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxxxxx xxx …

17
Vandermonde ตัวกำหนด
ให้เวกเตอร์ของnค่า(x1,x2,x3,...,xn)ส่งคืนดีเทอร์มิแนนต์ของเมทริกซ์ Vandermonde ที่เกี่ยวข้อง ดีเทอร์มิแนนต์นี้สามารถเขียนเป็น: รายละเอียด โปรแกรม / ฟังก์ชั่นของคุณต้องยอมรับรายการหมายเลขจุดลอยตัวในรูปแบบที่สะดวกใด ๆ ที่อนุญาตให้มีความยาวผันแปรและส่งออกปัจจัยที่กำหนด คุณสามารถสมมติว่าอินพุตรวมทั้งเอาต์พุตอยู่ในช่วงของค่าที่ภาษาของคุณรองรับ หากภาษาของคุณไม่รองรับหมายเลขทศนิยมคุณอาจถือว่าเป็นจำนวนเต็ม บางกรณีทดสอบ โปรดทราบว่าเมื่อใดก็ตามที่มีสองรายการเท่ากันดีเทอร์มิแนนต์จะเป็น0เนื่องจากมีสองแถวเท่ากันในเมทริกซ์ Vandermonde ที่เกี่ยวข้อง ขอบคุณ @randomra สำหรับการชี้ให้เห็น testcase ที่ขาดหายไปนี้ [1,2,2,3] 0 [-13513] 1 [1,2] 1 [2,1] -1 [1,2,3] 2 [3,2,1] -2 [1,2,3,4] 12 [1,2,3,4,5] 288 [1,2,4] 6 [1,2,4,8] 1008 [1,2,4,8,16] 20321280 [0, .1, .2,...,1] 6.6586e-028 [1, .5, .25, …

10
ตีกลับในอาร์เรย์
บทนำ อาร์เรย์ยังสามารถมองเห็นเป็นสนามสำหรับลูกบอลกระดอน แน่นอนว่ามันฟังดูคลุมเครือดังนั้นนี่คือตัวอย่างของอินพุต: [1, 2, 3, 4, 5, 6, 7, 8, 9] [9, 8, 7, 6, 5, 4, 3, 2, 1] [1, 2, 3, 4, 5, 6, 7, 8, 9] ความท้าทายคือการส่งออกอาร์เรย์เด้ง สิ่งเหล่านี้ทำจากลวดลายเส้นทแยงมุมที่กระดอนที่ขอบสนาม เส้นทางนี้เป็นแหลมขึ้น เส้นทางสำหรับอาร์เรย์ที่เด้งแรก (ซึ่งเส้นทางนั้นถูกเด้งออกโดยตรงจาก egde) คือ: [1, -, -, -, 5, -, -, -, 9] [-, 8, -, 6, …

12
สร้างค่าขี้เกียจ
ที่เกี่ยวข้อง: โปรแกรมไมโครเวฟเตาอบของฉัน โดยได้แรงบันดาลใจสร้างอินพุตไมโครเวฟขี้เกียจ ค่าขี้เกียจของจำนวนเต็มไม่เป็นลบNเป็นจำนวนน้อยที่สุดของจำนวนเต็มที่ใกล้เคียงกับNในขณะที่ตัวเลขทั้งหมดของพวกเขาเหมือนกัน ย้อนกลับ (โดยวิธีการใด ๆ ) ค่าขี้เกียจของที่กำหนด (โดยวิธีการใด ๆ ) N N ≤ เลขที่ใหญ่ที่สุดที่แสดงให้เห็นถึงภาษาของคุณในรูปแบบที่ไม่ใช่ตัวแทนโดยปริยาย 1000000 (โซลูชันที่น่าสนใจจำนวนมากหายไปเนื่องจากความต้องการสูงเกินไป) กรณีทดสอบ: 0 → 0 8 → 8 9 → 9 10 → 9 16 → 11 17 → 22 27 → 22 28 → 33 100 → 99 105 → 99 106 …

9
วาดบ้าน ASCII
นี่คือหน้าต่าง: --- | | --- มาเพิ่มกำแพง|กันบ้าง วางสองช่องว่างไว้ที่ด้านใดด้านหนึ่งเพื่อให้หน้าต่างมีพื้นที่เหลือเฟือ | --- | | | | | | --- | ตอนนี้ขอเพิ่มหลังคาและเพดาน เพื่อให้หน้าต่างอยู่ตรงกลางของห้องลองเพิ่มอีกหนึ่งแถวด้านบนและด้านล่าง --------- | | | --- | | | | | | --- | | | --------- ตอนนี้เพียงเพิ่มหลังคา ใส่เครื่องหมายสแลชซ้ายสุดและแบ็กสแลชขวาสุดเท่าที่จะทำได้และเรามี: / \ --------- | | | --- | | | | | | …

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