คำถามติดแท็ก code-golf

Code-golf เป็นการแข่งขันเพื่อแก้ไขปัญหาเฉพาะในส่วนที่น้อยที่สุดของซอร์สโค้ด

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 


6
สร้างเป็นเกลียว Padovan
บทนำ คล้ายกับ Fibonacci Sequence, Padovan Sequence ( OEIS A000931 ) เป็นลำดับของตัวเลขที่สร้างขึ้นโดยการเพิ่มคำก่อนหน้าในลำดับ ค่าเริ่มต้นถูกกำหนดเป็น: P(0) = P(1) = P(2) = 1 ข้อกำหนดที่ 1, ที่ 1 และที่ 2 มีทั้งหมด 1 ความสัมพันธ์ที่เกิดซ้ำแสดงอยู่ด้านล่าง: P(n) = P(n - 2) + P(n - 3) ดังนั้นจึงให้ลำดับต่อไปนี้: 1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, …

14
สร้างหมายเลข n-ary
ตัวเลขรองเป็นจำนวนเต็มบวกซึ่งปัจจัยหลัก (ไม่มีหลายหลาก) น้อยกว่าหรือเท่ากับรากที่สองของมัน 4เป็นตัวเลขรองเพราะมีเพียงปัจจัยสำคัญเท่านั้น2ซึ่งเท่ากับรากที่สองของมัน อย่างไรก็ตาม15ไม่ใช่ตัวเลขรองเพราะมัน5เป็นปัจจัยสำคัญซึ่งมีขนาดใหญ่กว่าสแควร์รูท ( ~ 3.9) เนื่องจากจำนวนเฉพาะทั้งหมดมีตัวเองเป็นปัจจัยสำคัญจึงไม่มีหมายเลขเฉพาะเป็นหมายเลขรอง ตัวเลขรองสองสามตัวแรกมีดังนี้: 1, 4, 8, 9, 12, 16, 18, 24, 25, 27, 30, 32, 36, 40, 45, 48, 49, 50, 54, 56 หมายเลขตติยภูมิถูกกำหนดในทำนองเดียวกันยกเว้นปัจจัยสำคัญทั้งหมดจะต้องน้อยกว่าหรือเท่ากับรูทคิวบ์ ตัวเลขระดับอุดมศึกษาสองสามคนแรกมีดังนี้: 1, 8, 16, 27, 32, 36, 48, 54, 64, 72, 81, 96, 108, 125, 128, 135, 144, 150, …

29
รหัส Crazy 8s Golf
สร้างโปรแกรมที่พิมพ์ตัวเลขทั้งหมดทั้งหมดรวมกันระหว่างช่วงเวลา(a, b)และแทนที่ทวีคูณของ 8 ในลำดับที่มีการสุ่ม (กระจายอย่างสม่ำเสมอเป็นอิสระจากตัวละครอื่น ๆ ) ตัวอักษร ASCII ที่ไม่ใช่ตัวเลข, ช่องว่างที่ไม่สามารถพิมพ์ได้ สมมติว่า 0 <a <b ในทุกกรณี หากตัวเลขมีมากกว่า 1 หลักตรวจสอบให้แน่ใจว่าจำนวนอักขระในการแทนที่ตรงกัน! ตัวอย่าง: (1, 16) -> 1 2 3 4 5 6 7 $ 9 10 11 12 13 14 15 n@ (115, 123) -> 115, 116, 117, 118, 119, :F<, 121, 122, …

