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

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

3
JSFuck Golf - สวัสดีชาวโลก
JSFuckเป็นภาษาลึกลับที่สามารถใช้ซ้ำคำสั่ง Javascript ใด ๆ ในโปรแกรม Javascript ที่ถูกต้องที่ใช้อักขระ 6 ตัว[]()!+เท่านั้น ตัวแปลง JSFuck เมื่อกำหนดอินพุตalert("Hello World!")ให้สร้างบล็อกของรหัสที่มีความยาว 22,948 อักขระ เนื่องจากโปรแกรมใช้การแปลงอัตโนมัติจำนวนมากเพื่อสร้างบล็อกนั้นฉันเชื่อว่ารหัสสามารถสั้นลงได้มากโดยใช้การปรับให้เหมาะสมด้วยตนเอง งานของคุณคือการสร้างโปรแกรมจาวาสคริปต์ที่ดำเนินงานalert("Hello World!")โดยใช้ตัวอักษร[]()!+เท่านั้น รหัสที่สั้นที่สุดที่จะทำเช่นนั้นชนะ

30
สร้างลำดับของRecamán
ลำดับของRecamán ( A005132 ) เป็นลำดับทางคณิตศาสตร์ที่กำหนดดังนี้: A(0) = 0 A(n) = A(n-1) - n if A(n-1) - n > 0 and is new, else A(n) = A(n-1) + n เวอร์ชัน LaTex ด้านบน (อาจอ่านได้มากกว่า): A(n)=⎧⎩⎨0A(n−1)−nA(n−1)+nif n=0if A(n−1)−n is positive and not already in the sequenceotherwiseA(n)={0if n=0A(n−1)−nif A(n−1)−n is positive and not already …

17
ให้ตรีโกณมิติเริ่มต้น!
บทนำ: ไซน์ของxจะได้รับจากสูตร: sin(x) = x - x^3/3! + x^5/5! - x^7/7! + x^9/9! - x^11/11! // and more follows... โคไซน์ของxจะได้รับจากสูตร: cos(x) = 1 - x^2/2! + x^4/4! - x^6/6! + x^8/8! - x^10/10! // and more follows... งาน: รับค่าของxและnเขียนโปรแกรม (ไม่มีฟังก์ชั่น ฯลฯ ) เพื่อส่งออกค่าsin(x)และcos(x)แก้ไขnข้อตกลงของสูตรข้างต้น สมมติว่าxเป็นเรเดียน การป้อนข้อมูล: x n จำนวนทศนิยมx(มีไม่เกิน 3 ตำแหน่งทศนิยม) …
20 code-golf  math 

2
วาดกาน้ำชายูทาห์
กาน้ำชายูทาห์ , เดิมสร้างโดยมาร์ตินนีเวลล์เป็นวัตถุที่สะดวกสำหรับการทดสอบโปรแกรมกราฟิก 3D ภารกิจคือการสร้างภาพโครงร่างของกาน้ำชาในการประมาณการมุมมอง เพื่อสนับสนุนแนวคิดของแอปพลิเคชันซอร์สโค้ดการควบคุมการดูและกล้องอาจถูกแยกและแยกออกจากการนับ นี่คือเพื่อให้พารามิเตอร์และไฟล์อินพุตอาจถูกแก้ไขและรหัสถูกนำมาใช้ใหม่เพื่อสร้างภาพที่หลากหลาย แต่ไม่จำเป็นต้องสร้างยูทิลิตี้แบบเต็มรูปแบบที่ยอมรับอาร์กิวเมนต์บรรทัดคำสั่งที่ซับซ้อนหรือเช่นนั้น ค้นหายอดเงินที่ "แฮ็กเกอร์" อ้าง StackOverflow: Bezier patches ทำงานใน Utah Teapot อย่างไร มีงานย่อยสามงานที่นี่: อ่านในข้อมูลกาน้ำชาในของรูปแบบเดิม แบ่งย่อยข้อมูลแพตช์โดยใช้การแยก deCasteljau หรือวิธีอื่น วิธีอื่นกำลังใช้เมทริกซ์พื้นฐานของ Bezier และประเมินชื่อพหุนาม (refs มาตรฐานเช่น Foley และ van Dam, Newmann และ Sproull) หรือวิธีพื้นฐานของ Bernstein (ซึ่งยังเกินฉัน) ฉายจุดไปที่ 2D (ถ้าภาษาไม่รองรับ 3D แบบดั้งเดิม) และวาดโครงร่างของแพทช์เล็ก ๆ แต่ละอันที่เห็นจากจุดตาที่มีมุมมองอยู่กึ่งกลางบนจุด LookAt และแกนแนวตั้งอยู่ในแนวแกนของกาน้ำชา (เช่นวาดมัน "ตั้งตรง" …

9
ค้นหายุค Pisano
ลำดับฟีโบนักชีเป็นลำดับที่รู้จักกันดีซึ่งในแต่ละรายการคือผลรวมของก่อนหน้านี้สองและสองรายการแรกที่มี 1. ถ้าเราใช้แบบโมดูโลของแต่ละระยะโดยคงลำดับจะกลายเป็นระยะ ๆ ตัวอย่างเช่นถ้าเราตัดสินใจที่จะคำนวณลำดับ mod 7 เราจะได้รับต่อไปนี้: 1 1 2 3 5 1 6 0 6 6 5 4 2 6 1 0 1 1 ... นี่คือช่วงเวลาของ 16 ลำดับที่เกี่ยวข้องเรียกว่าลำดับ Pisanoถูกกำหนดเช่นนั้นa(n)คือช่วงเวลาของลำดับ fibonacci เมื่อคำนวณแบบโมดูโล n งาน คุณจะควรจะเขียนโปรแกรมหรือฟังก์ชั่นที่เมื่อได้รับจะคำนวณและการส่งออกระยะเวลาของลำดับฟีโบนักชีพอควรn nนั่นคือคำที่ n ในลำดับ Pisano คุณจะต้องสนับสนุนจำนวนเต็มในช่วงเท่านั้น 0 < n < 2^30 นี่คือการแข่งขันรหัส - กอล์ฟดังนั้นคุณควรตั้งเป้าหมายลดขนาดซอร์สโค้ดของคุณตามจำนวนไบต์ กรณีทดสอบ …

4
ค้นหา Hull Convex จากชุดของจุด 2D
เมื่อคุณค้อนชุดของเล็บเป็นไม้กระดานและห่อยางรัดรอบตัวพวกเขาคุณจะได้รับฮัลล์นูน ภารกิจของคุณหากคุณตัดสินใจที่จะยอมรับมันคือการหาเรือนูนของชุดคะแนน 2D ที่กำหนด กฎบางอย่าง: เขียนเป็นฟังก์ชันพิกัดรายการของจุด (ในรูปแบบที่คุณต้องการ) เป็นอาร์กิวเมนต์ ผลลัพธ์จะต้องเป็นรายการของจุดในตัวเรือตามรายการทวนเข็มนาฬิกาหรือทวนเข็มนาฬิกาเริ่มต้นที่ใด ๆ ของพวกเขา รายการเอาท์พุทสามารถอยู่ในรูปแบบที่เหมาะสมซึ่งพิกัดของแต่ละจุดมีความแตกต่างอย่างชัดเจน (ตัวอย่างเช่นไม่ใช่หนึ่งรายการสลัว {0.1, 1.3, 4, ... }) หากจุดสามจุดขึ้นไปในส่วนของตัวเรือนูนอยู่ในแนวเดียวควรเก็บสองสุดยอดไว้บนเอาท์พุท ข้อมูลตัวอย่าง: ตัวอย่างที่ 0 การป้อนข้อมูล: {{1, 1}, {2, 2}, {3, 3}, {1, 3}} เอาท์พุท: {{3, 3}, {1, 3}, {1, 1}} (ตัวเลขเป็นเพียงตัวอย่างเท่านั้น) ตัวอย่างที่ 1 การป้อนข้อมูล: {{4.4, 14}, {6.7, 15.25}, {6.9, 12.8}, {2.1, 11.1}, …

10
ใช้ประโยชน์จาก "ช่องว่างฟรี"
สมมติว่าการท้าทาย codegolf ไม่นับช่องว่างตามความยาวของโปรแกรม โกงระบบนี้โดยการเข้ารหัสสคริปต์ของคุณลงในช่องว่างและกอล์ฟสคริปต์ที่ถอดรหัสและดำเนินการช่องว่างที่ฝังตัว ตัวอย่าง ทางออกของJBernardo 's Meta Golf Challengeคือการเข้ารหัสรหัส Sage (หรือ Python) ลงในช่องว่างและถอดรหัสถอดรหัส s = ' ' for c in '<lots of whitespace>'.split(s): s+=chr(len(c)) exec s การเข้ารหัสคือการใช้สคริปต์เพิ่มบรรทัดใหม่และสำหรับอักขระแต่ละตัวcในสคริปต์ord(c)แท็บเอาต์พุตตามด้วยช่องว่าง การเตรียมการขึ้นบรรทัดใหม่เป็นสิ่งจำเป็นเนื่องจากฉันใช้ Python และฉันเริ่มสคริปต์sด้วยการเว้นวรรค เกณฑ์การให้คะแนน โซลูชันที่สมบูรณ์ประกอบด้วยคำอธิบายของการเข้ารหัสที่คุณใช้ (หากซับซ้อนให้สคริปต์) และสคริปต์ 'ถอดรหัสและเรียกใช้งาน' คะแนนของคุณคือจำนวนอักขระที่ไม่ใช่ช่องว่างในสคริปต์ถอดรหัสและเรียกใช้งาน ห้ามเว้นวรรค (ภาษา) นอกจากนี้ภาษาใด ๆ ที่มีชุดตัวดำเนินการที่สมบูรณ์ซึ่งใช้เฉพาะอักขระช่องว่างไม่ได้รับอนุญาต: ฉันจะยอมรับคะแนนที่ไม่ใช่ศูนย์ต่ำที่สุด

14
เขียนโปรแกรมการเข้ารหัส Playfair
เขียนโปรแกรมที่รับอินพุตสองบรรทัดและใช้คำแรกเป็นวลีสำคัญในการเข้ารหัสรายการที่สองตามเทคนิคการเข้ารหัสของ Playfair Wikipedia อธิบายการเข้ารหัส Playfair ในรายละเอียดบางอย่างแต่เพื่อหลีกเลี่ยงความคลุมเครือใด ๆ ต่อไปนี้เป็นบทสรุปโดยย่อ: 1. สร้างตารางคีย์: แทนที่การเกิดขึ้นทั้งหมดJในวลีคีย์ด้วยIจากนั้นตัดอักขระที่ไม่ใช่ตัวอักษรทั้งหมดและอักขระซ้ำ แทรกลงในตารางการเข้ารหัส 5 × 5 เติมเซลล์ที่เหลือด้วยตัวอักษรที่เหลือ (ยกเว้นJ; เราไม่ชอบJ) ตัวอย่าง: S T A C K O V E R F Stack Overflow --> STACKOVERFLW --> L W B D G H I M N P Q U X Y Z 2. …

18
เขียนเรื่องสั้นโดยใช้รหัสที่ถูกต้องเท่านั้น
สิ่งที่ฉันต้องการเห็นคือความพยายามของคุณในการเขียน "เรื่องราว" ที่มีความหมายค่อนข้างง่ายต่อการอ่าน แต่ยังสร้างส่วนรหัสที่ถูกต้อง ตัวอย่างเช่นรหัสพื้นฐาน (BBC) นี้: LET customer = "sober" REPEAT INPUT "more beer" UNTIL customer = "drunk" (อิงจากhttp://img.rakuten.com/PIC/12184048/0/1/300/12184048.jpgสำหรับความคิด) ระเบียบ / แนวทาง: รหัสจะต้องถูกต้องในภาษาที่คุณระบุ - ทุกคนจะต้องสามารถเรียกใช้ได้โดยไม่จำเป็นต้องสร้างแฟนซี อาจใช้สตริงข้อความความคิดเห็นหรือสิ่งใดก็ได้ที่อนุญาตให้เพิ่มข้อความอิสระลงในโค้ดได้ แต่ต้องไม่เกิน 3 คำต่อสตริง (และคุณไม่สามารถใส่หลายสตริงหรือข้อคิดเห็นในแถวได้) รหัสของคุณไม่จำเป็นต้องส่งผลให้เกิดผลลัพธ์ที่สมเหตุสมผลเมื่อดำเนินการ มันสามารถเป็นวงวนไม่สิ้นสุดตราบใดที่รหัสนั้นถูกต้องและมันแสดงถึงบางสิ่งที่มีเหตุผล (*) เมื่ออ่านเป็นภาษาอังกฤษ การทำงานร่วมกันในรหัสของคุณจะถูกละเว้นในเรื่อง ไม่จำเป็นต้องกำหนดตัวแปร รหัสที่คุณทำที่นี่เป็นเพียงรหัสชิ้นส่วน คุณจะเสีย 5 คะแนนสำหรับการเรียกตัวแปร / คำสำคัญ / ป้ายกำกับ / ฯลฯ ที่ไม่ได้กำหนด แม้ สำหรับบุคคลทุกคนในตัวคำหลัก …

30
เรียกใช้การถอดรหัสความยาว
เขียนรหัสที่สั้นที่สุดในภาษาที่คุณเลือกเพื่อทำการถอดรหัสการรันความยาวของสตริงที่กำหนด สตริงจะถูกป้อนเป็นอินพุตใน stdinในแบบฟอร์ม CNCNCNCNCNCNCNCN โดยที่แต่ละตัวCอาจเป็นอักขระ ASCII ที่พิมพ์ได้และแต่ละตัวNนั้นเป็นตัวเลข1ถึง9(รวม) ตัวอย่างอินพุต: :144,1'1 ผลลัพธ์ที่สอดคล้องกัน: :4444,'
20 code-golf  string 

3
1P5: โปรแกรมเปลี่ยนคำ
นี้ถูกเขียนเป็นส่วนหนึ่งของครั้งแรกงวดพรีเมียร์โปรแกรมปริศนากด เกม คำที่มีความยาวเท่ากันเริ่มต้นและสิ้นสุด วัตถุประสงค์ของเกมคือการเปลี่ยนตัวอักษรหนึ่งตัวในคำเริ่มต้นเพื่อสร้างคำที่ถูกต้องที่แตกต่างกันโดยทำซ้ำขั้นตอนนี้จนกว่าจะถึงคำลงท้ายโดยใช้ขั้นตอนจำนวนน้อยที่สุด ตัวอย่างเช่นให้คำว่า TREE และ FLED เอาต์พุตจะเป็น: TREE FREE FLEE FLED 2 ข้อมูลจำเพาะ บทความ Wikipedia สำหรับ OWLหรือSOWPODSอาจเป็นจุดเริ่มต้นที่มีประโยชน์ตราบเท่าที่รายการคำพูดดำเนินไป โปรแกรมควรสนับสนุนสองวิธีในการเลือกคำเริ่มต้นและสิ้นสุด: ระบุโดยผู้ใช้ผ่านทางบรรทัดคำสั่ง stdin หรืออะไรก็ตามที่เหมาะกับภาษาที่คุณเลือก (แค่พูดถึงสิ่งที่คุณกำลังทำ) การเลือก 2 คำโดยการสุ่มจากไฟล์ คำเริ่มต้นและคำลงท้ายรวมถึงคำระหว่างกาลทั้งหมดควรมีความยาวเท่ากัน ควรพิมพ์แต่ละขั้นตอนในบรรทัด บรรทัดสุดท้ายของผลลัพธ์ของคุณควรเป็นจำนวนขั้นตอนระหว่างกาลที่จำเป็นต้องได้รับระหว่างคำเริ่มต้นและคำลงท้าย หากไม่พบการจับคู่ระหว่างคำเริ่มต้นและคำลงท้ายผลลัพธ์ควรประกอบด้วย 3 บรรทัด: คำเริ่มต้นคำลงท้ายและคำ OY รวมสัญลักษณ์ Big O สำหรับโซลูชันของคุณในคำตอบของคุณ โปรดรวมคู่คำที่เริ่มต้นและสิ้นสุดที่ไม่ซ้ำกัน 10 คู่ (พร้อมผลลัพธ์ของพวกเขา) เพื่อแสดงขั้นตอนที่โปรแกรมของคุณสร้าง (เพื่อประหยัดพื้นที่ในขณะที่โปรแกรมของคุณควรส่งออกเหล่านี้ในแต่ละบรรทัดคุณสามารถรวมเหล่านี้เป็นบรรทัดเดียวสำหรับการโพสต์แทนที่บรรทัดใหม่ด้วยช่องว่างและเครื่องหมายจุลภาคระหว่างการทำงานแต่ละครั้ง เกณฑ์เป้าหมาย / การชนะ โซลูชัน Big …

6
เครื่องกำเนิดภูมิประเทศ voxel แบบขนานที่คาดการณ์ไว้
งานของคุณคือการสร้างแผนที่ความสูงและแสดงเป็นแนวนอนแบบ voxel ที่คาดการณ์ไว้ กฎมีดังต่อไปนี้: ต้องสร้างภูมิทัศน์ (heightmap ของ the) แบบสุ่ม คุณต้องอธิบายด้วยวิธีที่อัลกอริทึมที่คุณใช้งานอยู่เพื่อให้ทุกคนสามารถเรียนรู้สิ่งใหม่ที่นี่ คุณต้องสร้างรูปภาพหรือแสดงแนวนอนที่สร้างขึ้นบนหน้าจอ ภาพที่ได้จะต้องมีการฉายภาพแบบ Paralell (ดังนั้นจึงไม่ใช่มุมมอง) และจะต้องมีช่องว่างของเสียง (เท่านั้นจึงต้องทำจากกล่องเล็ก ๆ ) นี่คือการประกวดความนิยมดังนั้นคุณอาจต้องการเพิ่มคุณสมบัติเพิ่มเติมบางอย่างลงในโปรแกรมของคุณเพื่อรับการอัปโหลดเพิ่มเติม ผู้ชนะคือคำตอบที่ถูกโหวตมากที่สุดที่ถูกต้อง 7 วันหลังจากการส่งที่ถูกต้องครั้งสุดท้าย การส่งที่ถูกต้องทั้งหมดจะต้องปฏิบัติตามกฎรวมถึงคำอธิบายของอัลกอริทึมที่ใช้ คุณสามารถเพิ่มฟีเจอร์เพิ่มเติมที่ไม่เป็นไปตามกฎบางอย่าง (เช่นการเพิ่มโหมดเปอร์สเปคทีฟ) แต่ในกรณีนี้พวกเขาต้องเป็นฟีเจอร์เสริม (เช่นเมื่อปิดผลลัพธ์ควรปฏิบัติตามกฎทั้งหมด) การส่งของฉันไม่นับว่าถูกต้อง ภาพตัวอย่างผลลัพธ์มีดังต่อไปนี้: ภาพที่นำมาจากที่นี่ หากคุณต้องการอัลกอริทึมตรวจสอบที่นี่

13
ใช้ Brute Force Sudoku Solver
ใช้ตัวแก้ Sudoku ที่สั้นที่สุดโดยใช้การเดา เนื่องจากฉันได้รับคำขอไม่กี่ครั้งฉันจึงได้เพิ่มสิ่งนี้เป็นคำถามทางเลือกสำหรับผู้ที่ต้องการใช้งานตัวแก้แรงซูโดกุ ปริศนา Sudoku: | 1 2 3 | 4 5 6 | 7 8 9 -+----------------------- A| 3 | 1 | B| 6 | | 5 C| 5 | | 9 8 3 -+----------------------- D| 8 | 6 | 3 2 E| | 5 | F| 9 …

30
ความคงทนต่อสารเติมแต่ง
รหัสที่สั้นที่สุดในการส่งผ่านความเป็นไปได้ทั้งหมดชนะ ในคณิตศาสตร์การคงอยู่ของตัวเลขจะวัดจำนวนครั้งที่การดำเนินการบางอย่างจะต้องนำไปใช้กับตัวเลขจนกว่าจะถึงเงื่อนไขคงที่ที่แน่นอน คุณสามารถกำหนดความคงทนเพิ่มเติมของจำนวนเต็มบวกโดยการเพิ่มตัวเลขของจำนวนเต็มและทำซ้ำ คุณจะต้องเพิ่มตัวเลขของผลรวมจนกว่าจะพบตัวเลขหนึ่งหลัก จำนวนการทำซ้ำที่ใช้ไปถึงตัวเลขหลักเดียวคือการคงอยู่ของหมายเลขนั้น ตัวอย่างการใช้ 84523: 84523 8 + 4 + 5 + 2 + 3 = 22 2 + 2 = 4 It took two repetitions to find the single digit number. So the additive persistence of 84523 is 2. คุณจะได้รับลำดับของจำนวนเต็มบวกที่คุณต้องคำนวณการคงอยู่ของ แต่ละบรรทัดจะมีจำนวนเต็มที่แตกต่างกันในการประมวลผล อินพุตอาจอยู่ในวิธีการI / O มาตรฐานใดๆ สำหรับแต่ละจำนวนเต็มคุณต้องส่งออกจำนวนเต็มตามด้วยช่องว่างเดียวตามด้วยการคงอยู่ของสารเติมแต่ง จำนวนเต็มแต่ละค่าที่ประมวลผลต้องอยู่ในบรรทัดของตัวเอง …

15
รหัสสั้นที่สุดที่จะทำให้เกมต่ำเกินไป - สูงเกินไป
คุณต้องสร้างเกมต่ำเกินไป --- สูงเกินไป (TLTH) ในรหัสที่สั้นที่สุด (เป็นไบต์) กฎของเกม: คอมพิวเตอร์จะเลือกตัวเลขสุ่มจากช่วงจำนวนเต็ม (-32768 ..32767) ตอนนี้คุณจะคิดถึงตัวเลขและใส่เข้าไป คอมพิวเตอร์จะบอกว่าหมายเลขของคุณต่ำกว่า ( TOO LOW) หรือสูงกว่า ( TOO HIGH) มากกว่าหมายเลขที่เลือกหรือไม่ เมื่อคุณเดาหมายเลขคอมพิวเตอร์ควรแสดงCongrats! You found the number!ขึ้น กฎของรหัส: อย่าใช้ตัวละครT, O, L, W, H, IและG(ค่าตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่) ในสตริงหรือตัวอักษรตัวอักษร ตัวอย่างเช่น tolower(T); // Acceptable cout<<"T"; // Unacceptable char ch='T'; // Unacceptable ลบ 300 ไบต์หากรหัสของคุณสามารถแสดงกฎของเกมก่อนเริ่มเกม ลบ 50 ไบต์หากรหัสของคุณสามารถนับจำนวนรอบและแสดงจำนวนรอบในตอนท้ายเกมดังนี้: …
20 code-golf 

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