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

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

30
หอคอยแห่งสาย
รับสตริงข้อความเอาท์พุทเป็น 'หอคอย' แต่ละส่วนของสตริง (ของแบบฟอร์ม0:n) ซ้ำแล้วซ้ำอีก5*nดังนั้นตัวอักษรตัวแรกจะถูกทำซ้ำ 5 ครั้งจากนั้นครั้งแรกและครั้งที่สอง 10 ครั้ง ฯลฯ ตัวอย่าง: 'hello' -> ['h'] ['h'] ['h'] ['h'] ['h'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e', 'l'] ['h', 'e', 'l'] ['h', 'e', 'l'] ['h', 'e', 'l'] …

11
ASCII Hangman กำลังดำเนินการ
(ได้รับแรงบันดาลใจจากคำถามในการตรวจสอบโค้ด) สมมติว่าคนสองคนกำลังเล่นHangman อยู่แต่คุณเพิ่งได้ยินเกมนี้และต้องการที่จะดึงสถานะปัจจุบัน ให้คำสองคำในการป้อนข้อมูลโดยที่คำแต่ละคำที่ตรงกัน[A-Z]+หรือ[a-z]+(คุณเลือก) ให้แสดงสถานะปัจจุบันของเกมแฮงก์แมนเป็น ASCII art ตามกฎด้านล่าง คำแรกคือคำที่ต้องเดาและคำที่สองคือตัวอักษรที่เดาแล้ว สิ่งเหล่านี้สามารถนำมาเป็นอินพุตในลำดับใดก็ได้ คำที่จะเดาได้รับประกันว่าไม่ว่างเปล่า แต่ตัวอักษรที่เดาแล้วอาจว่างเปล่า (เช่นราวกับว่ามันเป็นจุดเริ่มต้นของเกม) เกมดังกล่าวจะเป็นเกมเพชฌฆาตที่ถูกต้องเสมอ (เช่นตัวอักษรที่เดาได้จะไม่ซ้ำกันตัวอักษรจะไม่ถูกเดาเมื่อสิ้นสุดเกมคุณจะได้รับตัวอักษรเป็นเพียงอินพุตเป็นต้น) ด้านล่างภาพวาดเพชฌฆาตนั้นจะต้องเป็นคำที่ต้องเดาโดย_ที่ไม่ทราบตัวอักษรโดยคั่นด้วยช่องว่าง ตัวอย่างเช่นถ้าคำที่จะเดาได้เป็นแล้วด้านล่างวาดภาพเพชฌฆาตจะต้องBOAT _ _ _ _ถ้าเป็นคำที่BOATมีเดาได้แล้วดังต่อไปนี้การวาดภาพจะต้องเป็นA_ _ A _ ด้านล่างคำที่จะคาดเดาจะต้องมีตัวอักษรแล้วเดาที่ไม่ได้อยู่ในคำว่า สิ่งเหล่านี้สามารถอยู่ในลำดับใดก็ได้และสามารถคั่นด้วยตัวคั่นที่ไม่ใช่ตัวอักษรได้หากต้องการ นี่คือสถานะของเกมแฮงก์แมนตั้งแต่เริ่มต้นจนจบเกม จดหมายที่เดาผิดแต่ละฉบับเลื่อนรัฐไปทีละคน ดังนั้นจดหมายที่คาดเดาผิดครั้งแรกทำให้ศีรษะOปรากฏขึ้นถัดไปทำให้ร่างกาย|ปรากฏเป็นต้น +---+ | | | | | | ========= +---+ | | O | | | | ========= +---+ | | O …

27
หน้าลูกเต๋าที่มองเห็นได้
ตายแบบตะวันตกเป็นก้อนซึ่งเลข 1 ถึง 6 มีการทำเครื่องหมายบนใบหน้า คู่ที่เพิ่มไปยัง 7 จะวางอยู่บนใบหน้าตรงข้าม เนื่องจากเป็นคิวบ์เราสามารถมองเห็นได้ระหว่าง 1 และ 3 ใบหน้า (รวม) 1ในเวลาที่กำหนด ไม่สามารถมองเห็นใบหน้าตรงข้ามได้ในเวลาเดียวกัน งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่กำหนดรายการจำนวนเต็มแทนด้านตายกำหนดว่าเป็นไปได้ที่จะเห็นใบหน้าเหล่านี้ในเวลาเดียวกัน 1 โอเคบางทีคุณอาจเห็นใบหน้า 4 หรือ 5 หน้าด้วยดวงตาคู่หนึ่ง แต่สำหรับจุดประสงค์ของการท้าทายนี้เราจะสังเกตเห็นความตายจากจุดเดียว กฎ: การส่งของคุณอาจถือว่ารายการอินพุต: ไม่ว่างเปล่า 1 ≤ n ≤ 6มีเฉพาะค่าที่พอใจ ไม่มีองค์ประกอบที่ซ้ำกัน คุณอาจไม่คิดว่าอินพุตถูกเรียงลำดับ การส่งของคุณควรให้คุณค่าที่เป็นความจริง / เป็นเท็จ : ความจริงคือใบหน้าสามารถมองเห็นได้ในเวลาเดียวกัน นี่คือโค้ดกอล์ฟดังนั้นคำตอบที่สั้นที่สุด (เป็นไบต์) ชนะ! ช่องโหว่มาตรฐานจะถูกห้ามโดยค่าเริ่มต้น กรณีทดสอบ Truthy: [6] (One face) [6, 2] …

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

24
ดื่มกาแฟยามเช้า
วาดถ้วยกาแฟ Ascii นี้: โอ โอ โอ __________ / \ __ | J | \ | A | | | V | | | A | __ / \ __________ / คะแนนบราวนี่สำหรับกาแฟสคริปต์หรือจาวา :) โค้ดที่สั้นที่สุดในหน่วยไบต์ฟังก์ชั่นหรือโปรแกรมขึ้นบรรทัดใหม่หรือพื้นที่สีขาวเป็นที่ยอมรับดื่ม!

