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

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

1
สัญกรณ์ Integer ที่สับสน
แก้ไข: ฉันจะโพสต์คำถามนี้ในเวอร์ชันที่ใหม่กว่าในmeta-golfเร็ว ๆ นี้ อยู่ tooned! แก้ไข # 2: ฉันจะไม่อัปเดตความท้าทายอีกต่อไป แต่จะเปิดไว้ meta-golfรุ่นสามารถใช้ได้ที่นี่: /codegolf/106509/obfuscated-number-golf พื้นหลัง: ตัวเลขส่วนใหญ่สามารถเขียนด้วยสัญลักษณ์ต่างกันเพียง 6 ตัว: e (ออยเลอร์คงที่) - (การลบไม่ลบ) ^ (ยกกำลัง) ( ) ln (ลอการิทึมธรรมชาติ) ตัวอย่างเช่นคุณสามารถแปลงจำนวนจินตภาพiโดยใช้สมการนี้: (e-e-e^(e-e))^(e^(e-e-ln(e^(e-e)-(e-e-e^(e-e))))) เป้าหมาย: รับจำนวนเต็มใด ๆ kใด ๆ ด้วยวิธีการที่สมเหตุสมผลเอาท์พุทการแทนค่าที่สั้นที่สุดที่เป็นไปได้ของตัวเลขนั้นโดยใช้สัญลักษณ์ 6 ตัวเท่านั้น ตัวอย่าง: 0 => "e-e" 1 => "ln(e)" 2 => "ln(ee)" // Since - …

23
ถนนสองสายแยกเป็นสีเหลือง (ตอน 1)
นี่เป็นครั้งแรกในซีรีส์ที่สองคือถนนสองสายที่แยกจากกันในป่าสีเหลือง (ตอนที่ 2) ความท้าทายนี้ได้รับแรงบันดาลใจจากบทกวีที่มีชื่อเสียงของ Robert Frost "The Road Not Taken": ถนนสองสายแยกกันด้วยไม้สีเหลือง และขอโทษที่ฉันไม่สามารถเดินทางได้ทั้งคู่ และเป็นนักเดินทางคนหนึ่งฉันยืน และมองดูถนนที่ไกลที่สุดเท่าที่ฉันจะ ไปได้ จากนั้นก็เอาคนอื่น ๆ อย่างยุติธรรม และอาจมีสิทธิที่ดีกว่า เพราะมันเป็นหญ้าและต้องการสวม; แม้ว่าจะผ่านไปที่นั่นได้ สวมใส่พวกเขาเกี่ยวกับสิ่งเดียวกัน และในเช้าวันนั้นทั้งสองนอนหลับอย่างเท่าเทียมกัน ในใบไม้ที่ไม่มีขั้นบันไดมีสีดำเหยียบย่ำ โอ้ฉันเก็บไว้วันแรกสำหรับอีกวัน! ยังรู้วิธีนำไปสู่ ฉันสงสัยว่าฉันควรจะกลับมา ฉันจะบอกสิ่งนี้ด้วยการถอนหายใจ ที่ไหนสักแห่งในยุคนี้: ถนนสองสายแยกจากกันในป่าและฉัน - ฉันเอาเส้นทางที่เดินทางน้อยกว่า และนั่นทำให้เกิดความแตกต่าง สังเกตบรรทัดที่สองถึงบรรทัดสุดท้ายI took the one less traveled by,. ความท้าทายที่แท้จริงของคุณ คุณจะป้อนข้อมูลในรูปแบบดังนี้: # ## # ## # ## # # …

