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

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

7
คิวการสลายตัวของเรา
ในการท้าทายนี้ฉันจะขอให้คุณหาการสลายตัว QR ของเมทริกซ์จตุรัส QR สลายของเมทริกซ์สองเมทริกซ์QและRดังกล่าวว่าA = QR โดยเฉพาะอย่างยิ่งเรากำลังมองหาคิวที่จะเป็นเมทริกซ์มุมฉาก (นั่นคือQ T Q = QQ T = ฉันที่ฉันเป็นตัวตนแบบทวีคูณและTคือทรานส) และRเป็นเมทริกซ์รูปสามเหลี่ยมบน (ทุกค่าต่ำกว่าเส้นทแยงมุมต้อง เป็นศูนย์) คุณจะเขียนโค้ดที่ใช้เมทริกซ์จตุรัสด้วยวิธีการที่สมเหตุสมผลและแสดงผลการย่อยสลาย QR ด้วยวิธีใด ๆ เมทริกซ์จำนวนมากมีการย่อยสลาย QR จำนวนมาก แต่คุณต้องการเพียงหนึ่งเอาต์พุต องค์ประกอบของเมทริกซ์ผลลัพธ์ของคุณควรอยู่ในตำแหน่งทศนิยมสองตำแหน่งของคำตอบจริงสำหรับทุกรายการในเมทริกซ์ นี่คือการแข่งขันกอล์ฟรหัสดังนั้นคำตอบจะได้คะแนนเป็นไบต์ด้วยจำนวนไบต์น้อยกว่าซึ่งเป็นคะแนนที่ดีกว่า กรณีทดสอบ เหล่านี้เป็นเพียงผลลัพธ์ที่เป็นไปได้ผลลัพธ์ของคุณไม่จำเป็นต้องตรงกับสิ่งเหล่านี้ทั้งหมดตราบเท่าที่พวกเขาถูกต้อง 0 0 0 1 0 0 0 0 0 0 0 0 -> 0 1 0 0 0 0 …

8
เป็นคนชั่วร้ายที่สุด
บทนำ นี่คือการติดตามความท้าทายนี้ที่คุณรับบทเป็นฝาแฝดผู้ชั่วร้าย การเป็นคนชั่วคุณไม่ต้องการเพิ่มส่วนแบ่งให้มากที่สุด แต่จะไม่ยุติธรรมเท่าที่จะเป็นไปได้และคุณจะไม่ทำให้ชัดเจนเกินไปนั่นคือสาเหตุที่คุณคิดแผนการดังต่อไปนี้: คุณจะบอกคนอื่น ๆ ว่าคุณต้องการที่จะยุติธรรมเท่าที่จะทำได้เหมือนพี่น้องของคุณและคุณจะต้องแบ่งจำนวนเต็มออกเป็นความยาวเท่ากัน ดังนั้นสำหรับแต่ละจำนวนเต็มคุณจะได้จำนวนคนที่เหมาะสมเช่นความแตกต่างระหว่างชิ้นใหญ่ที่สุดกับชิ้นเล็กที่สุดคือสูงสุด ตัวอย่างเช่นถ้าคุณได้รับจำนวนเต็ม6567คุณสามารถปล่อยให้มันเป็นแยกออกเป็นสองชิ้นหรือสี่65,67 6,5,6,7สิ่งนี้ให้ความแตกต่างสูงสุดต่อไปนี้: 6567 -> max() = 0 65,67 -> max(|65-67|) = 2 6,5,6,7 -> max(|6-5|,|6-5|,|6-6|,|6-7|,|5-6|,|5-7|,|6-7|) = 2 เนื่องจากคุณเพียงต้องการที่จะเป็นความชั่วร้ายที่คุณไม่ชอบ67มากกว่า7และทำให้คุณจะได้ผลลัพธ์อย่างใดอย่างหนึ่งหรือ24 อื่น (กรณีพิเศษน้อยกว่า); รับจำนวนเต็ม121131คุณสามารถแยกเช่นนี้ 121131 -> max() = 0 121,131 -> max(|121-131|) = 10 12,11,31 -> max(|12-11|,|12-31|,|11-31|) = 20 1,2,1,1,3,1 -> max(…) = 2 เวลานี้มีทางออกเดียว …

