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

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

3
เพิ่มประสิทธิภาพการสั่งซื้อปีกของฉัน
ทวีตนี้แสดงรายการคำสั่งซื้อที่เป็นไปได้สำหรับ Wings of a Chinese restaurant 1 : เมื่อสั่งพิซซ่าฉันมักจะคำนวณขนาดที่ให้อัตราส่วนราคาพิซซ่าที่ดีที่สุดสำหรับฉันซึ่งเป็นการคำนวณอย่างง่าย อย่างไรก็ตามการลดราคาของการสั่งซื้อสินค้าที่ร้านอาหารนี้ไม่ใช่เรื่องง่ายดังนั้นฉันจึงต้องการเตรียมพร้อมสำหรับการสั่งซื้อครั้งต่อไปที่นั่น ท้าทาย ด้วยจำนวนเต็มมากกว่าหรือเท่ากับงานของคุณคือการส่งคืนคำสั่งซื้อที่เป็นไปได้หนึ่งคำสั่งซึ่งจะช่วยลดราคา (โดยรวมที่ถูกที่สุด) และจำนวนข้อตกลง444 ตัวอย่าง ถ้าฉันจะสั่งซื้อปีกก็จะเปิดออกต่อรองราคาที่ดีที่สุดจะเสียค่าใช้จ่าย$อย่างไรก็ตามมีหลายคำสั่งซึ่งจะมีค่าใช้จ่ายจำนวนนั้นคือ:100100100$111.20$111.20$111.20 [50,50],[25,25,50],[25,25,25,25] นับตั้งแต่การสั่งซื้อครั้งแรกจะใช้จำนวนน้อยที่สุดของข้อเสนอ ( ) ผลจะเป็น222[50,50] กฎระเบียบ ข้อมูลที่ป้อนจะเป็นจำนวนเต็มn≥4n≥4n \geq 4 ผลลัพธ์จะเป็นรายการ / อาร์เรย์ / ... ของขนาดคำสั่งซื้อที่รวมกันเป็นและลดราคาของคำสั่งซื้อ nnn คุณอาจเลือกที่จะส่งคืนคำสั่งซื้อที่เป็นไปได้ทั้งหมด Testcases 4 -> [4] (4.55) 23 -> [23] (26.10) 24 -> [6,18],[9,15],[12,12] (27.20) 31 -> [6,25] (34.60) …

10
ซึ่งกันและกัน copycats
ให้เป็นจำนวนเต็มบวกซึ่งประกอบด้วยnตัวเลขทศนิยมวันที่1 , d 2 , . . , d n ให้Bเป็นจำนวนเต็มบวกอีกตัวAAAnnnd1,d2,...,dnd1,d2,...,dnd_1,d_2,...,d_nBBB สำหรับวัตถุประสงค์ของการท้าทายนี้เราเรียกเลียนแบบของBถ้ามีรายการอย่างน้อยหนึ่งของจำนวนเต็มบวกP 1 , P 2 , . . , p nเช่นนั้น:AAABBBp1,p2,...,pnp1,p2,...,pnp_1,p_2,...,p_n ∑i=1ndipi=B∑i=1ndipi=B\sum_{i=1}^{n}{{d_i}^{p_i}}=B AAAและBBBเรียกว่าcopycats ซึ่งกันและกันถ้าAAAเป็น copycat ของBBBและBBBเป็นเลียนแบบของAAA ตัวอย่าง 526526526และ853853853เป็น copycats ซึ่งกันและกันเนื่องจาก: 53+29+63=85353+29+63=8535^3 + 2^9 + 6^3 = 853 และ: 83+51+32=52683+51+32=5268^3 + 5^1 + 3^2 = 526 ความท้าทาย รับจำนวนเต็มบวกAAAและBBBสองค่างานของคุณคือพิมพ์หรือส่งคืนค่าความจริงหากAAAและBBBเป็นตัวเลียนแบบส่วนกลับหรือค่าเท็จ คำอธิบายและกฎ คุณอาจใช้AAAและBBBในรูปแบบที่สมเหตุสมผลและไม่คลุมเครือใด …