20
การกดปุ่มเอาต์พุต
ในภาษาการเขียนโปรแกรมใด ๆ ให้สร้างโปรแกรมที่รับอินพุตและเคลื่อนไหวข้อความที่พิมพ์บนแป้นพิมพ์ ความล่าช้าระหว่างอักขระแต่ละตัวควรแปรผันเพื่อจำลองการพิมพ์จริงบนแป้นพิมพ์ การหน่วงเวลาจะเป็น0.1, 0.1, 0.5, 0.1, 0.1, 0.5 ...วินาทีจนกว่าอักขระตัวสุดท้ายจะถูกพิมพ์ เอาต์พุตสุดท้ายจะถูกทิ้งไว้บนหน้าจอ คุณต้องเขียนทับบรรทัดข้อความปัจจุบันที่คุณไม่สามารถพิมพ์ข้อความบนแถวใหม่ ตัวอย่างการป้อนข้อมูล "Hello, PPCG! Goodbye Earth!" ควรส่งผลให้เกิดภาพเคลื่อนไหวต่อไปนี้ (โปรดทราบว่าอัตราการสุ่มตัวอย่างของ gif-maker ต่ำดังนั้นผลลัพธ์ที่แท้จริงจะแตกต่างกันเล็กน้อย): เนื่องจากนี่คือโค้ดกอล์ฟจำนวนไบต์ที่น้อยที่สุดจะเป็นผู้ชนะ

13
รหัสการแก้ไขตัวเองอย่างถาวร
ตอนนี้เราทุกคนรู้ว่าภาษาส่วนใหญ่มีวิธีง่าย ๆ ในการ "แก้ไขตัวเอง" รหัส อย่างไรก็ตามจะเกิดอะไรขึ้นถ้าคุณต้องแก้ไขรหัสและแก้ไขบางส่วน ... บนดิสก์ เป้าหมายของคุณคือการสร้างรหัสที่พิมพ์ตัวเลขจากนั้นแก้ไขไฟล์ของตัวเองเพื่อแทนที่ตัวเลขด้วยหมายเลขถัดไปในลำดับฟีโบนักชีดังนี้: $ ./program 1 $ ./program 1 $ ./program 2 $ ./program 3 $ ./program 5 [etc...] กฎระเบียบ คุณไม่สามารถจัดเก็บหมายเลข "นอก" ของรหัสได้ ไม่มีความคิดเห็นไม่บอกสคริปต์ให้ออกไม่มี EOF ฯลฯ หากรหัสของคุณทำงานกับชื่อไฟล์ใด ๆ ให้ลบ 2 จากจำนวนไบต์และเขียน$BYTESNOW ($ORIGINALBYTES - 2)ชื่อของคุณ (ชื่อไฟล์จะถือว่าอยู่ในช่วงของพา ธ ไฟล์ตัวอักษรและตัวเลขใด ๆ ) รหัสของคุณจะต้องเขียนผลลัพธ์ไปยังไฟล์ด้วยตัวมันเองโดยไม่ต้องมีการช่วยเหลือจากภายนอก รหัสของคุณสามารถเริ่มจากหนึ่งหรือศูนย์ มันไม่สำคัญ

4
ปวดหัววันหยุด
คำเตือน: อย่ารับคำแนะนำทางการแพทย์จากโพสต์นี้ หากคุณต้องการคำแนะนำทางการแพทย์ไปที่มืออาชีพที่มีคุณสมบัติเหมาะสม ฉันปวดหัว. ฉันต้องการยาแก้ปวดหัว ฉันจะบอกคุณในปริมาณที่น้อยที่สุดที่ฉันมีและคุณบอกฉันเมื่อฉันสามารถได้รับปริมาณต่อไปของฉันโดยไม่ต้องใช้ยาเกินขนาด ฉันจะให้สายนี้กับคุณ: P: 00:00, I: 02:00, P: 04:00, I: 06:00 และคุณจะให้ฉันนี้: Next P: 08:00, I: 10:00 การป้อนข้อมูล: สตริงแสดงเวลาที่ใช้ยาแต่ละชนิดในรูปแบบต่อไปนี้: P: 00:00, I: 02:00, P: 04:00, I: 06:00 นี่หมายความว่ายาพาราเซตามอลถูกถ่ายเมื่อเวลา 00:00 น. และ 04:00 น. และยาไอเป้โพรเพนจะถูกนำมาใช้เวลา 02:00 น. และ 06:00 น เอาท์พุท (ปรับปรุง): สายที่มีเวลาที่ยาตัวต่อไปสามารถใช้ในรูปแบบต่อไปนี้: Next P: 08:00, I: …
14 code-golf  string  date 