30
ดัชนีมวลกายของฉันคืออะไร
ปัญหา: งานของคุณคือการเขียนโปรแกรมที่ใช้เป็นความสูง (เป็นเมตร) และน้ำหนัก (เป็นกิโลกรัม) และส่งออกหมวดหมู่ BMI ที่เกี่ยวข้อง ค่าดัชนีมวลกายคือการวัดอัตราส่วนของน้ำหนักต่อส่วนสูงของคุณ มันเก่าและไม่ถูกต้องสำหรับคนจำนวนมากแต่นั่นไม่สำคัญเลย! BMI สามารถคำนวณได้โดยใช้สมการต่อไปนี้: BMI = (mass in kilograms) / (height in meters)^2 หมวดหมู่จะถูกกำหนดดังนี้: BMI <18.5: "Underweight" 18.5 <= BMI <25: "Normal" 25 <= BMI: "น้ำหนักเกิน" เพื่อความท้าทายฉันจึงเพิกเฉยต่อหมวดหมู่ "สุดขีด" ทั้งหมด นอกจากนี้เนื่องจากตัวเลขบางตัวเช่น "25" อยู่ระหว่าง 2 หมวดหมู่ฉันจึงปรับขอบเขตเล็กน้อยเพื่อให้มีคำตอบที่ชัดเจน คุณสามารถเขียนฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบ การป้อนข้อมูล: อินพุตอาจอยู่ในรูปแบบที่สมเหตุสมผล ตัวเลขสองตัว (หรือสตริง) อาจเป็น 2 อาร์กิวเมนต์แยกกันหรือเป็นสตริงเดียว …
21 code-golf  math 

30
คูณสองตัวเลข
อินพุต:สองจำนวนเต็มทศนิยม สิ่งเหล่านี้สามารถให้กับรหัสในอินพุตมาตรฐานเป็นอาร์กิวเมนต์ของโปรแกรมหรือฟังก์ชันหรือเป็นรายการ ผลลัพธ์:ผลิตภัณฑ์เป็นจำนวนเต็มทศนิยม ยกตัวอย่างเช่นการป้อนข้อมูลที่จะนำไปสู่การส่งออก5 1680 ข้อ จำกัด :ไม่มีช่องว่างมาตรฐานกรุณา นี่คือรหัสกอล์ฟคำตอบในจำนวนไบต์ต่ำสุดที่ชนะ หมายเหตุ:เค้าโครงขโมยมาจากก่อนหน้านี้ความท้าทายของฉันเพิ่มตัวเลขสอง กรณีทดสอบ: 1 2 -> 2 4 5 -> 20 7 9 -> 63 -2 8 -> -16 8 -9 -> -72 -8 -9 -> 72 0 8 -> 0 0 -8 -> 0 8 0 -> 0 -8 0 -> …
21 code-golf  math  number 

