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

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

25
เคล็ดลับสำหรับการเล่นกอล์ฟใน C ++
คุณมีเคล็ดลับทั่วไปอะไรในการเล่นกอล์ฟใน C ++ ฉันกำลังมองหาแนวคิดที่สามารถนำไปใช้กับปัญหารหัสกอล์ฟโดยทั่วไปซึ่งอย่างน้อยค่อนข้างเฉพาะเจาะจงกับ C ++ (เช่น "ลบความคิดเห็น" ไม่ใช่คำตอบ) กรุณาโพสต์หนึ่งเคล็ดลับต่อคำตอบ
48 code-golf  tips  c++ 

8
N-movers: ฉันสามารถไปถึงบอร์ดที่ไม่มีที่สิ้นสุดได้เท่าไหร่?
ย้ายเดี่ยว กระดานเป็นตารางสี่เหลี่ยมสองมิติที่ไม่มีที่สิ้นสุดเช่นกระดานหมากรุกที่ไร้ขีด จำกัด ชิ้นส่วนที่มีค่า N ( N-mover ) สามารถย้ายไปยังจตุรัสใดก็ได้ที่มีระยะทางเท่ากับรากที่สองของ N จากสแควร์ปัจจุบัน ตัวอย่างเช่น: ผู้เสนอญัตติ 1 สามารถย้ายไปยังตารางใด ๆ ที่อยู่ติดกันในแนวนอนหรือแนวตั้ง ผู้เสนอญัตติ 2 สามารถย้ายไปยังตารางใด ๆ ที่อยู่ติดกันในแนวทแยงมุม ผู้เสนอญัตติ 5 เท่าเคลื่อนไหวเหมือนหมากรุกอัศวิน โปรดทราบว่าตัวย้าย N-movers บางคนไม่สามารถเคลื่อนย้ายได้ ผู้เสนอญัตติ 3 คนไม่สามารถออกจากจตุรัสปัจจุบันได้เพราะไม่มีสแควร์สบนกระดานเป็นระยะทางของรูท 3 จากสแควร์ปัจจุบัน การเคลื่อนไหวหลายครั้ง หากได้รับอนุญาตให้ย้ายซ้ำหลาย ๆ ชิ้นสามารถไปถึงช่องสี่เหลี่ยมบนกระดานได้ ตัวอย่างเช่นผู้เสนอญัตติ 1 และ 5 ผู้มีอิทธิพลสามารถทำได้ ผู้เสนอญัตติ 2 สามารถเคลื่อนที่ในแนวทแยงมุมและสามารถเข้าถึงครึ่งหนึ่งของสี่เหลี่ยม ชิ้นส่วนที่ไม่สามารถเคลื่อนย้ายได้เช่นเดียวกับ 3 ผู้เสนอญัตติไม่สามารถเข้าถึงใด ๆ ของสี่เหลี่ยม(ตารางที่เริ่มต้นจะไม่นับเป็น …

30
เป็ดสีน้ำเงินเป็ดแดงเป็ดสีเทา
ดังนั้นสัปดาห์สุดท้ายที่ผมโพสต์ความท้าทายในการเล่นเป็ด, เป็ด, ห่าน นำเรื่องนี้ไปยังหมายเลขของ Minnesotans แสดงความคิดเห็นเกี่ยวกับภูมิภาคของพวกเขา'เป็ดสีเทา' รูปแบบ ดังนั้นนี่คือกฎ: ใช้รายการสีนี้: Red Orange Yellow Green Blue Indigo Violet Gray เขียนโปรแกรมเพื่อปฏิบัติตามกฎเหล่านี้: เลือกสีใดสีหนึ่งเหล่านี้และเติมลงในคำว่า 'เป็ด' แล้วพิมพ์ผลลัพธ์ลงในบรรทัดใหม่ หากสีไม่ใช่ 'สีเทา' ให้ทำซ้ำขั้นตอนที่ 1 หากสีเป็น 'สีเทา' ให้ปิดโปรแกรมของคุณ กฎที่ต้องปฏิบัติตาม: โปรแกรมไม่ควรพิมพ์จำนวนบรรทัดที่เท่ากัน มันสามารถเริ่มต้นที่ 'เป็ดสีเทา' แต่ไม่ควรทำอย่างสม่ำเสมอ ควรมีเป็ดตัวเดียวในแต่ละบรรทัดและไม่มีบรรทัดว่าง ควรมีอย่างน้อยหนึ่งช่องว่างระหว่างสีและเป็ด พื้นที่สีขาวก่อนและหลังการส่งออกที่สำคัญไม่สำคัญ กรณีของการส่งออกไม่สำคัญ สามารถทำซ้ำสีได้ ผลลัพธ์ไม่จำเป็นต้องมีทุกสีทุกครั้ง แต่ต้องเป็นไปได้ที่รหัสของคุณจะออกทุกสี ไม่สามารถรวมสีภายนอกอาเรย์ด้านบนได้ คำตอบของคุณเป็นสีเทาหรือสีเทา สีไม่ควรอยู่ในลำดับเดียวกันเสมอไป ตั้งเป้าหมายโปรแกรมที่สั้นที่สุด จำนวนไบต์ที่น้อยที่สุดชนะ ตัวอย่างผลลัพธ์: Green duck Orange duck …
48 code-golf 

30
มีรูที่ก้นทะเล
ในขณะที่พยายาม (และล้มเหลว) ชักชวนให้ลูกชายทารกกินอาหารเย็นของฉันฉันพยายามร้องเพลงให้เขา ผ่านกลางเพลงนี้ฉันรู้ว่าโครงสร้าง formulaic อาจให้ยืมตัวเองได้ดีในการตีกอล์ฟ! ภารกิจคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ไม่รับอินพุตและสร้างข้อความต่อไปนี้: There's a hole in the bottom of the sea There's a hole in the bottom of the sea There's a hole, there's a hole There's a hole in the bottom of the sea There's a log in the hole in the bottom of …

12
หมายเลขฟิสไซล์
ฉันพบลำดับนี้ในขณะที่ทำงานกับEvolution of OEISแต่ไม่เคยมีโอกาสโพสต์มันเป็นคำตอบ หลังจากเขียนการนำการอ้างอิงไปใช้ใน Mathematica ฉันคิดว่านี่เป็นแบบฝึกหัดที่สนุกที่จะทำเป็นความท้าทายที่แยกจากกันดังนั้นที่นี่เราไปกันเลย มาสร้างเครื่องปฏิกรณ์ฟิชชันเป็นตัวเลขกันเถอะ! Nพิจารณาเป็นจำนวนเต็มบวก 24เป็นตัวอย่างที่เราจะดูที่ ในการแยกจำนวนนี้เราต้องหาจำนวนเต็มบวกที่ต่อเนื่องสูงสุดที่รวมNกัน ในกรณีนี้นั่นก็7 + 8 + 9 = 24คือ ดังนั้นเราจึงแบ่งออก24เป็นสามตัวเลขใหม่ แต่นี่จะไม่เป็นเครื่องปฏิกรณ์ฟิชชันมากนักหากไม่มีปฏิกิริยาลูกโซ่ ดังนั้นให้ทำซ้ำขั้นตอนซ้ำสำหรับส่วนประกอบเหล่านี้: 24 /|\ / | \ / | \ 7 8 9 / \ /|\ 3 4 / | \ / \ / | \ 1 2 2 3 4 / …

30
Facey McFaceface
ใครจำBoaty ? คุณสามารถสร้างคำเก่า ๆ ได้ใช่ไหม? เขียนฟังก์ชั่นเพื่อเปลี่ยนสตริงเป็น Somethingy McSomethingface ควรยอมรับหนึ่งสตริงเป็นอินพุต ละเว้นกรณีของการป้อนข้อมูล หากคำลงท้ายด้วย 'y' ฟังก์ชั่นของคุณไม่ควรเพิ่ม 'y' เพิ่มเติมในอินสแตนซ์แรก แต่ควรลบออกในอินสแตนซ์ที่สอง หากคำลงท้ายด้วย 'ey' คำนั้นไม่ควรเพิ่ม 'y' เพิ่มเติมในอินสแตนซ์แรก แต่ควรลบทั้งสองในอินสแตนซ์ที่สอง ผลลัพธ์ควรมีตัวอักษรตัวพิมพ์ใหญ่ในอักขระตัวแรกคือ 'M' ของ 'Mc' และตัวอักษรตัวแรกหลัง 'Mc' มันจะต้องทำงานกับสายอักขระ 3 ตัวขึ้นไป ตัวอย่าง: boat => Boaty McBoatface Face => Facey McFaceface DOG => Dogy McDogface Family => Family McFamilface Lady => …
47 code-golf  string 

30
99 ข้อบกพร่องในรหัส
99 ข้อบกพร่องในรหัส การดัดแปลงของ "99 ขวดเบียร์บนกำแพง" สำหรับวิทยาศาสตร์คอมพิวเตอร์ที่มีข้อบกพร่องเพิ่มขึ้นแทนที่จะลดขวดมักจะโพสต์อีกครั้งในอินเทอร์เน็ต ตัวอย่างเช่นเสื้อยืดที่นี่ ฉันคิดว่ามันน่าสนใจที่จะเห็นการเรียกซ้ำและการสร้างตัวเลขสุ่มในภาษาที่หลากหลายและการค้นหาวิธีที่มีประสิทธิภาพที่สุดในการทำมัน มีความท้าทายเล็กน้อยอื่น ๆ เกี่ยวกับเบียร์ 99 ขวด แต่ดูเหมือนจะไม่มีอะไรเพิ่มขึ้นและลดลง! ท้าทาย โปรแกรมหรือฟังก์ชั่นของคุณไม่ควรป้อนข้อมูลแล้วพิมพ์ 99 ข้อบกพร่องในรหัส 99 ข้อบกพร่องในรหัส เอาหนึ่งและแก้ไขมัน X ข้อบกพร่องในรหัส (บรรทัดว่าง) โดยที่ X คือเลขจำนวนเต็มก่อนหน้าลบ 1 บวกด้วยจำนวนเต็มแบบสุ่มในช่วง [-15,5] คุณสามารถรวมลบ 1 เข้ากับจำนวนเต็มแบบสุ่มดังนั้นจึงอนุญาตให้มีช่วง [-16,4] ช่วงสามารถเป็นแบบพิเศษได้ดังนั้นลบหนึ่งบวก (-16,6) หรือ (-17,5) จำนวนเต็มแบบสุ่มไม่จำเป็นต้องมีการกระจายอย่างเท่าเทียมกันพวกเขาเพียงแค่ต้องเป็นไปได้ทั้งหมด โปรแกรมเริ่มต้นด้วย 99 บั๊กเสมอ คุณสามารถละเว้นข้อผิดพลาดทางไวยากรณ์ของ "1 ข้อบกพร่อง" โปรแกรมควรหยุดเมื่อจำนวนข้อบกพร่องเป็น 0 หรือลบและพิมพ์ 0 ข้อบกพร่องในรหัส …
47 code-golf  random 

6
ตีกอล์ฟให้ใหญ่กว่า TREE (3)
TREE (k) ของฟังก์ชันให้ความยาวของลำดับที่ยาวที่สุดของต้นไม้ T 1 , T 2 , ... ซึ่งจุดยอดแต่ละจุดจะมีป้ายกำกับด้วยสี k หนึ่งสีต้นไม้ T ฉันมีจุดสูงสุดที่ฉันและไม่มีต้นไม้ใดเป็นเล็กน้อยของต้นไม้ใด ๆ ที่ตามมาในลำดับ TREE (1) = 1 กับเช่น T 1(1) = TREE (2) = 3: เช่น T 1 = (1); T 2 = (2)--(2); T 3(2) = TREE (3) เป็นใหญ่ขนาดใหญ่จำนวน ยิ่งใหญ่กว่าตัวเลขของเกรแฮม งานของคุณคือการส่งออกจำนวนที่ยิ่งใหญ่กว่ามัน! นี่เป็นโค้ดกอล์ฟดังนั้นเป้าหมายคือการเขียนโปรแกรมที่สั้นที่สุดในภาษาใด ๆ ที่กำหนดผลลัพธ์ที่มีขนาดใหญ่กว่าหรือเท่ากับ TREE …

24
ปรับลดเป็น Palindrome
รับสตริงsส่งคืนซับสตริงย่อยที่เล็กที่สุดที่คุณสามารถลบออกเพื่อสร้าง palindrome ตัวอย่าง: 800233008 -> 2 racecarFOOL -> FOOL abcdedcba -> (empty string) ngryL Myrgn -> "L " (or " M") 123456789 -> 12345678 (or 23456789) aabcdbaa -> c (or d) [[]] -> [[ (or ]]) a -> (empty string) คำแนะนำกรณีทดสอบจากผู้ใช้ (หากคุณพบกรณีขอบไม่อยู่ในรายการโปรดโพสต์ความคิดเห็น): aabaab -> b | Suggested by Zgarb, some …

29
ไปที่หน้า Nth
เป็นเรื่องปกติที่จะต้องสร้างส่วนต่อประสานการเลือกหน้า โดยทั่วไปจะมีลักษณะเช่นนี้: prev 1 ... 3 4 [5] 6 7 ... 173 next ซึ่งหมายความว่ามีทั้งหมด 173 หน้าและคุณอยู่ในหน้าที่ 5 ในขณะนี้ ความท้าทายนี้ต้องการให้คุณใช้จำนวนหน้าทั้งหมดและหมายเลขหน้าปัจจุบันเป็นอินพุตและส่งออกสตริง (หรืออาร์เรย์) เพื่อ "แสดง" ตัวเลือกหน้า อินพุต 2 จำนวนเต็มบวก หมายเลขหน้าปัจจุบัน จำนวนหน้า รับประกันได้ว่า 1 <= current <= total เอาท์พุต ส่งออกสตริงหรืออาร์เรย์ซึ่งเป็นตัวแทนของ UI สำหรับตัวเลือกหน้า หากเอาต์พุตเป็นสตริงควรใช้เว้นวรรค (U + 0020) ระหว่างแต่ละหน้า หากเอาต์พุตเป็นอาร์เรย์อาร์เรย์ควรสร้างผลลัพธ์เดียวกันกับสตริงหลังจากแปลงแต่ละรายการเป็นสตริงและเข้าร่วมกับช่องว่างเดียว สามจุด ( ...) ไม่ใช่ตัวเลือกสำหรับเอาต์พุตอาร์เรย์ รายละเอียด หากปัจจุบัน …
47 code-golf  string 

30
สามเหลี่ยมของฉันถูกไหม
เมื่อกำหนดa, b, cความยาวของสามเหลี่ยมทั้งสามด้านให้บอกว่าสามเหลี่ยมนั้นเป็นมุมฉาก (เช่นมีมุมหนึ่งเท่ากับ 90 องศา) หรือไม่ อินพุต ค่าจำนวนเต็มบวกสามค่าในลำดับใดก็ได้ เอาท์พุต อย่างใดอย่างหนึ่งโดยเฉพาะการส่งออกที่แท้จริง ( true, 1, yes, ... ) หรือการส่งออกเฉพาะเท็จ ( false, 0, no, ... ) ตัวอย่าง 5, 3, 4 --> yes 3, 5, 4 --> yes 12, 37, 35 --> yes 21, 38, 50 --> no 210, 308, 250 --> no …

13
สุดยอดฟีโบนักชี
มีการท้าทาย Fibonacci ซ้ำหลายพันล้านครั้งในเว็บไซต์นี้ดังนั้นขอเชิญชวนให้ทุกท่านสนุกกับการท้าทาย Fibonacci อีกครั้งหนึ่งพันล้านครั้ง! ความท้าทายของคุณคือการส่งออกตัวเลขทศนิยม 1,000 หลักแรกของหมายเลขฟีโบนักชีที่ 1,000,000,000 พร้อมโปรแกรมให้สั้นที่สุด ซึ่งอาจเป็นทางเลือกตามด้วยผลลัพธ์เพิ่มเติมใด ๆ ที่คุณเลือกซึ่งรวมถึง แต่ไม่ จำกัด เพียงตัวเลขที่เหลือ ฉันใช้การประชุมว่า,fib 0 = 0fib 1 = 1 โปรแกรมของคุณจะต้องเร็วพอสำหรับคุณที่จะเรียกใช้และตรวจสอบความถูกต้องของมัน เพื่อจุดประสงค์นี้นี่คือตัวเลข 1,000 หลักแรก: 7952317874554683467829385196197148189255542185234398913453039937343246686182519370050999626136556779332482035723222451226291714456275648259499530612111301255499879639516053459789018700567439946844843034599802419924043753401950114830107234265037841426980398387360784284231996457340782784200767760907777703183185744656536253511502851715963351023990699232595471322670365506482435966586886048627159716916351448788527427435508113909167963907380398242848033980110276370544264285032744364781198451825462130529529633339813483105771370128111851128247136311414208318983802526907917787094802217750859685116363883374847428036737147882079956688807509158372249451437519320162582002000530798309887261257028201907509370554232931107084976854715833585623910450679449120011564762925649144509531904684984417002512086504020779012501356177874199605085558317190905395134468919443313026824813363234190494375599262553025466528838122639433600483849535070647711986769279568548796855207684897741771784375859496425384355879105799

30
หอยทากในบ่อ
พื้นหลัง มีปัญหาลับสมองที่จะทำสิ่งนี้: หอยทากอยู่ที่ก้นบ่อ 30 ฟุต หอยทากทุกวันสามารถปีนขึ้นไปได้ถึง 3 ฟุต ในเวลากลางคืนเมื่อพวกเขานอนหลับพวกเขาเลื่อนกลับลงมา 2 ฟุต หอยทากใช้เวลากี่วันในการออกจากบ่อ? คำตอบที่เข้าใจง่ายคือ 30 วันเพราะหอยทากปีนขึ้นไปที่ 1 ฟุตต่อวันเป็นเวลา 30 วันเพื่อไปถึงจุดสูงสุด แต่จริงๆแล้วคำตอบคือ 28 วันเพราะเมื่อหอยทากอยู่ในอากาศ 27 ฟุต (หลังจาก 27 วัน) พวกเขาจะปีนขึ้นไปอีก 3 ฟุตที่เหลือในวันที่ 28 ท้าทาย ความท้าทายนี้ทำให้ปัญหานี้กลายเป็นปัญหาทั่วไป เมื่อรับอินพุตจำนวนเต็มบวกสามตัวแทนความสูงทั้งหมดความสูงปีนและความสูงของฤดูใบไม้ร่วงให้คืนค่าจำนวนวันที่ใช้ในการปีนออกจากบ่อน้ำ หากหอยทากไม่สามารถปีนออกจากหลุมคุณอาจกลับ 0 กลับค่าเท็จหรือโยนข้อยกเว้น คุณอาจเขียนโค้ดที่จะหยุดหากว่ามีวิธีแก้ไขอยู่หรือไม่ หากคุณต้องการคุณอาจใช้ความสูงของการตกเป็นจำนวนเต็มลบ กรณีทดสอบ (30, 3, 2) -> 28 (84, 17, 15) -> 35 …

30
นี่เป็นฟังก์ชั่นหรือไม่?
รับรายการ(key, value)คู่ตรวจสอบว่ามันหมายถึงฟังก์ชั่นซึ่งหมายความว่าแต่ละแผนที่สำคัญกับค่าที่สอดคล้องกัน กล่าวอีกนัยหนึ่งเมื่อใดก็ตามที่สองรายการมีคีย์เท่ากันพวกเขาจะต้องมีค่าเท่ากัน รายการที่ซ้ำกันก็โอเค ตัวอย่างเช่น: # Not a function: 3 maps to both 1 and 6 [(3,1), (2,5), (3,6)] # Function: It's OK that (3,5) is listed twice, and that both 6 and 4 both map to 4 [(3,5), (3,5), (6,4), (4,4)] อินพุต:ลำดับของ(key, value)คู่ที่สั่งซื้อโดยใช้ตัวเลข 1 ถึง 9 คุณอาจไม่ต้องการการเรียงลำดับแบบพิเศษ คุณอาจเลือกรายการคีย์และรายการค่าเป็นอินพุตแยกต่างหาก เอาท์พุท:ค่าที่สอดคล้องกันสำหรับฟังก์ชั่นและค่าที่สอดคล้องกันที่แตกต่างกันสำหรับที่ไม่ใช่ฟังก์ชั่น …

30
เป็นคนแรกที่ 1
Intro ทุก ๆ ปีDyalog Ltd.จัดการแข่งขันสำหรับนักเรียน ความท้าทายคือการเขียนรหัส APL ที่ดี นี่เป็นรุ่นที่ผู้ไม่เชื่อเรื่องภาษารหัสของปัญหาที่แปดของปีนี้ ฉันมีสิทธิ์อย่างชัดเจนในการโพสต์ความท้าทายนี้ที่นี่จากผู้เขียนต้นฉบับของการแข่งขัน รู้สึกอิสระที่จะตรวจสอบโดยทำตามลิงค์ที่ให้ไว้และติดต่อผู้เขียน ปัญหา รับรายการบูลีน * "ปิด" ความจริงทั้งหมดหลังจากความจริงครั้งแรก ไม่มีความจริงเหรอ? ไม่มีปัญหา! เพียงแค่คืนค่ารายการโดยไม่แก้ไข ตัวอย่าง [falsy,truthy,falsy,truthy,falsy,falsy,truthy] → [falsy,truthy,falsy,falsy,falsy,falsy,falsy] [] → [] [falsy,falsy,falsy,falsy] → [falsy,falsy,falsy,falsy] * ความจริงทั้งหมดของคุณจะต้องเหมือนกันและความเท็จทั้งหมดของคุณจะต้องเหมือนกัน รวมถึงผลลัพธ์ด้วย

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