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

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

11
ปัญหาที่เกิดขึ้น
ได้รับNขวด (0 < N <10) ด้วยที่สามารถถือC 0 ... C N-1ลิตร (0 < C <50) และเป้าหมายGลิตรโปรดตรวจสอบว่ามันเป็นไปได้ที่จะไปให้ถึงเป้าหมายที่ใช้เพียง การกระทำดังต่อไปนี้: เติมขวดเหล้า ล้างขวดเหล้า เทจากขวดหนึ่งไปอีกขวดหนึ่งจนเทเต็มหรือขวดที่ว่างเปล่าหมด จำนวนเป้าหมายGต้องเป็นปริมาณน้ำในตู้คอนเทนเนอร์หนึ่งตู้ในตอนท้าย คุณไม่สามารถมี ตัวอย่าง N : 2 C 0 : 5 C 1 : 12 G : 1 ผลลัพธ์: ใช่ N : 3 C 0 : 6 C 1 : 9 C …
23 code-golf  math 

25
ย้อนกลับ Deltas ของอาเรย์
ย้อนกลับ Deltas ของอาเรย์ ความต่อเนื่องของDeltas ของ Array งานของคุณคือการใช้อาร์เรย์ของจำนวนเต็ม 32 บิตที่เซ็นชื่อแล้วคอมไพล์ใหม่ด้วยการย้อนกลับของเดลต้า ตัวอย่าง รายการ, 18 19 17 20 16 มี deltas: 1 -2 3 -4 ซึ่งเมื่อกลับรายการจะได้รับ: -4 3 -2 1 จากนั้นเมื่อคอมไพล์ใหม่โดยใช้อัตราผลตอบแทน: 18 14 17 15 16 ซึ่งควรเป็นค่าตอบแทนของคุณ การคอมไพล์ใหม่ประกอบด้วยการรับCซึ่งเป็นค่าแรกของอาร์เรย์ ในกรณีนี้18และใช้ delta กับมันตามลำดับ ดังนั้น18 + -4ให้14, 14 + 3ให้17, และอื่น ๆ Input / Output คุณจะได้รับรายการ …

14
ค้นหา palindromes สุดยอด!
พิจารณาหมายเลข 99999999 ตัวเลขนั้นชัดเจนว่าเป็นโทนสี ปัจจัยสำคัญที่สุดของ 99999999 คือ 137 ถ้าคุณแบ่ง 99999999 ด้วย 137 คุณจะได้ 729927 ตัวเลขนี้ก็เป็น Palindrome ด้วย ปัจจัยสำคัญที่ใหญ่ที่สุดของ 729927 คือ 101 729927/101 = 7227 ซึ่งเป็น palindrome อีกครั้ง ปัจจัยสำคัญที่ใหญ่ที่สุดของ 7227 คือ 73. 7227/73 = 99 ซึ่งอีกครั้งเป็น palindrome โดยการหารด้วยปัจจัยหลักที่ใหญ่ที่สุดคุณจะได้ 9, 3 และสุดท้าย 1 ซึ่งซึ่งเป็นตัวเลขหนึ่งหลักก็เป็น palindromes ตั้งแต่ 1 ไม่มีปัจจัยหลักกระบวนการสิ้นสุดที่นี่ ตอนนี้โดยทั่วไปการสังเกตนี้ฉันกำหนด Super-Palindrome เป็น Palindrome ซึ่งเป็น …

