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

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

19
วาดสามเหลี่ยม Reuleaux!
Reuleaux สามเหลี่ยมเป็นรูปทรงที่เกิดขึ้นจากจุดตัดของสามวงกลมที่มีวงกลมแต่ละผ่านศูนย์ของผู้อื่น โดยไม่คำนึงถึงการหมุนความกว้างของสามเหลี่ยม Reuleaux จะเท่ากับรัศมีของวงกลมเสมอ: ภาพ: Wolfram MathWorld เขียนโปรแกรมที่รับความกว้างrเป็นอินพุตและแสดงสามเหลี่ยม Reuleaux ของความกว้างนั้น (เป็นพิกเซล) คุณต้องแสดงรูปร่างแบบแยกเช่นแบบทึบเต็มไม่ลูบและบนพื้นหลังทึบ code-golf - โปรแกรมที่สั้นที่สุดเป็นไบต์ชนะ

1
ค้นหา Diffy Games
เกมสนุกที่จะเล่นถ้าคุณกำลังเบื่อเป็นเกม Diffy มันเป็นเกมที่ผู้เล่นคนหนึ่งที่เรียบง่ายและสามารถใช้เวลาของคุณ เกม Diffy นั้นมีลักษณะดังนี้: คุณเริ่มต้นด้วยรายการจำนวนเต็มไม่เป็นลบในตัวอย่างนี้เราจะใช้ 3 4 5 8 จากนั้นคุณก็รับผลต่างระหว่างตัวเลขที่อยู่ติดกัน (8) 3 4 5 8 5 1 1 3 จากนั้นคุณทำซ้ำ คุณทำซ้ำจนกว่าคุณจะรู้ว่าคุณได้เข้าสู่วง และโดยทั่วไปเกมจะเริ่มต้นจากจุดเริ่มต้นอีกครั้ง 3 4 5 8 5 1 1 3 2 4 0 2 0 2 4 2 2 2 2 2 0 0 0 0 0 0 …

30
lwap เธอโหยหาโซ่ตรวน!
ให้ลิสต์หรือสตริงคั่นรายการเอาต์พุตหรือสตริงที่คั่นด้วยอักขระแรกของแต่ละคำหนึ่งคำในภายหลัง สำหรับความท้าทายนี้ "คำ" ประกอบด้วยอักขระ ASCII ที่พิมพ์ได้ทั้งหมดยกเว้นช่องว่างบรรทัดใหม่และอักขระแท็บ ตัวอย่างเช่นใช้สตริง "สวัสดีตอนบ่ายโลก!" (คั่นด้วยช่องว่าง): 1. String "Good afternoon, World!" 2. Get the first characters: "[G]ood [a]fternoon, [W]orld!" 3. Move the characters over. The character at the end gets moved to the beginning. "[W]ood [G]fternoon, [a]orld!" 4. Final string "Wood Gfternoon, aorld!" นี่คือรหัส - กอล์ฟดังนั้นรหัสที่สั้นที่สุดชนะ! กรณีทดสอบ: …
27 code-golf  string 