16
รับวันที่วันที่สัปดาห์ในปีและเดือนที่กำหนด
บทนำ บ่อยครั้งที่ผู้คนอ้างถึงวันที่ว่า "วันศุกร์ที่สองในเดือนสิงหาคม 2018" หรือ "วันอาทิตย์ที่สี่ในเดือนมีนาคม 2012" แต่มันยากที่จะบอกว่าวันนั้นคืออะไร! งานของคุณคือการเขียนโปรแกรมที่ได้รับปีเดือนวันของสัปดาห์และจำนวนเต็มและส่งออกวันที่ ท้าทาย สำหรับการป้อนข้อมูลคุณจะได้รับปีเดือนวันของสัปดาห์และตัวเลข คุณสามารถป้อนข้อมูลในรูปแบบที่เหมาะสมเช่นการใช้สตริงสำหรับวันของสัปดาห์หรือใช้วันธรรมดาที่มีการทำดัชนีเป็นศูนย์หรือแม้แต่ใช้ปีและเดือนในสตริงเดียว อธิบายรูปแบบการป้อนข้อมูลของคุณในคำตอบของคุณ จำนวนเต็มที่บอกคุณว่าวันใดของสัปดาห์ในเดือนที่จะกำหนดเป้าหมายจะเป็นจำนวนเต็มตั้งแต่ 1-5 จำนวนเต็มจะไม่อ้างถึงวันในสัปดาห์ที่ไม่มีอยู่ (เช่นวันศุกร์ที่ห้าของเดือนกุมภาพันธ์ 2019 ซึ่งไม่มีอยู่) ปีจะเป็นบวกเสมอ ผลลัพธ์ของคุณอาจอยู่ในรูปแบบที่เหมาะสมรวมถึงการพิมพ์วันสุดท้ายของคุณ อย่างไรก็ตามโปรดอธิบายรูปแบบผลลัพธ์ของคุณด้วยคำตอบ การระบุปีและเดือนในเอาต์พุตเป็นทางเลือก นอกจากนี้คุณอาจถือว่าวันที่ถูกต้อง ตัวอย่างอินพุตและเอาต์พุต พิจารณาอินพุตนี้โดยมีรูปแบบที่ใช้ในปีเป็นตัวเลข 4 หลักเดือนเป็นจำนวนเต็มวันของสัปดาห์เป็นสตริงและหมายเลขลำดับเป็นจำนวนเต็ม: 2019, 3, วันเสาร์, 2 2019, 12, วันอาทิตย์, 1 2019, 9 วันเสาร์, 1 เอาท์พุท: 9 มีนาคม 1 ธันวาคม 7 กันยายน นี่คือรหัสกอล์ฟคำตอบที่สั้นที่สุดจึงชนะ
17 code-golf  date 

21
เขียนฟังก์ชั่น / วิธีการที่ใช้ในสตริงและคาถาที่คำว่าออกโดยใช้ตัวอักษรสัทอักษรนาโต Titlecase เป็นทางเลือก
เขียนโปรแกรมที่ใช้เป็นสตริงและสะกดคำที่ใช้ตัวอักษรออกเสียงของนาโต้ การทำแผนที่มีดังนี้: 'A' -> 'Alfa' 'B' -> 'Bravo' 'C' -> 'Charlie' 'D' -> 'Delta' 'E' -> 'Echo' 'F' -> 'Foxtrot' 'G' -> 'Golf' 'H' -> 'Hotel' 'I' -> 'India' 'J' -> 'Juliett' 'K' -> 'Kilo' 'L' -> 'Lima' 'M' -> 'Mike' 'N' -> 'November' 'O' -> 'Oscar' 'P' -> 'Papa' …

19
หมายเลขนี้เป็นเลขเนินหรือไม่?
หมายเลขฮิลล์คือตัวเลขที่มีตัวเลขเหมือนกันในตัวแรกและตัวสุดท้ายแต่นั่นไม่ใช่ทั้งหมด ในจำนวนเนินตัวเลขแรกจะเพิ่มขึ้นอย่างเข้มงวดและตัวเลขสุดท้ายจะลดลงอย่างเคร่งครัด ตัวเลขที่ใหญ่ที่สุดสามารถทำซ้ำได้ นี่คือตัวอย่างของจำนวนเขา: 12377731 | 1237... | ...731 ^ same ^ | strictly increasing | strictly decreasing ---------+---------------------+--------------------- 12377731 ^^^ okay because largest digit can be repeated นี่ไม่ใช่ : 4588774 | ...8774 | ^^ not the largest digit | so this has to be strictly decreasing | but it's …

