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

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

3
แยกสตริงตัวอักษร Python
ความท้าทายคือการแยกสตริงเช่น Python ทำและพิมพ์เนื้อหาของสตริง อินพุต (อาร์กิวเมนต์บรรทัดรับคำสั่งหรือ stdin) : สตริงตัวอักษร (เช่น"hello") (หรือหลายตัวอักษรดูการเรียงสตริงตามตัวอักษรด้านล่าง) เอาท์พุท (stdout) : เนื้อหาของสตริง (เช่นhello) กฎสำหรับการวิเคราะห์คำสตริง: สตริงตัวอักษรถูกล้อมรอบในการจับคู่คู่ของอัญประกาศเดี่ยว ( 'a'), อัญประกาศคู่ ( "a"), อัญประกาศเดี่ยวเดียว ( '''a''') หรืออัญประกาศคู่ ( """a""") การกลับเป็นซ้ำครั้งแรกของชนิดของอัญประกาศที่เปิดสตริงสิ้นสุดสตริง ทับขวาหนี: \'ภายในสตริงกลายเป็น', \"กลายเป็น"และจะกลายเป็น\\ \คุณไม่จำเป็นต้องใช้เครื่องหมายแบคสแลชอื่น ๆ แบ็กสแลชที่ไม่ได้เป็นส่วนหนึ่งของลำดับการหลีกเลี่ยงยังคงเป็นแบ็กสแลช การต่อข้อมูลตามตัวอักษรสตริง:เนื้อหาของตัวอักษรสตริงที่อยู่ติดกันถูกต่อกัน ยกตัวอย่างเช่นจะกลายเป็น"hello" 'world'helloworld อินพุตอาจมีช่องว่างที่ไม่ได้เป็นส่วนหนึ่งของตัวอักษรใด ๆ คุณไม่จำเป็นต้องสนับสนุนช่องว่างชนิดอื่น ๆ ทั้งที่อยู่ในและนอกตัวอักษร กฎเพิ่มเติม: eval, execและสิ่งที่คล้ายกันคือไม่ได้รับอนุญาตสำหรับการแยกตัวอักษรหรือบางส่วนของมัน คุณอาจคิดว่าอินพุตนั้นถูกต้อง คุณอาจสันนิษฐานว่ามีความยาวอินพุตได้สูงสุด 1,023 อักขระ …

