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

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

7
Magic: The Gathering Combat with Abilities
ที่เกี่ยวข้อง เป้าหมาย: ให้สองสิ่งมีชีวิตที่มีความสามารถในการต่อสู้ที่เป็นตัวเลือกคืนค่าที่ไม่เหมือนใคร การป้อนข้อมูล: #Longest form: [[P,T, "<abilities>"], [P,T, "<abilities>"]] #Shortest form: [[P,T], [P,T]] [P,T,"<abilities>"]สิ่งมีชีวิตแต่ละคนจะได้รับในรูปแบบของ มันจะเป็นในรูปแบบ[P,T], [P,T,""]หรือ[P,T,0]ถ้ามันไม่มีความสามารถที่คุณเลือกในแบบฟอร์ม P เป็นจำนวนเต็ม> = 0, T เป็นจำนวนเต็ม> = 1 <abilities>เป็นเซตย่อยของ"DFI"หรือสามารถแสดงผ่านหมายเลข / บิตสตริงเดียวหากคุณต้องการ ลำดับธงขึ้นอยู่กับคุณเช่นกัน กลศาสตร์การต่อสู้: สัตว์แต่ละตัวมีสองสถิติพลังและความเหนียวในลำดับนั้นและความสามารถเสริม พลังของสิ่งมีชีวิตคือ> = 0 ความเหนียวของสิ่งมีชีวิตคือ> = 1 สิ่งมีชีวิตแต่ละตัวจะสร้างความเสียหายเท่ากับพลังของสิ่งมีชีวิตที่ตรงข้ามพร้อมกัน หากค่ามากกว่าหรือเท่ากับความเหนียวของคู่ต่อสู้มันจะตาย (ยกเว้นว่ามันไม่สามารถทำลายได้) ตัวอย่าง: อลิซคือ a 2/2, บ็อบเป็น3/4ทั้งที่ไม่มีความสามารถ อลิซจะทำความเสียหายให้กับ Bob 2 ครั้งและรับความเสียหาย 3 …