30
ผลรวมของ Modulo จำนวนเงิน
กำหนดจำนวนเต็มn > 9สำหรับแต่ละการแทรกที่เป็นไปได้ระหว่างตัวเลขในจำนวนเต็มนั้นให้แทรกการบวก+และประเมินผล จากนั้นใช้หมายเลขดั้งเดิมโมดูโลผลลัพธ์เหล่านั้น แสดงผลรวมของการดำเนินการเหล่านี้ ตัวอย่างด้วยn = 47852: 47852 % (4785+2) = 4769 47852 % (478+52) = 152 47852 % (47+852) = 205 47852 % (4+7852) = 716 ----- 5842 อินพุต เป็นจำนวนเต็มบวกเดียวในรูปแบบที่สะดวกใด ๆn > 9 , เอาท์พุต เอาท์พุทจำนวนเต็มเดียวตามเทคนิคการก่อสร้างข้างต้น กฎระเบียบ คุณไม่ต้องกังวลกับการป้อนข้อมูลที่ใหญ่กว่าภาษาเริ่มต้นของคุณ ยอมรับได้ทั้งโปรแกรมหรือฟังก์ชั่น หากฟังก์ชั่นคุณสามารถส่งคืนผลลัพธ์มากกว่าการพิมพ์ ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม นี่คือรหัส - กอล์ฟเพื่อให้ใช้กฎการตีกอล์ฟตามปกติทั้งหมดและรหัสที่สั้นที่สุด (เป็นไบต์) ชนะ ตัวอย่าง 47852 …

14
ทำให้ค้างคาว ASCII บินไปรอบ ๆ ดวงจันทร์ ASCII
พื้นหลัง นี่คือความท้าทายที่เกี่ยวข้องกับวันฮาโลวีน อย่างที่คุณได้เห็นจากการท้าทายครั้งล่าสุดของฉันฉันชอบสิ่งที่ฉันเรียกว่าภาพเคลื่อนไหว ASCII ซึ่งไม่เพียง แต่วาดรูปแบบ แต่วาดรูปแบบที่ก้าวหน้า ความคิดนี้มาถึงฉันหลังจากที่ฉันถูกขอให้สองสามปีที่ผ่านมาทำให้มีชีวิตชีวาการนำเสนอ (ค่อนข้างน่าเบื่อ) โดยการทำให้ค้างคาว ascii สุ่มบินข้ามหน้าจอในวันฮาโลวีน ไม่จำเป็นต้องพูดว่าฉันจำเป็นต้องจ่ายจริง ๆ (ฉันกำลังจ่ายให้มัน) แต่มันทำให้ฉันคิดว่ามีชีวิตมากกว่าค้างคาวสุ่ม ได้รับแรงบันดาลใจจากสิ่งนี้ฉันขอเสนอความท้าทายนี้ ท้าทาย ทำให้ค้างคาวบินไปรอบ ๆ ดวงจันทร์ นี่คือค้างคาว: ^o^ นี่คือดวงจันทร์: mmm mmmmmmm mmmmmmmmm mmmmmmm mmm คุณต้องแสดงทุกขั้นตอนของการบินของค้างคาว (ดูผลลัพธ์) อินพุต ไม่มี เอาท์พุต ^o^ mmm mmmmmmm mmmmmmmmm mmmmmmm mmm mmm^o^ mmmmmmm mmmmmmmmm mmmmmmm mmm mmm mmmmmmm^o^ mmmmmmmmm mmmmmmm mmm …

24
พีระมิด IHIH
ฉันคิดว่ามันน่าทึ่งที่ตัวอักษร "H" และ "ฉัน" นั้นมีความคล้ายคลึงกันมาก "H" เป็นจังหวะในแนวนอนที่ล้อมรอบด้วยสองจังหวะในแนวตั้ง "I" เป็นจังหวะในแนวตั้งที่ล้อมรอบด้วยสองจังหวะในแนวนอน (ขึ้นอยู่กับแบบอักษรของคุณ) ฉันพนันได้เลยว่ามันจะซ้อนกัน ... คุณรู้ไหมว่าอะไรทำให้ฉันนึกถึง? เศษส่วน !!! มานิยามปิรามิด "IHIH" ดังนี้: การวนซ้ำครั้งแรกคือการแสดง ASCII ของตัวอักษร "I": --- | --- การวนซ้ำครั้งถัดไปมีจังหวะตามแนวตั้งที่ด้านใดด้านหนึ่ง | | |---| | | | |---| | | หากคุณมองว่า "ฉัน" ที่อยู่ตรงกลางเป็นจังหวะแนวนอนเดียวการทำซ้ำครั้งที่สองนี้โดยทั่วไปจะเป็น "H" การวนซ้ำครั้งที่สามจะเพิ่มการลากเส้นแนวนอนที่ด้านบนและล่าง ------- | | |---| | | | |---| | | …