4
คุณจะได้รับสตริงเพื่อสร้างและเริ่มต้นด้วยสตริงที่ว่างเปล่าให้ใช้สตริงต่อท้ายและการโคลนต้นทุน
งานของคุณคือการสร้างสตริงเป้าหมายที่กำหนด เริ่มต้นด้วยสตริงที่ว่างเปล่าคุณจะต้องเพิ่มตัวอักษรลงไปจนกว่าสตริงของคุณจะเหมือนกับที่เราต้องการ คุณสามารถเพิ่มอักขระที่ส่วนท้ายของสตริงด้วย cost x หรือคุณสามารถโคลนสตริงด้วย cost y สิ่งที่เราต้องการคือวิธีที่ถูกที่สุดในการทำสิ่งนี้ กรณีทดสอบ targetString , appendcost, clonecost -> totalcost "bb", 1, 2 -> 2 "bbbb", 2, 3 -> 7 "xzxpcxzxpy", 10, 11 -> 71 "abababab", 3, 5 -> 16 "abababab", 3, 11 -> 23
17 code-golf  string 

19
ลำดับของตัวเลขที่เขียน
นี่คือลำดับที่น่ารำคาญพอสมควรซึ่งไม่ได้อยู่ในสารานุกรมออนไลน์ของจำนวนเต็มลำดับ เริ่มต้นด้วยลำดับที่ว่างเปล่าจากนั้นกำหนดแต่ละคำเป็นจำนวนอักขระที่ต้องใช้ในการเขียนออกมาเป็นภาษาอังกฤษตัวเลขทั้งหมดของลำดับนั้นจนถึงขณะนี้โดยไม่มีช่องว่าง * สำหรับการอ้างอิงจำนวนตัวอักษรของตัวเลขทั้งหมด (ฐานสิบ) ในภาษาอังกฤษคือ: zero one two three four five six seven eight nine 4 3 3 5 4 4 3 5 5 4 (ซึ่งเป็นจุดเริ่มต้นของทั้งA52360และA5589 ) สิ่งนี้ทำให้รายการแรกa(0)=0a(0)=0a(0) = 0เนื่องจากไม่มีเลขศูนย์ในลำดับที่ว่าง สิ่งนี้ทำให้รายการที่สองa(1)=4a(1)=4a(1) = 4เนื่องจากมันใช้อักขระสี่ตัวในการเขียน "ศูนย์" ซึ่งเป็นตัวเลขหลักเดียวเท่านั้น สิ่งนี้ทำให้รายการที่สามa(2)=8a(2)=8a(2) = 8เนื่องจากใช้อักขระเพิ่มอีกสี่ตัวในการเขียน "สี่" เพื่อรวมแปดเพื่อเขียน "zerofour" สิ่งนี้ทำให้รายการที่สี่a(3)=13a(3)=13a(3) = 13เนื่องจากใช้อักขระเพิ่มอีกห้าตัวในการเขียน "แปด" สำหรับผลรวมสิบสามในการเขียน "zerofoureight" นี่ทำให้รายการที่ห้าa(4)=21a(4)=21a(4) = …