15
แยกรายการหมายเลข unary ที่เซ็นชื่อ
โดยทั่วไปแล้วตัวเลขที่ไม่ใช่ตัวเลขจะแสดงเฉพาะจำนวนเต็มที่ไม่ใช่ค่าลบ แต่เราสามารถขยายตัวเลขเหล่านี้เพื่อแสดงจำนวนเต็มทั้งหมดดังนี้: จำนวนเต็มบวก N ถูกแทนด้วย N 1:5 -> 11111 จำนวนเต็มลบ -N ถูกแทน0ด้วยตามด้วย N 1:-5 -> 011111 ศูนย์แสดงเป็น 0 จากนั้นเราสามารถแสดงรายการของตัวเลขเหล่านี้ได้อย่างชัดเจนหากเราใช้0เป็นตัวคั่น: 3,-2,0,1 111,011,0,1 111 0 011 0 0 0 1 11100110001 งานของคุณ: นำสตริงที่แสดงรายการของหมายเลขยูนารีที่ลงนามแล้วและแปลเป็นรายการของเลขทศนิยม รายละเอียด คุณอาจสมมติว่าการป้อนข้อมูลเป็นรายการที่สมบูรณ์ของหมายเลข unary ที่ลงนามแล้ว โดยเฉพาะอย่างยิ่งโปรแกรมของคุณจะไม่ต้องจัดการ 1) อินพุตว่างเปล่าหรือ 2) อินพุตที่ลงท้ายด้วยตัวคั่น คุณอาจคิดว่าขนาดของแต่ละหมายเลขจะต้องไม่เกิน 127 สำหรับภาษาที่มีขนาดของสตริงหรือรายการสูงสุดคุณอาจสมมติว่าอินพุตและเอาต์พุตจะพอดีกับโครงสร้างข้อมูลของภาษาของคุณ แต่อัลกอริทึมของคุณควรทำงานกับรายการ ขนาดใดก็ได้ โปรแกรมหรือฟังก์ชั่นของคุณอาจทำการ I / O ด้วยวิธีมาตรฐานใดๆ …

23
ลำดับของเลขจำนวนเต็มแบบเอ็กซ์โพเนนเชียล
พิจารณารูปสามเหลี่ยมที่เป็นNแถว TH (1 จัดทำดัชนี) เป็นอาร์เรย์จากครั้งแรกที่ไม่มีอำนาจจำนวนเต็มบวกของN นี่คือสองสามแถวแรก: N | สามเหลี่ยม 1 | 1 2 | 2 4 3 | 3 9 27 4 | 4 16 64 256 5 | 5 25 125 625 3125 ... ตอนนี้ถ้าเราต่อพลังเหล่านั้นเป็นลำดับเดียวเราจะได้ OEIS A075363 : 1, 2, 4, 3, 9, 27, 4, 16, 64, 256, 5, …

30
Array of Challenges # 3: ค่าเฉลี่ยเคลื่อนที่
หมายเหตุ: นี่คือ # 3 ในชุดของความท้าทายการจัดการอาร์เรย์ สำหรับความท้าทายก่อนหน้านี้คลิกที่นี่ ค่าเฉลี่ยเคลื่อนที่ของรายการ ค่าเฉลี่ยเคลื่อนที่ของรายการคือการคำนวณผลในใหม่เรียบออกรายการที่สร้างขึ้นโดยเฉลี่ย sublists ที่ทับซ้อนกันเล็ก ๆ ของเดิม เมื่อสร้างค่าเฉลี่ยเคลื่อนที่อันดับแรกเราจะสร้างรายการของรายการย่อยที่ทับซ้อนกันโดยใช้ 'ขนาดหน้าต่าง' ที่แน่นอนเลื่อนหน้าต่างนี้ไปทางขวาหนึ่งครั้งในแต่ละครั้ง ตัวอย่างเช่นเมื่อกำหนดรายการ[8, 4, 6, 2, 2, 4]และขนาดหน้าต่าง3รายการย่อยจะเป็น: [8, 4, 6, 2, 2, 4] Sublists: ( ) <- [8, 4, 6] ( ) <- [4, 6, 2] ( ) <- [6, 2, 2] ( ) <- [2, …

