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

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

2
ศูนย์เซลล์ขนาดใหญ่ที่ไม่มีกฎเกณฑ์ใน Brainf ***
งานของคุณคือการเขียนชิ้นส่วนของรหัสที่ศูนย์เซลล์ปัจจุบันในตัวแปร Brainfuck ที่แต่ละเซลล์สามารถมีจำนวนเต็มที่ลงนามของขนาดใหญ่โดยพลการแทน 0 ถึง 255 ปกติ คุณอาจสมมติว่ามีเซลล์lทางด้านซ้ายและเซลล์rทางด้านขวาของเซลล์ปัจจุบันที่เริ่มต้นเป็นศูนย์ โปรแกรมของคุณสามารถเข้าถึงเซลล์l + r +1 เหล่านี้เท่านั้น หลังจากรหัสของคุณสิ้นสุดลงควรปล่อยให้เซลล์พิเศษl + rเป็นศูนย์และตัวชี้ไปยังเซลล์ปัจจุบันที่ตำแหน่งเดิม คุณไม่สามารถใช้อินพุต / เอาต์พุตใด ๆ รหัสที่มีl + rน้อยที่สุดชนะ หากมีการเสมอกันรหัสที่สั้นที่สุดจะชนะ ขอแนะนำให้ระบุความซับซ้อนของเวลาของโปรแกรมของคุณสำหรับการอ้างอิงโดยที่nคือค่าสัมบูรณ์ของจำนวนเต็มดั้งเดิมในเซลล์ปัจจุบัน เครื่องมือที่มีประโยชน์ คุณสามารถทดสอบโปรแกรม brainfuck ในรูปแบบนี้ใช้ล่ามนี้ใน TIO โดย mbomb007 คุณยังสามารถใช้ล่ามในคำตอบนี้ได้โดยบูธโดย (คำตอบอื่น ๆ ของ Python อาจใช้ได้เช่นกัน แต่ฉันไม่ได้ทดสอบ)

14
เคล็ดลับสำหรับการเล่นกอล์ฟใน TeX / LaTeX
ผู้คนมีเคล็ดลับอะไรบ้างในการเล่นกอล์ฟใน TeX / LaTeX โปรดโพสต์หนึ่งเคล็ดลับต่อคำตอบอย่างน้อยก็ค่อนข้างเฉพาะเจาะจงกับ TeX / LaTeX บริบท: ฉันสังเกตเห็นคำตอบนี้และไม่มีคำถามเคล็ดลับสำหรับ TeX / LaTeX ดังนั้นฉันจึงสร้างมันขึ้นมา มีการทับซ้อนกับเคล็ดลับคำถามที่แคบกว่าสำหรับการเล่นกอล์ฟใน TikZ (เนื่องจาก TikZ เป็นแพคเกจแมโครเฉพาะด้านบนของ TeX / LaTeX): คำตอบสำหรับคำถามนี้อาจจะนำไปใช้ที่นั่น แต่ไม่ใช่วิธีอื่น ๆ
28 code-golf  tips 

13
มันเป็นเต่าที่ยอดเยี่ยมหรือไม่?
อย่างที่เราทุกคนรู้ว่ามันเต่าลงมาตลอด แต่มันจะลงเอยด้วยหรือเปล่า? จำนวนถือว่าเป็น "เต่า - นายก" ถ้าเป็นไปตามเงื่อนไขต่อไปนี้: 1) It is prime. 2) It is possible to remove a single digit leaving a prime number. 3) Step 2 can be repeated until left with a single digit prime. ตัวอย่างเช่น239เป็น "เทอร์เทิล - ไพร์ม" ซึ่งสามารถลดให้เหลือ23อย่างใดอย่างหนึ่ง2หรือ3ทั้งสองอย่างได้ นอกจากนี้ยังสามารถลดลงไปแล้ว29 ไม่ได้เป็นเต่าที่สำคัญที่จะช่วยลดการ(ไม่สำคัญ) (ไม่สำคัญ) หรือ เป็นสิ่งสำคัญ แต่สามารถลดได้เพียงอย่างเดียวเท่านั้นซึ่งไม่ใช่2151155111111 รับค่าจำนวนเต็มบวกกำหนดว่าเป็น "เต่าหลัก" …
28 code-golf  primes 

