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

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

18
26 นักร้อง 26 ตัวอักษร
ตามที่RollingStoneด้านล่างเป็นนักร้องที่ยิ่งใหญ่ที่สุดตลอดกาล 26 คน: Aretha Franklin Al Green Ray Charles Robert Plant Elvis Presley Mick Jagger Sam Cooke Tina Turner John Lennon Freddie Mercury Marvin Gaye Bob Marley Bob Dylan Smokey Robinson Otis Redding Johnny Cash Stevie Wonder Etta James James Brown David Bowie Paul McCartney Van Morrison Little Richard Michael …

22
ระเบิดสตริง
รับสายใด ๆ พิมพ์ในรูปแบบของรูปสามเหลี่ยมที่ข้อความวิ่งขึ้นและลงตามแนวทแยงแต่ละ ตัวอย่างเช่นอินพุตของ"Hello World"เอาต์พุตควร: d l r d o l W r d o l o W r d l o l l o W r d e l o l H l o W r d e l o l l o W r d l o l …

30
เลิกทำการช่วงของตัวเลข
มันค่อนข้างง่ายที่จะได้รับจำนวนnสร้างช่วงจากไป0 n-1ในความเป็นจริงหลายภาษาให้การดำเนินการนี้เป็นแบบ builtin โปรแกรม CJam ต่อไปนี้อ่านจำนวนเต็มแล้วพิมพ์ช่วงดังกล่าวออกมา ( ลองออนไลน์! ): ri, โปรดสังเกตว่ามันพิมพ์ตัวเลขโดยไม่มีตัวคั่น ความท้าทาย งานของคุณคือการย้อนกระบวนการนี้ คุณควรเขียนโปรแกรมที่ให้สตริงที่เป็นตัวแทนของช่วงส่งกลับจำนวนที่ใช้ในการผลิตช่วงนั้น ข้อมูลจำเพาะ ตัวเลขจะถูกกำหนดโดยไม่มีตัวคั่นใด ๆ คุณอาจจะถือว่าสตริงเป็นช่วงที่ถูกต้อง คุณอาจใช้การจัดทำดัชนี 0- หรือ 1 ตามช่วงของคุณ คุณอาจคิดว่าเอาต์พุตที่ถูกต้องจะไม่เกิน 32,767 (ดังนั้นอินพุตที่ถูกต้องจะไม่มีความยาวมากกว่า 152,725) คุณอาจคิดว่าผลลัพธ์ที่ถูกต้องจะเป็นค่าบวกเสมอ (ดังนั้นคุณไม่ต้องจัดการกับ 0 หรือลบ) นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดของการแข่งขัน (วัดเป็นไบต์) ชนะ กรณีทดสอบ 0 การจัดทำดัชนี: 0123 -> 4 0 -> 1 0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 -> 101 1 การจัดทำดัชนี: 1234 -> …

30
Reverse Array Sum
โปรแกรมของคุณควรใช้อาร์เรย์เป็นอินพุต อาร์เรย์: จะเป็น 1 มิติเสมอ จะมีจำนวนเต็มเท่านั้น สามารถว่างเปล่า โปรแกรมควรย้อนกลับอาร์เรย์แล้วเพิ่มองค์ประกอบเข้ากับต้นฉบับเช่น: การป้อนข้อมูล: [1, 2, 3] เดิม: [1, 2, 3] ย้อนกลับ [3, 2, 1] [1, 2, 3] + + + [3, 2, 1] [1+3, 2+2, 3+1] เอาท์พุท: [4, 4, 4] กรณีทดสอบ: #In #Out [8, 92], [100, 100] [1, 2, 3], [4, 4, 4] [5, …