17
วาดเครื่องหมายแลมบ์ดา
เพื่อเฉลิมฉลองวันครบรอบปีที่ 2497 ของชัยชนะกรีกที่ Salamis ใน 480 ปีก่อนคริสตกาล วาดเครื่องหมายแลมบ์ดา แลมบ์ดาป่าวคือแลมบ์ดาทาสีบนแผงกั้นกรีกเช่นนั้น: ปริศนา:ได้รับจำนวนเต็มคี่บวก, สร้างภาพศิลปะ ASCII ของโล่ด้านบน ข้อมูลจำเพาะ: n = 1: ( /\ ) n = 3: ( /\ ) | / \ | ( / \ ) n = 5 ( /\ ) | / \ | | / \ | | / …

10
ตัวเลขสามเหลี่ยม
(ไม่ไม่ใช่คนเหล่านั้น ) ความท้าทาย คุณจะได้รับสองอินพุต ครั้งแรกที่เป็นจำนวนเต็มบวกn > 0ซึ่งจะใช้ในการออกสามเหลี่ยมขวาของตัวเลขn x n 1, 2, 3, ... nสามเหลี่ยมนี้เริ่มต้นที่มุมหนึ่งและเพิ่มขึ้นในแนวนอนและแนวตั้งโดยหนึ่งและทแยงมุมสอง ดูตัวอย่างด้านล่างสำหรับการชี้แจง เก็บหนึ่งช่องว่างระหว่างคอลัมน์และเก็บหมายเลขทั้งหมดไว้ในคอลัมน์ที่ต้องการ (นี่คือศิลปะ ASCIIหลังจากทั้งหมด) อินพุตที่สองxเป็นหนึ่งในสี่อักขระ ASCII เดี่ยวที่แตกต่างกันที่คุณเลือกซึ่งจะกำหนดมุมเริ่มต้นของรูปสามเหลี่ยม ตัวอย่างเช่นคุณสามารถใช้1,2,3,4หรือa,b,c,dหรือ#,*,!,)เป็นต้นโปรดระบุในคำตอบของคุณเกี่ยวกับการวางแนว สำหรับการชี้แจงในความท้าทายนี้ฉันจะใช้1,2,3,4ซึ่งจะสอดคล้องกับ1สำหรับบนซ้าย2สำหรับบนขวาและตามเข็มนาฬิกา ตัวอย่าง ตัวอย่างเช่นสำหรับn = 5, x = 1การส่งออกต่อไปนี้: 1 2 3 4 5 2 3 4 5 3 4 5 4 5 5 สำหรับการป้อนข้อมูลn = 11, x = …

6
ประเมินการแสดงออกของลบและตัวหนอน
ได้รับการแสดงออกที่ตรงกับ regex ไม่/^[-~]*x$/, ประเมินในแง่ของxและเอาท์พุทจับคู่สาย /^-?x[+-]\d+$/regex ยกตัวอย่างเช่นสตริง-~xประเมินx+1ในขณะที่สตริง-~-xประเมิน-x+1และสตริงประเมิน-~-~--xx+2 เราเริ่มต้นxและประเมินสตริงจากขวาไปซ้าย -ขัดแย้งกับคำในขณะที่~แปลงไปy-y-1 Testcases: x x+0 ~x -x-1 -~x x+1 ~-~x -x-2 -~-~x x+2 --~~x x+0 ~-x x-1 -~-x -x+1 นี่คือรหัสกอล์ฟ คำตอบที่สั้นที่สุดในการชนะไบต์ รูปแบบอินพุต / เอาต์พุตมีความเข้มงวด "x"มีผลบังคับใช้
16 code-golf  string 