19
ถอดรหัสการแสดงผล 7 ส่วน
คุณทุกคนอาจรู้จักจอแสดงผล 7 ส่วนซึ่งสามารถแสดงตัวเลขหลักทั้งหมดได้ตั้งแต่0…90...90\dots 9 : ท้าทาย เราพิจารณาเซA…GA…G\texttt{A}\dots\texttt{G}เท่านั้นงานของคุณคือการถอดรหัสตัวเลขเดียวที่กำหนดว่าจะเปิดเซ็กเมนต์ใด สิ่งนี้สามารถเข้ารหัสเป็นเลขจำนวนเต็ม 8 บิตนี่คือตารางของแต่ละหลักที่มีการแทนเลขฐานสองของพวกเขาและค่าน้อยที่สุดของ endian และ big-endian ที่สอดคล้องกัน: Digit0123456789.ABCDEFG01111110001100000110110101111001001100110101101101011111011100000111111101111011Little-endian126481091215191951121271230x7E0x300x6D0x790x330x5B0x5F0x700x7F0x7BBig-endian12612182158204218250142542220x7E0x0C0xB60x9E0xCC0xDA0xFA0x0E0xFE0xDEDigit.ABCDEFGLittle-endianBig-endian0011111101260x7E1260x7E100110000480x30120x0C2011011011090x6D1820xB63011110011210x791580x9E400110011510x332040xCC501011011910x5B2180xDA601011111950x5F2500xFA7011100001120x70140x0E8011111111270x7F2540xFE9011110111230x7B2220xDE \begin{array}{c|c|rr|rr} \text{Digit} & \texttt{.ABCDEFG} & \text{Little-endian} && \text{Big-endian} & \\ \hline 0 & \texttt{01111110} & 126 & \texttt{0x7E} & 126 & \texttt{0x7E} \\ 1 & \texttt{00110000} & 48 & \texttt{0x30} & 12 & \texttt{0x0C} \\ …
17 code-golf  decode 

28
รับสตริงคำนวณจำนวนคอลัมน์ที่สอดคล้องกับ
ใน Excel คอลัมน์มีช่วงตั้งแต่A-Z, AA,AB,AZ,BA,..,BZและอื่น ๆ จริงๆแล้วพวกเขาแต่ละคนยืนสำหรับตัวเลข แต่จะถูกเข้ารหัสเป็นสตริงตัวอักษร ในการท้าทายนี้คุณจะได้รับสตริงตัวอักษรและคุณจะต้องคำนวณคอลัมน์ที่สอดคล้อง การทดสอบบางอย่าง: 'A' ส่งคืน 1 (หมายถึงเป็นคอลัมน์แรก) 'B' ส่งคืน 2 'Z' ส่งคืน 26 'AA' ส่งคืน 27 'AB' ส่งคืน 28 'AZ' ส่งคืน 52 'ZZ' ส่งคืน 702 'AAA' ส่งคืน 703 คุณสามารถสันนิษฐานได้ว่าจะให้อักษรตัวใหญ่เท่านั้น ไบต์ที่สั้นที่สุดชนะ โชคดี!
17 code-golf  math 

7
แยกบิต!
เรากำหนดV(x)V(x)V(x)เป็นรายการของอำนาจที่แตกต่างกันของ222ว่าผลรวมไปxxxxยกตัวอย่างเช่นV(35)=[32,2,1]V(35)=[32,2,1]V(35)=[32,2,1] ] ตามแบบแผนอำนาจจะถูกจัดเรียงที่นี่จากมากไปหาน้อย แต่มันไม่ได้ส่งผลกระทบต่อตรรกะของความท้าทายหรือการแก้ปัญหาที่คาดหวัง งาน รับsemiprime NNN , แทนที่แต่ละเทอมในV(N)V(N)V(N)ด้วยรายชื่อของพลังของที่รวมกับเทอมนี้ในลักษณะที่การรวมกันของรายการย่อยที่เกิดขึ้นทั้งหมดเป็นหน้าปกที่แน่นอนของเมทริกซ์นิยามดังนี้M222MMM Mi,j=V(P)i×V(Q)jMi,j=V(P)i×V(Q)jM_{i,j}=V(P)_i \times V(Q)_j ที่และเป็นปัจจัยที่สำคัญของNQPPPQQQNNN นี่เป็นตัวอย่างที่เข้าใจได้ง่ายกว่ามาก ตัวอย่างที่ 1 สำหรับเรามี:N=21N=21N=21 V(N)=[16,4,1]V(N)=[16,4,1]V(N)=[16,4,1] และ V ( P ) = [ 4 , 2 , 1 ]P=7P=7P=7V(P)=[4,2,1]V(P)=[4,2,1]V(P)=[4,2,1] และ V ( Q ) = [ 2 , 1 ]Q=3Q=3Q=3V(Q)=[2,1]V(Q)=[2,1]V(Q)=[2,1] M=(844221)M=(842421)M=\pmatrix{8&4&2\\4&2&1} ในการเปลี่ยนให้เป็นหน้าปกที่แน่นอนของMเราอาจแบ่ง16เป็น8 + 4 + 4และ4เป็น2 + 2ในขณะที่1ไม่มีการเปลี่ยนแปลง …