6
รหัส KeyPad เป็นข้อความ!
รับสายอักขระและอาร์เรย์เป็นอินพุตงานของคุณคือส่งข้อความที่ป้อนสตริงที่จะพิมพ์เมื่อพิมพ์บนแป้นพิมพ์แบบพกพาทั่วไป ใน Mobile Keypad ตัวอักษรจะถูกพิมพ์โดยการกดปุ่ม n ครั้งโดยที่ n คือตำแหน่งที่ตัวอักษรอยู่ที่ป้ายชื่อของปุ่ม ดังนั้นควรเอาท์พุท22b กฎระเบียบ อาร์เรย์ตัวช่วยจะมีผังแสดงชุดอักขระ ( [" ",".,!","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"]) สิ่งนี้จะได้รับเพื่อช่วยให้คุณประหยัดบางไบต์ #สัญลักษณ์จะสลับกรณี กรณีเริ่มต้นจะต่ำกว่า ดังนั้นควรเอาท์พุท2#3aD 0จะเพิ่มพื้นที่ ดังนั้นควรเอาท์พุท202a a จะมีช่องว่าง ( ) ในอินพุตสตริงเพื่อเริ่มตัวอักษรใหม่ที่อยู่บนปุ่มตัวเลขเดียวกัน ตัวอย่างพิมพ์aa, 2 2สายป้อนจะ เป็นที่แน่นอนว่าอินพุตสตริงจะเป็นรหัส KeyPad ที่ถูกต้องเสมอ อินพุต คุณสามารถป้อนข้อมูลในสิ่งที่ภาษาของคุณสนับสนุน เอาท์พุต คุณสามารถแสดงผลลัพธ์ในแบบที่คุณต้องการ ฟังก์ชั่นที่returnได้รับอนุญาต กรณีทดสอบ #4440555#666888330#999#66688111 -> "I Love You!" #6#33777 7779990#222#4477744477778627777111 -> "Merry Christmas!" #44#27 79990#66#3390#999#332777111 …

7
มันเกือบจะคริสต์มาสแล้ว!
ด้วยเหตุนี้ครอบครัวจากทั่วทุกมุมโลกจึงสร้างต้นคริสต์มาส แต่ต้นไม้ต้นนี้น่าเบื่อหลังจากผ่านไประยะหนึ่งลองสร้างต้นไม้ ASCII กันเถอะ! ใบไม้จะถูกแทนด้วย#และจะต้องจัดเรียงตามที่แสดงในผลลัพธ์ตัวอย่าง เรามี 5 ลูก ( O) และ 5 ลูกกวาด ( J) ซึ่งเราวางสุ่มรอบ ๆ ต้นไม้ เรายังมีเทียนอยู่ด้านบน อินพุต:ไม่มี เอาท์พุท: ^ | ### ##O## ####### ##### ####J## ######### ####O###### ############# ###J### ######### ####O###J## #######O##### ###J########O## ###########J##### ### ### กฎ (หากไม่ได้อยู่ในกฎให้ถือว่าคุณทำได้) ลูกบอลและลูกกวาดจะต้องวางสุ่มบนต้นไม้และต้องมีอย่างน้อยหนึ่งใบระหว่างพวกเขาไม่นับเส้นทแยงมุม ใบไม้แต่ละใบจะต้องมีโอกาสไม่เป็นศูนย์ในการรับลูกบอลหรืออ้อยขนม อาจมีช่องว่างนำหน้าหรือต่อท้ายในแต่ละบรรทัดตราบใดที่ต้นไม้มีรูปร่างที่เหมาะสม นี่คือรหัส - กอล์ฟดังนั้นรหัสที่สั้นที่สุดในตัวละครชนะ