16
พลังแห่งช่วงเวลาสำคัญ
สำหรับจุดประสงค์ของการท้าทายนี้ Prime Power of Prime (PPP) หมายถึงจำนวนที่สามารถกำหนดเป็นจำนวนเฉพาะกับกำลังของจำนวนเฉพาะ ตัวอย่างเช่น 9 เป็น PPP เพราะสามารถแสดงเป็น 3 ^ 2 ในทางกลับกันไม่ใช่ PPP เพราะมันสามารถถูกแทนด้วย 3 ^ 4 เท่านั้นและ 4 ไม่ใช่นายกรัฐมนตรี PPPs สองสามตัวแรกคือ: 4, 8, 9, 25, 27, 32, 49, 121, 125, 128, 169, 243, 289, 343 ... นี่คือลำดับ OEIS A053810 งานของคุณ: เขียนโปรแกรมหรือฟังก์ชั่นสำหรับอินพุตจำนวนเต็ม n ส่งคืน / ส่งออก …

7
การวัดกองบันทึก
บทนำ นี่คือบันทึกของความยาว 5: ##### ฉันต้องการกองของบันทึกเหล่านี้อยู่ด้านบนของกันและกัน ฉันจะทำสิ่งนี้ได้อย่างไรว่าฉันเลื่อนบันทึกใหม่ไปยังด้านบนสุดจากด้านขวาและหยุดเลื่อนเมื่อแนวด้านซ้ายหรือด้านขวาของพวกเขาอยู่ในแนวเดียวกัน (ไม่ต้องถามสาเหตุ) หากบันทึกใหม่ยาวขึ้นมันจะเลื่อนไปจนสุดทางด้านซ้ายของบันทึกสูงสุด: ######## <- ##### ถ้ามันสั้นกว่ามันจะเลื่อนจนกระทั่งขวาสุดชิด: ###### <- ######## ##### ขณะที่ฉันเลื่อนบันทึกลงในกองมากขึ้นตำแหน่งของพวกเขาจะถูกกำหนดโดยบันทึกสูงสุดปัจจุบัน: ## ###### ### #### ## ###### ######## ##### สิ่งนี้ดูเป็นไปไม่ได้ทางร่างกาย แต่ลองทำเป็นว่ามันใช้ได้ งาน ข้อมูลที่คุณป้อนจะต้องเป็นรายการจำนวนเต็มบวกที่ไม่ว่างเปล่าซึ่งแสดงถึงความยาวของบันทึกของฉัน จำนวนซ้ายสุดคือบันทึกแรกที่ฉันใส่ไปยังเสาเข็มดังนั้นมันจะจบลงที่ด้านล่าง [5,8,6,2,4,3,6,2]ในตัวอย่างข้างต้นใส่จะเป็น ผลลัพธ์ของคุณจะต้องมีจำนวนบันทึกที่ข้ามคอลัมน์นั้นแต่ละคอลัมน์ [2,2,3,3,3,2,4,6,3,3,1,2,2]ในตัวอย่างข้างต้นแสดงผลที่ถูกต้องจะเป็น กฎและการให้คะแนน อินพุตและเอาต์พุตสามารถอยู่ในรูปแบบที่สมเหตุสมผล เอาท์พุทสามารถมีจำนวนเต็มบวกคือมันต้องไม่นำหน้าหรือต่อท้าย0s ใช้กฎการเล่นกอล์ฟรหัสปกติ: คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบการนับจำนวนไบต์ที่ต่ำที่สุดและห้ามไม่ให้มีช่องโหว่มาตรฐาน กรณีทดสอบ [1] -> [1] [4] -> [1,1,1,1] [3,2] -> [1,2,2] [2,3] -> …