3
ปัญหาการเผาแพนเค้ก
ความท้าทายนี้จะเกี่ยวข้องกับพลิกแพนเค้ก คุณอาจเคยได้ยินเรื่องการเรียงแพนเค้กที่กองแพนเค้กเรียงตามขนาดโดยสอดไม้พายเข้าไปในกองแล้วพลิกแพนเค้กทั้งหมดเหนือไม้พายจนกระทั่งแพนเค้กเรียงตัวเล็กที่สุดไปหามากที่สุดบนจาน ปัญหาการเผาแพนเค้กแตกต่างกันเล็กน้อย ตอนนี้แพนเค้กทั้งหมดมีด้านหนึ่งที่ถูกเผาและด้านที่ถูกเผาของแต่ละแพนเค้กจะต้องเผชิญกับจานเมื่อการเรียงเสร็จสมบูรณ์ ตัวอย่างเช่นให้สแต็กต่อไปนี้ (ขนาดของแพนเค้กทางด้านซ้าย0หมายถึงด้านที่1ถูกเผาไหม้และความหมายด้านที่ถูกเผาด้านขวา): 1 0 3 1 2 1 คุณอาจพลิกทั้งกองเพื่อให้ได้20 30 11พลิกด้านบนสุดเพื่อรับ31 21 11และพลิกทั้งกองอีกครั้งเพื่อให้ได้10 20 30กองเรียงแพนเค้กเผาไหม้ ลำดับนี้ของการเคลื่อนไหวพลิก 3 พลิก 2 พลิก 3 3 2 3อาจจะแสดงเป็น ความท้าทาย เมื่อกำหนดขนาดของแพนเค้ก (ไม่จำเป็นต้องไม่ซ้ำกัน) และการวางแนวของมันให้เรียงลำดับการเรียงลำดับการเผาแพนเค้กที่ถูกต้องนั่นคือลำดับการพลิกที่นำไปสู่กองซ้อนของแพนเค้กที่เรียงจากน้อยที่สุดไปมากที่สุด อินพุตและเอาท์พุตอาจเป็นรูปแบบใด ๆ ที่มีตัวคั่น แต่โปรดระบุรูปแบบที่คุณใช้และระบุว่ารูปแบบการป้อนข้อมูลใดของคุณอยู่ด้านบนสุดของสแต็ก (TOS) อนุญาตให้พลิกแพนเค้กเป็นศูนย์ได้ อนุญาตให้ใช้ตัวคั่นผสมในอินพุต / เอาต์พุต กรณีทดสอบ สำหรับกรณีทดสอบต่อไปนี้ทั้งหมดอินพุตคือรายการและเอาต์พุตเป็นสตริงที่คั่นด้วยช่องว่างและ TOS อยู่ทางด้านซ้าย [[1, 0], [3, 1], [2, …

23
ฐานในการผสม
การป้อนข้อมูล: รายการ / 2-36อาร์เรย์ของจำนวนเต็มซึ่งแต่ละรายการอยู่ในช่วงของ เอาท์พุท: ผลรวมของจำนวนเต็ม (เป็นฐาน 10) โดยที่แต่ละจำนวนเต็มถัดไปอยู่ในฐานของค่าก่อนหน้า (เริ่มต้นด้วยฐานปกติ 10) ตัวอย่าง: สมมติว่าเรามีอินพุตดังนี้: [4, 12, 34, 20, 14, 6, 25, 13, 33] จากนั้นเรามีผลรวมดังนี้: 4 (4 in base-10) + 6 (12 in base-4 ) + 40 (34 in base-12) + 68 (20 in base-34) + 24 (14 in base-20) + 6 …

14
ดังนั้นคนเลี้ยงแกะพูดว่า
ฉันเหนื่อย แต่ฉันนอนไม่หลับ ช่วยฉันนับแกะ รับอินพุต N (จำนวนเต็มบวก) ทำ N แกะข้ามรั้ว ascii เช่นตัวอย่างด้านล่าง ควรแสดงหนึ่งเฟรมในครั้งเดียว: o |-| ──|-|── 0 o|-| ──|-|── 0 o |-| ──|-|── 0 |-|o ──|-|── 0 |-| o ──|-|── 0 o |-| ──|-|── 1 o|-| ──|-|── 1 o |-| ──|-|── 1 ควรเก็บจำนวนไว้ที่ด้านล่างขวาของ 'พื้นดิน' อนุญาตการเว้นวรรคและนำหน้าและขึ้นบรรทัดใหม่ หากภาษาที่คุณเลือกมีปัญหาในการล้างหน้าจอสำหรับแต่ละเฟรมคุณสามารถเพิ่มบรรทัดใหม่ที่เพียงพอเพื่อล้างหน้าจอ - โปรดระบุจำนวนบรรทัดที่คุณเพิ่มสำหรับคำตอบของคุณ โปรแกรมควรยุติเมื่อแกะ N'th อยู่ใน …

19
รหัสที่มามารยาท
เอาต์พุตอักขระสุ่มหนึ่งตัวสำหรับแต่ละอักขระของซอร์สโค้ด (ดังที่แสดงด้านล่าง) ความน่าจะเป็นของอักขระแต่ละตัวคือความถี่ในซอร์สโค้ดต้นฉบับ ดังนั้นผลลัพธ์จะเป็นซอร์สโค้ดปลอมที่คล้ายกับควิน สเปค ข้อ จำกัด ใช้ข้อ จำกัดควินมาตรฐาน ไม่มีโปรแกรมหรือฟังก์ชั่นที่ว่างเปล่า ยังไม่มีการอ่านแหล่งข้อมูลของคุณเอง เอาท์พุต จำนวนตัวอักษรที่ส่งออกควรเป็นจำนวนตัวอักษรที่แน่นอนในรหัสที่มา อักขระเอาต์พุตแต่ละตัวควรเลือกแบบสุ่ม ความน่าจะเป็นในการเลือกตัวละครใด ๆ มีค่าเท่ากับ (occurrences in source) / (length of source) ซึ่งหมายความว่าแม้กระทั่งโซลูชันที่มีเอกภาพต้องเลือก 'สุ่ม' 1ด้วยความน่าจะ1เป็น ซึ่งจะกล่าวว่าผลลัพธ์ไม่สามารถเข้ารหัสยาก การชนะ นี่คือรหัสกอล์ฟดังนั้นจำนวนไบต์ที่น้อยที่สุดจึงชนะ ตัวอย่าง Program Frequency Probability Possible Output ------- --------- ----------- --------------- a@!@ a - 1 a - 25% @@a@ ! - …

20
จิมมี่อาร์เรย์เหล่านี้ลง
จิมมี่ผู้ร่วมงานของฉันเป็นคนใหม่สำหรับ C / C ++ เขาเป็นคนที่เรียนช้า ตอนนี้เพื่อความเป็นธรรมรหัสของเขารวบรวมเสมอ แต่เขามีนิสัยที่ไม่ดี ตัวอย่างเช่นทุกคนรู้ว่าคุณสามารถกำหนดอาร์เรย์เช่นนี้: int spam[] = {4, 8, 15, 16, 23, 42}; ทุกคนนั่นคือยกเว้นจิมมี่ เขาเชื่อมั่นว่าวิธีเดียวในการสร้างอาร์เรย์เป็นเช่นนี้: int spam[6]; spam[0] = 4; spam[1] = 8; spam[2] = 15; spam[3] = 16; spam[4] = 23; spam[5] = 42; ฉันจะแก้ไขสิ่งนี้ให้เขาในการทบทวนโค้ด แต่เขาจะไม่เรียนรู้ ดังนั้นฉันต้องการให้คุณเขียนเครื่องมือที่ทำสิ่งนี้โดยอัตโนมัติสำหรับเขาเมื่อเขาตกลง ความท้าทาย ฉันต้องการให้คุณเขียนโปรแกรมเต็มรูปแบบหรือฟังก์ชั่นที่ใช้ในสตริงหลายบรรทัดเป็นอินพุตและส่งออกอาร์เรย์ C รุ่นกะทัดรัดยิ่งขึ้น อินพุตจะเป็นไปตามรูปแบบนี้เสมอโดยมีพื้นที่ว่างรวมอยู่ด้วย: identifier_one identifier_two[some_length]; …
23 code-golf  string  parsing  c 

16
สร้างเมทริกซ์พีระมิด
พีระมิดเมทริกซ์เป็นเมทริกซ์สี่เหลี่ยมจัตุรัสซึ่งจำนวนทั้งหมดเพิ่มขึ้นหรือลดลงจากจุดกึ่งกลางเช่นเมทริกซ์สองตัวด้านล่าง: 1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1 หรือ: 3 3 3 3 3 3 2 2 2 3 3 2 1 2 3 3 2 2 2 3 3 3 3 …

6
ตัวประกอบบางส่วนของจำนวนเต็มบวก
คอลเลกชันของจำนวนเต็มบวกd_1 d_2 ... d_kคือการแยกตัวประกอบของจำนวนเต็มบวกnถ้า d_1 * d_2 * ... * d_k = n เลขจำนวนเต็มบวกแต่ละตัวมีการแยกตัวประกอบเฉพาะที่สำคัญแต่โดยทั่วไปแล้วพวกมันยังมีตัวประกอบที่ซึ่งคำบางคำประกอบกัน เช่น 12 = 6 * 2 = 4 * 3 = 3 * 2 * 2 เขียนโปรแกรมฟังก์ชั่นคำกริยาหรือสิ่งที่คล้ายกันซึ่งรับอินพุตเป็นจำนวนเต็มบวกเดียวและส่งคืนหรือพิมพ์รายการทั้งหมดของตัวประกอบที่แตกต่างกัน ตัวประกอบอาจถูกสร้างขึ้นในลำดับใด ๆ และเงื่อนไขอาจอยู่ในลำดับใดก็ได้ แต่ไม่ควรมีการเรียงสับเปลี่ยนกัน Factorisations อาจยังไม่รวม1กับสองข้อยกเว้น: สำหรับการป้อนข้อมูลnที่คุณอาจจะให้ factorisation n*1แทนn; และสำหรับการป้อนข้อมูล1คุณอาจให้การแยกตัวประกอบ1แทนรายการว่างเปล่า คุณอาจคิดว่าอินพุตจะอยู่ในช่วงของจำนวนเต็ม 32- บิตที่ลงชื่อแล้ว ถ้าผลการเป็นสตริงควรจะมีความแตกต่างที่ชัดเจนระหว่างการปักปันเขตของตัวเลขภายใน factorisation และการปักปันเขตของ factorisations ที่ แต่ก็ไม่จำเป็น …

6
เศษส่วนเป็นทศนิยมที่แน่นอน
เขียนโปรแกรมหรือฟังก์ชั่นที่ได้รับสองจำนวนเต็มA, B outputs สตริงที่มีตัวเลขทศนิยมที่เป็นตัวแทนของเศษA / B ว่า หากa / bเป็นจำนวนเต็มเพียงแค่ส่งออกค่าโดยไม่มีจุดทศนิยมหรือศูนย์นำหน้า: 123562375921304812375087183597 / 2777 -> 44494913907563850333124661 81 / 3 -> 27 -6 / 2 -> -3 หากa / bไม่ใช่จำนวนเต็ม แต่มีการแทนค่า จำกัด ในฐาน 10 ให้ส่งออกค่าโดยไม่มีศูนย์นำหน้าหรือต่อท้าย (ยกเว้นศูนย์เดียวก่อนจุด): 1 / 2 -> 0.5 3289323463 / -250000000 -> -13.157293852 ในที่สุดถ้าหาก (ดังนั้นไม่0.999...) a / bไม่ใช่จำนวนเต็มและไม่มีการแทน จำกัด …

27
รายการพาร์ทิชันที่สั่งซื้อทั้งหมดของ n
ความท้าทายคือการแสดงรายการพาร์ทิชันทั้งหมดที่สั่งซื้อ (องค์ประกอบ (combinatorics)) nของจำนวนเต็มบวกให้ เหล่านี้เป็นรายการของตัวเลขจาก1การที่มีผลรวมเป็นn nตัวอย่างเช่นอินพุตที่กำหนดn = 4ผลลัพธ์ควรเป็น: 4 1, 3 3, 1 2, 2 2, 1, 1 1, 2, 1 1, 1, 2 , 1, 1, 1, 1, 1 ผลลัพธ์สามารถอยู่ในลำดับใดก็ได้ แต่ต้องมีพาร์ติชันที่สั่งซื้อแต่ละครั้ง ซึ่งหมายความว่าสำหรับn = 4, [1, 1, 2], [1, 2, 1]และ[2, 1, 1]ทุกคนจะต้องเป็นส่วนหนึ่งของผล นี่คือรหัส JavaScript ของฉันเองซึ่งประสบความสำเร็จในสิ่งนี้: function range(n) { for …

12
จำนวนรอบของการเปลี่ยนแปลง
พิจารณาการเปลี่ยนแปลงของจำนวนเต็ม1, ... n, เช่นนี้สำหรับn = 6: [5,2,4,3,6,1] ถ้าคุณดูการเปลี่ยนแปลงเช่นการทำแผนที่จาก[1,2,3,4,5,6]ไป[5,2,4,3,6,1], การเปลี่ยนแปลงสามารถ decomponsed เข้าไปเคลื่อนรอบ รอบเป็นส่วนย่อยขององค์ประกอบที่แมปกัน ยกตัวอย่างเช่น1ได้รับการแมปไป5ซึ่งได้รับการแมปไปซึ่งได้รับการแมปกลับไป6 ดังนั้นหนึ่งรอบเป็น1 [1,5,6]รอบอื่น ๆและ[2] [3,4]ดังนั้นจำนวนรอบ3สำหรับการเปลี่ยนแปลงนี้คือ โดยทั่วไปรอบของการเปลี่ยนแปลงที่จะไม่ซ้ำกัน (ถึงการสั่งซื้อ) และจำนวนรอบสำหรับการเปลี่ยนแปลงของขนาดที่nแตกต่างกันจากการ1n ความท้าทาย รับการเปลี่ยนแปลงที่ไม่ว่างเปล่าส่งออกจำนวนรอบ การป้อนข้อมูลเป็นอาร์เรย์ที่เกิดขึ้นจากnจำนวนเต็ม1, 2, ... , ที่n n > 0จำนวนเต็มแต่ละค่าเกิดขึ้นเพียงครั้งเดียว ลำดับที่ปรากฏจะกำหนดการเปลี่ยนลำดับตามตัวอย่างด้านบน แทนที่จะเป็นอาร์เรย์คุณสามารถใช้รายการสตริงที่มีตัวคั่นระหว่างตัวเลขการป้อนข้อมูลแยกต่างหากสำหรับแต่ละหมายเลขหรืออะไรก็ได้ที่สมเหตุสมผล สำหรับการเปลี่ยนแปลงของขนาดnแทนที่จะเป็น 1 ชุดตามของจำนวนเต็ม1, ... , nคุณสามารถอย่างต่อเนื่องใช้ชุด 0-based 0, ... n-1, ถ้าเป็นเช่นนั้นโปรดระบุไว้ในคำตอบของคุณ รหัสควรใช้งานnได้สูงสุด20ในเวลาที่เหมาะสมพูดน้อยกว่าหนึ่งนาที รหัสกอล์ฟ อนุญาตบิวอินได้ทั้งหมด กรณีทดสอบ สิ่งนี้จะถือว่าอินพุตแบบอิงอาร์เรย์ 1 ตัว …

8
“ เพิ่มหนึ่ง” ให้กับทุกสีในภาพ
คุณเพียงแค่จะถ่ายภาพนี้และทำให้ทุกสีเพิ่มหนึ่งในเลขฐานสิบหกทุกหลัก ตัวอย่างเช่น#49de5fจะกลายเป็น#5aef60(โดยการ9วนซ้ำไปยังaและการfวนซ้ำไปยัง0.) นี่ก็หมายความว่าสีขาวทั้งหมด ( #ffffff) จะกลายเป็นสีดำ ( #000000) เพราะทุกอย่างfกลับไป0แต่สีดำทั้งหมดจะกลายเป็นสีดำที่อ่อนกว่าของ ( #111111) การให้คะแนนขึ้นอยู่กับจำนวนไบต์น้อยที่สุดที่ใช้เนื่องจากนี่เป็นคำถามเกี่ยวกับการเขียนโค้ด ใช้ภาพด้านล่างเป็นภาพที่ป้อนสำหรับรหัสของคุณและใส่ภาพที่ส่งออกของรหัสของคุณเป็นคำตอบของคุณ หากคุณต้องการคุณสามารถใช้ภาพสายรุ้งอื่น ๆ ได้:

1
การแลกเปลี่ยนสแต็ก
ปัญหา สมมติว่าคุณมีสแต็ค N ชื่อ S 1ถึง S Nโดยที่ S k (k = 1 ถึง N) แต่ละอันมี N สำเนาของหมายเลข k ตัวอย่างเช่นเมื่อ N = 3 กองที่มีลักษณะเช่นนี้: 1 2 3 <- top of stack 1 2 3 1 2 3 <- bottom of stack ======= 1 2 3 <- stack index ที่นี่มีการจัดทำดัชนี 3 …

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