1
การระบุราคาอัตโนมัติของการเลื่อนใน Nethack
โอ้พระเจ้าไม่ !! คุณไม่สามารถทิ้งเราไว้ที่นี่ด้วย Doorknob! มันจะถูกทำลายทุกที่! - 1 วันก่อนโดยGeobits ก็ไม่ทำให้ผิดหวัง ... บทนำ (คุณสามารถข้ามส่วนนี้ได้หากคุณไม่สนใจเกี่ยวกับการแสดงออกและ / หรือหากคุณมีTab Explosion Syndrome ) หนึ่งในกลไกลักษณะของNetHack (และ Rogue และเกมที่คล้ายกันในประเภทเดียวกันโร๊คไลค์) เป็นของระบบการระบุ ที่จุดเริ่มต้นของเกมเฉพาะรายการในสินค้าคงคลังเริ่มต้นของคุณ "ระบุอย่างเป็นทางการ" วัตถุอื่น ๆ ส่วนใหญ่ไม่ทราบแน่ชัด ตัวอย่างเช่น "shield of reflect" จะเริ่มแสดงเป็น "shield silver polishing" ก่อนที่จะถูกระบุ "โล่เงินขัดเงา" สามารถเป็นเกราะป้องกันการสะท้อนเท่านั้น แต่สิ่งนี้มีผลที่น่าสนใจในอีกสองกรณี บางรายการแตกต่างกัน แต่มี "ลักษณะที่ปรากฏ" ที่เหมือนกัน ตัวอย่างเช่นหากคุณพบ " หินสีเทา " อาจเป็นหนึ่งในสี่สิ่ง: หินเหล็กไฟ (ไร้ประโยชน์), …
21 code-golf  game 

5
เรียงลำดับรายการด้วย Swaps และ Pops
พิจารณารายการแบบสุ่มของจำนวนเต็ม 1 ถึง N คุณต้องการเรียงลำดับโดยใช้การกระทำต่อไปนี้เท่านั้น: สลับองค์ประกอบรายการแรกและสุดท้าย (S) Popปิดองค์ประกอบแรกและผนวกไปยังจุดสิ้นสุดของรายการ (P) สิ่งนี้เป็นไปได้เสมอเพราะรายการใด ๆ สามารถเรียงลำดับด้วยองค์ประกอบที่อยู่ติดกันเพียงพอ การใช้ S และ P คุณสามารถสลับองค์ประกอบที่อยู่ติดกันโดยการเรียก P จนกระทั่งทั้งสององค์ประกอบที่มีปัญหาเป็นรายการแรกและสุดท้ายในรายการจากนั้นเรียก S เพื่อแลกเปลี่ยนพวกเขาแล้วเรียก P อีกครั้งจนกว่าพวกเขาจะอยู่ในดัชนีเดิม ) แต่ในแง่ของจำนวนการดำเนินการ S และ P วิธีนี้ไม่น่าจะเหมาะสมที่สุดสำหรับรายการส่วนใหญ่ ท้าทาย เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในการเรียงสับเปลี่ยนตัวเลขจาก 1 ถึง N (N> 1) สามารถกำหนดเป็นรายการหรือสตริงหรืออะไรก็ได้ที่สะดวก มันควรส่งลำดับของ S และ P ที่จะเรียงลำดับการเรียงสับเปลี่ยนเมื่อใช้จากซ้ายไปขวา ลำดับนี้ไม่จำเป็นต้องสั้นที่สุด แต่จะสั้นกว่านั้นจะดีกว่า (ดูเกณฑ์การให้คะแนน) ตัวอย่าง หากอินพุตเป็น[2, 1, 3]เอาต์พุตอาจเป็นSPเพราะ S …

