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

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

2
มีภาษาโปรแกรมการทำงานที่ออกแบบมาสำหรับการเขียนโค้ดกอล์ฟหรือไม่?
มีภาษาโปรแกรมการทำงานที่ออกแบบมาสำหรับการเขียนโค้ดกอล์ฟหรือไม่? ฉันรู้ว่า golfscript และ CJam เติมเต็มหมวดหมู่เดียวกันสำหรับ stack based แต่ฉันไม่สามารถหาภาษาของรหัส golfing

5
เล่นกอล์ฟ bijection ภายในจำนวนธรรมชาติที่แมปจำนวนเฉพาะกับชุดย่อยที่เหมาะสมของจำนวนเฉพาะ
คำนิยาม bijectionจากชุดSการตั้งค่าTฟังก์ชั่นจากSการTองค์ประกอบดังกล่าวว่าหนึ่งในTSแมปโดยองค์ประกอบว่าหนึ่งใน bijection ภายในชุด Sเป็น bijection จากSSไป หมายเลขธรรมชาติ0เป็นจำนวนเต็มซึ่งเป็นมากกว่าหรือเท่ากับ ชุดย่อยของชุดSSคือชุดดังกล่าวว่าองค์ประกอบในชุดที่ทุกคนยังอยู่ใน เซตย่อยที่เหมาะสมของชุดSคือชุดที่เป็นส่วนย่อยของซึ่งไม่เท่ากับSS งาน เขียนโปรแกรม / ฟังก์ชั่นที่รับจำนวนธรรมชาติเป็นอินพุทและเอาท์พุทจำนวนธรรมชาติ มันจะต้องเป็น bijection และรูปภาพของจำนวนเฉพาะภายใต้โปรแกรม / ฟังก์ชั่น{f(p) : p ∈ ℙ}จะต้องเป็นเซตย่อยที่เหมาะสมℙซึ่งℙเป็นจำนวนเฉพาะ เกณฑ์การให้คะแนน นี่คือรหัสกอล์ฟ คำตอบที่สั้นที่สุดในการชนะไบต์ ช่องโหว่ตามมาตรฐาน

5
ไฟดับรุ่น 7 ส่วน
เมื่อได้รับการแสดงผล 7 เซกเมนต์ที่มีการเปิดและปิดบางเซกเมนต์ให้ค้นหาลำดับของตัวเลข (0-9) ดังนั้นหลังจากสลับการเซกเมนต์ที่สอดคล้องกันสำหรับแต่ละหลักแล้วเซกเมนต์ทั้งหมดจะถูกปิด ตัวอย่าง _ _ [3] => | [1] => [OFF] _ | ตัวเลขและส่วนที่เกี่ยวข้อง: _ _ _ _ _ _ _ _ | | | _| _| |_| |_ |_ | |_| |_| |_| | |_ _| | _| |_| | |_| _| กฎระเบียบ Codegolf ⊨ผลงานที่สั้นที่สุดชนะ อินพุต …

2
ค้นหาปัจจัยย่อย
ลองจินตนาการว่าเรามีจำนวนเต็มบวกจำนวน จำกัด ชุดนี้สามารถแสดงเป็นเส้นของจุดที่แต่ละจำนวนเต็มปัจจุบันในชุดที่เต็มไปเช่น Scantron หรือหมัดบัตร ตัวอย่างเช่นชุด{1,3,4,6}สามารถแสดงเป็น: *.**.* *แสดงถึงสมาชิกของชุดของเราและ.แสดงถึงจำนวนเต็มที่ไม่ได้เป็นสมาชิกของเขาตั้ง ชุดเหล่านี้มี "ปัจจัย" Loosely x เป็นปัจจัยของ y หาก y สามารถสร้างจากสำเนาของ x ได้ คำจำกัดความของปัจจัยของเรามีความเข้มงวดมากขึ้น x เป็นปัจจัยของ y ถ้าหาก y เป็นสหภาพของจำนวนชุดที่แยกจากกันทั้งหมดนี้เป็น x ที่มีออฟเซ็ต เราจะเรียกปัจจัยของเพราะทำค่อนข้างชัดเจนขึ้นจากสองสำเนาของใส่จนจบ*.**.**.**.* *.**.* ------ *.*... ...*.* ปัจจัยไม่จำเป็นต้องจบสิ้นเราก็จะบอกว่า*.*เป็นปัจจัย*.*.*.* *.*.*.* ------- *.*.... ....*.* ปัจจัยยังสามารถทับซ้อนกัน วิธีการ*.*นี้ยังเป็นปัจจัย**** **** ---- *.*. .*.* อย่างไรก็ตามตัวเลขไม่สามารถครอบคลุมได้มากกว่าหนึ่งครั้ง ตัวอย่าง*.*คือไม่ได้*.*.*ปัจจัยของ นี่คือตัวอย่างที่ซับซ้อนมากขึ้น: *..*.**..***.*.* นี่*..*.*เป็นปัจจัย *..*.*คุณจะเห็นว่าด้านล่างที่ผมได้เรียงรายขึ้นสามกรณีของ …