18
การทำซ้ำที่ยาวที่สุดของตัวเลขหลักเดียว
ท้าทาย: รับจำนวนเต็มบวกเอาท์พุทการเรียงลำดับเลขหลักเดียวที่ยาวที่สุดที่เกิดขึ้นอย่างน้อยสองครั้งและมีขอบเขตของตัวเลขอื่น (หรือจุดเริ่มต้น / สิ้นสุดของจำนวนเต็ม) ตัวอย่าง: อินพุต: 7888885466662716666 การเรียงลำดับที่ยาวที่สุดของหลักเดียวคือ88888( 7[88888]5466662716666) ที่มีความยาว 5 อย่างไรก็ตามการเรียงลำดับนี้จะเกิดขึ้นเพียงครั้งเดียวในจำนวนเต็ม แต่ผลลัพธ์ของอินพุต7888885466662716666ควรเป็น6666( 78888854[6666]271[6666]) เนื่องจากเกิดขึ้น (อย่างน้อย) สองครั้ง กฏท้าทาย: ความยาวขององค์ประกอบจะมีความสำคัญมากกว่าจำนวนครั้งที่มันเกิดขึ้น (เช่นมีอินพุต8888858888866656665666เราเอาต์พุต88888( [88888]5[88888]66656665666; ความยาว 5 เกิดขึ้นสองครั้ง) และไม่ใช่666( 88888588888[666]5[666]5[666]; ความยาว 3 เกิดขึ้นสามครั้ง) หากความยาวของหลายองค์ประกอบเท่ากันเราจะแสดงผลลัพธ์ที่มีการนับเหตุการณ์มากที่สุด เช่นกับอินพุท3331113331119111เราเอาท์พุท111( 333[111]333[111]9[111]; ความยาว 3, เกิดขึ้นสามครั้ง), และไม่ใช่333( [333]111[333]1119111; ความยาว 3 ด้วย, แต่เกิดขึ้นสองครั้ง) หากจำนวนการเกิดและความยาวของหลายองค์ประกอบเท่ากันคุณสามารถส่งออกอย่างใดอย่างหนึ่งของพวกเขาหรือทั้งหมด (ในลำดับใด ๆ ) เช่นอินพุต777333777333, เอาต์พุตที่เป็นไปได้คือ: 777; 333; …

30
Sum
ให้n=42n=42n=42 (อินพุต) จากนั้นตัวหารคือ: 1, 2, 3, 6, 7, 14, 21, 42 กำลังสองแต่ละตัวหาร: 1, 4, 9, 36, 49, 196, 441, 1764 กำลังรวม (เพิ่ม): 2500 ตั้งแต่ดังนั้นเราจึงคืนค่าความจริง ถ้ามันไม่ใช่สแควร์ที่สมบูรณ์แบบให้คืนค่าที่ผิดพลาด50×50=250050×50=250050\times 50=2500 ตัวอย่าง : 42 ---> true 1 ---> true 246 ---> true 10 ---> false 16 ---> false นี่คือโค้ดกอล์ฟที่สั้นที่สุดในหน่วยไบต์สำหรับแต่ละภาษาที่ชนะ ขอบคุณ @Arnauld ที่ชี้ให้เห็นลำดับ: A046655

25
นับถอยหลังวันทำงาน
ฉันแค่มีความคิดอัจฉริยะที่ทำให้ชีวิตการทำงานง่ายขึ้น - นับถอยหลังสู่วันที่ระบุซึ่งนับเฉพาะวันทำงาน ภารกิจพื้นฐานคือการสร้างการนับถอยหลังถึงวันที่ระบุซึ่งรวมเฉพาะวันทำงานในการนับถอยหลัง ในฐานะที่นับวันทำงานจันทร์ , อังคาร , พุธ , พฤหัสบดีและศุกร์ อินพุตควรเป็นวันที่ที่ระบุในรูปแบบมาตรฐานยุโรป "ไม่เป็นทางการ" dd.MM.yyyyและต้องเป็นวันนี้หรือวันในอนาคต ผลลัพธ์ควรเป็นจำนวนวันที่เหลืออยู่เท่านั้น ในขณะที่มันเป็นcode-golfรหัสที่สั้นที่สุดชนะ กรณีทดสอบ: Today | Input | Output 10.12.2018 | 17.12.2018 | 5 02.10.2018 | 16.10.2018 | 10 หากฉันพลาดบางสิ่งในคำถามโปรดยกโทษให้ฉัน - เป็นคำถามแรกของฉัน :) แก้ไข: คุณสามารถใช้falseเป็นเอาต์พุตแทนที่จะเป็น0 <- แต่ไม่สวย ไม่จำเป็นต้องเคารพ DST
17 code-golf  date 