16
เขียนฟังก์ชั่นทางคณิตศาสตร์ที่มีผลลัพธ์คือ“ สวัสดีโลก” [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Code Golf Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว เขียนฟังก์ชันทางคณิตศาสตร์ที่ส่งผลให้เกิดการแทนจำนวนเต็มของ "สวัสดีโลก" ตัวอย่างเช่น "hello world" ในฐานสิบหก68656c6c6f20776f726c64ดังนั้นเป้าหมายจะคือการเขียนโปรแกรมทางคณิตศาสตร์ที่ส่งผลให้ตัวเลขที่แสดงถึง "hello world" นี่คือตัวอย่างของวิธีแก้ปัญหาที่เป็นไปได้โดยใช้ python: print(2*2*3*59*61*97*416510539*72330832279)==int("68656c6c6f20776f726c64", 16) สมการทางคณิตศาสตร์ทุกประเภทสามารถใช้ได้เช่น: พลัง, อนุกรม, แฟคทอเรียลและการดำเนินการทางคณิตศาสตร์อื่น ๆ กฎระเบียบ: คุณสามารถเลือกวิธีของคุณเองในการเข้ารหัส / แทน "hello world" เป็นจำนวนเต็ม อนุญาตให้ใช้ฟังก์ชันแฮช อนุญาตให้ใช้ห้องสมุดทางคณิตศาสตร์ (เช่น numpy, GMP) ความตั้งใจที่จะมุ่งเน้นไปที่ส่วนคณิตศาสตร์

4
รูปแบบเครื่องตัดหญ้า
นำมาจากGoogle รอบการคัดเลือก Code 2013 ปัญหารอบ B : อลิซกับบ็อบมีสนามหญ้าหน้าบ้านของพวกเขามีรูปร่างเหมือน N เมตรโดยสี่เหลี่ยมผืนผ้า M เมตร ในแต่ละปีพวกเขาพยายามตัดหญ้าในรูปแบบที่น่าสนใจ พวกเขาเคยตัดด้วยกรรไกรซึ่งใช้เวลานานมาก แต่ตอนนี้พวกเขามีเครื่องตัดหญ้าอัตโนมัติใหม่พร้อมการตั้งค่าหลายแบบและพวกเขาต้องการลองใช้ เครื่องตัดหญ้าแบบใหม่มีการตั้งค่าความสูง - คุณสามารถตั้งค่าเป็นความสูง h ใด ๆ ระหว่าง 1 ถึง 100 มิลลิเมตรและมันจะตัดหญ้าทั้งหมดที่สูงกว่า h พบกับความสูง h คุณรันมันโดยเข้าไปที่สนามหญ้าที่ส่วนใดของขอบสนามหญ้า จากนั้นเครื่องตัดหญ้าจะเป็นเส้นตรงตั้งฉากกับขอบสนามหญ้าที่เข้ามาตัดหญ้าในแนวกว้าง 1 เมตรจนกระทั่งมันออกจากสนามหญ้าไปอีกด้านหนึ่ง ความสูงของเครื่องตัดหญ้าสามารถตั้งค่าได้เฉพาะเมื่อไม่ได้อยู่บนสนามหญ้า อลิซกับบ็อบมีหญ้าหลายแบบที่พวกเขาสามารถมีได้บนสนามหญ้า สำหรับแต่ละคนพวกเขาต้องการทราบว่าเป็นไปได้ที่จะตัดหญ้าในรูปแบบนี้ด้วยเครื่องตัดหญ้าแบบใหม่ของพวกเขาหรือไม่ แต่ละรูปแบบอธิบายโดยระบุความสูงของหญ้าในแต่ละสนามหญ้าขนาด 1 ม. x 1 ม. ต้นหญ้าสูง 100 มม. บนสนามหญ้าทั้งหมด เขียนฟังก์ชั่นที่ใช้ความสูงของจำนวนเต็มสองมิติและพิจารณาว่าสามารถตัดหญ้าได้หรือไม่ ต่อไปนี้เป็นกรณีทดสอบ 100 รายการจาก …
9 code-golf 

8
เครื่องคิดเลขประตูตรรกะที่เรียบง่าย
ภารกิจของคุณถ้าคุณเลือกที่จะยอมรับมันก็คือการสร้างผู้ประเมินความจริงแบบง่าย ๆ สำหรับผู้ประกอบการเชิงตรรกะดังต่อไปนี้: ---------------------------------------------------------------------------------- Logical Name | Gate Name | Symbol | Symbol Name | Truth Table ---------------------------------------------------------------------------------- Identity | is | | (none) | 10 Negation | not | ~ | tilde | 01 Conjunction | and | & | ampersand | 1000 Disjunction | or | | | …

30
การแปลงเป็นภาษาลับ
เขียนรหัสในภาษาใด ๆ ที่ป้อนสตริงเช่น "วันนี้เป็นวันที่ดีมาก" (โปรดทราบว่าไม่มีเครื่องหมายวรรคตอน) และแปลงเป็น "ภาษาลับ" นี่คือกฎสำหรับ "ภาษาลับ" a = c, b = d, c = e และอื่น ๆ (y = a และ z = b) แยกแต่ละคำด้วยช่องว่าง ตรวจสอบให้แน่ใจว่ามีการใช้อักษรตัวพิมพ์ใหญ่ที่เหมาะสม ตัวอย่าง: Input: "Today is a great day" Output: "Vqfca ku c itgcv fca" เป็นการประกวดความนิยม ผู้ใช้รายอื่นควรให้คะแนนด้วยการค้นหารหัส "ถึงจุด" แต่ "ไม่ซ้ำกัน" ส่วนใหญ่ ความท้าทาย: ฉันกำลังค้นหาภาษาการเขียนโปรแกรมที่ผิดปกติและฉันพบภาษาที่เรียกว่าPiet …

1
เขียนตัวแก้ปัญหาการไหลของ ASP / Prolog / SAT
Flow Free เป็นเกมแอนดรอยด์ที่น่าติดตามซึ่งคุณต้องเชื่อมต่อคู่ธาตุต่างๆเข้าด้วยกันผ่านงูที่ไม่ทับซ้อนกันและเติมเต็มทั้งกริด สำหรับคำอธิบายดูที่นี่: https://play.google.com/store/apps/details?id=com.bigduckgames.flow&hl=en ฉันมีโซลูชัน ASP (ชุดคำตอบการเขียนโปรแกรม) ซึ่งเป็นเพียงกฎคู่และฉันไม่คิดว่ามันจะเป็นไปได้ที่จะพูดถึงวิธีการแก้ปัญหาเดียวกันเกือบจะรัดกุมเช่นกรณี SAT แต่ฉันสนใจที่จะพิสูจน์ผิด ภาษาใดก็ได้ แต่ฉันสงสัยว่ามันสามารถทำได้อย่างกระชับโดยไม่ต้องใช้ตัวแก้ปัญหาบางชนิดซึ่งเป็นสาเหตุที่ฉันติดป้ายว่า ASP / Prolog / SAT ผู้ชนะคือตัวละครน้อยที่สุด คุณอาจคิดว่าปัญหาถูกกำหนดโดยใช้ภาคแสดง: v(V). % A vertex a(V,W). % V and W are adjacent c(C). % A color s(V,C). % V is an endpoint of color C นอกจากนี้อินพุตยังเป็นที่น่าพอใจ a(W,V) :- a(V,W) % Adjacencies …
9 code-golf 

5
คำไตรภาค Squarefree ที่มีความยาวตามอำเภอใจ
สตริงเป็นsquarefreeถ้าไม่มี substring สองครั้งในแถว มันเป็นไปได้ที่จะมีคำ squarefree ยาวโดยพลการโดยใช้ตัวอักษร 3 ตัว จงเขียนโปรแกรมที่รับเป็นจำนวนเต็มบวก n จาก stdin และพิมพ์คำ squarefree ใด ๆ ของความยาว n โดยใช้ตัวอักษรA, และBC รหัสที่สั้นที่สุดชนะ

14
แสดงเศษส่วนต่อเนื่อง
ความท้าทายของคุณคือการแปลงเศษส่วนเป็นรูปแบบเศษส่วนต่อเนื่อง อินพุต : เศษส่วนอาจป้อนเข้าในรูปแบบใด ๆ รวมถึง (แต่ไม่ จำกัด เฉพาะ) สตริง: "7/16" รายการ: {7, 16}, (7, 16), [7, 16] คู่ที่เรียบง่ายสั่ง: 7 16 ฟังก์ชั่น: f [7,16] เอาท์พุท : เศษส่วนต่อเนื่องใน 2D โดยมีเศษส่วนแนวนอนคั่นตัวเศษจากส่วน มีเพียงเศษส่วนต่อเนื่องที่มีตัวเลขเท่ากับ 1 เท่านั้นที่ถูกต้อง ไม่จำเป็นต้องทำให้ขนาดตัวอักษรแตกต่างกันไปตามความลึก ศูนย์นำหน้า (สำหรับเศษส่วนที่เหมาะสม) เป็นทางเลือก ความลึก : รหัสของคุณจะต้องสามารถแสดงความลึกอย่างน้อย 8 ระดับ เกณฑ์การชนะ : รหัสที่สั้นที่สุดชนะ คุณต้องมีกรณีทดสอบหลายรายการที่แสดงอินพุตและเอาต์พุต ตัวอย่างทดสอบ (อินพุตตามด้วยเอาต์พุต) 5/4 5/3 5/7 …

3
สร้างนักฆ่า Sudoku Solver
คุณคิดว่าซูโดกุประจำนั้นยากตอนนี้ลองKiller Sudoku ! ในเกม Killer Sudoku คุณจะไม่ได้รับหมายเลขใด ๆ เลย แต่คุณจะได้รับภูมิภาคที่ถูกกล่าวเพิ่มขึ้นเป็นจำนวนหนึ่งแทน ลองพิจารณาตัวอย่างต่อไปนี้จาก Wikipedia: และวิธีการแก้ปัญหา: โปรแกรมที่คุณเขียนจะอยู่ในรูปแบบที่ประกอบด้วยลำดับ 81 ตัวอักษรที่แสดงถึงภูมิภาคตามด้วยตัวเลข จากนั้นแต่ละหมายเลขในลำดับจะแสดงผลรวมของตัวเลขในแต่ละภูมิภาคของตัวอักษรเริ่มต้นจาก "A", "B" เป็นต้น จากนั้นจะส่งออกลำดับ 81 หลักที่เป็นตัวแทนของการแก้ปัญหา ตัวอย่างเช่นตัวต่อตัวอย่างด้านบนจะมีอินพุตต่อไปนี้: AABBBCDEFGGHHCCDEFGGIICJKKFLMMINJKOFLPPQNJOORSPTQNUVVRSTTQWUUXXSYZWWaaXXSYZWbbbcc 3 15 22 4 16 15 25 17 9 8 20 6 14 17 17 13 20 12 27 6 20 6 10 14 8 …

2
บีบอัดข้อมูลด้วยไวยากรณ์ที่ไม่มีบริบท
เป็นไปได้ที่จะบีบอัดข้อมูลบางประเภทเช่นข้อความของมนุษย์หรือซอร์สโค้ดด้วยไวยากรณ์แบบเส้นตรง โดยทั่วไปคุณสร้างไวยากรณ์ที่ภาษามีคำเดียว - ข้อมูลที่ไม่ได้บีบอัด ในงานนี้คุณต้องเขียนโปรแกรมที่ใช้วิธีการประมวลผลข้อมูลนี้ อินพุต อินพุตเป็นสตริงที่มีความยาวไม่เกิน 65535 ไบต์ มีการประกันว่าอินพุตนั้นตรงกับนิพจน์ทั่วไป[!-~]+(เช่นอย่างน้อยหนึ่งตัวอักษร ASCII ที่พิมพ์ได้ซึ่งไม่รวมช่องว่าง) ตัวอย่างอินพุตคือ abcabcbcbcabcacacabcabab เอาท์พุต เอาท์พุทเป็นชุดของกฎที่เป็นไวยากรณ์ที่อธิบายว่าหนึ่งคำ (อินพุต) แต่ละ nonterminal จะแทนด้วยตัวเลขทศนิยมมากกว่า 9 สัญลักษณ์เริ่มต้นคือหมายเลขสัญลักษณ์สิบ เอาต์พุตตัวอย่างที่สอดคล้องกับอินพุตตัวอย่างได้รับด้านล่าง ไวยากรณ์ของมันจะอธิบายเพิ่มเติมด้านล่าง: 10=11 11 12 12 11 13 13 11 14 14 11=a 12 12=b c 13=a c 14=a b แต่ละกฎมีรูปแบบที่<nonterminal>=<symbol> <symbol> ...มีจำนวนของสัญลักษณ์ที่คั่นด้วยช่องว่างโดยพลการทางด้านขวา แต่ละเอาต์พุตที่ปฏิบัติตามข้อ จำกัด ต่อไปนี้และได้รับสตริงอินพุตที่ถูกต้อง ข้อ จำกัด …

21
สร้างชุดค่าผสมที่มีคำสั่งด้วยการทำซ้ำ
กำหนดสตริงของอักขระที่แตกต่างกันและตัวเลข n สร้างชุดค่าผสมที่เรียงลำดับทั้งหมดด้วยการทำซ้ำความยาว 1 ถึง n โดยใช้อักขระเหล่านั้น อีกวิธีในการกำหนดคือดูอักขระที่กำหนดเป็นตัวเลข "กำหนดเอง" ในฐาน (radix) ของจำนวนอักขระจากนั้นโปรแกรมควรสร้าง "ตัวเลข" ทั้งหมดที่มี 1 ถึง n หลักในฐานนั้น "ศูนย์" รวมอยู่ด้วย ชุดค่าผสมควรเรียงตามความยาว (1 ตัวอักษรก่อนจากนั้น 2 และอื่น ๆ ) แต่นอกเหนือจากนั้นสามารถเรียงลำดับได้ คุณสามารถเลือกวิธีที่สะดวกที่สุดในการจัดการอินพุตและเอาต์พุต รหัสที่สั้นที่สุดชนะ ตัวอย่าง: ab, 3-> a,b,aa,ab,ba,bb,aaa,aab,aba,baa,abb,bab,bba,bbb 0123456789, 2->0,1,2,3,4,5,6,7,8,9,00,01,...,09,10,11,...,99

7
นับจำนวนคำที่เป็นวงกลมในอินพุต
คำรอบ คำชี้แจงปัญหา เรานึกถึงคำที่เป็นวงจรเป็นคำที่เขียนในวงกลม เพื่อเป็นตัวแทนของคำวงจรเราเลือกตำแหน่งเริ่มต้นโดยพลการและอ่านตัวอักษรตามลำดับตามเข็มนาฬิกา ดังนั้น "รูปภาพ" และ "turepic" จึงเป็นตัวแทนของคำวงจรเดียวกัน คุณจะได้รับสตริง [] คำแต่ละองค์ประกอบซึ่งเป็นตัวแทนของคำวงจร ส่งคืนจำนวนคำวัฏจักรที่ต่างกันที่แสดง ชนะเร็วที่สุด (Big O โดยที่ n = จำนวนตัวอักษรในสตริง)

5
พาร์ติชันของรายการ
คำตอบสำหรับคำถามนี้ยาวเกินไป ความท้าทายของคุณคือการเขียนฟังก์ชั่นการแบ่งพาร์ติชันด้วยจำนวนอักขระที่น้อยที่สุด ตัวอย่างอินพุต ['a', 'b', 'c'] ตัวอย่างผลลัพธ์ [(('a'),('b'),('c')), (('a', 'b'), ('c')), (('a', 'c'), ('b')), (('b', 'c'), ('a')), (('a', 'b', 'c'))] อินพุตสามารถเป็นรายการ / อาร์เรย์ / ชุด / สตริง ฯลฯ สิ่งที่ง่ายที่สุดสำหรับการทำงานของคุณในการประมวลผล คุณยังสามารถเลือกรูปแบบผลลัพธ์ให้เหมาะกับตัวเองได้ตราบใดที่โครงสร้างมีความชัดเจน ฟังก์ชันของคุณควรทำงานอย่างน้อย 6 รายการในอินพุต

9
คำนวณสัมประสิทธิ์สหสัมพันธ์
กำหนดตัวเลขสำหรับเหตุการณ์ X และ Y ให้คำนวณสัมประสิทธิ์สหสัมพันธ์ของเพียร์สัน ความน่าจะเป็นของแต่ละเหตุการณ์มีค่าเท่ากันดังนั้นค่าที่คาดหวังสามารถคำนวณได้โดยรวมเพียงแต่ละชุดและหารด้วยจำนวนการทดลอง อินพุต 1 6.86 2 5.92 3 6.08 4 8.34 5 8.7 6 8.16 7 8.22 8 7.68 9 12.04 10 8.6 11 10.96 เอาท์พุต 0.769 รหัสที่สั้นที่สุดชนะ การป้อนข้อมูลสามารถโดย stdin หรือหาเรื่อง เอาต์พุตจะเป็นโดย stdout แก้ไข: ไม่ควรอนุญาตให้ใช้ฟังก์ชัน Builtin (เช่นคำนวณค่าคาดหวังความแปรปรวนเบี่ยงเบน ฯลฯ ) เพื่อให้มีความหลากหลายมากขึ้นในโซลูชัน อย่างไรก็ตามอย่าลังเลที่จะสาธิตภาษาที่เหมาะกับงานที่ใช้บิวอิน (สำหรับการจัดนิทรรศการ) ตามแนวคิดของ David สำหรับการป้อนข้อมูลใน Mathematica …

7
เอาต์พุตสำรับแบบสับโดยใช้อินพุตแบบสุ่ม
Input / Output: อินพุต : สตริงที่มีความยาวและไม่ จำกัด จำนวนสุ่มจาก 0 0 และ '1' มาจาก stdin สตริงจะถือว่าสุ่มอย่างแท้จริงไม่ใช่การสุ่มหลอก มันเหมือนกันในแต่ละตัวละครมีแนวโน้มที่จะเป็น '0' หรือ '1' อย่างเท่าเทียมกัน ระวัง! อินพุตมีความยาวไม่ จำกัด ดังนั้นคุณจึงไม่สามารถเก็บไว้ในหน่วยความจำได้โดยใช้ฟังก์ชั่นเช่น raw_input () ในไพ ธ อน ถ้าฉันไม่เข้าใจผิด golfscript จะล้มเหลวด้วยอินพุตไม่ จำกัด เนื่องจากมันจะดันอินพุตทั้งหมดไปยังสแต็กก่อนที่จะทำงาน เอาท์พุท : สำรับสุ่มแบบสุ่มที่สม่ำเสมอโดยไม่ต้องมีโจ๊กเกอร์ มันเหมือนกันในทุกคำสั่งมีแนวโน้มที่เท่าเทียมกัน การ์ดแต่ละใบในเอ้าท์พุทคืออันดับ, A, 2-9, T, J, Q หรือ K เรียงต่อกันด้วยชุดสูท, c, d, h …

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