8
สำรวจ xorspace
xorspaceชุดของจำนวนเต็มคือชุดของจำนวนเต็มทั้งหมดที่สามารถรับได้โดยการรวมจำนวนเต็มเริ่มต้นกับผู้ประกอบการ xor บิตปกติ ( ^) ตัวอย่างเช่น xorspace ของ(8, 4)คือ(0, 4, 8, 12): 0 คือ 4 ^ 4, 12 คือ 4 ^ 8 และไม่สามารถเข้าถึงหมายเลขอื่นได้ โปรดทราบว่าตัวเลขเริ่มต้นรวมอยู่เสมอโดยคำจำกัดความนี้ (ตัวอย่างเช่น 4 คือ 4 ^ 4 ^ 4) เป้าหมายของคุณคือการเขียนโปรแกรมที่สั้นที่สุดที่รับรายการจำนวนเต็มที่ไม่เป็นลบและป้อนข้อมูลจำนวนองค์ประกอบใน xorspace ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม input และ output สามารถในการใด ๆ ของรูปแบบปกติ อินพุตรับประกันว่าถูกต้องไม่ว่างเปล่าและไม่มีการซ้ำซ้อน รหัสของคุณควรจะสามารถที่จะดำเนินการกรณีทดสอบทั้งหมดในน้อยกว่าวัน กรณีทดสอบ Input: 0 Output: 1 Input: 6 …

2
Quine / Error Quine Polyglot
งานของคุณง่าย: เขียนโปรแกรมที่สามารถทำงานได้สองภาษา ควรเป็นควินปกติ (พิมพ์รหัสต้นฉบับของตนเอง) ในภาษา 1 และควรเป็นข้อผิดพลาดควิน (สร้างข้อความแสดงข้อผิดพลาดเหมือนกับรหัสต้นฉบับของตนเอง) ในภาษา 2 นี่คือรหัสกอล์ฟดังนั้นการส่งที่ถูกต้องที่สั้นที่สุด (เป็นไบต์) ชนะ กฎ: ภาษาอาจคล้ายกันโดยพลการ Supersets / รุ่นที่คล้ายกัน / ภาษาที่คล้ายกันจะไม่ได้รับอนุญาต กฎข้อผิดพลาด quine เหมือนกับกฎข้อผิดพลาดในการทำข้อผิดพลาด! .

11
อัลกอริธึมการนับถอยหลัง
เด็กที่เรียนรู้วิธีการนับมักรู้จำนวนวิ่ง แต่ดูเหมือนจะไม่สามารถทำให้การวิ่งเหล่านั้นเข้าด้วยกันอย่างเหมาะสม ตัวอย่างเช่นพวกเขาอาจพูดว่า: 1,2,3,4,7,8,9,10 บางครั้งเด็ก ๆ จะรู้ว่าพวกเขาข้ามตัวเลขบางส่วนแล้วย้อนกลับไปที่: 1,2,3,4,7,8,5,6,7,8,9,10 นี่เป็นรูปแบบที่ชัดเจนอย่างชัดเจน เราจำเป็นต้องระบุพวกเขา ในการระบุรายการเหล่านี้: เราระบุขั้นต่ำMและสูงสุดNของรายการ เราก้าวผ่านรายการ หากหมายเลขปัจจุบันมากกว่าหรือเท่ากับสมาชิกใด ๆ ของรายการทางด้านขวาเราจะลบหมายเลขปัจจุบัน Iff รายการที่เหลือประกอบด้วยตัวเลขทั้งหมดตั้งแต่MถึงถึงNจากนั้นเราจะคืนค่าความจริง คุณสามารถสันนิษฐานว่ารายการอินพุตของคุณจะมีองค์ประกอบอย่างน้อย 1 องค์ประกอบ คุณสามารถสันนิษฐานได้ว่าจำนวนเต็มทั้งหมดจะไม่เป็นลบ กรณีทดสอบ: Truthy: 0 10 0 0 0 1 0 1 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 0 1 2 …