9
วัตถุ codegolf
codegolfลองนึกภาพนี้เรามีสภาพแวดล้อมที่มีขอบเขตทั่วโลกที่มีเพียงวัตถุเดียวที่เรียกว่า วัตถุนี้มีเด็กเดียวที่เรียกว่าซึ่งมีคุณสมบัติที่เรียกว่าstackexchange การเข้าถึงคุณสมบัตินี้จะมีลักษณะ comcodegolf.stackexchange.com ความท้าทาย อินพุตของโปรแกรม / ฟังก์ชั่นของคุณจะเป็นสตริงที่พยายามเข้าถึงคุณสมบัติบนขอบเขตส่วนกลาง เมื่อใดก็ตามที่พบคุณสมบัตินี้คุณจะต้องพิมพ์ / คืนค่าความจริง หากไม่พบทรัพย์สินจะมีการพิมพ์ / คืนค่าที่ผิดพลาด สิ่งที่จับได้: เมื่อคุณพยายามเข้าถึงพร็อพเพอร์ตี้บนวัตถุที่ไม่มีอยู่จริงโปรแกรมของคุณควรมีข้อผิดพลาดชนิดใดชนิดหนึ่ง¹ เพื่อให้ได้สิ่งบิตง่ายขึ้นคุณอาจคิดว่าการป้อนข้อมูลจะเป็น[a-z.]ก็จะไม่ว่างเปล่าก็ไม่เคยจะมีการทำซ้ำ'และมันจะไม่เริ่มต้นหรือจุดสิ้นสุดด้วย. .ดังนั้นcodegolf.การป้อนข้อมูลที่ไม่ถูกต้องคือ กรณีทดสอบ codegolf.stackexchange.com => 1 // or any other truthy value codegolf.stackexchange.net => 0 // or any other falsy value codegolf.stackexchange => 1 codegolf.foo => 0 codegolf => 1 foo => 0 codegolf.com …

7
วาดเส้นโค้งหัวลูกศร Sierpinski
บทนำ Sierpinski Arrowhead โค้งเป็นโค้งที่ จำกัด เป็นสามเหลี่ยม Sierpinski ของ มันเริ่มต้นเช่นนี้ก่อน: _ / \ จากนั้นแต่ละบรรทัดจะถูกแทนที่ด้วยเวอร์ชันที่หมุนของบรรทัดแรก: _ / \ \ / _/ \_ ต่อไป: _ / \ \ / _/ \_ / \ \_ _/ _ \ / _ / \_/ \_/ \ งานของคุณ รับตัวเลขnให้ทำซ้ำรอบที่nของลูกศร Sierpinski Curve คุณอาจเลือก 0- หรือ 1 ดัชนี แต่โปรดระบุในคำตอบของคุณ …

1
รถแท็กซี่ในซานฟรานซิสโก
คุณเป็นนักขับรถแท็กซี่ในซานฟรานซิสโก ในฐานะที่เป็นเรื่องปกติของคนขับรถแท็กซี่คุณกำลังนำทางกริดที่ทิศทางที่ถูกต้องเท่านั้นที่คุณสามารถเคลื่อนย้ายได้คือด้านซ้ายขวาขึ้นและลง อย่างไรก็ตามซานฟรานซิสโกเป็นเนินเขามากดังนั้นระยะห่างระหว่างสี่แยกที่อยู่ติดกันไม่จำเป็นต้องเหมือนกัน โดยเฉพาะอย่างยิ่งระยะห่างระหว่างจุดตัดที่ระดับความสูงaและสี่แยกที่อยู่ติดกันที่ระดับความสูงจะเป็นb 1 + |a - b|เป้าหมายของคุณคือค้นหาเส้นทางที่สั้นที่สุดจากต้นกำเนิดของคุณที่ด้านบนซ้ายของแผนที่ไปยังปลายทางที่ด้านล่างขวา อินพุต ตารางสองมิติของระดับความสูงของจำนวนเต็มในรูปแบบใดก็ได้ที่สะดวกที่สุด (อาร์เรย์สองมิติ, อาร์เรย์หนึ่งมิติที่มีความกว้างและ / หรือความสูง ฯลฯ ) เอาท์พุต ลำดับของเส้นทางที่จะเดินทางมาถึงที่มุมล่างขวาของการป้อนข้อมูลจากด้านบนที่เหลืออยู่ในระยะทางที่สั้นที่สุดที่กำหนดระยะห่างระหว่างสองทางแยกที่อยู่ติดกันมีระดับaและจะได้รับจากสูตรb 1 + |a - b|หากมีหลายทางออกโซลูชันทั้งหมด แม้ว่าฉันจะใช้U, D, LและRสำหรับขึ้นลงซ้ายและขวาในตัวอย่างด้านล่างโปรแกรมของคุณอาจจะใช้ใด ๆ สี่สายที่แตกต่างกันเพื่อเป็นตัวแทนของทิศทางตราบเท่าที่มันสอดคล้องกับพวกเขาในและทั่วทั้งปัจจัยการผลิตทั้งหมด ตัวอย่าง Input: 0 3 0 0 0 0 2 0 2 0 0 0 0 3 0 Output: D D R …