10
ถามฉันมาเร่ร่อน!
Quine Relay! ถ่ายทอดควินของการสั่งซื้อเป็นชุดของโปรแกรมP 1 ... P nในที่แตกต่างกันเช่นภาษาที่แต่ละโปรแกรมP ฉัน outputs P ฉัน+ 1และP nผลP 1nnnP1… พีnP1...PnP_1\dots P_nPผมPผมP_iPฉัน+ 1Pผม+1P_{i+1}PnPnP_nP1P1P_1 ตัวอย่างเช่นรีเลย์ 2 quine สามารถดูได้ที่นี่: Ruby → Perl 6: โปรแกรม Ruby นี้ : $><<"print (" p (DATA.read*2).chars.map(&:ord) $><<".map: &chr).join" __END__ $><<"print (" p (DATA.read*2).chars.map(&:ord) $><<".map: &chr).join" __END__ แสดงผลโปรแกรม Perl 6 นี้ : print ([36, …

17
รูปแบบสลับ
ในคำถามสแต็คโอเวอร์โฟลว์ที่ถูกลบตอนนี้มีคนโพสต์สิ่งต่อไปนี้: เขียนโปรแกรมหรือฟังก์ชั่นการพิมพ์รูปแบบสลับ*และอยู่บนพื้นฐานของจำนวนเต็มรับ# nตัวอย่างบางส่วน: อินพุต: n=1 เอาต์พุต: * อินพุตn=5 เอาต์พุต: *#### ###** ***## ###** *#### อินพุต: n=8 เอาต์พุต: *####### ######** ***##### ####**** ****#### #####*** **###### #######* เนื่องจากมันดูเหมือนความท้าทายในการเล่นรหัสกอล์ฟที่ยอดเยี่ยมนี่คือ รูปแบบเหล่านี้สร้างได้อย่างไร บรรทัดแรกเริ่มต้นด้วยการเป็นหนึ่งเดียว*ตามปริมาณของต่อท้ายn-1 บรรทัดที่สองแล้วมีสองกับปริมาณของชั้นนำ บรรทัดที่สามเริ่มต้นด้วยสามตามด้วยปริมาณของต่อท้าย เป็นต้น#*n-2#*n-3# เมื่อเรามาถึงตรงกลาง ( n/2) เราจะนับกลับอีกครั้งด้วยจำนวน*ซึ่งสามารถเห็นได้ในตัวอย่างด้านบน โปรดทราบว่าสำหรับตัวเลขที่ป้อนผิดคู่ของคู่สายที่ถูกผกผัน (ดังนั้นก่อนและสุดท้าย; สองและถัดจากสุดท้าย; ฯลฯ ) จะเหมือนกันทุกประการ ในn=5ตัวอย่างบรรทัดแรกและบรรทัดสุดท้ายคือ*####; ###**ที่สองและถัดจากบรรทัดสุดท้ายจะ สำหรับหมายเลขอินพุทแม้จะมีคู่ของสายที่ถูกผกผันจะกลับรายการ ในn=8ตัวอย่างบรรทัดแรกและบรรทัดสุดท้ายคือ*#######และ#######*; บรรทัดที่สองและถัดจากบรรทัดสุดท้ายคือ######**และ**######; เป็นต้น กฏท้าทาย: คุณสามารถใช้ใด ๆ …

6
กินปลาขนาดกำลังเติบโต
คุณเป็นปลาในบ่อที่ต้องเอาตัวรอดจากการกินปลาอื่น คุณสามารถกินปลาที่มีขนาดเท่ากันหรือเล็กกว่าตัวคุณได้เท่านั้น คุณต้องสร้างโปรแกรมที่จะใช้ฝูงปลาที่เรียงลำดับ จากนี้คุณต้องคำนวณจำนวนปลาที่คุณสามารถกินได้และขนาดที่คุณจะเติบโต กราฟขนาด +--------------+--------------+--------------+--------------+ | | Amount extra | Total size 1 | Increase to | | Current size | needed for | fish | size | | | next size | | | +--------------+--------------+--------------+--------------+ | 1 | 4 | 4 | 2 | +--------------+--------------+--------------+--------------+ | 2 | …

4
คดเคี้ยวไปมาสตริงนี้โดยการยุบซ้ำ
รับสายงานของคุณคือการยุบลงในโครงสร้างเหมือนซิกแซกตามที่อธิบายไว้ด้านล่าง พับเป็นซิกแซก เราจะนำสตริง"Mississippi"เป็นตัวอย่าง: ก่อนอื่นให้ส่งคำนำหน้าที่ยาวที่สุดซึ่งประกอบด้วยอักขระที่ไม่ซ้ำกันเท่านั้น: Mis เมื่อคุณไปถึงอักขระที่ซ้ำกันตัวแรกCให้ละเว้นมันและนำหน้าคำนำหน้าที่ยาวที่สุดซึ่งประกอบด้วยอักขระที่ไม่ซ้ำกันของสตริงที่เหลือ ( issippi) ในแนวตั้งภายใต้การเกิดครั้งแรกของC : Mis i s ทำซ้ำกระบวนการสลับระหว่างความต่อเนื่องในแนวนอนและแนวตั้ง แต่ตอนนี้ต้องระวัง (ในขั้นตอนที่ 1) เพื่อดำเนินการแสดงผลในแนวนอนต่อจากการเกิดซ้ำของอักขระที่ซ้ำกันล่าสุดซึ่งไม่จำเป็นต้องเป็นอักขระสุดท้ายเช่นในกรณีนี้: Mis i sip ----- Mis i sip i กฎระเบียบ สตริงจะมีอักขระ ASCII ที่พิมพ์ได้เท่านั้น แต่จะไม่มีช่องว่างใด ๆ คุณสามารถแข่งขันในภาษาการเขียนโปรแกรมใด ๆและสามารถรับอินพุตและให้ผลลัพธ์ผ่านวิธีมาตรฐานใด ๆและในรูปแบบที่สมเหตุสมผล1ในขณะที่การจดบันทึกว่าช่องโหว่เหล่านี้ถูกห้ามโดยค่าเริ่มต้น นี่คือโค้ดกอล์ฟดังนั้นการส่งที่สั้นที่สุด (เป็นไบต์) สำหรับทุกภาษาที่ชนะ 1อินพุต: สตริง / รายการอักขระ / ภาษาอื่นที่คุณใช้เพื่อแสดงสตริง เอาต์พุต: สตริงหลายบรรทัด, รายการของสตริงที่แทนบรรทัดหรือรายการของอักขระ / ความยาว -1 …

30
กู้คืนพลังงานจากพลังงานหลัก
ดูเหมือนว่าหลายคนต้องการที่จะมีสิ่งนี้ดังนั้นตอนนี้มันเป็นภาคต่อของความท้าทายนี้ ! คำนิยาม : พลังพิเศษเป็นจำนวนธรรมชาติที่สามารถแสดงในรูปแบบ p nโดยที่ p คือจำนวนเฉพาะและ n คือจำนวนธรรมชาติ ภารกิจ : รับพลังพิเศษหน้า n > 1 ให้ส่งคืนพลังงาน n ทดสอบ : input output 9 2 16 4 343 3 2687 1 59049 10 เกณฑ์การให้คะแนน : นี่คือรหัสกอล์ฟ คำตอบที่สั้นที่สุดในการชนะไบต์

5
การดำเนินงานขั้นต่ำที่จะได้รับจากหมายเลขหนึ่งไปยังอีก
มานิยามภาษาง่าย ๆ ที่ทำงานกับค่า 8 บิตเดียว มันกำหนดการดำเนินงานสามระดับบิต (คำอธิบายรหัสถือว่าvalueตัวแปร8 บิต): !ลบล้างบิตที่สำคัญน้อยที่สุด ( value ^= 1) <ห่อกะซ้าย ( value = value << 1 | value >> 7) >ห่อขวากะ ( value = value >> 1 | value << 7) การป้อนข้อมูล: ตัวเลขสอง 8 บิตและข เนื่องจากมีขนาด 8 บิตคุณสามารถเลือกใช้เป็นอักขระได้ เอาท์พุท: วิธีที่สั้นที่สุดที่จะได้รับจาก a ถึง b โดยการปฏิบัติการทั้งสามที่กำหนดไว้ด้านบน คุณสามารถส่งคืนสตริงหรืออาร์เรย์ของอักขระหรือกำหนดค่าคงที่และแตกต่างกันสำหรับการดำเนินการแต่ละครั้งและส่งกลับอาร์เรย์ของค่าเหล่านั้น (ใช่คุณสามารถพูดความ<หมาย>และความ>หมาย<) …

27
รายการ PIN กุญแจที่ไม่ซ้ำ!
บทนำ ในการแชทส่วนตัวเพื่อนของฉันเพิ่งสะดุดกับระบบความปลอดภัยซึ่งมีข้อ จำกัด สองข้อต่อไปนี้ในพินที่ถูกต้อง: แต่ละหลักต้องไม่ซ้ำกัน (นั่นคือ "1" อาจปรากฏเพียงครั้งเดียวเท่านั้น) ลำดับของตัวเลขไม่สำคัญ ("1234" = "4321") ดังนั้นเพื่อแสดงให้เห็นว่าระบบกุญแจนี้แย่เพียงใดเรามาแจกแจง PIN ที่ถูกต้องทั้งหมด! อินพุต ข้อมูลที่คุณป้อนจะประกอบด้วยจำนวนเต็มบวกจำนวนเต็มเดียวซึ่งหมายถึงความยาวของ PIN เอาท์พุต ผลลัพธ์ของคุณประกอบด้วยรายการจำนวนเต็มหรือสตริงที่ไม่เป็นลบ * ซึ่งระบุ PIN ที่ถูกต้องทั้งหมดของความยาวที่กำหนด * สิ่งที่มนุษย์สามารถใช้เพื่อลองชุดค่าผสมทั้งหมดหากคุณต้องการพิมพ์ให้พวกเขา ซึ่งหมายความว่าชุดของชุดของตัวเลขและอาร์เรย์ของตัวเลขนั้นใช้ได้ ใครชนะ? นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ! มาตรฐานกฎระเบียบและช่องโหว่ใช้ คดีมุม พฤติกรรมเอาท์พุทไม่ได้กำหนดถ้าจำนวนเต็มมากกว่า 10 คือการป้อนข้อมูล การเรียงลำดับตัวเลขภายในแต่ละรายการเอาต์พุตไม่ได้ถูกกำหนดเนื่องจากรายการที่มีศูนย์ประกอบด้วยศูนย์ดังกล่าวจริงนั่นคือคุณไม่สามารถตัด "0123" ถึง "123" แต่ "1230", "1203" และ "1023" ทั้งหมดถูกต้อง ตามที่เป็น "0123" กรณีทดสอบ 1 [0,1,2,3,4,5,6,7,8,9] 2 …

4
สร้าง Portmantout!
พื้นหลัง สามปีที่ผ่านมาผู้ชายคนนี้ทอมเมอร์ฟี่ได้รับมันเข้ามาในหัวของเขาที่จะขยายความคิดของกระเป๋าหิ้วถ้อยคำในภาษาหนึ่งและเรียกนี้portmantout ( กระเป๋าหิ้วบวกทัวร์ [ภาษาฝรั่งเศสทั้งหมด ]) การกำหนดภาษาอังกฤษให้เป็นรายการจาก 108,709 คำเขาสามารถค้นหาลำดับ 611,820 ตัวอักษรโดยมีคุณสมบัติสองอย่างต่อไปนี้: คำภาษาอังกฤษทุกคำมีอยู่ในสตริง บางพื้นที่ใกล้เคียงที่มีตัวอักษรสองตัวที่ติดกันในสตริงเป็นคำภาษาอังกฤษ ต่อไปนี้เป็นลิงก์ไปยังหน้าซึ่งสามารถค้นหาพอร์ตนี้ (พร้อมด้วยคำอธิบายวิดีโอ) portmantout คุณสมบัติแรกของทั้งสองพอร์ตเป็นสิ่งที่เข้าใจได้ง่าย ครั้งที่สองอาจต้องการคำอธิบายบางอย่าง โดยทั่วไปคำจะต้องทับซ้อนกัน "golfcode" จะไม่ปรากฏในพอร์ตภาษาอังกฤษเนื่องจากไม่มีคำที่มี "fc" อย่างไรก็ตามคุณอาจพบ "codegolf" ใน portmantout สำหรับ "ego" เชื่อมช่องว่าง (และตัวอักษรอื่น ๆ ทั้งหมดอยู่ใน "code" หรือ "golf") งานของคุณ: เขียนโปรแกรมหรือฟังก์ชั่นที่รับรายการสตริงและส่งกลับพอร์ตใด ๆ ของรายการ รหัส Python 3นี้จะตรวจสอบพอร์ตพอร์ต กรณีทดสอบ รายการทั้งหมดไม่มีการเรียงลำดับ นั่นคือ, {"code", "ego", "golf"} -> "codegolf" …

26
ตัวเลขที่เท่ากันในอาร์เรย์ย่อย
รับอาร์เรย์ของตัวเลขด้วยlength >=3และlength % 3 == 0 [1, 2, 3, 4, ...] คุณจะแบ่งออกเป็นอาเรย์ย่อยที่มีความยาว 3 [[1, 2, 3], [4, 5, ...], [... และส่งคืนอาร์เรย์ด้วย [0] => จำนวนกรณีในอาร์เรย์ย่อยที่ตัวเลขทั้งหมดเท่ากัน [1] => ในกรณีที่ตัวเลขทั้งหมดใน sub-array ไม่เท่ากันจำนวนของ case ใน sub-array ที่มีเพียง 2 ตัวเลขเท่านั้น ตัวอย่างและกรณีทดสอบ: อินพุต: [2, 4, 2, 5, 5, 5, 4, 2, 1, 3, 3, 1]เอาต์พุต[1, 2] …

8
จำแนกภูมิภาคตามความชัน
คำนิยาม k THแหวนของตารางเมทริกซ์ขนาดNที่1 ≤ k ≤เพดาน (N / 2)เป็นรายการที่เกิดขึ้นจากองค์ประกอบของk THและ(N-k + 1) THแถวและคอลัมน์ แต่ไม่มีองค์ประกอบk-1แรกและสุดท้าย ตัวอย่าง: เมทริกซ์: 1 2 3 4 5 6 7 8 9 1 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 คั่นด้วยวงแหวน + + ------------------- | 1 2 3 4 …

7
การหมุนของต้นไม้ไบนารี
แผนผังการค้นหาแบบไบนารีที่สมดุลเป็นสิ่งจำเป็นในการรับประกันการค้นหาO (บันทึก n) (หรือการดำเนินการที่คล้ายกัน) ในสภาพแวดล้อมแบบไดนามิกที่มีการแทรกและสุ่มคีย์จำนวนมากและ / หรือลบต้นไม้อาจทำให้รายการเชื่อมโยงแย่ลงซึ่งน่ากลัวสำหรับการค้นหา ดังนั้นจึงมีหลายชนิดของต้นไม้ไบนารีสมดุลตัวเองที่ต่อต้านผลกระทบนี้ (เช่นต้นไม้ AVLหรือต้นไม้ splay ) ต้นไม้เหล่านี้ขึ้นอยู่กับการหมุนแบบต่าง ๆที่ปรับสมดุลของต้นไม้ ผลัด ในความท้าทายนี้เราจะดูเฉพาะการหมุนทางขวาเดียวการหมุน (การหมุนซ้ายจะสมมาตร) เช่นนี้: 5 3 / \ / \ 3 6 => 1 5 / \ / \ 1 4 4 6 หากมีใบใดใบ1หนึ่ง4หรือ6มีต้นไม้ย่อยทางซ้ายหรือขวาการหมุนก็จะทำให้พวกมันอยู่ตรงนั้น หากนี่เป็นทรีย่อยของต้นไม้ที่มีขนาดใหญ่ขึ้นเราเพียงแค่ "ตัดมันออก" ที่โหนด5และ "แนบใหม่" ต้นไม้ที่หมุน (ตอนนี้โหนด3) ไปยังโหนดนั้น ท้าทาย ให้แผนภูมิการค้นหาแบบไบนารี่1และคีย์หมุนทรีบนโหนดนั้นตามที่อธิบายไว้ข้างต้น 5ที่สำคัญที่ให้ไว้ในตัวอย่างข้างต้นจะเป็น กฎและ I …

12
มันเป็นชุดออกกำลังกายหรือไม่?
เราทุกคนรู้ว่าการออกกำลังกายจำนวนมากมีผลกับร่างกายคุณเพียงครึ่งเดียวดังนั้นคุณต้องทำสองครั้งครั้งละข้าง แบบฝึกหัดดังกล่าวมีสองแบบหนึ่งแบบด้านซ้ายและแบบฝึกหัดด้านขวา อย่างไรก็ตามไม่จำเป็นที่จะต้องดำเนินการทั้งสองอย่างต่อเนื่องตราบใดที่แบบฝึกหัดของทั้งสองฝ่ายอยู่ในลำดับเดียวกัน คุณอาจสลับไปมาระหว่างด้านต่าง ๆ ในโปรแกรมการออกกำลังกายของคุณได้ แต่มันก็ไม่มีเหตุผลที่จะเริ่มต้นการออกกำลังกายด้วยด้านใดด้านหนึ่งและด้านอื่น ๆ ท้าทาย ส่วนการออกกำลังกายคือรายการที่ไม่ใช่ศูนย์จำนวนเต็มที่ครึ่งหลังประกอบด้วยจำนวนเต็มของครึ่งแรกเมื่อตะกี้และในลำดับเดียวกันและสัญญาณของจำนวนเต็มในแต่ละครึ่งปีที่มีค่าเท่ากัน เข้าสู่ระบบในช่วงครึ่งแรกของการออกกำลังกายเป็นส่วนหนึ่งของมันด้านชั้นนำ ชุดออกกำลังกายเป็นศูนย์หรือออกกำลังกายมากขึ้นกับชิ้นส่วนชั้นนำด้านเดียวกันตัดแบ่งกัน รับรายการของเลขจำนวนเต็มที่ไม่ใช่ศูนย์เป็นอินพุตให้พิจารณาว่าเป็นชุดการออกกำลังกายหรือไม่ จำนวนเต็มไม่จำเป็นต้องซ้ำกัน ความยาวของรายการไม่จำเป็นต้องเท่ากับ วิธีการแก้ปัญหาของคุณอาจไม่ใช้ใด ๆ ของช่องโหว่มาตรฐาน คุณสามารถใช้ค่าที่สอดคล้องกันสองค่าสำหรับเอาต์พุต นี่คือรหัสกอล์ฟดังนั้นทางออกที่สั้นที่สุดชนะ ตัวอย่าง [-5, -1, -7, -6, -5, 5, 1, 7, 6, 5]เป็นตัวอย่างของส่วนการฝึก ครึ่งแรกคือ[-5, -1, -7, -6, -5]และครึ่งสุดท้ายคือ[5, 1, 7, 6, 5]ซึ่งเป็นจำนวนเต็มในครึ่งแรกเมื่อตะกี้ นอกจากนี้ครึ่งแรกของจำนวนเต็มทั้งหมดเป็นสัญญาณเดียวกัน -1ด้านชั้นนำส่วนการออกกำลังกายนี้คือ [3, 6, 5, -3, -6, -5, 1, 6, …

12
ค้นหารูปแบบฟีโบนักชี
คุณอาจคุ้นเคยกับลำดับฟีโบนักชีที่สองคำแรกเป็น0, 1(หรือบางครั้ง1, 1) และทุกคำหลังจากนั้นคือผลรวมของสองคำก่อนหน้า มันเริ่มเป็นแบบนี้: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... บางครั้งลำดับมีตัวเลขที่มีรูปแบบเฉพาะที่ฉันสนใจ: ความแตกต่างระหว่างคู่ของตัวเลขใด ๆ ที่อยู่ติดกันเหมือนกันกับคู่อื่น ๆ ยกตัวอย่างเช่นในลำดับที่เริ่มต้นด้วย0, 1คำที่ 18 987คือ และ9-8=1 8-7=1ฉันพอใจอย่างอ่อนโยน ท้าทาย ให้สองค่าเริ่มต้นF(0)และF(1)ส่งออกทุกตัวเลขในลำดับที่สร้างโดยF(n) = F(n-1) + F(n-2)ที่ตรงกับเกณฑ์ต่อไปนี้: ความแตกต่างระหว่างคู่ของตัวเลขใด ๆ ที่อยู่ติดกันจะเหมือนกับคู่อื่น ๆ มีความยาวอย่างน้อยสามหลัก (ตัวเลข 1 และ 2 หลักไม่น่าสนใจสำหรับรูปแบบนี้) อินพุต จำนวนเต็มสองจำนวนที่ไม่เป็นลบน้อยกว่า 10 ** 10 …

16
21 ทรงผมของคติ
21 ทรงผมของคติ กำหนดรายชื่อตัวเลขระหว่าง 1 ถึง 21 (หรือ 0 และ 20) เอาท์พุทการวาด "ต่อกัน" ของใบหน้าต่อไปนี้ ( ดูกฎสำหรับข้อมูลการเย็บ ): ___ ,,, ooo === +++ ### -*~*- (o o) (o o) (o o) (o o) (o o) (o o) (o o) ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo- *** ||| _/7 ))) ((( xxx @__ (o o) (o o) (o …

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