9
ค้นหาอัตราเดิมพันคี่
ให้คอลเลกชันที่ไม่มีการเรียงลำดับของจำนวนเต็มบวกโดยวิธีการอินพุตที่สมเหตุสมผลส่งคืนคอลเล็กชันย่อยทั้งหมดที่มีองค์ประกอบคี่จำนวนคี่ (เช่นมีผลรวมคี่) นี่คือโค้ดกอล์ฟดังนั้นคุณควรตั้งเป้าที่จะลดจำนวนไบต์ของโปรแกรมของคุณ เนื่องจากบางภาษามีการสั่งซื้อคอลเลกชันเท่านั้น (รายการ, อาร์เรย์, เวกเตอร์, ฯลฯ ) หรือไม่มีคอลเลกชันที่ไม่ได้เรียงลำดับซึ่งอนุญาตการทำซ้ำคุณสามารถใช้คอลเลกชันที่สั่งซื้อได้ (ไม่ว่าคุณจะเลือกภาษาใด) ด้วยคำสั่งซื้อที่แตกต่างกัน (เช่น[2,3]และ[3,2]) คุณสามารถส่งออกตามลำดับที่คุณเห็นว่าเหมาะสม กรณีทดสอบ [2,3,7,2] -> [[3],[7],[2,3],[2,7],[2,2,3],[2,2,7]] [2,4,6,8] -> [] [4,9] -> [[9],[4,9]]

12
การค้นหาความสัมพันธ์โดยประมาณ
พิจารณาสตริงไบนารีของความยาวS nจัดทำดัชนีจาก1เราสามารถคำนวณระยะทาง Hammingระหว่างS[1..i+1]และS[n-i..n]ทั้งหมดiในการสั่งซื้อจากไป0 n-1ระยะห่างของ Hamming ระหว่างสองสายที่มีความยาวเท่ากันคือจำนวนตำแหน่งที่สัญลักษณ์ที่เกี่ยวข้องแตกต่างกัน ตัวอย่างเช่น, S = 01010 จะช่วยให้ [0, 2, 0, 4, 0]. เพราะนี่คือ0การแข่งขัน0, 01มี Hamming ระยะสองถึง10, 010การแข่งขัน010, 0101มี Hamming ระยะสี่1010 และในที่สุดก็01010ตรงกับตัวเอง เราสนใจเฉพาะผลงานที่ระยะทาง Hamming มากที่สุด 1 ดังนั้นในภารกิจนี้เราจะรายงานYว่าหากระยะทางของแฮมมิงอยู่ที่ระยะหนึ่งและเป็นNอย่างอื่น ดังนั้นในตัวอย่างข้างต้นเราจะได้ [Y, N, Y, N, Y] กำหนดf(n)ให้เป็นหมายเลขของอาร์เรย์ที่แตกต่างกันของYและNs หนึ่งได้รับเมื่อ iterating เหนือทุก2^nบิตสตริงที่แตกต่างกันไปได้ของความยาวSn งาน สำหรับการเพิ่มการnเริ่มต้นที่รหัสของคุณควรเอาท์พุท1f(n) ตัวอย่างคำตอบ สำหรับn = 1..24คำตอบที่ถูกต้องคือ: 1, 1, 2, 4, …

15
ตัวเลขการออกเสียง
แนวคิด การจดจำตัวเลขอาจเป็นเรื่องยาก การจดจำคำศัพท์อาจทำได้ง่ายกว่า เพื่อที่จะจดจำตัวเลขจำนวนมากฉันได้สร้างวิธีการออกเสียงพวกเขาในลักษณะคล้าย leetspeak กฎระเบียบ แต่ละหลักจะถูกแทนที่ด้วยตัวอักษรที่เกี่ยวข้องก่อน: 0 => O 1 => I 2 => R 3 => E 4 => A 5 => S 6 => G 7 => T 8 => B 9 => P หลังจากการแทนที่จะมีการเพิ่มสองสิ่งเพื่อการออกเสียงที่ดีขึ้น: ระหว่างตัวอักษรสองตัว a Uถูกเพิ่ม ระหว่างสระสองสระNจะถูกเพิ่ม ตัวอย่าง / กรณีทดสอบ 512431 => SIRANENI 834677081 => …
14 code-golf  number 

30
สุ่มสเกลาร์ของอาร์เรย์
คุณต้องกรอกข้อมูลในอาร์เรย์ด้วยตัวเลขทุกตัวจาก0-nรวม ไม่ควรใช้หมายเลขซ้ำ อย่างไรก็ตามพวกเขาจะต้องอยู่ในลำดับสุ่ม กฎระเบียบ ทุกมาตรฐานรหัสกอล์ฟกฎและช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม อาร์เรย์ต้องถูกสร้างขึ้นแบบสุ่มหลอก ทุกการเปลี่ยนแปลงที่เป็นไปได้ควรมีความน่าจะเป็นที่เท่ากัน อินพุต n ในทางใดก็ตามที่ได้รับอนุญาตในโพสต์ I / O บนเมตา เอาท์พุต อาร์เรย์ของตัวเลขมีสัญญาณรบกวนจาก0-nรวม
14 code-golf  random 