28
การคูณสตริงที่ชาญฉลาด
แรงบันดาลใจจากความท้าทายนี้ (ขอบคุณ @cairdcoinheringaahing สำหรับชื่อเรื่อง!) งานของคุณคือการใช้สาย ASCII สองสายที่พิมพ์ได้และคูณองค์ประกอบด้วยกฎต่อไปนี้ มันทำงานยังไง? รับสองสาย (ตัวอย่างsplitและisbn) คุณจะแรกตัดทอนให้ยาวขึ้นเพื่อให้มีความยาวเท่ากันจากนั้นกำหนดรหัส ASCIIของพวกเขา: split -> spli -> [115, 112, 108, 105] isbn -> isbn -> [105, 115, 98, 110] ขั้นตอนต่อไปคือการแมปไปยังช่วง[0..94]โดยการลบ32แต่ละรหัส: [115, 112, 108, 105] -> [83, 80, 76, 73] [105, 115, 98, 110] -> [73, 83, 66, 78] ตอนนี้คุณจะคูณโมดูโลแบบองค์ประกอบ95(เพื่อให้อยู่ในช่วงที่พิมพ์ได้): [83, 80, …

11
สุริยุปราคาผ่านกล้องรูเข็ม
ความท้าทายนี้เป็นความท้าทายแบบ ASCII ที่เรียบง่ายซึ่งได้รับแรงบันดาลใจจากสุริยุปราคาที่เกิดขึ้นเมื่อวันที่ 21 สิงหาคม 2017 เมื่อได้รับการป้อนข้อมูล0 <= n <= 4ให้ส่งออกระยะที่สอดคล้องกันของคราสที่อธิบายไว้ด้านล่าง: n=0: ***** ** ** * * * * ** ** ******* n=1: ***** ** ***** * ******* * ******* ** ****** ******* n=2: ***** ********* *********** *********** *********** ******* n=3: ***** ***** ** ******* * ******* * ****** ** …

9
เครื่องจำลองการแพร่กระจายไฟ
สมมติว่าเรามีเมทริกซ์ดังนี้: 11111 12221 12321 12221 11111 เมทริกซ์นี้แสดงถึงภูมิประเทศและแต่ละเซลล์แสดงถึงส่วนของภูมิประเทศ จำนวนในแต่ละเซลล์หมายถึงเวลาที่เป็นส่วนหนึ่งของภูมิประเทศที่จะต้องมีการเผาไหม้สมบูรณ์ (นาทีถ้ามีหน่วยวัดเป็นสิ่งจำเป็น) ตามที่มันติดไฟ หากไฟเริ่มต้นที่ตำแหน่งที่กำหนด (เซลล์) เซลล์นั้นจะต้องถูกเผาอย่างสมบูรณ์ก่อนที่ไฟจะแพร่กระจายไปยังเซลล์ที่อยู่ติดกัน (แนวนอนและแนวตั้งเท่านั้นไม่ใช่แนวทแยงมุม) ดังนั้นหากเกิดเพลิงไหม้ขึ้นที่ตำแหน่งกึ่งกลางไฟจำเป็นต้องใช้: 11111 11111 11111 11011 10001 00000 12221 3 m. 12221 2 m. 12021 1 m. 11011 1 m. 00000 1 m. 00000 12321 -----> 12021 -----> 10001 -----> 00000 -----> 00000 -----> 00000 12221 12221 …

1
นับข้อผิดพลาดการสะกดในข้อความ ลดจำนวนข้อผิดพลาดการสะกดคำในรหัสของคุณ
เขียนโปรแกรมหรือฟังก์ชั่นที่รับสองอินพุต: ข้อความตัวอักษร พจนานุกรมภาษาอังกฤษตามที่ปรากฏในไฟล์ Github นี้ (มีประมาณ 60000 คำ) และส่งออกจำนวนข้อผิดพลาดการสะกดคำในข้อความ (ดูด้านล่างสำหรับคำจำกัดความและกรณีทดสอบ) คุณสามารถรับพจนานุกรมเป็นพารามิเตอร์ในการทำงานของคุณในฐานะไฟล์ที่กำหนดไว้ล่วงหน้าซึ่งโปรแกรมของคุณคาดหวังว่าจะค้นหาเป็นข้อมูลที่กำหนดโค้ดยากในรหัสของคุณหรือในลักษณะที่เหมาะสมอื่น ๆ รหัสของคุณควรมีลักษณะเหมือนข้อความตัวอักษรมีข้อผิดพลาดในการสะกดน้อยที่สุด ดังนั้นคุณจะคำนวณคะแนนของรหัสของคุณโดยป้อนให้ตัวเองเป็นอินพุต ผู้ชนะคือรหัสที่มีคะแนนต่ำสุด (คะแนนที่น้อยที่สุดคือ 0) หากมีหลายคำตอบด้วยคะแนนเดียวกันผู้ชนะจะถูกตัดสินโดยขนาดรหัส (เป็นตัวอักษร) หากคำตอบทั้งสองยังคงถูกผูกไว้ผู้ชนะคือคำตอบก่อนหน้า หากจำเป็นคุณสามารถสมมติว่าข้อความอินพุตเป็น ASCII (ไบต์ 32 ... 126) โดยมีบรรทัดใหม่เข้ารหัสในลักษณะทั่วไป (1 ไบต์ "10" หรือ 2 ไบต์ "13 10") และไม่ว่างเปล่า อย่างไรก็ตามหากรหัสของคุณมีอักขระที่ไม่ใช่ ASCII ก็ควรสนับสนุนการป้อนข้อมูลที่ไม่ใช่ ASCII (เพื่อให้สามารถคำนวณคะแนนของตัวเอง) อักขระแบ่งออกเป็นคลาสต่อไปนี้: ตัวอักษร a ... z และ A ... Z …

12
เขียนรหัสตรวจสอบตนเอง
เขียนโค้ดที่รับสตริงเป็นอินพุทและเอาท์พุทค่าจริงหรือเท็จขึ้นอยู่กับว่าสตริงนั้นปฏิบัติตามกฎเหล่านี้หรือไม่: หากคุณสแต็คอักขระแต่ละตัวอยู่ด้านบนของกันและกันให้แปลงเป็นไบนารีและผลรวมแต่ละคอลัมน์จากนั้นผลรวมทั้งหมดควรเหมือนกัน คุณอาจสันนิษฐานว่าสายป้อนมีอักขระ ASCII ที่พิมพ์ได้เท่านั้น (รหัสจุด 32 - 126) ตัวอย่างเช่น: อินพุตO5vy_+~ควรส่งคืนค่าความจริงเนื่องจากการแสดงไบนารีคือ: 1001111 | O 0110101 | 5 1110110 | v 1111001 | y 1011111 | _ 0101011 | + 1111110 | ~ ------- 5555555 <- Sum of bits in each column. Should give a truthy value. อินพุตPPCGควรส่งคืนค่าเท็จเนื่องจากการแสดงไบนารีคือ: 1010000 | P …

12
Terra Mystica: พลังการปั่นจักรยาน
boardgame Terra Mysticaมีกลไกที่น่าสนใจมากสำหรับหนึ่งในทรัพยากรหลักพลัง แทนที่จะได้รับและใช้พลังงานจากธนาคารผู้เล่นแต่ละคนจะเริ่มเกมด้วยพลัง 12 หน่วยซึ่งกระจายอยู่ทั่ว "โบลลิ่ง" สามอันซึ่งมีชื่อว่า I, II และ III การดึงดูดและการใช้จ่ายพลังงานนั้นเพียงแค่เปลี่ยนพลังงานระหว่างชามเหล่านี้: ในการใช้หน่วยพลังให้ย้ายจากชาม III ไปยังชาม I (หากคุณมีหน่วยในชาม III) เมื่อคุณได้รับหน่วยพลังถ้ามีหน่วยในชามฉันย้ายไปยังชามที่สอง หากไม่มีหน่วยในชาม I แต่มีหน่วยในชาม II ให้ย้ายไปยังชาม III หากทุกหน่วยอยู่ในชาม III แล้วจะไม่มีอะไรเกิดขึ้น เมื่อคุณได้รับหรือใช้จ่ายหลายหน่วยพร้อมกันพวกเขาจะประมวลผลทีละหน่วย นี่คือตัวอย่าง พูดว่าผู้เล่นเริ่มต้นด้วยการกระจายพลังงานต่อไปนี้ (ตามลำดับI | II | III): 5 | 7 | 0 พลังของพวกเขาเปลี่ยนไปดังนี้หากพวกเขาได้รับและใช้พลังงานสองสามครั้ง: 5 | 7 | 0 Gain 3 …

30
สามเหลี่ยมจำนวน!
เราจะใช้คำว่า "กู้หน้า" nหมายถึงการคำนวณn 2 นอกจากนี้เรายังมีการใช้คำว่า "cubing" nหมายถึงn 3 ที่ถูกกล่าวว่าทำไมเราไม่สามารถสามเหลี่ยมจำนวน? สามเหลี่ยมเป็นอย่างไร? ก่อนอื่นเรามาเลือกหมายเลข53716กัน วางตำแหน่งในรูปสี่เหลี่ยมด้านขนานซึ่งความยาวด้านเท่ากับจำนวนหลักของตัวเลขและมีตำแหน่งทั้งสองด้านในแนวทแยงมุมดังที่แสดงด้านล่าง 53716 53716 53716 53716 53716 ตอนนี้เราต้องการที่จะใช่มั้ย หากต้องการทำเช่นนั้นให้ครอบตัดด้านที่ไม่พอดีกับรูปสามเหลี่ยมมุมฉาก: 5 53 537 5371 53716 รับผลรวมของแต่ละแถวสำหรับตัวอย่างนี้ทำให้[5, 8, 15, 16, 22]: 5 -> 5 53 -> 8 537 -> 15 5371 -> 16 53716 -> 22 รวมรายการที่เกิดใน[5, 8, 15, 16, 22] 66นี่คือสามเหลี่ยมของตัวเลขนี้! …

30
'abc' และ 'cba'
งานของคุณเป็นเรื่องง่ายเขียนโค้ดเดียวว่าเมื่อดำเนินการในหนึ่งผลภาษาเดียวสตริงและเมื่อดำเนินการในผลภาษาอื่นเพียงสตริง'abc' 'cba'โปรแกรมไม่ควรรับอินพุต นี่คือความท้าทายรหัส - กอล์ฟ

11
สนุกมากขึ้นด้วยสตริงตัวพิมพ์ใหญ่ - เล็ก
ได้รับแรงบันดาลใจจากการท้าทายนี้ (หรือเฉพาะเจาะจงมากขึ้นโดยการเข้าใจผิด) ฉันได้พบกับความท้าทายต่อไปนี้ รับสตริงอินพุต S กลับลำดับของอักขระตัวพิมพ์ใหญ่ทั้งหมดและอักขระตัวพิมพ์เล็กทั้งหมด ปล่อยให้ตัวละครที่ไม่ใช่ตัวอักษรทั้งหมดอยู่ในสถานที่ ตัวอย่างเช่น โปรดทราบว่าตัวพิมพ์ใหญ่W(ตัวอักษรตัวพิมพ์ใหญ่ตัวแรก) ถูกแทนที่ด้วยH(ตัวสุดท้าย) ตัวอักษรตัวพิมพ์เล็ก: 'd' (ตัวแรก) เปลี่ยนเป็นe(ตัวสุดท้าย), l(วินาที) จะถูกแทนที่ด้วยl(สุดยอดปากกา) ... ตัวอักษรที่ไม่ใช่ตัวอักษรทั้งหมดจะถูกวางไว้ อินพุต อินพุตเป็นสตริงที่มีอักขระ ASCII เท่านั้นในช่วง 32-126 การป้อนข้อมูลรับประกันว่ามีความยาวอย่างน้อย 1 ตัวอักษรและจะไม่เกินขีด จำกัด ของภาษาของคุณ เอาท์พุต สตริงเดียวกันนั้นโดยมีการสลับอักขระตามที่อธิบายไว้ กฎเพิ่มเติม ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม คำตอบจะต้องเป็นโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบไม่ใช่ตัวอย่างหรือรายการ REPL code-golfคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ กรณีทดสอบ A A Ok Ok OK KO Hello, World! Wdlro, Holle! 0123456789 0123456789 The quick …
28 code-golf  string 

24
ผู้ประกอบการที่รวมผลรวมผลิตภัณฑ์และความแตกต่างระหว่างสองตัวเลข
ท้าทาย: มีจิ๊กซอว์งี่เง่าเวียนอยู่บนเครือข่ายสังคมที่อ่าน: 8 + 2 = 16106 5 + 4 = 2091 9 + 6 = ? ใช้ฟังก์ชั่นหรือผู้ประกอบการที่เมื่อได้รับตัวเลขสองจำนวนเต็มบวกxและyเช่นว่าx > y > 0ถัวเฉลี่ยตอบที่ถูกต้องเป็นจำนวนเต็มซึ่งตัวเลขคำตอบเป็นตัวเลขของx * yตามด้วยตัวเลขของตามด้วยตัวเลขของx + y x - yง่ายมาก. กฎ: ช่องโหว่มาตรฐานไม่ได้รับอนุญาต นี่คือโค้ดกอล์ฟที่สั้นที่สุดในหน่วยไบต์ ไม่จำเป็นต้องมีการตรวจสอบความถูกต้องของข้อมูลอินพุต โปรแกรมนี้อาจมีปัญหาหรือคืนขยะเมื่อได้รับการป้อนข้อมูลที่ไม่ถูกต้อง คุณได้รับอนุญาตให้ใช้ฟังก์ชั่นตัวเลขและตัวดำเนินการ (รวมถึงจำนวนเต็มและจุดลอยตัว, ฟังก์ชั่นห้องสมุดคณิตศาสตร์และฟังก์ชั่นอื่น ๆ ที่ยอมรับและส่งกลับตัวเลข) คุณได้รับอนุญาตให้ใช้ฟังก์ชั่นที่คืนค่าตัวเลขเป็นตัวเลขหากมี คุณไม่ได้รับอนุญาตให้ใช้สตริงหรือการต่อข้อมูลประเภทใดก็ได้ในรหัสของคุณ ผลลัพธ์อาจถูกส่งคืนหรือผลักไปที่สแต็กแล้วแต่ว่าจะใช้งานในภาษาใด ผลลัพธ์ต้องเป็นตัวเลขจำนวนเต็มไม่ใช่สตริง รหัสตัวอย่าง: Dyalog APL : รหัสต่อไปนี้จะสร้างผู้ประกอบการ dyadic Xชื่อ …

30
ยาวตัวอักษรวิ่ง
ให้สตริงที่ไม่ว่างเปล่าของตัวอักษร ASCII ตัวพิมพ์เล็กa-zเอาท์พุทสตริงนั้นพร้อมกับ "run" ต่อเนื่องของตัวอักษรเดียวกันที่มีความยาวโดยสำเนาอีกหนึ่งตัวของตัวอักษรนั้น ตัวอย่างเช่นdddogg( 3 d , 1 o , 2 g ) เปลี่ยนเป็นddddooggg( 4 d ', 2 o ', 3 g 's) นี่คือcode-golf : คำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ กรณีทดสอบ aabbcccc -> aaabbbccccc ออด -> ddooorrbbeelll uuuuuuuuuz -> uuuuuuuuuuuzz q -> qq xyxyxy -> xxyyxxyyxxyy xxxyyy -> xxxxyyyy
28 code-golf  string 

12
ตารางตัวหารหลัก
Intro บางสิ่งที่ฉันเคยเล่นด้วยในวิชาคณิตศาสตร์เพื่อการสันทนาการได้สร้างตารางตัวหารเพื่อเปรียบเทียบ / เปรียบเสมือนตัวหารหลักของชุดตัวเลข ชุดของหมายเลขอินพุตอยู่ด้านบนสุดเป็นป้ายชื่อคอลัมน์ตัวคั่นหลักอยู่ทางซ้ายเป็นป้ายชื่อแถวและเครื่องหมายจะระบุตำแหน่งที่ทั้งสองบรรทัดขึ้น ตัวอย่างเช่นสำหรับการป้อนข้อมูล6, 9, 14, 22ตารางคล้ายกับต่อไปนี้จะถูกสร้างขึ้น: 6 9 14 22 2 * * * 3 * * 7 * 11 * นี้เป็นเพราะ6มีตัวหารที่สำคัญของ2และ3, 9มีตัวหารที่สำคัญของ3และอื่น ๆ การก่อสร้าง ตารางถูกสร้างขึ้นเพื่อให้ป้ายชื่อคอลัมน์ในรูปแบบตัวเลขที่คั่นด้วยช่องว่างและเรียงลำดับจากน้อยไปมาก (คุณสามารถสันนิษฐานได้ว่ามีการจัดเรียงไว้ล่วงหน้า) และตัวคั่นหลักจะแสดงรายการทางด้านซ้ายในลำดับจากน้อยไปหามาก ป้ายชื่อ โปรดทราบว่าอาจต้องใช้ช่องว่างนำหน้าบนตัวหารหลักและหมายเลขอินพุทหากตัวเลขนั้นมีความยาวแตกต่างกันดังนั้นคอลัมน์ทั้งหมดจึงมีความกว้างและแถวเดียวกันอย่างเหมาะสม ตัวหารแต่ละตัวจะแสดงเป็นตัวเดียว*(หรืออักขระ ASCII ที่เหมาะสมอื่น ๆ ที่คุณเลือกตราบใดที่มีการใช้ตัวอักษรเดียวกันสำหรับเหตุการณ์ทั้งหมด) ตัวหารหลายตัวจะถูกละเว้น (เช่น3 x 3 = 9แต่มีเพียงอันเดียว*สำหรับจุดตัดนั้น) *สามารถวางที่ใดก็ได้ในแนวนอนในคอลัมน์ตราบใดที่มันเป็นที่ชัดเจน (ผมมีตัวอย่างของฉันทั้งหมดที่มี*จัดชิดขวา) อินพุต รายการจำนวนเต็มบวกในรูปแบบที่สะดวกสบายแต่ละ>1รายการ คุณสามารถสมมติว่าอินพุตถูกจัดเรียงล่วงหน้า อินพุตรับประกันว่ามีค่าเฉพาะเท่านั้น …

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