4
แก้ปัญหาจำนวนของอริสโตเติล
ปริศนาตัวเลขของอริสโตเติลเป็นความท้าทายของการเติมแต่ละเซลล์ 19 เซลล์ในตารางหกเหลี่ยมที่มีจำนวนเต็มไม่ซ้ำกันระหว่าง 1 ถึง 19 ดังนั้นจำนวนทั้งหมดตามแกนคือ 38 คุณสามารถนึกภาพกระดานเกมที่มีลักษณะดังนี้: และในสาระสำคัญปริศนาคือคำตอบของสมการสิบห้าชุดดังต่อไปนี้: ((a + b + c) == 38 && (d + e + f + g) == 38 && (h + i + j + k + l) == 38 && (m + n + o + p) == 38 && …

5
เหลืออีกนานเท่าไหร่?
เหลืออีกนานเท่าไหร่? เมื่อเร็ว ๆ นี้ฉันกำลังทำพิซซ่าโดยใช้เวลา 5 นาทีบนโทรศัพท์ของฉัน เมื่อมีคนเดินเข้ามาและถามฉันว่าจะต้องจากไปนานเท่าไหร่ฉันก็สับสนในช่วงแรกว่าจะตอบคำถามอย่างไร คุณเห็นไหมว่าถ้าตัวจับเวลาในช่วงเวลาปัจจุบันอยู่ที่ 3:47 ตามเวลาที่ฉันได้อ่านออกเสียง 'สามนาทีสี่สิบเจ็ดวินาที' เสียงดังเวลาจะเปลี่ยนไป ดังนั้นผมจึงต้องการที่จะหาเวลาที่จับเวลาจะมาถึงเพียงแค่เป็นฉันเสร็จสิ้นการอ่านมันออกมา นี่คือความท้าทายของคุณ: เพื่อให้กระบวนการนี้เป็นไปโดยอัตโนมัติ กำหนดเวลาในรูปแบบที่เหมาะสมใด ๆ (":" คั่นด้วยหรือเป็นอาร์กิวเมนต์นาทีและวินาที) เอาท์พุทเวลาที่เร็วที่สุดจากช่วงเวลาปัจจุบันนั้นซึ่งจะใช้เวลาในการอ่านออกเท่าที่มันจะทำให้ตัวจับเวลา ไปยัง เราสมมติว่าแต่ละพยางค์ใช้เวลา 1 วินาทีในการอ่าน กฎเพิ่มเติม คุณต้องนับ 'นาที' และ 'วินาที' เป็นสองพยางค์แต่ละรายการรวมถึง 'และ' ระหว่าง พิซซ่าจะไม่ใช้เวลามากกว่า 59:59 ในการปรุงอาหาร '11 นาทีและ 0 วินาที' ไม่ใช่ 10 พยางค์: คุณต้องทำให้ '11 นาที 'ง่ายขึ้น (เช่น 5 พยางค์) เช่นเดียวกันกับนาที: …

10
นับจำนวนเส้นทางที่สั้นที่สุดถึง n
ความท้าทายของรหัสนี้จะให้คุณคำนวณจำนวนวิธีที่จะไปถึงเริ่มจากโดยใช้แผนที่ในรูปแบบ (ด้วยเป็นจำนวนเต็มไม่เป็นลบ) และทำตามขั้นตอนจำนวนน้อยที่สุดnnn222x ↦ x + xJx↦x+xjx \mapsto x + x^jJjj (หมายเหตุนี่เกี่ยวข้องกับลำดับ OEIS A307092 ) ตัวอย่าง ตัวอย่างเช่นเพราะจำเป็นต้องใช้แผนที่สามแผนที่และมีลำดับที่แตกต่างกันสองแผนที่ในสามแผนที่ซึ่งจะส่งถึง :ฉ( 13 ) = 2f(13)=2f(13) = 2222131313 x ↦ x + x0x ↦ x + x2x ↦ x + x0หรือx ↦ x + x2x ↦ x + x1x ↦ x + x0x↦x+x0x↦x+x2x↦x+x0orx↦x+x2x↦x+x1x↦x+x0\begin{array}{c} x …

6
ลบเมทริกซ์ที่ถูกพับ
ท้าทาย: กำหนดเมทริกซ์ NxN โดยที่และหนึ่งในแปด 'ตัวเลือกการพับ' ที่แตกต่างกันให้ส่งออกอาร์เรย์ / รายการแบบ 2D พร้อมค่าลบออกยังไม่มีข้อความ≥ 2N≥2N\geq2 ตัวเลือกการพับแปดแบบ ได้แก่ ซ้ายไปขวา จากขวาไปซ้าย; ด้านบนลงล่าง; ด้านล่างไปด้านบน; topleft ไป bottomright; รายนามสมาชิกเพื่อ bottomleft; bottomleft เพื่อรายนามสมาชิก; bottomright ไป topleft ตัวอย่างทีละขั้นตอน: อินพุตเมทริกซ์: [[ 1, 3, 5, 7], [ 0, 8, 6, 4], [ 1, 1, 1, 1], (a'th row in the explanation below) …

9
ฉันเห็น BIDMAS ของคุณและสร้าง BADMIS ให้คุณ
ฉันเห็น BIDMAS ของคุณและสร้าง BADMIS ให้คุณ ท้าทาย กำหนดตัวเลขที่มีตัวดำเนินการระหว่าง: "5 + 4 * 9/3 - 8" ให้ส่งกลับผลลัพธ์ที่เป็นไปได้ทั้งหมดของนิพจน์สำหรับการเรียงลำดับของการดำเนินการพื้นฐานทุกครั้ง: [/, *, +, -] กฎระเบียบ ช่องโหว่มาตรฐานต้องห้าม I / O ต้องป้อนข้อมูลด้วยการดำเนินการมัด แต่ที่ง่ายที่สุด (สตริงหรืออาร์เรย์) คุณไม่จำเป็นต้องสนับสนุนผู้ประกอบการเอก (เช่น "-3 * 8 / +2") จำนวนเต็มสามารถแทนที่ด้วยการลอยสำหรับภาษาที่แจงโดยปริยายประเภท (เช่น 45 ⟶ 45.0) ผลลัพธ์จะต้องเป็นผลลัพธ์ที่เป็นไปได้ทั้งหมดของการแสดงออกไม่มีรูปแบบหรือคำสั่งที่ระบุ อินพุตทั้งหมดใช้งานได้ (เช่นไม่จำเป็นต้องจัดการกับ "7/3 + *") นี่ก็หมายความว่าคุณไม่จำเป็นต้องหารด้วยศูนย์ ผู้ประกอบการทุกคนมีความสัมพันธ์ทางด้านซ้ายดังนั้น "20/4/2" = "(20/4) …

17
Matchmaker, Matchmaker ทำให้ฉันตรงกัน
(เราจะไม่หาFindหรือจับได้tryCatch) นี่เป็นส่วนที่สองของซีรี่ส์ที่มีหลายส่วนในการนำฟังก์ชั่น R ที่น่าสนใจมาใช้ ส่วนหนึ่งสามารถพบได้ที่นี่ งาน: คุณจะต้องใช้ฟังก์ชั่นของ Rmatchในไม่กี่ไบต์เท่าที่จะทำได้ การป้อนข้อมูล: xรายการที่อาจว่างเปล่า / อาร์เรย์ของจำนวนเต็ม tableรายการที่อาจว่างเปล่า / อาร์เรย์ของจำนวนเต็ม nomatchค่าจำนวนเต็มเดียว incomparablesรายการที่อาจว่างเปล่า / อาร์เรย์ของจำนวนเต็ม เอาท์พุท: อาเรย์เดี่ยว / รายการของจำนวนเต็มที่Oมีความยาวเท่ากันxโดยที่แต่ละค่าO[i]แสดงถึง: ดัชนีjของค่าแรกในtableตำแหน่งที่table[j]==x[i] nomatchแสดงให้เห็นว่าค่าในไม่tableเท่ากับx[i] หรือที่อยู่ในรายชื่อของx[i]incomparables กรณีทดสอบ All in the form x, table, nomatch, incomparables -> output outputs [], [1,2,3], 0, [5] -> [] [1, 2, 3], [], 0, [5] …

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