2
รูปหลายเหลี่ยมนั้นคือใคร
วิธีที่สะดวกและมีประโยชน์เพื่อเป็นตัวแทนของพื้นผิวทอพอโลยีอยู่กับรูปหลายเหลี่ยมพื้นฐาน แต่ละด้านของรูปหลายเหลี่ยมจับคู่กับอีกด้านหนึ่งและสามารถเป็นแบบขนานหรือแบบขนาน เช่นนี่คือรูปหลายเหลี่ยมพื้นฐานของพรู : เพื่อหาสาเหตุว่าทำไมมันถึงเป็นพรูเราสามารถจินตนาการว่ารูปหลายเหลี่ยมของเราเป็นแผ่นกระดาษ ในการสร้างพื้นผิวที่เหมาะสมเราต้องการดัดกระดาษของเราเพื่อให้ขอบที่สอดคล้องกันเรียงกันกับลูกศรของมันในลักษณะเดียวกัน สำหรับตัวอย่างของพรูเราสามารถเริ่มต้นด้วยการกลิ้งกระดาษเป็นทรงกระบอกเพื่อให้ขอบสีฟ้าทั้งสอง (ป้ายชื่อ b) เชื่อมต่อกัน ตอนนี้เราเอาหลอดของเราแล้วงอเพื่อให้ทั้งสองขอบสีแดง (ป้าย a) เชื่อมต่อซึ่งกันและกัน เราควรมีรูปโดนัทหรือที่เรียกว่าพรู นี่อาจเป็นเรื่องหลอกลวง หากคุณพยายามทำเช่นเดียวกันกับรูปหลายเหลี่ยมต่อไปนี้โดยที่หนึ่งในขอบนั้นไปในทิศทางตรงกันข้าม: คุณอาจพบว่าตัวเองมีปัญหา นี่เป็นเพราะรูปหลายเหลี่ยมนี้แสดงถึงขวด Kleinซึ่งไม่สามารถฝังในสามมิติ นี่คือแผนภาพจากวิกิพีเดียที่แสดงว่าคุณสามารถพับรูปหลายเหลี่ยมนี้เป็นขวด Klein ได้อย่างไร: ในขณะที่คุณอาจเดาได้ว่างานที่นี่คือการใช้รูปหลายเหลี่ยมพื้นฐานและกำหนดพื้นผิวมัน สำหรับรูปหลายเหลี่ยมสี่เหลี่ยม (พื้นผิวเดียวที่คุณจะต้องใช้ในการจัดการ) มีพื้นผิวที่แตกต่างกัน 4 แบบ พวกเขาเป็น ฐานรองดอก ขวดไคลน์ รูปทรงกลม ระนาบ Projective ตอนนี้นี่ไม่ใช่การประมวลผลภาพดังนั้นฉันไม่ได้คาดหวังให้คุณถ่ายภาพเป็นอินพุทแทนเราจะใช้สัญกรณ์ที่สะดวกในการแสดงรูปหลายเหลี่ยมพื้นฐาน คุณอาจสังเกตเห็นในสองตัวอย่างข้างต้นว่าฉันตั้งชื่อขอบที่สอดคล้องกันด้วยตัวอักษรเดียวกัน (ทั้ง a หรือ b) และฉันให้ขอบบิดเป็นเครื่องหมายเพิ่มเติมเพื่อแสดงการบิดของมัน หากเราเริ่มที่ขอบด้านบนและเขียนฉลากสำหรับแต่ละขอบตามเข็มนาฬิกาเราจะได้สัญกรณ์ที่แสดงถึงรูปหลายเหลี่ยมพื้นฐานแต่ละอัน ตัวอย่างเช่น Torus ให้จะกลายเป็นAbabและขวดไคลน์จะกลายเป็นAbab สำหรับความท้าทายของเราเราจะทำให้มันง่ายยิ่งขึ้นแทนที่จะทำเครื่องหมายขอบที่บิดเป็นลบเราจะทำให้ตัวอักษรเหล่านั้นเป็นตัวพิมพ์ใหญ่แทน งาน รับสายกำหนดว่ามันหมายถึงรูปหลายเหลี่ยมพื้นฐานและการส่งออกค่าที่สอดคล้องกับพื้นผิวที่เหมาะสมของมันคือ คุณไม่จำเป็นต้องตั้งชื่อพื้นผิวให้ถูกต้องคุณเพียงแค่ต้องการค่าเอาต์พุตที่แตกต่างกัน …