30
ลบช่องว่างการดูแลรักษาการใช้อักษรตัวพิมพ์ใหญ่
ข้อมูลที่คุณป้อนจะเป็นประโยควลีหรือคำภาษาอังกฤษ a-zA-Z' -,.!?มันจะมี งานของคุณคือการป้อนข้อมูลลบช่องว่างแล้วกระจายการใช้อักษรตัวพิมพ์ใหญ่เช่นตัวอักษรที่ดัชนีที่เป็นตัวพิมพ์ใหญ่ก่อน ตัวอย่างเช่นถ้าใส่เป็นA Quick Brown Fox Jumped Over The Lazy Dogที่ (0-based) 0, 2, 8, 14, 18, 25, 30, 34, 39ดัชนีของตัวอักษรที่มี AQuickBrownFoxJumpedOverTheLazyDogถัดไปลบช่องว่างจากการป้อนข้อมูล: ถัดไปพิมพ์เล็กตัวอักษรทั้งหมด แต่พิมพ์ใหญ่ที่0, 2, 8, 14, 18, 25, 30, 34, 39: AqUickbrOwnfoxJumpEdovertHelazYdogซึ่งเป็นผลลัพธ์ของคุณ อินพุต ข้อมูลที่คุณป้อนจะเป็นประโยควลีหรือคำภาษาอังกฤษ มันสามารถมีตัวอักษรตัวพิมพ์เล็กตัวอักษรตัวพิมพ์ใหญ่เครื่องหมายยัติภังค์, เครื่องหมายจุลภาค, เครื่องหมายจุลภาค, จุด, เครื่องหมายคำถามเครื่องหมายอัศเจรีย์และช่องว่าง เอาท์พุต อินพุตที่มีช่องว่างถูกลบออกเป็นตัวพิมพ์เล็ก -d พร้อมตัวอักษรที่ดัชนีของตัวพิมพ์ใหญ่ในอินพุตตัวพิมพ์ใหญ่ -d หมายเหตุ: โปรแกรมของคุณไม่สามารถผิดพลาดได้ (ข้อผิดพลาดการดำเนินการดังกล่าวสิ้นสุดลง) …
27 code-golf  string 

30
ตัดแต่งอาร์เรย์!
รับอาร์เรย์จำนวนเต็มและตัวเลขสองตัวเป็นอินพุตลบจำนวนแรกขององค์ประกอบแรกและสุดท้ายตามที่ระบุโดยตัวเลข อินพุตสามารถอยู่ในลำดับใดก็ได้ที่คุณต้องการ คุณควรลบองค์ประกอบxแรกโดยที่xคืออินพุตตัวเลขแรกและลบองค์ประกอบyสุดท้ายโดยที่yคืออินพุตตัวเลขตัวที่สอง อาร์เรย์ที่ได้นั้นรับประกันว่าจะมีความยาวอย่างน้อยสองตัว ตัวอย่าง: [1 2 3 4 5 6] 2 1 -> [3 4 5] [6 2 4 3 5 1 3] 5 0 -> [1 3] [1 2] 0 0 -> [1 2]