30
ตัวกำหนดเมทริกซ์จำนวนเต็ม
รับเมทริกซ์จำนวนเต็มจตุรัสเป็นอินพุตให้ส่งออกดีเทอร์มิแนนต์ของเมทริกซ์ กฎระเบียบ คุณอาจสมมติว่าองค์ประกอบทั้งหมดในเมทริกซ์ดีเทอร์มิแนนต์ของเมทริกซ์และจำนวนองค์ประกอบทั้งหมดในเมทริกซ์อยู่ในช่วงของจำนวนเต็มที่แทนได้สำหรับภาษาของคุณ อนุญาตให้แสดงค่าทศนิยม / ทศนิยมด้วยส่วนที่เป็นเศษส่วนของ 0 (เช่น42.0แทน42) อนุญาตให้สร้างบิลด์ได้ แต่ขอแนะนำให้คุณรวมโซลูชันที่ไม่ใช้บิวอิน กรณีทดสอบ [[42]] -> 42 [[2, 3], [1, 4]] -> 5 [[1, 2, 3], [4, 5, 6], [7, 8, 9]] -> 0 [[13, 17, 24], [19, 1, 3], [-5, 4, 0]] -> 1533 [[372, -152, 244], [-97, -191, 185], [-53, -397, …

22
สร้างเมืองให้ฉัน
โคเดอร์มักจะพยายามทำให้อาร์เรย์เป็นหน่วยมิติที่น่าเบื่อและทำให้ฉันเศร้า งานของคุณคือการคลายตัวอักษรตามอำเภอใจโดยไม่แสดงตัวออกมาทำให้เมืองน่ารัก พิจารณาสตริง: aaabbbbbccqrrssstttttttPPw มันดูดีกว่านี้มาก: tt tt bb tt bb tt aabb sstt aabbcc rrssttPP aabbccqqrrssttPPww (โอเคใช่ตัวอักษรนั้นซ้ำกันเพื่อทำให้ดูเมืองเส้นขอบฟ้ามากขึ้น) ใช้สตริงอินพุตทำซ้ำส่วนย่อยของอักขระที่ตรงกัน (ไม่จำเป็นต้องเป็นตัวอักษรและ) และสร้างเมืองให้ฉัน! ไบต์รหัสสั้นที่สุดชนะ จริง ๆ แล้วฉันคิดว่าฉันมีข้อกำหนดที่ต้องจับ แต่เพื่อตอบคำถาม: มันจะต้องอยู่บนพื้นดิน คุณสามารถมีท้องฟ้าเพิ่มถ้าคุณต้องการ (นำบรรทัดว่างรอบ ๆ พื้นที่ว่าง) - แต่ไม่ระหว่างอาคาร ตัวอักษรสามารถนำกลับมาใช้ใหม่ภายในสตริง (สถาปัตยกรรมเดียวกันสถานที่ต่างกัน) ตัวอักษรนั้นถือว่าเป็น ASCII แต่จะมีการมอบไหวพริบเพิ่มเติมให้กับผู้ที่สนับสนุนการเข้ารหัสเพิ่มเติม (UTF8 เป็นต้น)

17
ไขงูให้ฉันหน่อย!
กำหนดจำนวนเต็มอินพุทnวาดงูตัวเลขนั่นคือการวัดแบบตารางที่n x nประกอบด้วยตัวเลข1ผ่านทางn^2ที่บาดแผลซึ่งกันและกันในลักษณะต่อไปนี้: อินพุตn = 3: 7 8 9 6 1 2 5 4 3 อินพุตn = 4: 7 8 9 10 6 1 2 11 5 4 3 12 16 15 14 13 อินพุตn = 5: 21 22 23 24 25 20 7 8 9 10 19 6 1 …
34 code-golf 

30
คูณสตริงด้วยตัวเลข!
มีเรื่องที่ท้าทายมานานแล้วเกี่ยวกับการคูณสตริง มันแสดงให้เราเห็นว่าเราสามารถคูณตัวเลขได้ไม่เพียง แต่ยังรวมถึงสตริงด้วย อย่างไรก็ตามเรายังไม่สามารถคูณจำนวนด้วยสตริงได้อย่างถูกต้อง มีความพยายามครั้งหนึ่งที่จะทำเช่นนั้น แต่สิ่งนี้ผิดอย่างเห็นได้ชัด เราจำเป็นต้องแก้ไขมัน! งานของคุณ: เขียนฟังก์ชั่นหรือโปรแกรมที่ทวีคูณสองอินพุตสตริงและจำนวนเต็ม ในการ (คูณ) สตริงด้วยจำนวนเต็มคุณต้องแบ่งสตริงออกเป็นอักขระทำซ้ำอักขระแต่ละตัวในจำนวนครั้งเท่ากับจำนวนเต็มแล้วติดอักขระกลับเข้าด้วยกัน ถ้าจำนวนเต็มเป็นลบเราจะใช้ค่าสัมบูรณ์ของมันในขั้นตอนแรกแล้วย้อนกลับสตริง ถ้าอินพุตเป็น 0 เอาต์พุตจะไม่มีอะไร (อะไรก็ตามคูณด้วย 0 เท่ากับอะไร) การป้อนข้อมูล: สตริงที่ประกอบด้วยตัวอักษร ASCII ที่พิมพ์ได้และการขึ้นบรรทัดใหม่และเลขจำนวนเต็ม (ค่าลบที่เป็นไปได้) เอาท์พุท: สตริงคูณด้วยจำนวนเต็ม ตัวอย่าง: Hello World!, 3 --> HHHeeellllllooo WWWooorrrlllddd!!! foo, 12 --> ffffffffffffoooooooooooooooooooooooo String, -3 --> gggnnniiirrrtttSSS This is a fun challenge, 0 --> Hello World!, …

16
ตัวสร้างรหัสผ่าน XKCD
บทนำ เห็นได้ชัดว่าคำถามนี้ถูกถามที่นี่และมันปิดอย่างน่าเสียดาย ฉันคิดว่ามันเป็นความคิดที่ดีที่จะลองอีกครั้ง แต่ทำถูกต้อง XKCDดูที่วิธีการที่เราได้รับการฝึกฝนให้ใช้ "รหัสผ่านที่จำยาก" โดยคิดว่าปลอดภัย แต่ใช้เวลาคอมพิวเตอร์ 3 วันในการถอดรหัส ในทางกลับกันการจดจำความยาว 4-5 คำจะทำให้รหัสผ่านของควน Intropy อัพและง่ายต่อการจดจำ บ้าแล้วมันใช้ได้ยังไงเหรอ? ท้าทาย งานวันนี้คือสร้างรหัสผ่าน 5 คำโดยใช้คำ 4 คำต่อรหัสผ่านและอย่างน้อย 4 ตัวอักษรต่อคำ แต่ไม่เกิน รหัสผ่านของ Kuan จะต้องมีการคำนวณสำหรับทุกรหัสผ่าน แต่จะไม่ได้ตั้งค่าขั้นต่ำที่บังคับ รหัสผ่านของควน Intropy คืออะไร? รหัสผ่านของ Kuan Intropy เป็นการวัดว่ารหัสผ่านไม่สามารถคาดเดาได้ มีการคำนวณง่ายๆคือE = เข้าสู่ระบบ2 (R) * L E เป็นรหัสผ่านของ Kuan Intropy, R เป็นช่วงของอักขระที่มีอยู่และ L สำหรับความยาวรหัสผ่าน …
34 code-golf  math 

30
แทรกตัวเลขจาก 1 ถึง n โดยมีหมายเลขเดียวกันกลับด้าน
ง่าย ๆ : ใช้เป็นจำนวนเต็มบวกnน้อยกว่า 1,000 และเอาท์พุทจำนวนเต็มจาก1ไปnบรรณนิทัศน์กับจำนวนเต็มจากnไป1 คุณต้องต่อหมายเลขเพื่อให้ปรากฏโดยไม่มีตัวคั่นระหว่างใด ๆ กรณีทดสอบ: n = 1 11 n = 4 14233241 n = 26 12622532442352262172081991810171116121513141413151216111710189198207216225234243252261 n = 100 110029939849759669579489399210911190128913881487158616851784188319822081218022792378247725762675277428732972307131703269336834673566366537643863396240614160425943584457455646554754485349525051515052495348544755465645574458435942604161406239633864376536663567346833693270317130722973287427752676257724782379228021812082198318841785168615871488138912901191109299389479569659749839921001 นี่คือโค้ดกอล์ฟเพื่อการส่งที่สั้นที่สุดเป็นไบต์ในแต่ละภาษาจะชนะ คำอธิบายได้รับการสนับสนุน

8
อ่าน ASCII-Art Text
แรงบันดาลใจจากGolf ฉันเป็นตัวอักษร ASCIIซึ่งความท้าทายนี้ (เกือบ) ตรงกันข้ามโดยตรง งาน: ใช้สตริงของข้อความ ASCII-art และส่งออกเนื้อหาของข้อความเป็นข้อความ ASCII ปกติ การป้อนข้อมูล: สตริงของข้อความศิลปะ ASCII ข้อมูลที่ป้อนจะมีอินสแตนซ์ของอักขระ ASCII #ช่องว่างและขึ้นบรรทัดใหม่ 4 หรือ 5 บรรทัดเท่านั้น ทุกบรรทัดมีความยาวเท่ากัน (นั่นคือตัวอักษร ASCII-art ตัวสุดท้ายจะถูกเติมด้วยช่องว่างต่อท้าย) คุณสามารถใช้อักขระ ASCII ที่พิมพ์ได้อื่นแทน#การป้อนข้อมูลหากคุณต้องการ ข้อมูลที่ป้อนจะมีตัวอักษรA-ZASCII-art และช่องว่าง ASCII-art (ช่องว่าง 5x5 บล็อก) ไม่มีเครื่องหมายวรรคตอน มีข้อความศิลปะ ASCII เพียงบรรทัดเดียวเท่านั้น (5 บรรทัดจริง) จะไม่มีช่องว่างต่อท้ายหรือนำหน้าด้วย ASCII และจะไม่มีช่องว่าง ASCII-art ที่อยู่ติดกัน ขนาดตัวอักษรคือ 5x5 ตัวอักษร มีช่องว่างระหว่างตัวอักษรแต่ละตัว 1x5 …

30
ย้อนกลับสตริงโดยชิ้น
งานของคุณคือการเขียนโปรแกรมที่ให้ตัวเลขและสตริงแยกสตริงออกเป็นส่วน ๆ ของขนาดนั้นและย้อนกลับ กฎระเบียบ โปรแกรมของคุณจะได้รับจำนวนเต็มบวกnรวมถึงสตริงที่sมีความยาวอย่างน้อยหนึ่งรายการซึ่งประกอบด้วย ASCII ที่พิมพ์ได้เท่านั้น (ไม่รวมช่องว่าง) สตริงนั้นควรถูกแยกออกเป็นส่วน ๆ ของความยาวnถ้าความยาวของสตริงไม่สามารถหารด้วยnส่วนที่เหลือใด ๆ ในตอนท้ายควรพิจารณาว่าเป็นกลุ่มของตัวเอง จากนั้นกลับลำดับของชิ้นและรวมพวกเขาอีกครั้ง กรณีทดสอบ n s Output 2 abcdefgh ghefcdab 3 foobarbaz bazbarfoo 3 abcdefgh ghdefabc 2 a a 1 abcdefgh hgfedcba 2 aaaaaa aaaaaa 2 baaaab abaaba 50 abcdefgh abcdefgh 6 abcdefghi ghiabcdef นี่คือโค้ดกอล์ฟดังนั้นคุณควรตั้งเป้าหมายให้น้อยที่สุดเท่าที่จะเป็นไปได้
34 code-golf  string 

10
รุ่นก่อนหน้าของ Ascii Cubes
Asciior ที่สร้างเสร็จสมบูรณ์ก่อนหน้า (PAC 1) รุ่นแรกคือคิวบ์แบบง่ายที่มีความยาวด้าน 1 และมีลักษณะดังนี้: /////\ ///// \ \\\\\ / \\\\\/ PAC 2เป็นรูปทรงเรขาคณิตเช่นว่ารวมกับบรรพบุรุษของมัน (คน PAC 1 ) เสร็จสมบูรณ์ความยาวด้านข้าง 2 ก้อน: front back /////////\ /////////\ ///////// \ ///////// \ /////\\\\\ \ ///////// \ ///// \\\\\ \ ///////// \ \\\\\ ///// / \\\\\\\\\ / \\\\\///// / \\\\\\\\\ / \\\\\\\\\ / …

6
Python แก้ปัญหาชั่วคราวสำหรับการมอบหมายในแลมบ์ดา
นี่เป็นคำถามเคล็ดลับสำหรับการเล่นกอล์ฟใน Python ใน Python golfing เป็นเรื่องปกติที่การส่งจะเป็นฟังก์ชั่นที่กำหนดเป็นแลมบ์ดา ตัวอย่างเช่น, f=lambda x:0**x or x*f(x-1) คำนวณแฟคทอเรียลของ x รูปแบบแลมบ์ดามีข้อดีสองประการ : หม้อไอน้ำของf=lambda x:...หรือlambda x:...สั้นกว่าdef f(x):...return...หรือx=input()...print... การเรียกซ้ำสามารถใช้เพื่อวนซ้ำด้วยค่าใช้จ่ายในไบต์น้อย อย่างไรก็ตามแลมบ์ดามีข้อเสียเปรียบครั้งใหญ่ที่อนุญาตให้ใช้เพียงนิพจน์เดียวโดยไม่มีคำสั่ง โดยเฉพาะอย่างยิ่งนี่หมายถึงไม่มีการมอบหมายใดc=chr(x+65)ๆ นี่เป็นปัญหาเมื่อมีนิพจน์ยาวที่ต้องอ้างอิงค่าสองครั้ง (หรือมากกว่า) การมอบหมายเช่นE=enumerateนั้นเป็นไปได้นอกฟังก์ชั่นหรือเป็นอาร์กิวเมนต์ที่เป็นทางเลือก แต่ถ้ามันไม่ได้ขึ้นอยู่กับอินพุตของฟังก์ชัน อาร์กิวเมนต์ที่เป็นทางเลือกเช่นf=lambda n,k=min(n,0):...ล้มเหลวเนื่องจากอินพุตnไม่ได้ถูกกำหนดเมื่อkถูกประเมิน ณ เวลานิยาม ผลที่ได้คือบางครั้งคุณดูดซ้ำการแสดงออกยาวในแลมบ์ดาเพราะทางเลือกคือแลมบ์ดาที่ไม่ยืดเยื้อ lambda s:s.strip()+s.strip()[::-1] def f(s):t=s.strip();print t+t[::-1] จุดแบ่งแม้เป็นเรื่องเกี่ยวกับ 11 ตัว ( รายละเอียด ) ที่ผ่านมาที่คุณเปลี่ยนไปหรือdef programเปรียบเทียบสิ่งนี้กับจุดแตกหักคู่ปกติ 5 สำหรับการแสดงออกซ้ำ: range(a)+range(b) r=range;r(a)+r(b) print s[1:],s[1:]*2 …
34 code-golf  tips  python 


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