8
ตัวเลขที่เข้าถึงได้
คำนิยาม ฟังก์ชั่นออยเลอร์พี ( ฟังก์ชั่น AKA totient ): ฟังก์ชั่นที่ใช้ในจำนวนบวกและส่งกลับจำนวนของจำนวนบวกน้อยกว่าจำนวนที่กำหนดซึ่งเป็นแบบร่วมเฉพาะกับจำนวนที่กำหนด φ(n)มันจะแสดงเป็น จำนวนเข้าถึงได้ถ้ามีอยู่ในเชิงบวกจำนวนเต็มxเช่นว่าφ(x) == nนั้นnคือสามารถเข้าถึงได้ งาน เขียนฟังก์ชั่น / โปรแกรมเพื่อตรวจสอบว่าจำนวนเต็มบวกที่กำหนดนั้นสามารถเข้าถึงได้ อินพุต ตัวเลขบวกในรูปแบบที่สมเหตุสมผล หนึ่งสามารถสันนิษฐานได้ว่าจำนวนอยู่ในความสามารถของภาษา ยอมรับอินพุตแบบยูนารี เอาท์พุต ค่าที่สอดคล้องกันสองค่าหนึ่งค่าสำหรับหมายเลขที่เข้าถึงได้และอีกค่าสำหรับหมายเลขที่ไม่สามารถเข้าถึงได้ ค่าสองค่าสามารถเป็นอะไรก็ได้ตราบใดที่มีความสอดคล้องกัน Testcases ตะโกนตัวเลขที่สามารถเข้าถึงได้100คือ: 1, 2, 4, 6, 8, 10, 12, 16, 18, 20, 22, 24, 28, 30, 32, 36, 40, 42, 44, 46, 48, 52, 54, 56, 58, …

19
รวมตัวหาร Fibonaccified ของฉัน!
ลำดับ Fibonacci ที่มีชื่อเสียงคือF(0) = 0; F(1) = 1; F(N+1) = F(N) + F(N-1)(สำหรับความท้าทายนี้เราเริ่มต้นด้วย 0) ความท้าทายของคุณ: ให้nการส่งออกรวมของทั้งหมดd TH ตัวเลข Fibonacci สำหรับหารทุกวันของn TH จำนวนฟีโบนักชี หากคุณต้องการสัญลักษณ์ที่เป็นทางการมากกว่านี้ อินพุต : จำนวนเต็มบวกn ผลลัพธ์ : ผลรวม n=4ตัวอย่างเช่นพิจารณา F(4) = 3หาร 3 คือ 1 และ 3 F(1) + F(3) = 1 + 2 = 3เพื่อให้ผลผลิตที่ควรจะเป็น สำหรับn=6, F(6) = …

15
การแยกตัวประกอบร่วมที่สำคัญสูงสุดร่วมกันสูงสุด
คำนิยาม ตัวเลขสองมีร่วมที่สำคัญ1ถ้าหารกันของพวกเขาเท่านั้นในเชิงบวกคือ รายการตัวเลขเป็นค่าร่วมกันระหว่างนายกถ้าทุกคู่ของตัวเลขในรายการนั้นเป็นคู่ร่วมกัน ตัวประกอบของจำนวนนี้เป็นรายการของตัวเลขที่มีสินค้าเป็นnn งาน ได้รับเป็นจำนวนบวกnเอาท์พุทตัวประกอบร่วมกันร่วมที่สำคัญของที่มีความยาวสูงสุดที่ไม่รวมn1 ตัวอย่าง สำหรับn=60คำตอบคือ[3,4,5]เพราะ3*4*5=60และไม่มีการแยกตัวประกอบร่วมที่สำคัญอื่น ๆ โดยไม่มี1ความยาวมากกว่าหรือเท่ากับ3ความยาวของการแยกตัวประกอบ กฎและเสรีภาพ คุณสามารถใช้รูปแบบอินพุต / เอาท์พุตที่สมเหตุสมผล รายการในรายการเอาท์พุทไม่จำเป็นต้องเรียงลำดับ Testcases n output 1 [] 2 [2] 3 [3] 4 [4] 5 [5] 6 [2, 3] 7 [7] 8 [8] 9 [9] 10 [2, 5] 11 [11] 12 [3, 4] 13 [13] 14 [2, 7] …

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