6
ทีมของฮิลล์!
ความท้าทายนี้ได้แรงบันดาลใจจาก@HelkaHombaของความท้าทายที่ยอดเยี่ยมสีแดงกับสีน้ำเงิน - Pixel ทีม BattleBots ความท้าทายนั้นน่าจะเป็นสิ่งที่ดีที่สุดที่ฉันเคยเห็นในเว็บไซต์นี้ เคย ความท้าทายของฉันยังคงแตกต่างกันมาก แต่ @HelkaHomba สมควรได้รับเครดิตสำหรับแรงบันดาลใจ ภาพรวม นี่คือทีมking-of-the-hillที่ทีมของคุณชนะโดยให้ผู้เล่นทุกคนมีชีวิตอยู่ในทีมของคุณ กล่าวอีกนัยหนึ่งการยืนทีมสุดท้ายชนะ การจับจะถูกทำใหม่ คุณอยู่บนกระดาน คุณรู้ตำแหน่งของคุณในรอบแรก (ติ๊ก 0) คุณยังรู้ว่าใครอยู่ในพื้นที่รอบ ๆ คุณ: ในกรณีนี้คุณอยู่คนเดียว (หรืออย่างที่คุณคิด) โดยไม่มีใครอยู่รอบตัวคุณ คุณสามารถดูรายการที่อยู่รอบ ๆ ในอาร์กิวเมนต์แรกของontickตัวจัดการของคุณ เพิ่มเติมเกี่ยวกับ API ในภายหลัง ทีมของคุณ ทีมของคุณถูกกำหนดโดย ID ผู้ใช้ของคุณ หากต้องการทราบว่าคลิกที่รูปโปรไฟล์ของคุณ: จากนั้นค้นหา ID ผู้ใช้ของคุณในแถบที่อยู่: ถ้ามันแปลกคุณอยู่ในทีมสีน้ำเงิน ถ้าเป็นเช่นนั้นคุณจะอยู่ในทีมสีแดง คุณยินดีต้อนรับสู่แวดวงที่วาดด้วยมือ ชื่อ (bot's) ของคุณ ชื่อบอทของคุณเริ่มต้นด้วยตัวอักษรตัวแรกของทีม ("r" หรือ "b") มันจะต้องตรงกับ …

2
2D Maze ลบ 1D
ความท้าทายนี้เกี่ยวกับการแปลงเขาวงกต 2 มิติเป็น 1D เขาวงกต ภาพรวม +-+-+-+-+-+-+ +-+-+-+-+-+-+ graph { | | | | |A| | B| A B A -- D + + + + +-+-+ + + + + +-+-+ \ | C -- D | | | | | | | | \ | D -- E …

30
พิมพ์ทุกวันอาทิตย์ในปี 2560
พิมพ์วันของทุกวันอาทิตย์ในปี 2017 dd.mm.yyyyในรูปแบบต่อไปนี้: ผลลัพธ์ที่คาดหวัง: 01.01.2017 08.01.2017 15.01.2017 22.01.2017 29.01.2017 05.02.2017 12.02.2017 19.02.2017 26.02.2017 05.03.2017 12.03.2017 19.03.2017 26.03.2017 02.04.2017 09.04.2017 16.04.2017 23.04.2017 30.04.2017 07.05.2017 14.05.2017 21.05.2017 28.05.2017 04.06.2017 11.06.2017 18.06.2017 25.06.2017 02.07.2017 09.07.2017 16.07.2017 23.07.2017 30.07.2017 06.08.2017 13.08.2017 20.08.2017 27.08.2017 03.09.2017 10.09.2017 17.09.2017 24.09.2017 01.10.2017 08.10.2017 15.10.2017 22.10.2017 29.10.2017 05.11.2017 12.11.2017 …

10
แก้สมการด้วยตัวเลขที่คุณต้องการ
กำหนดสตริงของตัวละคร+=-ที่มีอย่างน้อยหนึ่งตัว=ให้ใส่จำนวนเต็มบวกระหว่างสัญลักษณ์ทั้งหมดและที่จุดเริ่มต้นและจุดสิ้นสุดเช่นสมการคณิตศาสตร์ ตัวอย่างเช่นกำหนดอินพุต +-=-= คุณต้องใส่จำนวนเต็มบวก A ถึง F เช่นนี้ A+B-C=D-E=F เช่นนั้นสมการทั้งหมดพอใจคือA + B - CและD - EและFเป็นจำนวนเดียวกันทั้งหมด มีวิธีที่เป็นไปได้หลายวิธีในการทำเช่นนี้ตราบใดที่สมการทำงานอาจใช้จำนวนเต็มบวกใด ๆ แต่ละบรรทัดที่นี่เป็นผลลัพธ์ที่ถูกต้องของอินพุต+-=-=: 2+3-4=6-5=1 1+1-1=2-1=1 4+2-4=4-2=2 100+1-10=182-91=91 89+231-77=1024-781=243 โปรดทราบว่าค่าของนิพจน์ไม่จำเป็นต้องเป็นจำนวนเต็มบวกเช่นหมายเลขที่แทรก ตัวอย่างเช่นอินพุตที่กำหนด-=-เอาต์พุต1-10=8-17(evals ถึง -9) และ10-1=17-8(evals ถึง 9) ทั้งสองนั้นใช้ได้อย่างเท่าเทียมกัน แน่นอนว่าสำหรับอินพุตบางตัวเช่นเป็น=ไปไม่ได้ที่จะมีค่าลบเนื่องจากนิพจน์5=5นั้นสามารถแทรกได้เฉพาะตัวเลขบวกเท่านั้น โปรดทราบด้วยว่าศูนย์ไม่ใช่จำนวนเต็มบวก รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ คุณสามารถส่งออกตัวเลขเป็นรายการแทนที่จะแทรกลงในสตริงได้โดยตรง หากคุณส่งออกสตริงอาจมีช่องว่างคั่นสัญลักษณ์และตัวเลข ดังนั้นสำหรับอินพุต+-=-=เอาต์พุต 2, 3, 4, 6, 5, 1 หรือ 2 + 3 - 4 …

6
ตัวต่อจิ๊กซอว์ ASCII
นี่คือตัวต่อ3x3ASCII: _____ _____ _____ | _| |_ | | (_ _ _) | |_ _|_( )_|_ _| | (_) |_ _| (_) | | _ _) (_ _ | |_( )_|_ _|_( )_| | _| (_) |_ | | (_ _) | |_____|_____|_____| นี่คือ3x3จิ๊กซอว์ ASCII: _____ _____ _____ | |_ …

16
เปลี่ยนรหัสเปลี่ยนลำดับ: ตำรวจ
นี่เป็นความท้าทายของตำรวจและโจร สำหรับหัวข้อโจรไปที่นี่ ความท้าทายนี้เกี่ยวข้องกับสองลำดับOEISที่ตำรวจเลือก - S 1 , S 2 - และลำดับที่สามารถกอล์ฟและ obfuscated The Cops 'Challenge ความท้าทายของคุณในฐานะตำรวจคือการเลือกภาษาที่ใช้ได้อย่างอิสระและสอง OEIS ตามลำดับ จากนั้นเขียนโค้ดAในภาษานั้นที่รับอินพุตnและสร้าง S 1 (n) เมื่อโค้ดนั้นถูกแก้ไขโดยระยะทาง LevenshteinของตัวอักขระX (ที่มี X ไม่เกิน0.5 * (length A)) และเปลี่ยนเป็นรหัสBในภาษาเดียวกันมันจะต้องสร้าง S 2 (n) คุณต้องเขียนรหัสBนี้ แต่อย่าเปิดเผยจนกว่าความท้าทายของคุณจะปลอดภัย (ดูด้านล่าง) ส่งตำรวจต้องมีชื่อภาษารหัสเต็มที่ไบต์นับที่Xมูลค่าของจำนวนการเปลี่ยนแปลงที่จะได้รับของพวกเขาเป็นความลับBรหัสและเลือกS 1และS 2หมายเลขลำดับ คุณสามารถเลือกว่าจะเรียงลำดับ 0 หรือดัชนี 1 ดัชนี แต่โปรดระบุในการส่งของคุณ ในการถอดรหัสการส่งข้อมูลโดยเฉพาะโจรต้องเกิดขึ้นกับโปรแกรมCในภาษาเดียวกัน (และเวอร์ชั่น) ที่สร้าง S …

15
มันเป็นรหัส OVSF หรือไม่
รับรายการ1s และ-1s พิจารณาว่าเป็นรหัส OVSF ที่ถูกต้องหรือไม่(โดยการส่งออกค่าความจริงหรือความเท็จ) รหัส OVSF ถูกกำหนดดังนี้: [1] เป็นรหัส OVSF ถ้าXเป็นรหัส OVSF ดังนั้นX ++ XและX ++ -Xเป็นทั้งรหัส OVSF นี่++คือการเรียงลำดับรายการและ-คัดค้านองค์ประกอบทุกรายการในรายการ ไม่มีรายการอื่น ๆ ที่เป็นรหัส OVSF ที่ถูกต้อง คุณอาจสมมติว่ารายการอินพุตมีเพียง-1และ1แต่คุณต้องจัดการรายการว่างอย่างถูกต้องเช่นเดียวกับรายการที่ความยาวไม่ใช่พลังของ 2 รหัสที่สั้นที่สุด (เป็นไบต์) ชนะ กรณีทดสอบ [] -> False [1] -> True [-1] -> False [1, 1] -> True [1, -1] -> True [1, 1, …

24
วันคริสต์มาสคือวันอะไร?
คำนำ ในเพลงคริสต์มาสที่รู้จักกันดีสิบสองวันคริสต์มาสผู้บรรยายนำเสนอด้วยของขวัญมากมายในแต่ละวัน เพลงจะถูกสะสม - ในแต่ละบทกวีมีการเพิ่มของขวัญใหม่โดยมีปริมาณหนึ่งสูงกว่าของขวัญก่อนหน้า หนึ่งนกกระทาสองเต่านกพิราบสามแม่ไก่ฝรั่งเศสและอื่น ๆ ที่ข้อใดก็ตามNเราสามารถคำนวณผลรวมสะสมของของขวัญเพื่อให้ห่างไกลในเพลงโดยการหาN TH จำนวน tetrahedralซึ่งจะช่วยให้ผล: Verse 1: 1 Verse 2: 4 Verse 3: 10 Verse 4: 20 Verse 5: 35 Verse 6: 56 Verse 7: 84 Verse 8: 120 Verse 9: 165 Verse 10: 220 Verse 11: 286 Verse 12: 364 ตัวอย่างเช่นหลังจากที่ข้อ 4 เราได้มี4 …

24
เมื่อ Brexit จะเกิดขึ้น?
Brexit เกิดขึ้นแล้ว และ Sky News ซึ่งเป็นอัจฉริยะพวกเขาได้ตัดสินใจที่จะสร้างการนับถอยหลังที่ด้านข้างของรถบัส งานของคุณคือทำสิ่งที่คล้ายกัน สหราชอาณาจักรออกจากสหภาพยุโรปเมื่อวันที่ 31 มีนาคม 2019 และคุณต้องสร้างการนับถอยหลังแบบดิจิทัลสำหรับสิ่งนี้ที่เปลี่ยนแปลงทุกวินาที (โดยมีค่าเบี่ยงเบน 0.05 วินาทีที่อนุญาต) อินพุต โปรแกรมของคุณไม่ควรป้อนข้อมูลใด ๆ มันถูกแบน! เอาท์พุต มันควรเอาท์พุทเวลาจนกว่า Brexit ddd:hh:mm:ssในรูปแบบ ขึ้นบรรทัดใหม่นำหน้าและต่อท้ายได้ แต่การแสดงควรอยู่ในที่เดียวกันทุกครั้ง ควรดูราวกับว่ามันลดลงจริงในสถานที่ ตามที่ระบุโดย @AnthonyPham สิ่งนี้ไม่ได้หมายความว่าพิมพ์บรรทัดใหม่เพียงพอที่จะ "ล้าง" หน้าจอซึ่งหมายความว่าคุณต้องล้างหน้าจอจริง ไม่อนุญาตให้ใช้เอาต์พุตเช่นนี้: 100:20:10:05 100:20:10:04 ไม่เป็นเช่นนี้ 100:20:10:05 *A thousand newlines* 100:20:10:04 เพราะพวกมันมากกว่าหนึ่งบรรทัด คุณไม่ต้องกังวลหลังจาก Brexit โปรแกรมของคุณใช้งานได้จนถึง 31/3/2019 กฎระเบียบ ช่องโหว่มาตรฐานไม่ได้รับอนุญาต นี่คือรหัสกอล์ฟรหัสเพื่อให้สั้นที่สุดในไบต์ชนะ ข้อความแสดงข้อผิดพลาด (แม้ว่าฉันจะไม่สามารถคิดได้) …
27 code-golf  date 

1
PRNG นั้นคือใคร
กำหนดลำดับของจำนวนเต็ม 625 32 บิตที่ไม่ได้ลงชื่อ (นั่นคือในช่วง[0, 2**32)) ส่งออกซึ่งเครื่องกำเนิดไฟฟ้าเลขหลอกดังต่อไปนี้สร้างลำดับ: เครื่องกำเนิดเชิงเส้นเชิงเส้น Xorshift Mersenne Twister การใช้งาน C ของเครื่องกำเนิดไฟฟ้าทั้งสามที่ใช้สำหรับความท้าทายนี้มีดังนี้: #include <stdint.h> /* all code adapted from the sample implementations on the following Wikipedia pages: https://en.wikipedia.org/wiki/Linear_congruential_generator https://en.wikipedia.org/wiki/Xorshift https://en.wikipedia.org/wiki/Mersenne_Twister */ uint32_t lcg_seed; uint32_t xor_x, xor_y, xor_z, xor_w; void lcg_srand(uint32_t seed) { lcg_seed = seed; } uint32_t lcg(void) …

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