12
เลมอน - จำกัด สตริง
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในสายอักขระบรรทัดเดียวแบบไม่มีเงื่อนไข คุณอาจคิดว่ามันมีเพียงASCII ที่พิมพ์ได้ซึ่งไม่รวมช่องว่าง พิมพ์หรือส่งคืนรูปร่างรูปทรงคล้ายยาอม ASCII คล้ายกับมะนาวหรือมะนาวที่ทำจากส่วนนำหน้าของสตริง สมมติว่าสตริงอินพุตมีความยาวnตัวอักษร จากนั้นรูปร่างดังกล่าวประกอบด้วย2n - 1คอลัมน์ของ ASCII art ที่เย็บเข้าด้วยกันโดยแต่ละอันประกอบด้วย2n - 1บรรทัด นับจาก 1, kคอลัมน์ -th เป็นf (k) = นาที (k, 2n - k)ตัวอักษรกว้างและมีf (k)สำเนาแรกf (k)ตัวละครของท่านเป็นศูนย์กลางในแนวตั้งด้วยว่างเปล่าเดียว บรรทัดแยกสำเนา ตัวอย่างเช่นถ้าอินพุตLemonเอาต์พุตควรเป็น: Lemon Lemo Lemo Lem Lemon Lem Le Lemo Lemo Le L Lem Lemon Lem L Le Lemo Lemo Le …

28
โปรดปล่อยฉัน!
ในฐานะนักกอล์ฟเราไม่คุ้นเคยกับการปล่อย ( แน่นอน ) เราจะต้องมีเครื่องมือสองสามอย่างเพื่อช่วยให้เราทำเช่นนั้น แน่นอนว่าเพื่อช่วยทำการตลาดรุ่นใหม่เราจำเป็นต้องมีเวอร์ชั่นที่ดีและเป็นประกาย ใครไม่ตื่นเต้นเมื่อได้ยินเกี่ยวกับเวอร์ชัน 3.0.0 งาน งานของคุณคือการเขียนโปรแกรม / กิจวัตร / ... เพื่อเพิ่มหมายเลขรุ่น คุณต้องเพิ่มหมายเลขรุ่นและรีเซ็ต "สำคัญน้อยกว่า" (เช่นเวอร์ชันของโปรแกรมแก้ไข) คุณจะได้รับสองอาร์กิวเมนต์: เวอร์ชันปัจจุบัน (เช่น "1.0.3") เป็นสตริงและดัชนีที่จะรู้ว่าจะอัปเดตใด (อัปเดต 0 หรือ 1 ดัชนี) ตัวอย่างดัชนี 0: next-version("1.0.3", 0) # 2.0.0 next-version("1.2.3.4.5", 2) # 1.2.4.0.0 next-version("10.0", 0) # 11.0 next-version("3", 0) # 4 next-version("1", 7) # ERROR …

19
วางก้อนหินบนกระดานโกที่ว่างเปล่า
ดูเพิ่มเติม: ให้ย้ายบนกระดานไป งาน Go เป็นเกมกระดานที่ผู้เล่นสองคน (ขาว - ดำ) วางก้อนหินที่จุดตัดของเส้นกริดบนกระดานขนาด 19 × 19 Black เคลื่อนที่ก่อน - ตัวอย่างเช่นบน D4: ในการท้าทายนี้คุณจะต้องใช้พิกัดบอร์ด Go เหมือนD4อินพุทและเอาท์พุทการเป็นตัวแทน ASCII ของบอร์ดโดยการเคลื่อนที่ครั้งแรกที่เล่น ณ จุดที่กำหนด โปรดทราบว่าไม่มีคอลัมน์ Iนี่คือประวัติศาสตร์เพื่อลดความสับสนกับ J และ L เอาต์พุตนี้ประกอบด้วย 19 บรรทัดแต่ละอันมี 19 ตัวอักษร Oจุดด้วยหินที่มันมีการทำเครื่องหมาย จุดที่ว่างในกระดานจะแสดงเป็น.ยกเว้นสำหรับงวดเก้าจุดดาว (อย่างD4, D10, D16, K4, K10, K16, Q4, Q10และQ16) *ซึ่งมีการทำเครื่องหมาย ตัวอย่างเช่นให้F5เป็นอินพุตเอาต์พุตคำตอบของคุณจะต้อง: ................... ................... ................... ...*.....*.....*... …

