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

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

6
ลำดับการตีกลับ
ขอให้เรากำหนดลำดับ เราจะบอกว่าa ( n )a(n)a(n)เป็นจำนวนที่น้อยที่สุดxxxซึ่งมีคุณสมบัติดังต่อไปนี้: xxxและnnnเป็น co-prime (ไม่มีส่วนร่วม) xxxไม่ปรากฏขึ้นก่อนหน้าในลำดับ | n - x | > 1|n-x|>1|n - x| > 1 ซึ่งแตกต่างจากลำดับส่วนใหญ่โดเมนและช่วงของลำดับของเราเป็นจำนวนเต็มมากกว่า 1 ขอให้เราคำนวณคำศัพท์สองคำแรก a ( 2 )a(2)a(2)ต้องมีอย่างน้อย4แต่4และ2หุ้นปัจจัยของ2เพื่อ ( 2 )ต้องเป็น5a ( 2 )a(2)a(2) a ( 3 )a(3)a(3)ต้องมีอย่างน้อย5แต่5ถูกใช้โดยa ( 2 )a(2)a(2)ดังนั้นจึงเป็นอย่างน้อย6แต่6ใช้ปัจจัยร่วมกับ3ดังนั้นจะต้องมีอย่างน้อย7,7ตอบสนองความต้องการทั้งสามนี้ดังนั้นa ( 3 ) = 7a(3)=7a(3)=7 7 a ( 4 )a(4)a(4) …

14
ค้นหาลำดับการสลับลับ
นี่คือตำรวจและโจรท้าทายด้ายโจรสามารถพบได้ที่นี่ งานของคุณคือการเขียนรหัสบางอย่างที่ส่งออกลำดับ OEIS และมีชื่อของลำดับในรหัส ( A______) และส่งออกลำดับที่สองแยกเมื่อชื่อของลำดับในรหัสเปลี่ยนเป็นชื่อของลำดับที่สอง นี่คือตัวอย่างใน Haskell ว่างานสำหรับA000217และA000290 f x|last"A000217"=='0'=x^2|1>0=sum[1..x] ลองออนไลน์! จากนั้นคุณจะต้องเปิดเผยหนึ่งในสองลำดับและรหัสที่รักษาความลับลำดับที่สอง โจรจะพยายามหาลำดับที่ซ่อนอยู่ หากโจรสามารถระบุลำดับของคุณ (หรือลำดับอื่นที่ตรงกับเกณฑ์) ที่คุณตอบอยู่ หากไม่มีคำตอบในหนึ่งสัปดาห์ของการโพสต์คุณอาจทำเครื่องหมายคำตอบของคุณว่าปลอดภัยและเปิดเผยวิธีแก้ปัญหาที่ต้องการสำหรับการตรวจสอบ คำตอบที่ปลอดภัยไม่สามารถถอดรหัสได้ อินพุตเอาต์พุต ถ่ายจากที่นี่ รหัสของคุณอาจเป็นฟังก์ชั่นหรือโปรแกรมสมบูรณ์ที่ใช้nผ่านวิธีการป้อนข้อมูลมาตรฐานและส่งออกคำที่nของลำดับตามดัชนีโดยดัชนีที่ให้ไว้ในหน้า OEIS คุณต้องสนับสนุนค่าทั้งหมดที่มีให้ในไฟล์ OEIS b สำหรับลำดับนั้นหมายเลขใด ๆ ที่ไม่ได้อยู่ในไฟล์ b ไม่จำเป็นต้องได้รับการสนับสนุน เกณฑ์การให้คะแนน คะแนนของคุณจะเป็นจำนวนไบต์ในรหัสของคุณโดยน้อยกว่าจะดีกว่า