1
หมากฮอส: King Me?
ท้าทาย: ให้หมากฮอสเอาท์พุทจำนวนน้อยที่สุดเท่าที่มันจะเอา (สมมติว่าดำไม่ขยับเลย) กับกษัตริย์ชิ้นแดงถ้าเป็นไปได้ กฎ : ด้านข้างของสีแดงจะอยู่ด้านล่างเสมออย่างไรก็ตามชิ้นส่วนของพวกเขาอาจเริ่มต้นในแถวใดก็ได้ (แม้แต่แถวของกษัตริย์ที่พวกเขาต้องไป) ชิ้นส่วนสีดำนิ่งอยู่กับที่ซึ่งหมายความว่าพวกมันไม่เคลื่อนไหวระหว่างการเคลื่อนไหวของสีแดง แต่จะถูกลบออกจากกระดานเมื่อถูกจับ โปรดทราบว่าชิ้นส่วนสามารถเริ่มบนพื้นที่ใดก็ได้บนกระดานรวมถึงติดกัน นี่ไม่ใช่วิธีการเล่นตัวตรวจสอบปกติ แต่โปรแกรมของคุณจะต้องสามารถแก้ไขปัญหาเหล่านี้ได้ (ดูอินพุต 5) อย่างไรก็ตามตัวตรวจสอบจะต้องเคลื่อนที่ในแนวทแยงมุมเท่านั้น(ดูอินพุต 3) อนุญาตให้ถ่ายภาพย้อนหลังได้หากการจับภาพครั้งแรกไปข้างหน้าในโซ่ (ดูอินพุต 7) การป้อนข้อมูล: กระดานหมากรุกขนาด 8x8 พร้อมช่องว่างของกระดานที่กำหนดเป็นอักขระต่อไปนี้ (อย่าลังเลที่จะใช้ตัวเลือกอื่นตราบใดที่มันยังมีความสอดคล้องกัน): . - ว่างเปล่า R - ชิ้นสีแดง B - ชิ้นสีดำ เอาท์พุท: ที่เล็กที่สุดจำนวนของการเคลื่อนไหวมันจะใช้ชิ้นส่วนสีแดงจะเป็น 'kinged' โดยการป้อนแถวของกษัตริย์แถวบนสุดของคณะกรรมการ (ด้านสีดำ) 0 ถ้าไม่มีการเคลื่อนไหวจะต้อง (ชิ้นสีแดงเริ่มต้นในแถวของกษัตริย์) หรือ ตัวเลขที่เป็นลบถ้ามันเป็นไปไม่ได้ที่จะเป็นราชาชิ้นสีแดง (เช่นสีดำตรงบริเวณนั้นเป็นแถวแรกทั้งหมด) อินพุต 1: . . . …