30
ทำซ้ำ & สลับตัวพิมพ์เล็ก
เป้าหมายคือใช้สตริงเป็นอินพุตทำซ้ำตัวอักษรละตินแต่ละตัวและ "สลับ" ในกรณีของมัน (เช่นตัวพิมพ์ใหญ่กลายเป็นตัวพิมพ์เล็กและในทางกลับกัน) ตัวอย่างอินพุตและเอาต์พุต: Input Output bad bBaAdD Nice NniIcCeE T e S t Tt eE Ss tT s E t sS Ee tT 1!1!1st! 1!1!1sStT! n00b nN00bB (e.g.) (eE.gG.) H3l|@! Hh3lL|@! อินพุตประกอบด้วยสัญลักษณ์ ASCII ที่พิมพ์ได้ คุณไม่ควรทำซ้ำตัวอักษรที่ไม่ใช่ละตินตัวเลขตัวอักษรพิเศษ
34 code-golf  string 

7
Explorer เล็ก ๆ
คุณเป็นนักสำรวจทำแผนที่โลกที่ไม่รู้จัก เรือของคุณถูกลมพัด มันจะไปไหนใครจะไปรู้? ในแต่ละวันในกล้องสอดแนมของคุณคุณจะเห็นคุณสมบัติทางเหนือ, ใต้, ตะวันออกและตะวันตก คุณมักจะเห็นสี่คุณสมบัติดังกล่าวซึ่งสอดคล้องกับทิศทางสำคัญ ๆ กล้องสอดแนมของคุณรายงานสัญลักษณ์ ASCII ดังนี้: ~~.*, ~~~~, ~.^^,~#~# สัญลักษณ์อยู่ในลำดับ (เหนือ, ใต้, ตะวันออก, ตะวันตก) นี่คือสัญลักษณ์: ~= ทะเล, .= ชายฝั่ง, ^= ภูเขา, *= ต้นไม้, #= ไม่ถูกต้อง (ไม่สังเกตสิ่งนี้จะเกิดขึ้นทุกครั้งที่คุณเห็นขอบโลกหรือภูมิประเทศถูกบดบังด้วยหมอก) กล้องส่องทางไกลของคุณมองเห็นหนึ่งหน่วยในทุกทิศทาง ในแต่ละคืนคุณจะมองดูดวงดาวเพื่อดูว่าคุณเดินทางไปไกลแค่ไหน เมื่อมองดูดวงดาวจะรายงานสัญลักษณ์ ASCII ดังนี้: n, s, e,w สอดคล้องกับภาคเหนือภาคใต้ภาคตะวันออกและตะวันตกตามลำดับ คุณจะย้ายยูนิตหนึ่งไปทางทิศเหนือทิศใต้ทิศตะวันออกหรือทิศตะวันตกทุกคืน ดังนั้นคุณในฐานะนักสำรวจจะได้รับสัญลักษณ์มากมาย: ~~.*n~~~~s~~.*s~.** งานของคุณคือส่งออกแผนที่ 2D ของโลก (ซึ่ง?เป็นส่วนที่ไม่รู้จักของแผนที่ทิศเหนือขึ้นไปทางตะวันออกอยู่ทางขวา): ?~~~?????? ?~~~?????? ?~~~.^^.?? …

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