4
cubifier ที่มีประสิทธิภาพที่สุด
ค่อนข้างน่าเบื่อเกินกว่าที่จะเขียนโค้ดด้วยตนเองความท้าทายของคุณคือการแปลข้อความ ASCII เป็นซอร์สโค้ดแบบสองมิติ Cubically นี่เป็นเพียงการวิ่งลงอย่างรวดเร็วของ Cubically; พื้นที่เก็บข้อมูลมีคู่มือที่สมบูรณ์แบบและรายละเอียดเพิ่มเติม ในทางตรงกันข้ามเป็น esolang ที่ฉันเขียนเมื่อไม่นานมานี้ออกแบบมาเพื่อใช้ในการเจ็บปวด มันมีหน่วยความจำสองส่วนลูกบาศก์รูบิค 3x3x3 และการลงทะเบียนที่เรียกว่า "notepad" หน่วยความจำ Cube ของ Rubik ภายในเริ่มต้นได้เช่นนี้: 000 000 top face 000 111222333444 left, front, right, and back faces, respectively 111222333444 111222333444 555 555 down face 555 หลังจากดำเนินการตามเข็มนาฬิกา 90 °หันหน้าไปทางขวาก้อนหน่วยความจำจะมีลักษณะดังนี้: 002 002 002 111225333044 111225333044 111225333044 554 554 …

21
ฟังตัวเลข
กำหนดจำนวนจริงให้แปลงเป็นรายการโดยมีเครื่องหมายลบ (ถ้ามี) กลายเป็นรายการว่างส่วนจำนวนเต็มกลายเป็นรายการของตัวเลขและส่วนที่เป็นเศษส่วน (ถ้ามี) กลายเป็นรายการของตัวเลข ตัวเลขต้องเป็นตัวเลขจริงไม่ใช่สตริง ตัวอย่าง 0 → [[0]] 123 → [[1,2,3]] -123 → [[],[1,2,3]] 123.45 → [[1,2,3],[4,5]] 0.45 → [[0],[4,5]] -0.45 → [[],[0],[4,5]] -123.45 → [[],[1,2,3],[4,5]]
19 code-golf  number 

30
รับสองอาร์เรย์ที่ดีที่สุด
คุณจะได้รับสองอาร์เรย์ของตัวเลขทศนิยม งานของคุณคือการจับคู่องค์ประกอบที่สอดคล้องกันของสองอาร์เรย์และรับค่าสูงสุดของแต่ละคู่ อย่างไรก็ตามหากองค์ประกอบที่เกี่ยวข้องทั้งสองนั้นเท่ากันคุณจะต้องนำผลรวมของพวกเขามาแทน ตัวอย่างเช่นให้รายการ[1, 3, 3.2, 2.3]และ[3, 1, 3.2, 2.6]คุณต้องทำต่อไปนี้: จับคู่องค์ประกอบ [[1, 3], [3, 1], [3.2, 3.2], [2.3, 2.6]](หรือไปรษณีย์): [3, 3, 6.4, 2.6]ผ่านไปแต่ละคู่และใช้กระบวนการข้างต้น: รายละเอียด อาร์เรย์ / รายการจะมีความยาวเท่ากันเสมอ อย่างไรก็ตามอาจว่างเปล่า ตัวเลขที่อยู่ในนั้นจะเหมาะสมกับความสามารถของภาษาของคุณเสมอตราบใดที่คุณไม่ใช้สิ่งที่ไม่เหมาะสม พวกเขาอาจเป็นบวกศูนย์หรือเชิงลบคุณต้องจัดการทุกประเภท หากช่วยลดจำนวนไบต์คุณอาจใช้ความยาวของรายการเป็นอินพุต กฎระเบียบ นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ ใช้กฎอินพุตและเอาต์พุตมาตรฐาน คุณสามารถรับอินพุต (และเอาต์พุต) ในรูปแบบที่เหมาะสม ช่องโหว่เริ่มต้นเป็นสิ่งต้องห้าม กรณีทดสอบ Array_1, Array_2 -> เอาท์พุท [], [] -> [] [1, 2, 3], …

19
แยก Local Maxima
ให้อาร์เรย์ของจำนวนเต็มบวกส่งออกอาร์เรย์ขององค์ประกอบทั้งหมดที่มากกว่าหรือเท่ากับที่อยู่ติดกัน องค์ประกอบส่วนใหญ่จะมีสององค์ประกอบที่อยู่ติดกัน องค์ประกอบแรกและสุดท้ายเป็นกรณีพิเศษเนื่องจากพวกเขามีเพียงหนึ่งองค์ประกอบที่อยู่ติดกัน คุณอาจคิดว่าอาเรย์นั้นมีองค์ประกอบอย่างน้อยสององค์ประกอบ กรณีทดสอบ: Input | Output [4,2,6,12,4,5,4,3] | [4,12,5] [1,2] | [2] [1,2,3,2,1] | [3] [3,2,1,2,3] | [3,3] [4,4] | [4,4] [2,4,4,4,1] | [4,4,4] [2,3,3,4] | [3,4] [4,3,3,4] | [4,4] นี่คือรหัส - กอล์ฟรหัสที่สั้นที่สุดชนะ!