6
ใช้สัญลักษณ์ Anyfix!
ในสัญลักษณ์นำหน้าตัวดำเนินการมาก่อนอาร์กิวเมนต์ดังนั้นคุณสามารถจินตนาการได้ว่าตัวดำเนินการเรียกnext()ซึ่งเรียกซ้ำ ในสัญกรณ์มัดผู้ประกอบการไประหว่างการขัดแย้งเพื่อให้คุณสามารถจินตนาการได้ว่ามันเป็นต้นไม้แยก ในรูปแบบ postfix ตัวดำเนินการมาหลังจากอาร์กิวเมนต์ดังนั้นคุณสามารถจินตนาการได้ว่าเป็นแบบสแต็ก ในสัญกรณ์ anyfix, ผู้ประกอบการสามารถไปได้ทุกที่* หากโอเปอเรเตอร์ปรากฏขึ้นและมีข้อโต้แย้งไม่เพียงพอโอเปอเรเตอร์จะรอจนกว่าจะมีอาร์กิวเมนต์เพียงพอ สำหรับความท้าทายนี้คุณจะต้องใช้ตัวประเมิน anyfix ขั้นพื้นฐานมาก (โปรดทราบว่า anyfix เป็นภาษาสันทนาที่ฉันละทิ้งที่คุณสามารถเล่นกับที่นี่หรือลองดูที่นี่ ) คุณจะต้องสนับสนุนคำสั่งต่อไปนี้: (Arity 1) ที่ซ้ำกัน เชิงลบ (Arity 2) ส่วนที่เพิ่มเข้าไป การคูณ ความเสมอภาค: ผลตอบแทนหรือ01 คุณอาจเลือกใช้สัญลักษณ์ที่ไม่ใช่ช่องว่างห้าคำสำหรับคำสั่งเหล่านี้ เพื่อจุดประสงค์ในการสาธิตฉันจะใช้สิ่ง"ที่ซ้ำกัน×เป็นการคูณและการ+บวก สำหรับตัวอักษรคุณจะต้องสนับสนุนจำนวนเต็มที่ไม่เป็นลบเท่านั้น แต่ล่ามของคุณจะต้องมีจำนวนเต็มทั้งหมด (ภายในช่วงจำนวนเต็ม (เหมาะสม) ของภาษาของคุณ) 10+5ลองมาดูตัวอย่างนี้: ที่เก็บข้อมูลควรทำตัวเป็นสแต็กไม่ใช่คิว ดังนั้นก่อนกองเริ่มต้นที่และจัดคิวเริ่มต้นรายการที่ผู้ประกอบการ[] []จากนั้นที่แท้จริงคือการประเมินผลซึ่งจะทำให้สแต็ค10 [10]ถัดไปตัวดำเนินการ+ได้รับการประเมินซึ่งต้องการอาร์กิวเมนต์สองตัว ['+']แต่มีเพียงคนเดียวคือข้อโต้แย้งในกองดังนั้นรายชื่อผู้ประกอบการที่อยู่ในคิวจะกลายเป็น จากนั้นที่แท้จริงคือการประเมินผลซึ่งจะทำให้สแต็ค5 [10, 5]ณ จุดนี้ผู้ประกอบการ'+'สามารถประเมินจึงเป็นสิ่งที่ทำให้สแต็คและคิว[15][] ผลสุดท้ายควรจะเป็น[15]สำหรับ+ 10 5, และ10 + 510 …

24
ผลรวมของแถวของสามเหลี่ยมที่ต่อกัน
พิจารณาสามเหลี่ยมต่อไปนี้ 1 23 456 7891 01112 131415 1617181 92021222 324252627 2829303132 33343536373 839404142434 4454647484950 51525354555657 585960616263646 5666768697071727 37475767778798081 ดังที่คุณอาจสังเกตเห็นแถวแรกมีความยาว 1 และแต่ละแถวหลังจากนั้นจะมีความยาวมากกว่า 1 หลักก่อนหน้าและมันมีตัวเลขของจำนวนเต็มบวกที่ต่อกัน คุณจะได้รับจำนวนเต็มN งานของคุณคือการหาผลรวมของตัวเลขที่อยู่ในแถวที่nของสามเหลี่ยมด้านบน กฎระเบียบ คุณสามารถเลือกการจัดทำดัชนี 0 หรือ 1 โปรดระบุว่าในคำตอบของคุณ มีการใช้ช่องโหว่เริ่มต้น คุณสามารถรับอินพุตและให้เอาต์พุตโดยใช้ค่าเฉลี่ยมาตรฐานและในรูปแบบที่เหมาะสม นี่คือOEIS A066548และลำดับนี้คือสามเหลี่ยมเอง (ยกเว้นว่าเราจะไม่ลบเลขศูนย์นำหน้า) นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดเป็นไบต์ (ทุกภาษา) จะเป็นผู้ชนะ ขอให้สนุกกับการเล่นกอล์ฟ! กรณีทดสอบ Input | Output 0 | 1 1 | 5 …

