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

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

24
เอาต์พุตตำแหน่งแรกในโปรแกรมของคุณสำหรับอักขระอินพุตแต่ละตัว
ท้าทาย เขียนโปรแกรมที่ไม่ว่างเปล่า / ฟังก์ชั่นpที่ได้รับสายเข้าไม่ว่างเปล่าs, เอาท์พุทตำแหน่งของเกิดขึ้นครั้งแรกของตัวละครของแต่ละในรหัสแหล่งที่มาของsp ตัวอย่างเช่นหากโปรแกรมของคุณคือ main() { cout << magic << cin } ^0 ^5 ^10 ^15 ^20 ^25 และได้รับอินพุตabcd{เอาต์พุตควรเป็น [1, x, 9, x, 7] (0-based) [2, x, 10, x, 8] (1-based) นี่xแสดงให้เห็นถึงผลใด ๆ ที่ไม่ได้เป็นผลผลิตที่ถูกต้องสำหรับตำแหน่งตัวอักษร (เช่นจำนวนลบ, 0ถ้าคุณใช้การจัดทำดัชนี 1-based NaN, Infสตริงpotatoเป็นจำนวนมากขึ้นกว่าความยาวของโปรแกรม ฯลฯ ) ข้อ จำกัด ไม่อนุญาตให้อ่านซอร์สโค้ด (เช่นใน Quine ที่เหมาะสม) อนุญาตให้ใช้ความคิดเห็นได้ …

30
รันรันช์บิต
รับจำนวนเต็มn > 0ส่งออกความยาวของลำดับต่อเนื่องที่ยาวที่สุดของ0หรือ1ในการเป็นตัวแทนไบนารี ตัวอย่าง 6เขียน110ในระบบไบนารี่ ลำดับที่ยาวที่สุดคือ11ดังนั้นเราควรกลับมา2 16→การ10000→การ4 893→การ1101111101→การ5 1337371→การ101000110100000011011→การ6 1→การ1→การ1 9965546→การ100110000000111111101010→การ7

30
กะพริบสิบสอง
อุปกรณ์อิเล็กทรอนิกส์จำนวนมากซึ่งเป็นอุปกรณ์เก่าโดยเฉพาะจะแสดงการกระพริบ12:00เมื่อไม่ได้ตั้งเวลา จุดประสงค์ของการท้าทายนี้คือการสร้างใหม่ โดยเฉพาะงานคือการแสดง12:00และ--:--อีกทางเลือกหนึ่งในวง จำกัด ระยะเวลาที่ควรจะเป็น 1 วินาทีแบ่งเท่า ๆ กันในสองช่วงเวลา 0.5 วินาที ที่นี่ "1 วินาที" และ "เท่ากัน" สามารถตีความได้อย่างหลวม ๆ ตัวอย่างเช่นเป็นที่ยอมรับได้หากโค้ดหยุดชั่วคราวเป็นเวลา 0.5 วินาทีระหว่างการแสดงสตริงแม้ว่าช่วงเวลาผลลัพธ์จะสูงกว่า 1 วินาทีเล็กน้อย เริ่มต้นหยุดชั่วคราวก่อนที่จะแสดงสายแรกเป็นที่ยอมรับ แต่ละสายใหม่ที่สามารถแสดงผลทั้งโดยการแทนที่สตริงอดีตหรือในบรรทัดใหม่ อนุญาตให้มีช่องว่างต่อท้ายยกเว้นว่าหากแต่ละสตริงใหม่อยู่ในบรรทัดที่แตกต่างกันควรไม่มีบรรทัดว่างระหว่างสตริงที่ต่อเนื่องกัน รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ

30
คำนวณความยากของคำถามของ Golf Code
การบรรยายสรุป ความยากของคำถาม Code Golf สามารถคำนวณได้ดังนี้: vจำนวนการดูคำถามอยู่ที่ไหน และaจำนวนคำตอบที่คำถามมีอยู่ และ⌈ x ⌉เป็นผู้ประกอบการติดเพดาน นอกจากนี้: ปัญหาปัจจุบันของคำถามนี้: *** งาน เขียนโปรแกรมที่จะใช้เวลาสองจำนวนเต็มและเอาท์พุทยากลำบากในการ(v and a)asterisks (*) อินพุตสามารถอยู่ในรูปแบบของอาร์เรย์สตริงแยกหรือเป็นอาร์กิวเมนต์ฟังก์ชันแยกต่างหาก ทดสอบข้อมูล Views Answers Difficulty Program Output 163 2 2 ** 548 22 1 * 1452 24 1 * 1713 37 1 * 4162 32 2 ** 3067 15 3 *** 22421 …
43 code-golf  math 

30
คุณสามารถเอาชนะฉันได้ไหม (ส่วนโจร)
ส่วนโจร ส่วนตำรวจสามารถพบได้ที่นี่ ท้าทาย งานของคุณคือเอาชนะการส่งตำรวจในภาษาเดียวกันและรุ่นเดียวกัน (เช่นPython 3.5 ≠ Python 3.4ดังนั้นจึงไม่ได้รับอนุญาต) การส่งจะ outgolfed เมื่อความยาวเป็นไบต์สั้นกว่าการส่งต้นฉบับ คุณจำเป็นต้องตีกอล์ฟอย่างน้อย 1 ไบต์เพื่อที่จะถอดรหัส เช่นถ้างานต้องทำ2 × nและการส่งเป็นดังต่อไปนี้: print(2*input()) คุณสามารถเอาชนะตำรวจได้โดยทำสิ่งต่อไปนี้: print 2*input() หรือแม้แต่สิ่งนี้ (เนื่องจากอนุญาตแลมบ์ดา): lambda x:2*x โพสต์สิ่งนี้ด้วยหัวข้อ: ##{language name}, <s>{prev byte count}</s> {byte count}, {cop's submission + link} ตัวอย่างเช่น: Python 2, 16 12 ไบต์, Adnan (+ ลิงก์ไปยังการส่ง) lambda x:2*x คำนวณA005843 …

19
พายของฉันถูกแบ่งออกเป็นสองส่วนแล้ว?
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในรายการจำนวนเต็มบวกที่ไม่มีข้อ จำกัด คุณอาจจะถือว่าเป็นการป้อนข้อมูลในรูปแบบที่สะดวกที่เหมาะสมเช่นหรือ"1 2 3 4"[1, 2, 3, 4] ตัวเลขในรายการอินพุตแสดงถึงชิ้นส่วนของแผนภูมิวงกลมเต็มโดยที่ขนาดแต่ละส่วนเป็นสัดส่วนกับหมายเลขที่สอดคล้องกันและชิ้นส่วนทั้งหมดจะถูกจัดเรียงรอบแผนภูมิตามลำดับที่กำหนด ตัวอย่างเช่นพายสำหรับ1 2 3 4คือ: คำถามที่รหัสของคุณต้องตอบคือ: แผนภูมิวงกลมมีการแบ่งออกเป็นสองส่วนหรือไม่? นั่นคือมีเส้นตรงที่สมบูรณ์แบบจากด้านหนึ่งของวงกลมไปยังอีกด้านหนึ่งหรือไม่โดยแยกออกเป็นสองส่วนหรือไม่? คุณจำเป็นต้องส่งออกtruthyค่าถ้ามีอย่างน้อยหนึ่งเส้นแบ่งครึ่งและเอาท์พุทfalsyค่าถ้ามีผู้ใด ใน1 2 3 4ตัวอย่างมีการแบ่งระหว่าง4 1และ2 3ดังนั้นผลลัพธ์จะเป็นความจริง แต่สำหรับอินพุท1 2 3 4 5นั้นไม่มีไบเซอร์เรเตอร์ดังนั้นเอาต์พุตจะเป็นเท็จ: ตัวอย่างเพิ่มเติม การจัดเรียงตัวเลขต่างกันอาจลบเส้นแบ่งครึ่ง เช่น2 1 3 4→ falsy: หากมีเพียงหนึ่งหมายเลขเท่านั้นในรายการอินพุตวงกลมจะไม่ถูกแบ่งออก เช่น10→ falsy: อาจมีหลายเส้นแบ่งครึ่ง ตราบใดที่มีมากกว่าศูนย์ผลลัพธ์ก็จะเป็นจริง เช่น6 6 12 12 12 11 1 12→ความจริง: (มี …
43 code-golf  math  arithmetic  combinatorics  decision-problem  code-golf  sequence  number-theory  binary  code-golf  number-theory  set-theory  code-golf  hashing  code-golf  game  card-games  code-golf  ascii-art  code-golf  arithmetic  array-manipulation  jelly  code-golf  string  array-manipulation  code-golf  sorting  code-challenge  code-golf  number  date  binary  code-golf  arithmetic  code-golf  math  number  linear-algebra  polynomials  code-golf  ascii-art  code-golf  grid  decision-problem  code-golf  string  combinatorics  code-golf  string  kolmogorov-complexity  arithmetic  date  code-golf  number  data-structures  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation 

4
คอมพิวเตอร์สร้างดินแตก
จงเขียนโปรแกรมที่ใช้ในจำนวนเต็ม 0-65,535 (2 16 -1) และสร้างที่ไม่ซ้ำกัน 500 × 500 พิกเซลภาพที่มีลักษณะเป็นที่คล้ายกันเป็นไปได้ที่จะเหล่านี้ 6 ภาพชีวิตจริงของดินแตก: นี่คือภาพขนาดย่อคลิกเพื่อดูภาพขนาดเต็ม 500 × 500 เป้าหมายที่นี่คือการทำให้คอมพิวเตอร์ของคุณสร้างขึ้นเป็นภาพเหมือนจริงที่เป็นไปได้ ดังนั้นหากภาพใดที่โปรแกรมของคุณถูกนำมาผสมกับภาพ 6 ภาพด้านบนแสดงว่ามีคนเห็นภาพเป็นครั้งแรกจะไม่สามารถบอกได้ว่าคอมพิวเตอร์สร้างภาพที่แตกต่างจากของจริง แต่การทำ photorealism ที่สมบูรณ์แบบนั้นเป็นเรื่องยาก นี่คือการประกวดความนิยมดังนั้นคำตอบที่มีผลลัพธ์ที่สมจริงมากขึ้นจะได้รับการสนับสนุนมากขึ้นและมีแนวโน้มที่จะชนะ กฎระเบียบ คุณอาจใช้ฟังก์ชั่นการประมวลผลภาพหรือห้องสมุด คุณอาจใช้อัลกอริทึมของคุณกับข้อมูลที่รวบรวมจากภาพตัวอย่าง 6 ภาพ แต่ภาพ 65536 (2 16 ) ที่เป็นไปได้ของคุณควรแตกต่างจากภาพซึ่งกันและกันและภาพตัวอย่างโดยเฉพาะอย่างยิ่งสำหรับการจัดเรียงรอยแตก คุณต้องสร้างภาพของคุณอย่างแท้จริงไม่เพียงหมุนและแปลส่วนที่เลือกจากภาพถ่ายที่มีอยู่ก่อนหน้า คุณไม่ควร hardcode ผลลัพธ์ของคุณ ควรใช้อัลกอริทึมทั่วไปและจำนวนที่มากกว่า 65535 ในทางทฤษฎีควรสร้างผลลัพธ์ที่ถูกต้อง (ฉันได้ จำกัด ไว้เพียงรองรับประเภทจำนวนเต็มขนาดเล็กสูงสุด) ค่าอินพุทจำนวนเต็มสามารถคิดได้ว่าเป็นเมล็ดที่ส่งผลให้ภาพที่ส่งออกดินแตก ควรกำหนดไว้ล่วงหน้าดังนั้นอินพุตเดียวกันควรส่งผลลัพธ์เดียวกันเสมอ ภาพที่ส่งออกจะต้องมีขนาด 500 × …

18
นักแปล Meme สากลเหมือนผี
บทนำ ปรากฎว่าเอเลี่ยนรักมีมมากเท่ากับที่เราทำ เผ่าพันธุ์มนุษย์ต่างดาวทุกคนที่เราพบมามีเวอร์ชั่นของตนเอง2spooky4me(ดูคำถามต่อไปนี้ ) และสิ่งที่เทียบเท่าแม้ว่าจะมีการเปลี่ยนแปลงบางอย่าง ที่อาศัยอยู่ของดาวเคราะห์ CUTE1f ไม่สามารถจัดการจำนวนมากสางเพื่อสางต้องการของพวกเขาคือ1spooky2meในขณะที่ memers skeletor7 9spooky11meรักพวกเขาสางบางอย่างเพื่อให้พวกเขามีแนวโน้มที่จะใช้งาน ท้าทาย การแปลมส์นั้นเป็นงานที่ยากดังนั้นคุณได้รับมอบหมายให้เขียนนักแปล meme สากลเพื่อช่วยให้คนเหล่านี้เข้าถึง memenet ได้อย่างถูกต้อง โปรแกรมของคุณจะยอมรับ meme และการแปลงเพื่อนำไปใช้กับลำดับหลักใน meme นั้นเพื่อให้เหมาะสมกับผู้อยู่อาศัยของดาวเคราะห์ดวงอื่น อินพุต โปรแกรมของคุณจะได้รับอินพุตสตริงสองสตริง: อินพุต meme (เช่น2spooky4me) [a-zA-Z0-9]+ไม้ขีด การแปลงที่ใช้กับมัน (เช่น+1จาก2spooky4meไปถึง3spooky5me) ไม้ขีดไฟ[+\-*/^]\d+(คุณต้องยอมรับ+, -, *, /และ^เป็นผู้ประกอบการโดยไม่คำนึงถึงการแสดงพื้นเมืองในภาษาของคุณ) เอาท์พุต โปรแกรมของคุณต้องส่งคืนสตริงเอาต์พุต (พิมพ์ไปยังเอาต์พุตมาตรฐานหรือเทียบเท่า) โดยการแปลงที่กำหนดจะใช้กับลำดับหลักในอินพุต meme ในเหตุการณ์ประหลาด ๆ มันกลับกลายเป็นว่าทุกเผ่าพันธุ์ที่พบเจอนั้นชอบมากกว่าหนึ่งมส์เศษส่วนดังนั้นการเปลี่ยนแปลงเหล่านี้ควรจะทำการคำนวณเลขจำนวนเต็ม (เช่น1spooky1me /2ควรส่งผลให้0spooky0me) ตัวอย่าง ใช้การดำเนินการทางคณิตศาสตร์มาตรฐาน: Input: 2spooky4me +1 Output: …

10
คดเคี้ยวไปมาเมทริกซ์
ในฐานะที่เป็นส่วนหนึ่งของอัลกอริธึมการบีบอัดมาตรฐาน JPEG จะเปิดใช้งานเมทริกซ์เป็นเวกเตอร์ตามแนวต้านของทิศทางสลับ: งานของคุณคือใช้เมทริกซ์ (ไม่จำเป็นต้องเป็นสี่เหลี่ยมจัตุรัส) แล้วส่งคืนในรูปแบบที่ไม่ได้ควบคุม ตัวอย่างเช่น: [1 2 3 4 5 6 7 8 9 1 2 3] ควรให้ผลผลิต [1, 2, 5, 9, 6, 3, 4, 7, 1, 2, 8, 3] กฎระเบียบ 10คุณอาจจะคิดว่าองค์ประกอบเมทริกซ์เป็นจำนวนเต็มบวกน้อยกว่า คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น, รับอินพุตผ่าน STDIN (หรือทางเลือกที่ใกล้เคียงที่สุด), อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ของฟังก์ชันและส่งผลลัพธ์ผ่าน STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด), ค่าส่งคืนของฟังก์ชันหรือพารามิเตอร์ อินพุตเมทริกซ์อาจถูกกำหนดในรูปแบบรายการที่สะดวกไม่คลุมเครือซ้อนหรือรูปแบบสตริงหรือเป็นรายการแบบเรียบพร้อมกับมิติเมทริกซ์ทั้งสอง (หรือแน่นอนว่าเป็นเมทริกซ์หากภาษาของคุณมี) เวกเตอร์เอาต์พุตอาจอยู่ในรูปแบบรายการแบบแบนหรือแบบสตริงที่สะดวกใด ๆ ใช้กฎมาตรฐานของกอล์ฟ กรณีทดสอบ [[1]] => …

9
ปั่นจักรยานกับ Rubik's
ในขณะที่กำลังบิดลูกบาศก์ของรูบิคโดยไม่ได้ใช้งานลูกชายของฉันสังเกตเห็นว่ามันกลับไปสู่สถานะที่แก้ไขแล้ว ฉันค่อนข้างแน่ใจว่าเขาคิดว่านี่เป็นเวทย์มนตร์ของวูดูในตอนแรก แต่ฉันอธิบายว่าถ้าคุณทำซ้ำการเคลื่อนไหวตามลำดับที่เหมือนกันมันจะกลับสู่สถานะดั้งเดิมเสมอ ในที่สุด แน่นอนว่าเป็นเด็กเขาต้องลองด้วยตัวเองและเลือกลำดับ "แบบสุ่ม" ที่เขาคิดว่าจะยุ่งยาก เขาหลงทางหลังจากผ่านไปสิบครั้งซ้ำแล้วซ้ำอีกและถามฉันว่าเขาจะต้องทำซ้ำกี่ครั้ง ไม่รู้ว่าเขากำลังใช้ลำดับฉันบอกเขาว่าฉันไม่รู้ แต่เราสามารถเขียนโปรแกรมเพื่อค้นหา นี่คือที่ที่คุณเข้ามาแน่นอนว่าฉันสามารถทำอะไรบางอย่างได้ แต่เขาต้องการพิมพ์ด้วยตัวเอง เขาไม่ได้เป็นไปอย่างรวดเร็วมากพิมพ์ดีด ๆ แม้ว่าดังนั้นฉันต้องการโปรแกรมที่สั้นที่สุด วัตถุประสงค์ กำหนดลำดับการเลี้ยวเอาท์พุทจำนวนครั้งน้อยที่สุดที่จะต้องดำเนินการเพื่อกลับสู่สภาพเดิม นี่คือรหัสกอล์ฟอย่างน้อยไบต์จะชนะ คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่นและใช้ค่าเริ่มต้นตามปกติอื่น ๆ ทั้งหมด อินพุต การป้อนข้อมูลคือลำดับของการย้ายถ่ายเป็นสตริงรายการหรือรูปแบบอื่น ๆ ที่เหมาะสมกับภาษาของคุณ รู้สึกอิสระที่จะใช้ตัวคั่น (หรือไม่) ระหว่างการเคลื่อนไหวถ้าในรูปแบบสตริง มีการเคลื่อนไหว "พื้นฐาน" หกประการที่จะต้องนำมาพิจารณาพร้อมกับผู้รุกราน: R - Turn the right face clockwise L - Turn the left face clockwise U - Turn the up …

9
ความท้าทายของนาฬิกาทราย
นาฬิกาทราย นาฬิกาทรายนี้มี 60 "แซนด์ของเวลา" และมันเต็มไปแต่ละห้อง นาฬิกากว้าง 19 ตัวอักษรและสูง 13 ตัว แต่ละห้องมีทราย 5 แถวและมีแถวตรงกลางที่สามารถถือทรายได้ 1 ผืน แถวบนสามารถถือทรายได้ 17 เม็ดอันถัดไป 15 อันและอื่น ๆ (ดูด้านล่าง) หาดทรายตกลงไปสู่ห้องล่างในอัตราหนึ่งทรายต่อวินาที START 3 SECONDS LATER 38 SECONDS LATER ███████████████████ ███████████████████ ███████████████████ █.................█ 17 █.............. █ 14 █ █ 0 ██...............██ 15 ██...............██ 15 ██ ██ 0 ███.............███ 13 …

3
รหัสที่ใช้ Game of Life ด้วยตัวเอง
เขียนโค้ดสี่เหลี่ยมสองบล็อกแต่ละตัวกว้างwและสูงhซึ่งใช้Game of Life ของ Conwayเมื่อจัดเรียงในตาราง ( wและhอาจเป็นจำนวนเต็มบวกใด ๆ ) ตัวอย่างเช่นบล็อกโค้ดสองตัวอาจเป็น: ( w = 3, h = 2 ไม่ใช่โค้ดจริง) XX| --+ และ | --+ ปฏิบัติต่อบล็อกแรกราวกับว่ามันเป็นเซลล์ "มีชีวิต" ในเกมแห่งชีวิตและบล็อกที่สองราวกับว่ามันเป็นเซลล์ "ตาย" ตอนนี้จัดเรียงสำเนาของบล็อกทั้งสองนี้เป็นโปรแกรมขนาดใหญ่ที่แสดงถึงตารางเกมแห่งชีวิตเช่นเครื่องร่อนนี้: | | | | | --+--+--+--+--+ | |XX| | | --+--+--+--+--+ | | |XX| | --+--+--+--+--+ |XX|XX|XX| | --+--+--+--+--+ | | | …

30
สร้างเมทริกซ์เอกลักษณ์
ความท้าทายนั้นง่ายมาก กำหนดอินพุตจำนวนเต็มnส่งออกn x nเมทริกซ์เอกลักษณ์ เมทริกซ์เอกลักษณ์เป็นข้อมูลที่มีการ1ขยายจากด้านบนซ้ายลงไปด้านล่างขวา คุณจะเขียนโปรแกรมหรือฟังก์ชั่นที่จะส่งกลับหรือแสดงเมทริกซ์เอกลักษณ์ที่คุณสร้างขึ้น ผลลัพธ์ของคุณอาจเป็นอาร์เรย์ 2 มิติหรือตัวเลขคั่นด้วยช่องว่าง / แท็บและบรรทัดใหม่ ตัวอย่างอินพุทและเอาท์พุท 1: [[1]] 2: [[1, 0], [0, 1]] 3: [[1, 0, 0], [0, 1, 0], [0, 0, 1]] 4: [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] 5: [[1, 0, 0, …

30
The Real Slim Shady
Echo ต่อไปนี้เป็นไบต์น้อยที่สุด: I'm Slim Shady. Yes, I'm the real Shady. All you other Slim Shadys are just imitating. So, won't the real Slim Shady please stand up? Please stand up. Please stand up. ต่อไปนี้ห้าคำต้องปรากฏเพียงแห่งเดียวในรหัสของคุณ: I'm Slim Shady real stand

30
ขยาย ASCII Sun
เขียนโปรแกรมที่รับ (ผ่าน STDIN / บรรทัดคำสั่ง) จำนวนเต็มแบบไม่ลบ เมื่อ N เป็น 0 โปรแกรมของคุณควรพิมพ์O(นั่นคือทุนโอ้ไม่ใช่ศูนย์) เมื่อ N เป็น 1 โปรแกรมของคุณควรพิมพ์ \|/ -O- /|\ เมื่อ N เป็น 2 โปรแกรมของคุณควรจะพิมพ์ \ | / \|/ --O-- /|\ / | \ เมื่อ N เป็น 3 โปรแกรมของคุณควรจะพิมพ์ \ | / \ | / \|/ ---O--- /|\ / | \ …

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