19
ตัวเลขสามเหลี่ยมสามตัว [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ลักษณะ มีความท้าทายเล็กน้อยเกี่ยวกับตัวเลขเหล่านี้มาก่อนและฉันหวังว่าสิ่งนี้ไม่ได้อยู่ในหมู่พวกเขา n TH จำนวนสามเหลี่ยมเท่ากับผลรวมของตัวเลขธรรมชาติทั้งหมดขึ้นอยู่กับn , สิ่งที่ง่าย มีหน้าวิกิพีเดียและรายการที่ OEISสำหรับผู้ที่ต้องการแจ้งตัวเองต่อไป ตอนนี้เกาส์พบว่าทุกจำนวนธรรมชาติอาจจะแสดงเป็นผลรวมของสามตัวเลขสามเหลี่ยม (เหล่านี้รวมถึง0) 0 + 1 + 1 = 2และมันเป็นเรื่องปกติที่จะมีจำนวนหนึ่งมากกว่าหนึ่งครั้งเช่น ท้าทาย งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นกำหนดจำนวนธรรมชาติ (รวมถึง0) พิมพ์ตัวเลขสามเหลี่ยมสามที่รวมถึงการโต้แย้ง คุณอาจพิมพ์ตัวเลขที่คั่นด้วยช่องว่างเป็นอาร์เรย์หรือโดยวิธีอื่นที่คุณชอบ อย่างไรก็ตามห้ามมิให้ใช้ฟังก์ชันบิวด์อินใด ๆ เพื่อรับอาร์เรย์ช่วงหรือรูปแบบการรวบรวมอื่น ๆ ที่มีรายการหมายเลขรูปสามเหลี่ยมโดยตรง (ตัวอย่างเช่นอะตอมเดี่ยวที่ให้ช่วง) กรณีทดสอบ 9 -> 6 + 3 + 0 or 3 + 3 + 3 …

22
คำนวณ n-th ซ้ำของพหุนามสำหรับค่าเฉพาะ fⁿ (x)
รับฟังก์ชั่นพหุนามf (เช่นเป็นรายการpของสัมประสิทธิ์จริงในลำดับขึ้นหรือลง) จำนวนที่ไม่เป็นลบnและค่าจริงx , ส่งคืน: f n ( x ) คือค่าของF ( F ( F ( ... ฉ ( x ) ... ))) สำหรับnประยุกต์ฉบนx ใช้ความแม่นยำและการปัดเศษที่เหมาะสม วิธีแก้ปัญหาที่ใช้fเป็นรายการของสัมประสิทธิ์น่าจะเป็นสิ่งที่น่าสนใจที่สุด แต่ถ้าคุณสามารถใช้fเป็นฟังก์ชันได้จริง (ซึ่งจะช่วยลดความท้าทายนี้ให้กับเรื่องเล็กน้อย "ใช้ฟังก์ชันnครั้ง") อย่าลังเลที่จะรวมมัน หลังจากการแก้ปัญหาที่ไม่สำคัญของคุณ ตัวอย่างกรณี p = [1,0,0]หรือf = x^2, n = 0, x = 3: f 0 (3) =3 p = [1,0,0]หรือf …

15
ย้อนกลับอัลกอริทึม Cube ของรูบิค
เมื่อใดก็ตามที่คุณขยับลูกบาศก์รูบิคก็จะมีท่าเดินถอยหลังซึ่งจะทำการยกเลิกท่าแรก ด้วยเหตุนี้อัลกอริธึมทุกชุด (ชุดการเคลื่อนไหว) จึงมีอัลกอริทึมแบบย้อนกลับซึ่งจะยกเลิกอัลกอริทึมแรก เป้าหมายของความท้าทายนี้คือการค้นหาสิ่งที่ตรงกันข้ามของอัลกอริทึมที่กำหนด รายละเอียด: อินพุตประกอบด้วยอาร์เรย์ของการเคลื่อนไหวแต่ละรายการ การย้ายแต่ละครั้งเป็นสตริงที่มีความยาว 1 หรือ 2 แน่นอนคุณสามารถใช้รูปแบบการป้อนข้อมูลใดก็ได้ที่มีความหมายมากที่สุดในภาษาของคุณ การย้ายแต่ละครั้งประกอบด้วยโครงสร้างXหรือX'หรือX2ซึ่งXเป็นตัวอักษรตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก ที่จะย้อนกลับเพียงแทนที่ด้วยX X'ในทำนองเดียวกันจะกลายเป็นX' ในทางกลับกันไม่ได้รับการเปลี่ยนแปลงXX2 เมื่อต้องการสร้างผลลัพธ์ให้ย้อนการย้ายแต่ละครั้งจากนั้นย้อนกลับอาร์เรย์ ตัวอย่าง (สตริงคั่นด้วยช่องว่าง): R => R' D U' => U D' S T A C K => K' C' A' T' S' A2 B2 => B2 A2 เกณฑ์การให้คะแนน: นี่คือโค้ดกอล์ฟดังนั้นจำนวนไบต์ที่น้อยที่สุดจะเป็นผู้ชนะ ไม่อนุญาตช่องโหว่มาตรฐาน

14
คำนวณหมายเลข MU
หมายเลข MU สองหมายเลขแรกคือ 2 และ 3 หมายเลข MU อื่น ๆ ทุกหมายเลขคือหมายเลขที่เล็กที่สุดที่ยังไม่ปรากฏซึ่งสามารถแสดงเป็นผลิตภัณฑ์ของหมายเลข MU ที่แตกต่างกันสองรุ่นก่อนหน้าในวิธีเดียว นี่คือ 10 อันดับแรก 2, 3, 6, 12, 18, 24, 48, 54, 96, 162 งาน รับจำนวนบวกคำนวณและส่งออกn th MU นี่คือการแข่งขันรหัส - กอล์ฟดังนั้นคุณควรตั้งเป้าหมายให้ซอร์สโค้ดของคุณเล็กที่สุด OEIS A007335

10
SQL เลือกช่วงตัวเลข
MySQLผมพบว่ามันค่อนข้างยากที่จะประสบความสำเร็จในช่วงของตัวเลขเป็นแถวใน เช่นช่วงที่ 1-5 ทำได้โดย: SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 จะส่งผลให้: 1 2 3 4 5 สำหรับ 0-99 ฉันสามารถข้ามเข้าร่วมสองตาราง 0-9: CREATE TABLE nums as SELECT 0 as num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT …
19 code-golf  tips  syntax  sql 

30
บูลีนที่ซ้ำซ้อน
บทนำ คลาสสิก booleans เป็นหนึ่งบิต; trueหรือfalse, หรือ1 0ศูนย์ชั้นนำก็จะถูกซ้ำซ้อน ยกตัวอย่างเช่น001หมายความว่าเช่นเดียวกับหรือเพียงแค่000011 บูลีน 32 บิต กำหนดค่าความจริง / เท็จให้เอาต์พุตบูลีน 32- บิตเทียบเท่าเป็นสตริง (หรือเป็นตัวเลขถ้าด้วยเหตุผลบางอย่างภาษาของคุณสนับสนุนศูนย์นำหน้า) โปรแกรมของคุณไม่จำเป็นต้องทำงานกับความจริง / เท็จทุกประเภทเฉพาะภาษาโปรแกรมของคุณที่ดีที่สุด ตัวอย่าง i / o Input >> Output truthy >> 00000000000000000000000000000001 falsey >> 00000000000000000000000000000000 นี่คือโค้ดกอล์ฟดังนั้นไบต์ที่ต่ำที่สุดจึงชนะ!
19 code-golf  string 

3
ตั้งชื่อ Hadrons
ท้าทาย ให้องค์ประกอบของอนุภาคควาร์กเป็นอินพุทเอาท์พุทชื่อฮาดรอนที่สอดคล้องกัน ควาร์กจะแสดงด้วยตัวพิมพ์ใหญ่และโบราณวัตถุด้วยตัวพิมพ์เล็ก ควาร์กอาจอยู่ในลำดับใด ๆ ไม่จำเป็นต้องเป็นไปตามลำดับที่ระบุด้านล่าง ฟังก์ชั่นในตัวไม่อนุญาตให้เข้าถึงข้อมูลเกี่ยวกับอนุภาคและ / หรือควาร์ก ควาร์กเดียวที่คุณจะได้รับคือ U (ขึ้นไป), u (antiup), D (ลง), d (antidown), S (แปลก), s (antistrange), C (เสน่ห์), c (anticharm), B ( ด้านล่างหรือความงาม), b (antibottom หรือ antibeauty) รายชื่อ Hadrons และองค์ประกอบของควาร์ก โปรดทราบว่าแม้ว่าจะมีฮาดรอนอื่น ๆ อีกมากมายเช่น pentaquarks และกาวบอลเป็นต้นคุณจะต้องสนับสนุนเฮดรอนที่ได้รับในรายการต่อไปนี้ Baryons (QQQ) และ Antibaryons (qqq) ชื่อในวงเล็บเป็นชื่อทางเลือกสำหรับอนุภาค คุณสามารถส่งออกทั้งชื่อ Input - …

30
สร้างตัวย่อ
คล้ายกับการทำคำย่อแต่มีความแตกต่างที่สำคัญหลายประการรวมถึงวิธีการเรียกคำย่อและความท้าทายนี้รวมถึงผลลัพธ์ที่ยืดหยุ่น งาน รับสตริง (อนุญาตให้ใช้รายการตัวอักษร / สตริง 1 ความยาว) ที่มีเฉพาะ ASCII ที่พิมพ์ได้ให้พิมพ์ตัวอักษรพิมพ์ใหญ่ทั้งหมดในอินพุตที่นำหน้าด้วยช่องว่างหรือเส้นประหรือเป็นอักขระตัวแรกในอินพุต สตริงว่างคือพฤติกรรมที่ไม่ได้กำหนด กรณีทดสอบ: การส่งออกอาจจะอยู่ในรูปแบบของ"TEST", ["T","E","S","T"]หรือสิ่งอื่นงานสำหรับคุณ Self-contained Underwater Breathing Apparatus SUBA a Programming Language PL NATO Atlantic TREATY Organization NATO DEFCON 2 D hello, world! light-Emitting dioDe E What Does the Fox Say? WDFS 3D mov-Ies I laugh-Out Lou-D OLD Best …
19 code-golf  string 

14
นับจาก 1 ถึง n โดยไม่ต้องต่อเนื่องตัวเลขใด ๆ
เป้าหมาย คุณได้รับจำนวนเต็มn( n > 1) คุณจะต้องส่งออกหลายวิธีพีชคณิตของจำนวนเต็ม1จะnมีซึ่งเริ่มต้นที่1ปลายที่nและไม่ได้มีการติดต่อกันจำนวนเต็มสองจำนวนที่แตกต่างกันโดย 1 อีกทางเลือกหนึ่งถ้าคุณใช้กราฟที่สมบูรณ์K_nและลบขอบของเส้นทาง1-2-3-...-nคุณจะต้องนับเส้นทางของ Hamiltonian จาก1ไปเป็นnในกราฟที่เหลือ ตัวอย่างจะใช้f(n)สำหรับฟังก์ชันที่รับnและส่งออกจำนวนการเปลี่ยนลำดับที่ถูกต้อง แต่การส่งของคุณอาจเป็นฟังก์ชันหรือโปรแกรม ตัวอย่าง สำหรับn = 6ทางออกที่เป็นไปได้คือ1-3-5-2-4-6 แต่ไม่ได้เป็นวิธีการแก้ปัญหาที่ถูกต้องเพราะมันไม่ได้จบด้วย1-3-5-2-6-46 ในความเป็นจริงสำหรับn = 6มีเพียง 2 โซลูชั่น ( 1-4-2-5-3-6เป็นอีกทางหนึ่ง) f(6) = 2ด้วยเหตุนี้ สำหรับn = 4การเรียงสับเปลี่ยนเท่านั้นที่เริ่มต้น1และสิ้นสุดใน4คือ1-2-3-4และ1-3-2-4. ในทั้งสองของพวกเขา2อยู่ติดกับ3ให้จำนวนเต็มติดต่อกันซึ่งแตกต่างกันโดย 1 f(4) = 0ดังนั้น กรณีทดสอบ f(6) = 2 f(4) = 0 f(8) = 68 f(13) = 4462848 เกณฑ์การชนะ นี่คือรหัสกอล์ฟคำตอบที่สั้นที่สุดชนะ

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