15
ไปให้พ้น! ไม่มีของ 1 ที่นี่!
ฉันกำลังเล่นกับตัวเลขและพบลำดับที่แน่นอนอยู่ใน OEIS มันเป็นA005823 : เบอร์ที่มีการขยายตัว ternary ไม่มี 1 มันไป: a (2n) = 3 * a (n) +2 a (2n + 1) = 3 * a (n + 1) a (1) = 0 a = 0,2,6,8,18,20,24,26,54 .... ฉันเขียนโปรแกรม CJamที่สร้างn ตัวแรกของตัวเลขเหล่านี้โดยแปลงดัชนีเป็นไบนารีแทนที่ 1 ด้วย 2 และเปลี่ยนจาก ternary เป็นทศนิยม ฉันยังสังเกตเห็นว่าจำนวนคู่ใด ๆ สามารถรับได้โดยการหาผลรวมของตัวเลขสองตัวในลำดับ ความท้าทาย: ให้ตัวเลขใด …

16
ฉันมีพาร์ติชั่นกี่อัน?
หมายเลขพาร์ติชันของเลขจำนวนเต็มบวกถูกกำหนดเป็นจำนวนวิธีที่สามารถแสดงเป็นผลรวมของจำนวนเต็มบวก กล่าวอีกนัยหนึ่งจำนวนพาร์ติชันจำนวนเต็มมี ตัวอย่างเช่นหมายเลข4มีพาร์ติชันต่อไปนี้: [[1, 1, 1, 1], [1, 1, 2], [1, 3], [2, 2], [4]] ดังนั้นจึงมี5พาร์ติชัน นี่คือOEIS A000041 งาน รับจำนวนเต็มบวกNกำหนดหมายเลขพาร์ติชัน ใช้กฎมาตรฐานทั้งหมด อินพุตและเอาต์พุตอาจได้รับการจัดการผ่านค่าเฉลี่ยที่สมเหตุสมผล นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ กรณีทดสอบ อินพุต | เอาท์พุต 1 | 1 2 | 2 3 | 3 4 | 5 5 | 7 6 | 11 7 | 15 8 | …

19
สร้างโปรแกรมที่พิมพ์ n คูณความยาว
รับจำนวนเต็มที่ไม่ใช่ค่าลบ nโซลูชันของคุณต้องแสดงผลโปรแกรมในภาษาที่คุณเลือกโดยที่เอาต์พุตมีnจำนวนไบต์เท่ากับโปรแกรมเอาท์พุท กฎระเบียบ คุณต้องระบุภาษาและการเข้ารหัสของโปรแกรมที่โซลูชันของคุณส่งออกและคุณไม่สามารถเลือกภาษาหรือการเข้ารหัสที่แตกต่างกันสำหรับอินพุตที่แตกต่างกันสำหรับโซลูชันของคุณ ภาษาของโปรแกรมเอาท์พุทของคุณอาจหรืออาจจะไม่เหมือนกันกับภาษาของโซลูชันของคุณ การส่งของคุณต้องการจัดการจำนวนเต็มในช่วงภาษาของคุณเท่านั้น แต่โปรดอย่าใช้กฎนี้ในทางที่ผิด นี่คือโค้ดกอล์ฟเพื่อการส่งที่สั้นที่สุดในหน่วยไบต์ชนะ ตัวอย่าง สมมติว่าnเป็นทางออกของฉัน 4. จากนั้นเอาท์พุทf_8โปรแกรมซึ่งใน (จินตนาการ) j3 1s+/2]!mzเอาท์พุทภาษาของฉัน เอาต์พุตโปรแกรมมีความยาว 3 และเอาต์พุตมีความยาว 3 * 4 = 12 ดังนั้นโซลูชันจึงถูกต้องสำหรับอินพุต 4 สมมติว่าnเป็น 1 และโปรแกรมของฉันส่งออกffffpfpffp(10 ไบต์) โปรแกรมffffpfpffpในภาษาที่ฉันเลือกจะต้องสร้างผลลัพธ์เป็น 10 * 1 = 10 ไบต์
16 code-golf  quine 

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