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

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

23
คำนวณ Matrix-Vector
รับอาร์เรย์จำนวนเต็มอย่างน้อยสององค์ประกอบเอาท์พุทMatrix-Vector (กำหนดไว้ด้านล่าง) ของอาร์เรย์ ในการคำนวณMatrix-Vector ขั้นแรกให้หมุนnอาร์เรย์ขนาดอินพุตเพื่อสร้างเมทริกซ์ขนาดn x nโดยองค์ประกอบแรกของอาร์เรย์จะตามด้วยเส้นทแยงมุมหลัก นี่เป็นส่วนเมทริกซ์ สำหรับเวกเตอร์ให้พลิกอาร์เรย์อินพุตในแนวตั้ง จากนั้นทำการคูณเมทริกซ์ปกติ ผลลัพธ์ของเวกเตอร์เป็นผลลัพธ์ ตัวอย่างเช่น, a = [1, 2, 3] ก่อนอื่นให้หมุนอาร์เรย์สองครั้งไปทางขวาเพื่อรับ[3, 1, 2]และ[2, 3, 1]จากนั้นจัดเรียงให้เป็น3x3เมทริกซ์ [[1, 2, 3] [3, 1, 2] [2, 3, 1]] จากนั้นพลิกอาร์เรย์ในแนวตั้งเพื่อสร้างเวกเตอร์ [[1, 2, 3] [[1] [3, 1, 2] x [2] [2, 3, 1]] [3]] ดำเนินการคูณเมทริกซ์ปกติ [[1, 2, 3] [[1] …

5
คำนวณ antipode ของจุดบนเส้นโค้ง
เส้นโค้งคือชุดของจุดบนกริดสี่เหลี่ยมซึ่งแต่ละจุดมีเพื่อนบ้านสองคนในละแวกเพื่อนบ้านสี่คนและจุดนั้นเป็นส่วนประกอบที่เชื่อมต่อกัน นั่นคือกราฟที่เกิดจากจุดบนกราฟกริดนั้นมีลักษณะเป็นมอร์ฟิคกับรอบเดียว "เหนี่ยวนำ" หมายความว่าจุดสองจุดไม่สามารถสัมผัสในอินพุตโดยไม่ต้องเป็นเพื่อนบ้านในวงจร antipode ของจุดสุดยอด V ในกราฟนั้นเป็นจุดสุดยอดที่อยู่ห่างจาก V มากที่สุด antipode นั้นจะมีลักษณะเฉพาะในวงจรที่มีความยาวเท่ากันเสมอ ระยะทางจะวัดตามวงจรของตัวมันเองโดยไม่ต้องคำนึงถึงตารางสี่เหลี่ยมพื้นฐาน การป้อนข้อมูลของคุณจะต้องเป็นภาพของเส้นโค้ง เส้นโค้งจะถูกทำเครื่องหมายด้วยลำดับของอักขระเครื่องหมายตัวเลข ( #) บนพื้นหลังของอักขระเว้นวรรค ( ) จุดหนึ่งบนเส้นโค้งจะถูกทำเครื่องหมายด้วยPอักขระ ("pode") ผลลัพธ์ของคุณจะเหมือนกับอินพุตยกเว้นหนึ่งจุดโค้งจะถูกแทนที่ด้วยA("antipode") คุณอาจสันนิษฐานว่าตัวละครจะถูกทำให้เป็นรูปสี่เหลี่ยมผืนผ้า คุณอาจสันนิษฐานว่าแถวแรกและแถวสุดท้ายและคอลัมน์ของอินพุตจะประกอบด้วยช่องว่างทั้งหมด (อินพุตมีการเสริมด้วยพื้นหลัง) อีกทางหนึ่งคุณอาจสมมติว่าแถวแรกและแถวสุดท้ายและคอลัมน์แต่ละแห่งจะมีจุดโค้ง (อินพุตมีช่องว่างภายในขั้นต่ำ) คุณสามารถป้อนและส่งออกกริดนี้เป็นสตริงที่คั่นด้วยบรรทัดใหม่เดียวเป็นอาร์เรย์ของแถวหรือเป็นอาร์เรย์ 2D ของอักขระแต่ละตัว ตัวเลือกนี้จะต้องเหมือนกันสำหรับอินพุตและเอาต์พุต หากภาษาของคุณอนุญาตสิ่งนี้คุณอาจส่งออกโดยการปรับเปลี่ยนอินพุตแทนการส่งคืนสตริงหรืออาร์เรย์ที่แก้ไข อินพุตที่เป็นไปได้: P# P## #P# ##### #####P# ####### #####P######### #####P######### ## # # # # # # # …

30
รับดัชนีของอาร์เรย์หลังจากเรียงลำดับ
ความท้าทายของคุณในวันนี้คือการเขียนโปรแกรมหรือฟังก์ชั่นที่รับรายการlและให้ตำแหน่งlที่แต่ละองค์ประกอบlเรียงลำดับตามลำดับปรากฏขึ้น กล่าวอีกนัยหนึ่งเอาท์พุทดัชนีของค่าที่น้อยที่สุดตามด้วยดัชนีของค่าที่เล็กที่สุดที่สองเป็นต้น คุณสามารถสมมติว่าอาร์เรย์อินพุตจะมีจำนวนเต็มบวกเท่านั้นและจะมีองค์ประกอบอย่างน้อยหนึ่งองค์ประกอบ กรณีทดสอบ: Input | Output (1-indexed) [7, 4, 5] | [2, 3, 1] [1, 2, 3] | [1, 2, 3] [2, 6, 1, 9, 1, 2, 3] | [3, 5, 1, 6, 7, 2, 4] [4] | [1] เมื่อองค์ประกอบสองรายการขึ้นไปที่มีค่าเท่ากันปรากฏขึ้นดัชนีของพวกเขาควรจะปรากฏถัดจากองค์ประกอบที่เล็กที่สุดไปหามากที่สุด นี่คือcode-golfไบต์ที่น้อยที่สุดชนะ!

20
การนับขึ้นและลงในขณะที่เพิ่มขึ้นสองเท่า
การป้อนข้อมูล: รายการ / เวกเตอร์ที่ไม่มีค่าว่างซึ่งแต่ละองค์ประกอบมีค่า / ตัวอักษรเพื่อระบุว่าคุณจะนับรวมหรือไม่ หรือลง ฉันจะใช้1และ-1แต่คุณสามารถเลือกสิ่งที่คุณต้องการ คุณสามารถใช้สองค่าเท่านั้นคุณไม่สามารถใช้1,2,3...และ-1,-2,-3...สำหรับขึ้นและลงตามลำดับ ท้าทาย: คุณจะใช้ตัวเลขในเรขาคณิตแบบ1, 2, 4, 8, 16, 32 ... ทุกครั้งที่คุณเริ่มนับขึ้นหรือลงคุณจะนับทีละ1จากนั้น2จากนั้น4และต่อไปเรื่อย ๆ หากคุณเปลี่ยนและเริ่มนับด้วยวิธีอื่นคุณจะลบ 1จากนั้น2จากนั้น4และต่อไปเรื่อย ๆ ผลลัพธ์จะเป็นตัวเลขที่คุณได้รับในท้ายที่สุด ตัวอย่าง: ในตัวอย่างด้านล่างบรรทัดแรกคืออินพุตบรรทัดที่สองคือตัวเลขที่คุณกำลังนับขึ้น / ลงบรรทัดที่สามคือผลรวมสะสมและบรรทัดสุดท้ายคือเอาต์พุต ตัวอย่างที่ 1: 1 1 1 1 1 1 1 1 1 1 1 2 4 8 16 32 64 128 256 512 1 …

6
คุณสามารถวนซ้ำได้โดยไม่หยุดทำ
พวกเราหลายคนคุ้นเคยกับเกมตรอน คุณสามารถควบคุม "lightcycle" ที่วางไว้บนตาราง แสงไฟเคลื่อนที่ไปข้างหน้าเสมอ (แม้ว่าคุณจะควบคุมทิศทาง) และทิ้งรอยทางถาวรไว้ด้านหลัง หากคุณวิ่งเข้าไปในเส้นทางคุณผิดพลาด! เป้าหมายที่นี่คือการตรวจสอบว่าเส้นทางที่กำหนดเป็นวงที่ถูกต้องนั่นคือมันจะกลับไปที่จุดเริ่มต้นโดยไม่ต้อง "หยุดทำ" ในการทำเช่นนี้เราถือว่าเราเริ่มต้นที่จุด(0,0)นั้น การป้อนข้อมูลจะได้รับในรูปแบบN2E1S2W1ที่มีชุดของทิศทางพระคาร์ดินัล ( Nคือnorth, Eคือeast, และอื่น ๆ ) แต่ละตามระยะทางในการเดินทางว่าทิศทาง ในตัวอย่างนี้คุณจะเดินทาง N2 : North 2 to (0,2) E1 : East 1 to (1,2) S2 : South 2 to (1,0) W1 : West 1 to (0,0) เส้นทางนั้นจะถือว่าถูกต้องหากมันสิ้นสุดที่(0,0)โดยไม่ต้องไปที่พิกัดอื่นมากกว่าหนึ่งครั้ง (มันจะไป(0,0)สองครั้งแน่นอนเมื่ออยู่ที่จุดเริ่มต้นและอีกครั้งในตอนท้าย) โปรดทราบว่าในตัวอย่างด้านบนเพื่อรับจาก(0,0)ถึง(0,2)เราจำเป็นต้องเยี่ยมชม(0,1)เช่นกัน ตัวอย่างอื่น ๆ : …

6
ครอบคลุมชุดที่มีทวีคูณ
จะช่วยให้ชุดของจำนวนเต็มที่มากกว่า 1 และเรียกว่าX เราจะกำหนดS (i)จะเป็นชุดของสมาชิกทั้งหมดของXหารด้วยฉันที่ฉัน> 1 ต้องการเลือกจากชุดย่อยเหล่านี้กลุ่มของชุดดังกล่าวที่ สหภาพของพวกเขาคือเซตX ไม่มีองค์ประกอบของXอยู่ในสองชุด ตัวอย่างเช่นเราสามารถจัดกลุ่มใหม่{3..11}เป็น {3,4,5,6,7,8,9,10,11} S(3): {3, 6, 9, } S(4): { 4, 8, } S(5): { 5, 10, } S(7): { 7, } S(11):{ 11} บางชุดไม่สามารถแสดงออกได้ด้วยวิธีนี้ ตัวอย่างเช่นถ้าเราใช้เวลา{3..12}, 12มีหลายทั้ง 3 และ 4 การป้องกันไม่ให้ชุดของเราจากการเป็นพิเศษร่วมกัน บางชุดสามารถแสดงได้หลายวิธีเช่น{4..8}สามารถแสดงเป็น {4,5,6,7,8} S(4): {4, 8} S(5): { 5, } S(6): { …

3
คำนวณ Treewidth
ความน่าเชื่อถือของกราฟที่ไม่ได้บอกทิศทางเป็นแนวคิดที่สำคัญมากในทฤษฎีกราฟ อัลกอริธึมกราฟจำนวนมากได้รับการคิดค้นขึ้นมาซึ่งทำงานได้รวดเร็วหากคุณมีการสลายตัวของกราฟที่มีความกังวลเล็กน้อย treewidth มักจะถูกกำหนดในแง่ของการย่อยสลายต้นไม้ นี่คือกราฟและแผนภูมิย่อยสลายของกราฟความเอื้อเฟื้อจาก Wikipedia: การสลายตัวของต้นไม้เป็นต้นไม้ที่จุดยอดแต่ละจุดเชื่อมโยงกับเซตย่อยของจุดยอดของกราฟต้นฉบับด้วยคุณสมบัติดังต่อไปนี้: จุดยอดทุกอันในกราฟต้นฉบับจะอยู่ในเซตย่อยอย่างน้อยหนึ่งค่า ขอบทุกเส้นในกราฟดั้งเดิมมีจุดยอดทั้งคู่ในเซตย่อยอย่างน้อยหนึ่งค่า จุดยอดทั้งหมดในการสลายตัวที่มีส่วนย่อยประกอบด้วยจุดสุดยอดเดิมที่กำหนดมีการเชื่อมต่อ คุณสามารถตรวจสอบว่าการสลายตัวข้างต้นเป็นไปตามกฎเหล่านี้ ความกว้างของการย่อยสลายต้นไม้คือขนาดของเซตย่อยที่ใหญ่ที่สุดลบหนึ่ง ดังนั้นจึงเป็นเรื่องที่สองสำหรับการสลายตัวข้างต้น ความกว้างของกราฟคือความกว้างที่เล็กที่สุดของการย่อยสลายต้นไม้ของกราฟนั้น ในความท้าทายนี้คุณจะได้รับกราฟที่เชื่อมต่อและไม่มีทิศทางและคุณจะต้องพบความกังวล ในขณะที่การค้นหาการย่อยสลายต้นไม้เป็นเรื่องยากมีวิธีอื่นในการคำนวณ treewidth หน้าวิกิพีเดียมีข้อมูลเพิ่มเติม แต่วิธีหนึ่งในการคำนวณ treewidth ที่ไม่ได้กล่าวถึงซึ่งมักใช้ในอัลกอริทึมในการคำนวณ treewidth นั้นคือความกว้างขั้นต่ำในการกำจัด ดูที่นี่สำหรับกระดาษโดยใช้ข้อเท็จจริงนี้ ในการกำจัดการเรียงลำดับหนึ่งจะกำจัดจุดยอดทั้งหมดของกราฟทีละครั้ง เมื่อกำจัดจุดสุดยอดแต่ละจุดขอบจะถูกเพิ่มเข้ามาเชื่อมต่อกับเพื่อนบ้านของจุดสุดยอดทั้งหมดซึ่งกันและกัน สิ่งนี้ซ้ำจนกระทั่งจุดยอดทั้งหมดหายไป ความกว้างของการสั่งตัดเป็นจำนวนเพื่อนบ้านมากที่สุดที่จุดสุดยอดใด ๆ ที่ถูกกำจัดมีในระหว่างกระบวนการนี้ treewidth เท่ากับขั้นต่ำสำหรับการเรียงลำดับความกว้างของการคัดออกทั้งหมด นี่คือตัวอย่างโปรแกรมที่ใช้ข้อเท็จจริงนี้เพื่อคำนวณความน่าเชื่อถือ: import itertools def elimination_width(graph): max_neighbors = 0 for i in sorted(set(itertools.chain.from_iterable(graph))): neighbors = set([a for (a, b) …

6
n * k = dd0d00d โดยที่ d = …?
รับจำนวนเต็มบวกn ≤ 500 : ค้นหาที่เล็กที่สุดจำนวนเต็มบวกkดังกล่าวว่าตัวเลขทั้งหมดในการแสดงทศนิยมของn * kมีทั้ง0หรือdกับ1 ≤≤ d 9 พิมพ์หรือส่งคืนdในเวลาน้อยกว่า 30 วินาที (อ่านเพิ่มเติมเกี่ยวกับสิ่งนั้นในส่วนคำอธิบายและกฎ ) ตัวอย่างง่าย ๆ นี่คือ 30 ค่าแรกของd +----+-------+---------+---+ +----+-------+---------+---+ | n | k | n * k | d | | n | k | n * k | d | +----+-------+---------+---+ +----+-------+---------+---+ | 1 | 1 …

9
สร้างพล็อตต้นกำเนิดและใบไม้
ที่เกี่ยวข้อง: ตรวจสอบพล็อตต้นกำเนิดและใบไม้ อินพุต รายการที่ไม่ว่างของจำนวนเต็มบวก หากจำเป็นพวกเขาสามารถนำมาเป็นสตริง คุณไม่สามารถคิดว่ามันถูกจัดเรียง เอาท์พุต พล็อตลำต้นและใบของตัวเลข ในพล็อตนี้ลำต้นและใบตัวเลขมีการสั่งซื้อเข้าไปในลำต้นโดยนับจากนั้นตัวเลขทั้งหมดที่พอดีกับก้านที่มีคนของพวกเขามีค่าวางไว้ในลำต้นและจากนั้นทั้งหมดจะถูกจัดเรียง ในการท้าทายนี้การขึ้นบรรทัดใหม่จะแยกก้านและช่องว่างจะแยกลำต้นออกจากใบไม้ คุณสามารถรวมหรือแยกลำต้นที่ว่างเปล่าทั้งหมดที่อยู่ระหว่างลำต้นที่ไม่ว่างก็ได้ กรณีทดสอบ (รายการสามารถนำมาเป็นค่าเริ่มต้นในรายการภาษาของคุณฉันใช้ JSON ด้านล่าง) รวมถึงลำต้นที่ว่างเปล่า: [1, 2, 3, 3, 3, 3, 3, 10, 15, 15, 18, 1, 100] 0 11233333 1 0558 2 3 4 5 6 7 8 9 10 0 [55, 59, 49, 43, 58, 59, 54, …
14 code-golf  number 

14
วันสั้น ๆ เป็นวันภาษาอังกฤษแบบยาว
แปลงรูปแบบวันที่แบบย่อเป็นวันที่แบบยาวของอังกฤษในจำนวนไบต์น้อยที่สุด อินพุต อินพุตจะอยู่ในรูปแบบของสตริงที่มีรูปแบบyyyy-mm-ddโดยมีการเติมเต็มศูนย์เป็นตัวเลือกสำหรับค่าทั้งหมด คุณสามารถสันนิษฐานได้ว่าสิ่งนี้ถูกต้องทางไวยากรณ์ แต่ไม่จำเป็นต้องเป็นวันที่ที่ถูกต้อง ค่าปีเชิงลบไม่จำเป็นต้องได้รับการสนับสนุน เอาท์พุต คุณต้องแปลงวันที่เป็นรูปแบบวันที่แบบยาวของอังกฤษ (เช่น14th February 2017) ไม่อนุญาตให้มีการเติมเต็มศูนย์ที่นี่ หากวันที่ไม่ถูกต้อง (เช่น2011-02-29) จะต้องมีการรับรู้ในบางวิธี อนุญาตให้ทำการโยนข้อยกเว้นได้ ตัวอย่างเพิ่มเติมสามารถดูได้ด้านล่าง กรณีทดสอบ "1980-05-12" -> 12th May 1980 "2005-12-3" -> 3rd December 2005 "150-4-21" -> 21st April 150 "2011-2-29" -> (error/invalid) "1999-10-35" -> (error/invalid)

3
วาดทรงลูกบาศก์ ASCII
รับจำนวนเต็มสามตัว> = 2 สร้างลูกบาศก์ ASCII ในโปรเจคชันมุมฉาก (ตู้) จำนวนเต็มสามจำนวนแสดงถึงความสูงความกว้างและความลึก (วัดเป็นอักขระที่มองเห็นได้) รวมถึงมุม มุมควรเป็น 'o's หรือ' + 'ตัวเลือกฟรี w: 10, h: 5, d: 4 ดังนั้นให้: o--------o / /| / / | o--------o | | | o | | / | |/ o--------o ตอนนี้เพื่อทำให้สิ่งนี้ยากขึ้นเล็กน้อยใบหน้าทั้งหมดอาจเป็นของแข็งโปร่งใสหรือขาดหายไป เราสั่งใบหน้าดังนี้: o--------o / /| / 2 / | o--------o 3| …

23
สลับตัวอักษรและตัวเลขหลัก
รับสตริงอินพุตที่มีอักขระ ASCII ตัวอักษรผสมตัวเลขและเริ่มต้นด้วยตัวอักษรสลับตัวอักษรแต่ละตัวที่รันด้วยการรันหลักที่ตามมา การวิ่งคือลำดับของตัวอักษรหรือตัวเลขที่ต่อเนื่องกัน โปรดทราบว่าในกรณีที่สตริงอินพุตลงท้ายด้วยการรันตัวอักษรการรันนี้จะไม่ถูกแตะต้อง ตัวอย่างการเดินผ่าน ตัวอย่างเช่นกำหนดสตริงอินพุตuV5Pt3I0: แยกการวิ่งของตัวอักษรและการวิ่งของตัวเลข: uV 5 Pt 3 I 0 ระบุคู่รัน: (uV 5) (Pt 3) (I 0) สลับคู่ของการวิ่ง: (5 uV) (3 Pt) (0 I) concatenate: 5uV3Pt0I ตัวอย่าง uV5Pt3I0 -> 5uV3Pt0I J0i0m8 -> 0J0i8m abc256 -> 256abc Hennebont56Fr -> 56HennebontFr Em5sA55Ve777Rien -> 5Em55sA777VeRien nOoP -> nOoP นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ …
14 code-golf  string 

10
มาเรียนเคมีเคมีของดินกัน!
แอนดรูว์เป็นนักเคมีที่สนใจในความเป็นกรดของสารละลายและในการเกษตร หลังจากเดือนของการวิจัย (Google ไม่ใช่เพื่อนของเขา) เขามาพร้อมกับตารางต่อไปนี้ * เกี่ยวกับระดับความเป็นกรดที่มนุษย์สามารถอ่านได้ในแง่ของค่า pH (ศักยภาพของไฮโดรเจน) : นิกาย | ช่วง pH | ------------------------- + ------------------------ ----- กรดอัลตร้า ต่ำกว่า 3.5 ------------------------- + ------------------------ ------ มีความเป็นกรดสูงมาก ระหว่าง 3.5 และ 4.4 ------------------------- + ------------------------ ------ มีความเป็นกรดสูงมาก | ระหว่าง 4.5 และ 5.0 ------------------------- + ------------------------ ------ กรดเข้มข้น ระหว่าง 5.1 และ 5.5 …

5
เล่นกอล์ฟ bijection ภายในจำนวนธรรมชาติที่แมปจำนวนเฉพาะกับชุดย่อยที่เหมาะสมของจำนวนเฉพาะ
คำนิยาม bijectionจากชุดSการตั้งค่าTฟังก์ชั่นจากSการTองค์ประกอบดังกล่าวว่าหนึ่งในTSแมปโดยองค์ประกอบว่าหนึ่งใน bijection ภายในชุด Sเป็น bijection จากSSไป หมายเลขธรรมชาติ0เป็นจำนวนเต็มซึ่งเป็นมากกว่าหรือเท่ากับ ชุดย่อยของชุดSSคือชุดดังกล่าวว่าองค์ประกอบในชุดที่ทุกคนยังอยู่ใน เซตย่อยที่เหมาะสมของชุดSคือชุดที่เป็นส่วนย่อยของซึ่งไม่เท่ากับSS งาน เขียนโปรแกรม / ฟังก์ชั่นที่รับจำนวนธรรมชาติเป็นอินพุทและเอาท์พุทจำนวนธรรมชาติ มันจะต้องเป็น bijection และรูปภาพของจำนวนเฉพาะภายใต้โปรแกรม / ฟังก์ชั่น{f(p) : p ∈ ℙ}จะต้องเป็นเซตย่อยที่เหมาะสมℙซึ่งℙเป็นจำนวนเฉพาะ เกณฑ์การให้คะแนน นี่คือรหัสกอล์ฟ คำตอบที่สั้นที่สุดในการชนะไบต์ ช่องโหว่ตามมาตรฐาน

5
ไฟดับรุ่น 7 ส่วน
เมื่อได้รับการแสดงผล 7 เซกเมนต์ที่มีการเปิดและปิดบางเซกเมนต์ให้ค้นหาลำดับของตัวเลข (0-9) ดังนั้นหลังจากสลับการเซกเมนต์ที่สอดคล้องกันสำหรับแต่ละหลักแล้วเซกเมนต์ทั้งหมดจะถูกปิด ตัวอย่าง _ _ [3] => | [1] => [OFF] _ | ตัวเลขและส่วนที่เกี่ยวข้อง: _ _ _ _ _ _ _ _ | | | _| _| |_| |_ |_ | |_| |_| |_| | |_ _| | _| |_| | |_| _| กฎระเบียบ Codegolf ⊨ผลงานที่สั้นที่สุดชนะ อินพุต …

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