10
Steganographic Squares
Steganographic Squares งานของคุณคือการใช้สตริงและสร้างNxNภาพที่แสดงถึงสตริงนี้ คุณต้องเขียนอัลกอริทึมที่ใช้ในภาพและเปลี่ยนกลับเป็นสตริงเช่นกัน การให้คะแนนจะรวมจำนวนไบต์ของอัลกอริทึมทั้งสอง: "เข้ารหัส" อัลกอริทึม + "ถอดรหัส" อัลกอริทึม คุณควรโพสต์แต่ละรายการแยกกันด้วยจำนวนไบต์สำหรับอัลกอริทึมการเข้ารหัสและถอดรหัสที่แสดงแยกกัน อัลกอริทึมตัวอย่าง ตัวอย่างเช่นต่อไปนี้เป็น "การเขียนโปรแกรมปริศนาและการเขียนโค้ดกอล์ฟ" โดยใช้อัลกอริธึม Steganographic ตาม ASCII แบบง่าย ๆ ในช่องสีฟ้า: #2e7250,#6ea972,#04eb6f,#0fc767,#74ab72,#ee6161 #b73b6d,#1aae6d,#f37169,#bda56e,#1fe367,#e99620 #706450,#0d3575,#146b7a,#4ea47a,#2a856c,#95d065 #3f2d73,#cef720,#bab661,#d1b86e,#f22564,#12b820 #0f3d43,#c86e6f,#1ee864,#a66565,#247c20,#c3bb47 #0e296f,#89d46c,#585b66,#c08f20,#455c20,#136f20 รูปภาพจริง ( ) คุณสามารถเห็นช่องสีฟ้าเพียงถือค่า ASCII สำหรับภาพนี้: 50 = 80(P) 72 = 114(r) 6f = 111(o) 67 = 103(g) 72 = 114(r) 61 = …


8
Hexa Prime Square Puzzle 3x3
Hexa Prime Square Puzzle 3x3 บทนำ เราพิจารณา 3x3 ของตัวเลขฐานสิบหก (จาก0ถึงF) เช่น: 2 E 3 1 F 3 8 1 5 7 2 7 D D 5 B B 9 เรากำหนดHexa Prime Square 3x3 ( HPS3 ) เป็นสี่เหลี่ยมจัตุรัสซึ่งตัวเลขฐานสิบหกทั้งหมดที่อ่านจากซ้ายไปขวาและจากบนลงล่างเป็นช่วงเวลาที่แปลก (เช่นช่วงที่มากกว่า 2) นี่เป็นความจริงสำหรับสี่เหลี่ยมด้านซ้ายและเท็จสำหรับสี่เหลี่ยมจัตุรัสที่ถูกต้อง: 2 E 3 --> 0x2E3 = 739 1 F 3 …

19
ผลิตสแควร์เวทย์มนตร์ของDürer
ความท้าทาย ส่งออกอาร์เรย์หรือสตริงที่เป็นตัวแทนของตารางมายากลที่มีชื่อเสียงของDürer : นั่นคือ, 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 คุณสมบัติบางอย่างของสี่เหลี่ยมจัตุรัสซึ่งอาจถูกฉวยประโยชน์คือ: มันมีจำนวนเต็มแต่ละค่าจาก1ถึง16หนึ่งครั้ง ผลรวมของแต่ละคอลัมน์หรือแถวเช่นเดียวกับผลรวมของแต่ละเส้นทแยงมุมทั้งสองจะเท่ากัน นี่คือการกำหนดคุณสมบัติของตารางมายากล ผลรวมคือค่าคงที่เวทย์มนตร์ของสแควร์ นอกจากนี้สำหรับสี่เหลี่ยมจัตุรัสนี้โดยเฉพาะผลรวมของแต่ละจตุภาคทั้งสี่นั้นก็เท่ากับค่าคงที่เวทย์มนตร์เช่นเดียวกับผลรวมของจุดศูนย์กลางสี่สี่เหลี่ยมและผลรวมของมุมสี่สี่เหลี่ยม กฎระเบียบ ไม่อนุญาตให้ใช้ Bultins ที่สร้างเวทย์มนตร์สแควร์ส (เช่น Matlab's magicหรือ Mathematica MagicSquare) builtin อื่น ๆ สามารถใช้ได้ รหัสสามารถเป็นโปรแกรมหรือฟังก์ชั่น ไม่มีอินพุต ตัวเลขต้องอยู่ในฐาน 10 รูปแบบผลลัพธ์มีความยืดหยุ่นตามปกติ ความเป็นไปได้บางอย่างคือ: อาร์เรย์ที่ซ้อนกัน (ทั้งฟังก์ชั่นเอาท์พุทหรือการเป็นตัวแทนสตริงของมันมีหรือไม่มีตัวคั่นประเภทของการจับคู่วงเล็บ): [[16, 3, 2, …

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