22
จัดเรียงตามสิ่งที่คู่หลักอธิบาย
ด้วยจำนวนเต็มบวกเราสามารถสร้างตัวเลขใหม่ที่อธิบายโดยตัวเลขที่ถูกจับเป็นคู่ (โดยนำ 0 เพิ่มสำหรับตัวเลขที่มีจำนวนหลักคี่) สำหรับเช่น: 1234 สามารถอ่านได้หนึ่ง 2, สาม 4s - ดังนั้นเอาต์พุตสำหรับ 1234 คือ 2444 643 มีจำนวนเลขคี่ดังนั้นศูนย์นำหน้าจึงถูกเพิ่มเพื่อทำให้เป็นเลขคู่ จากนั้นสามารถอ่าน 0643 เป็น: ศูนย์ 6s, สี่ 3s ดังนั้นผลลัพธ์จะเป็น 3333 (นี่คือOEIS A056967 ) ภารกิจ:กำหนดอาร์เรย์ของจำนวนเต็มบวกเรียงลำดับตามค่าที่อธิบายคู่หลักในลำดับจากน้อยไปหามาก การสั่งซื้อไม่สำคัญระหว่างหมายเลขอินพุตที่นำไปสู่ค่าเดียวกัน อินพุต : อาร์เรย์ / รายการ / ชุดของจำนวนเต็มบวก ไม่อนุญาตให้นำหน้าศูนย์ในอินพุตและป้อนเป็นสตริง / รายการของตัวเลข / ฯลฯ ไม่ได้รับอนุญาต - อินพุตควรใกล้เคียงกับจำนวนเต็ม / ตัวเลขเนื่องจากภาษาของคุณสามารถใช้งานได้ เอาท์พุท : …

15
ช่วยฉันด้วย polyrhythms ของฉัน
ฉันเป็นนักดนตรีและฉันต้องการ polyrhythms มากขึ้นในชีวิตของฉัน! Polyrhythm เกิดขึ้นในดนตรี (และโดยธรรมชาติ) เมื่อมีเหตุการณ์สองเหตุการณ์ (ตบมือ, โน้ต, หิ่งห้อยที่กระพริบ ฯลฯ ) กำลังเกิดขึ้นในสองช่วงเวลาที่แตกต่างกัน เหตุการณ์สองชนิดนั้นเกิดขึ้นหลายครั้งในช่วงเวลาเดียวกัน หากฉันแตะด้วยมือซ้ายสองครั้งและด้วยมือขวาของฉัน 3 ครั้งในเวลาเดียวกันดูเหมือนเล็กน้อยดังนี้ ------ R . . . L . . ยัติภังค์ที่ด้านบนแสดงถึงความยาวของรูปแบบ polyrthmic ซึ่งเป็นพหุคูณสามัญที่ต่ำที่สุดหรือ 2 และ 3 ซึ่งสามารถเข้าใจได้ว่าเป็นจุดที่รูปแบบซ้ำ นอกจากนี้ยังมี 'metarhythm' ซึ่งเป็นรูปแบบที่เกิดขึ้นเมื่อมือทั้งสองแตะที่: ------ R . . . L . . M . ... นี่คือ polyrhythm ธรรมดาและเรียบง่ายมากที่มีอัตราส่วน 3: …
17 code-golf 

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