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

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

19
ผู้ใช้ Steam มีชื่อเสียงมากแค่ไหน? [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา บทนำ สำหรับผู้ที่ไม่คุ้นเคยกับไอน้ำ - หรืออย่างน้อยก็ในแง่มุมนี้โดยเฉพาะ: บ่อยครั้งที่โปรไฟล์ของผู้คนแสดงความคิดเห็นว่า "+ rep _____" หรือ "-rep _____" สิ่งเหล่านี้เป็นวิธีการที่ไม่เป็นทางการในการแสดงว่าคุณคิดว่าคนในชุมชนมีชื่อเสียงที่ดีหรือไม่ดีด้วยเหตุผลหลายประการ ความคิดเห็นดังกล่าวดูเหมือนว่า: + ตัวแทนผู้เล่นที่ดี + ตัวแทนที่เป็นประโยชน์ -rep แฮ็กเกอร์ -rep scammer งาน โปรแกรมจะต้องป้อนข้อมูลด้วยวิธีการยินยอมใด ๆ การป้อนข้อมูลประกอบด้วยสตริงที่มีการขึ้นบรรทัดใหม่ ( \n) ในตอนเริ่มต้นของแต่ละบรรทัด'+rep 'หรือ'-rep 'อาจมีอยู่ ส่วนที่เหลือของบรรทัดสามารถละทิ้งได้ หากบรรทัดไม่ได้ขึ้นต้นด้วย'+rep 'หรือ'-rep '(สังเกตพื้นที่ส่วนท้าย) บรรทัดนั้นควรถูกละเว้น โปรแกรมจะต้องเก็บคะแนนชื่อเสียงทั้งหมด เริ่มต้นที่0คะแนนนี้ควรจะเพิ่มขึ้นในทุกสายที่เริ่มต้นด้วย'+rep 'และ decremented '-rep 'ในทุกสายที่เริ่มต้นด้วย ผลลัพธ์นี้ควรเป็นผลลัพธ์ในแบบที่ตกลงกันไว้ กรณีทดสอบ …

3
ล่องแก่งปัญหา (ตัวแปรเป้)
ปริศนาแรกจากฉันคำแนะนำสำหรับการปรับปรุงที่ได้รับยินดี! สถานการณ์คือ; คุณทำงานเป็นผู้จัดการของ บริษัท ล่องแก่ง ทุกเช้าคุณจะได้รับรายชื่อการจองและคุณต้องเรียงมันเป็นแพ เขียนโปรแกรมหรือฟังก์ชั่นในภาษาที่คุณเลือกซึ่งทำเพื่อคุณ แพแต่ละแพมีnลูกค้าได้สูงสุดและการจองแต่ละครั้งสำหรับกลุ่มที่มีตั้งแต่ 1 ถึงnคน (รวม) ต้องปฏิบัติตามกฎต่อไปนี้ อาจไม่มีการแยกกลุ่ม หากพวกเขาจองด้วยกันพวกเขาจะต้องอยู่ในแพเดียวกัน จำนวนแพต้องลดให้น้อยที่สุด ภายใต้กฎก่อนหน้าทั้งสองกลุ่มจะต้องกระจายให้มากที่สุดเท่าที่จะทำได้ระหว่างแพ ปัจจัยการผลิต จำนวนn(คุณอาจคิดว่านี่เป็นจำนวนเต็มบวก) และขนาดของการจองทั้งหมด นี่อาจเป็นอาร์เรย์รายการหรือโครงสร้างข้อมูลที่คล้ายกันหากภาษาของคุณรองรับสิ่งดังกล่าว ทั้งหมดเหล่านี้จะเป็นจำนวนเต็มบวกระหว่าง 1 nและ ลำดับของการจองไม่ได้ถูกกำหนดไว้และไม่สำคัญ เอาท์พุต รายการหมายเลขการจองแบ่งเป็นโหลดแพ การจัดกลุ่มจะต้องระบุอย่างไม่น่าสงสัยเช่น; รายการหรืออาร์เรย์ของอาร์เรย์ รายการที่คั่นด้วยเครื่องหมายจุลภาคสำหรับแต่ละแพ ขึ้นบรรทัดใหม่แต่ละแพ วิธีที่คุณใช้กฎข้อที่สามนั้นขึ้นอยู่กับคุณ แต่สิ่งนี้อาจเกี่ยวข้องกับการค้นหาอัตราการครอบครองแพโดยเฉลี่ยและลดความเบี่ยงเบนจากกฎให้น้อยที่สุดเท่าที่จะทำได้ นี่คือกรณีทดสอบบางส่วน n Bookings Output 6 [2,5] [5],[2] 4 [1,1,1,1,1] [1,1,1],[1,1] 6 [2,3,2] [2,2],[3] 6 [2,3,2,3] [2,3],[2,3] 6 [2,3,2,3,2] …

16
ฉันให้การเรียงสับเปลี่ยน Nth กับคุณ
อินพุต:ลำดับของตัวอักษรตัวพิมพ์ใหญ่ (ASCII [65; 90]) ซึ่งเป็นลำดับที่N * การเรียงคำย่อเกี่ยวกับพจนานุกรมของมัลติเซ็ตของอักขระ * การเรียงสับเปลี่ยนจะมีหมายเลขตั้งแต่ 0 หรือ 1 ขึ้นไป เอาท์พุท:ฐาน -10 จำนวนเต็มN Rulez อาจมีการทำซ้ำ (นั่นคือความท้าทายนี้แตกต่างจาก สิ่งนี้ ) อักขระถูกจัดเรียงตามค่า ASCII ในกรณีของการป้อนข้อมูลของความยาวน้อยกว่าหรือเท่ากับ 1 การป้อนข้อมูลคือการเปลี่ยนแปลงครั้งแรกและผลที่ได้คือ0หรือ1ตามลำดับ การเปลี่ยนแปลงครั้งแรกคือสิ่งที่อักขระซ้ายสุดมีค่าต่ำสุดอักขระขวาสุดมีค่าสูงสุดและลำดับของอักขระระหว่างอักขระตัวแรกและอักขระสุดท้ายคือการเรียงสับเปลี่ยนครั้งแรกของชุดอักขระหลายชุด(นิยามแบบเรียกซ้ำ!) รายการที่สั้นที่สุดชนะ ตัวอย่าง อินพุตAABสร้างเอาต์พุต0 อินพุตABAสร้างเอาต์พุต1 อินพุตBAAสร้างเอาต์พุต2 อินพุตZZZสร้างเอาต์พุต0 อินพุตDCBAสร้างเอาต์พุต23 แก้ไข ความรุ่งโรจน์พิเศษสำหรับผู้ที่สามารถหาวิธีแก้ปัญหาที่ไม่ได้สร้างการเรียงสับเปลี่ยนทั้งหมดแล้วจึงค้นหาอินพุท นั่นคือความท้าทาย

4
ภายในพหุนามพหุนาม
ท้าทาย ได้รับพหุนามpที่มีสัมประสิทธิ์ที่แท้จริงของการสั่งซื้อ1และปริญญาnหาพหุนามอีกqในระดับที่มากที่สุดnเช่นนั้น(p∘q)(X) = p(q(X)) ≡ X mod X^(n+1)หรือในคำอื่น ๆ เช่นที่p(q(X)) = X + h(X)ที่เป็นพหุนามโดยพลการด้วยh ord(h) ≥ n+1พหุนามqถูกกำหนดโดยpเฉพาะ สำหรับพหุนามp(X) = a(n)*X^n + a(n+1)*X^(n+1) + ... + a(m)*X^mที่n <= mและa(n) ≠ 0, a(m) ≠ 0เราบอกว่าnเป็นคำสั่งของpและmเป็นระดับpของ การทำให้เข้าใจง่าย : คุณสามารถสันนิษฐานpได้ว่ามีค่าสัมประสิทธิ์จำนวนเต็มและa(1)=1(ดังนั้นp(X) = X + [some integral polynomial of order 2]) ในกรณีนี้qก็มีสัมประสิทธิ์ครบถ้วนเช่นกัน วัตถุประสงค์ของการทำให้เข้าใจง่ายนี้คือการหลีกเลี่ยงปัญหาที่มีจำนวนจุดลอยตัว อย่างไรก็ตามมีตัวอย่างที่ไม่ครบถ้วนเพื่อวัตถุประสงค์ในการแสดงภาพประกอบ ตัวอย่าง พิจารณาชุดเทย์เลอร์exp(x)-1 …

8
แนะนำตัวอักษร
แนะนำตัวอักษร ได้รับอาร์เรย์ของทิศทางที่มีการกำหนดทิศทางดังต่อไปนี้: NW N NE W . E SW S SE หรือเป็นดัชนี (คุณสามารถใช้ดัชนีเหล่านี้สำหรับเส้นทางแทนที่จะเป็นสตริงด้านบน): 0 1 2 3 . 4 5 6 7 คุณสามารถเลือกรูปแบบใดรูปแบบหนึ่งโดยไม่จำเป็นต้องรองรับทั้งสองรูปแบบ สร้างสตริงตัวอักษรที่สอดคล้องกันซึ่งแสดงถึงเส้นทางที่วาดเริ่มต้นด้วย A. จำนวนเส้นทางจะไม่เกิน 25 ซึ่งหมายความว่ามันไม่สามารถผ่านไปได้Zดังนั้นคุณไม่ต้องจัดการกับสถานการณ์นี้ รูปแบบอินพุตอื่นจะไม่ได้รับการยอมรับเว้นแต่คุณจะสามารถอธิบายได้ว่าทำไมรูปแบบเหล่านี้ไม่ทำงานเนื่องจากข้อ จำกัด ด้านภาษา สิ่งนี้ง่ายต่อการอธิบายโดยใช้ตัวอย่างที่ได้ผลจริง ดังนั้นให้ดูตัวอย่างที่รวดเร็ว: [E,SE,N,S,S,S,NW,W,N] or [4,7,1,6,6,6,0,3,1] เริ่มต้นด้วย A. เสมอ A ไปทางตะวันออกถึง B. A-B ไปทางตะวันออกเฉียงใต้ถึง C. A-B \ C ไปทางเหนือถึง D. …

9
มันอยู่ในชุดคันทอร์หรือไม่?
ความท้าทาย สำหรับความท้าทายนี้คุณควรตรวจสอบว่าตัวเลขที่กำหนดอยู่ในชุดคันทอร์หรือไม่ ก่อนอื่นเรามากำหนดชุดคันทอร์กันก่อน ก่อนอื่นให้เริ่มด้วยตัวเลขระหว่าง 0 ถึง 1 หมายเลขใด ๆ ที่อยู่นอกช่วงนี้ไม่ได้อยู่ในชุดคันทอร์ ทีนี้ลองแบ่งตัวเลขออกเป็นสามส่วนเท่า ๆ กัน: [0,1 / 3], [1 / 3,2 / 3], [2/3, 1] หมายเลขใด ๆ ที่ไม่อยู่ในช่วงของส่วนแรกและส่วนสุดท้ายไม่อยู่ในชุดคันทอร์ ตอนนี้คุณทำขั้นตอนนี้ซ้ำสำหรับกลุ่ม [0,1 / 3] และ [2/3, 1] จากนั้นคุณทำซ้ำในสิ่งที่เหลืออยู่ คุณทำเช่นนี้ตลอดไป ในท้ายที่สุดตัวเลขทั้งหมดที่เหลืออยู่จะอยู่ในชุดคันทอร์ นี่คือไดอะแกรมของการทำซ้ำหกครั้งแรก: อินพุต สองจำนวนเต็มและx ตัวหารร่วมที่ยิ่งใหญ่ที่สุดของและเป็น 1 เว้นแต่y 0 < y < 2^15 0 <= x …

7
ค้นหาคำ Numpad
รับจำนวนเต็มตั้งแต่ 1 ถึง 999 รวมเอาท์พุทค่าความจริงถ้ามันปรากฏในแนวนอนแนวตั้งหรือแนวทแยงมุมทั้งไปข้างหน้าหรือข้างหลังทุกที่ในตาราง 3x3 ของตัวเลข 1-9 บนแป้นตัวเลขมาตรฐาน: 789 456 123 หากหมายเลขไม่ปรากฏขึ้นให้ส่งออกค่าเท็จ ตัวเลข 65 ตัวที่คุณต้องใช้ในการบอกความจริงคือ: 1 2 3 4 5 6 7 8 9 12 14 15 21 23 24 25 26 32 35 36 41 42 45 47 48 51 52 53 54 56 57 58 59 62 …

17
Poking พิกเซลแบบสุ่ม
งานของคุณง่าย: เขียนโปรแกรมที่จะแทนที่พิกเซลแบบสุ่มในสี่เหลี่ยมสีดำ 16px * 8px (ความกว้างคูณความสูง) ด้วยพิกเซลสีขาว หลุมจะต้องสุ่มอย่างสม่ำเสมอและคุณควรส่งออกภาพ 16px คูณ 8 px โดยใส่พิกเซลสีขาว แทนที่เพียง 1 พิกเซลต่อคอลัมน์ (รวม 16 พิกเซลที่ถูกแทนที่) คุณไม่ต้องป้อนข้อมูลใด ๆ และคุณไม่สามารถพึ่งพาภาพที่จัดเก็บไว้ที่อื่นบนคอมพิวเตอร์ นี่คือรหัสกอล์ฟเพื่อให้โปรแกรมที่มีจำนวนไบต์สั้นที่สุดชนะ!

3
ปริศนาของ Piet (Mondrian)
สำหรับข้อมูลเพิ่มเติมดูวิดีโอนี้และไปที่A276523สำหรับลำดับที่เกี่ยวข้อง ปริศนา Mondrian (สำหรับจำนวนเต็มn) มีดังต่อไปนี้: ใส่สี่เหลี่ยมที่ไม่สอดคล้องกันลงในn*nตารางสี่เหลี่ยม อะไรคือความแตกต่างที่เล็กที่สุดระหว่างสี่เหลี่ยมที่ใหญ่ที่สุดกับสี่เหลี่ยมเล็กที่สุด? สำหรับ6ความแตกต่างที่ดีที่สุดสำหรับM(6)คือ5และสามารถแสดงให้เห็นเช่น: ___________ | |S|_______| | | | L | | |_|_______| | | | | | |_____|___| |_|_________| (fig. I) สี่เหลี่ยมผืนผ้าใหญ่ที่สุด (L) มีพื้นที่2 * 4 = 8และสี่เหลี่ยมเล็กที่สุด (S) 1 * 3 = 3มีพื้นที่ 8 - 3 = 5ดังนั้นความแตกต่างคือ เก็บไว้ในใจว่าขณะนี้ยังไม่มีการแก้ปัญหาที่ดีที่สุดสำหรับการn > 44ได้รับพบว่า งานของคุณคือการสร้างโปรแกรมที่สร้างตาราง Mondrian …

7
ตัวอย่างลำดับแบบไม่ลด
อินพุต:สองจำนวนเต็ม n และ k ที่กำหนดในรูปแบบใด ๆ ที่สะดวกสำหรับรหัสของคุณ เอาท์พุทลำดับที่ไม่ลดลงแบบสุ่มของจำนวนเต็ม k แต่ละค่าในช่วง 1 ถึง n ควรเลือกตัวอย่างอย่างสม่ำเสมอจากลำดับที่ไม่ลดจำนวนทั้งหมดของ k จำนวนเต็มด้วยจำนวนเต็มในช่วง 1 ถึง n เอาต์พุตสามารถอยู่ในรูปแบบที่สมเหตุสมผลที่คุณเห็นว่าสะดวก คุณสามารถใช้เครื่องกำเนิดไฟฟ้าแบบสุ่มหลอกสิ่งที่คุณชื่นชอบห้องสมุด / ภาษาให้ เราสามารถสรุปได้ว่าจำนวนเต็ม n, k> 0 ตัวอย่าง พูดว่า n, k = 2 ลำดับที่ไม่ลดลงคือ 1,1 1,2 2,2 แต่ละลำดับควรมีความน่าจะเป็น 1/3 ของผลลัพธ์ การ จำกัด รหัสของคุณควรทำงานในไม่เกินสองสามวินาทีสำหรับ k = 20 และ n = 100 …

3
ปอกเปลือกมันฝรั่ง
นี่คือมันฝรั่ง: @@ @@@@ @@@@@@ @@@@@@ @@@@ @@ โดยทั่วไปมันฝรั่งขนาด N ถูกกำหนดให้เป็นรูปร่างดังต่อไปนี้: ถ้า N เป็นเลขคู่จะมี@สัญลักษณ์อยู่ตรงกลาง 2 สัญลักษณ์ตามด้วย@สัญลักษณ์ศูนย์กลาง 4 อันตามด้วย@สัญลักษณ์ศูนย์กลาง 6 อันจนถึง@สัญลักษณ์ที่อยู่กึ่งกลาง N ทั้งหมด จากนั้น@สัญลักษณ์กึ่งกลาง N ตามด้วยสัญลักษณ์กึ่งกลางN-2 @ไปจนถึง 2 หาก N เป็นเลขคี่มันฝรั่งขนาด N จะถูกสร้างขึ้นในลักษณะเดียวกับที่อธิบายข้างต้น แต่เราเริ่มต้นด้วย 1 @สัญลักษณ์แทนที่จะเป็น 2 . มันฝรั่งถูกปอกเปลือกโดยเริ่มต้นที่มุมขวาบนและลบหนึ่ง@ป้ายในแต่ละขั้นตอนไปในรูปแบบทวนเข็มนาฬิกา ตัวอย่างเช่นการปอกมันฝรั่งขนาด 3 ออกมาเป็นแบบนี้: @ @@@ @@@ @ ​ @@@ @@@ @ ​ @@ …

13
การคูณซิป
บทนำ ให้มีกำหนดดำเนินการเกี่ยวกับคณิตศาสตร์ใหม่ซึ่งผมเรียกคูณซิป หากต้องการซิปคูณจำนวนเต็มสองค่าที่ไม่ใช่ค่าลบคุณจะต้องเพิ่มศูนย์นำหน้าเพื่อทำการจับคู่ความยาวคูณตัวเลขฐาน 10 หลักที่สอดคล้องกันเพิ่มศูนย์นำหน้าไปยังผลลัพธ์เพื่อรับตัวเลข 2 หลักต่อกันและวางศูนย์นำหน้า นี่คือตัวอย่างที่มีA = 1276และB = 933024 : 1. Add leading zeros A = 001276 B = 933024 2. Multiply digit-wise A = 0 0 1 2 7 6 B = 9 9 3 0 2 4 -> 0 0 3 0 14 24 3. …

11
ค้นหาประมุข!
เอมิรัลนั้นเป็นไพรเมอร์ที่ไม่ใช่พาลินโดรมิกซึ่งเมื่อกลับกันก็จะเป็นไพร์มด้วยเช่นกัน รายชื่อของฐาน 10 emirps ที่สามารถพบได้ในOEIS หกคนแรกคือ: 13, 17, 31, 37, 71, 73 อย่างไรก็ตามเนื่องจากกฎการกลับรายการ emirps จะแตกต่างกันในแต่ละฐาน ตัวอย่างเช่น emirps ไบนารีหกตัวแรกคือ: Bin | 1011, 1101, 10111, 11101, 101001, 100101 Dec | (11 , 13 , 23 , 29 , 37 , 41 ) ... และในฐานสิบหกพวกเขาคือ: Hex | 17, 1F, 35, 3B, 3D, 53 …

5
ป้ายแสดงเวลาเปิดทำการของร้านกาแฟ
คุณอาจเห็นสัญญาณเหล่านี้ที่ประตูของร้านค้าต่างๆ: เวลาทำการ จันทร์ - ศุกร์ 0900-1800 เสาร์ - อาทิตย์ 1100-1530 ภารกิจที่นี่คือการสร้างสัญญาณเช่นนั้นจัดกลุ่มวันติดต่อกันด้วยเวลาเปิดทำการเดียวกันจากรายการเวลาทำการตลอดทั้งสัปดาห์ โปรดทราบว่าสัปดาห์ "ล้อมรอบ" สำหรับสิ่งที่ถือว่าต่อเนื่องกัน การป้อนข้อมูล: 7 องค์ประกอบซึ่งแสดงเวลาเปิดทำการของแต่ละวันในหนึ่งสัปดาห์เริ่มต้นด้วยวันจันทร์ แต่ละองค์ประกอบเป็นสตริงบนฟอร์ม XXXX-XXXX อินพุตตัวอย่าง: 0900-1800 0900-1800 0930-1730 0930-1730 0900-1500 1100-1500 1100-1500 มันก็โอเคที่จะส่งอินพุตเป็นอาร์เรย์ (เช่นอินพุทไปยังฟังก์ชั่นถ้าคุณไม่ได้อ่านจาก stdin) เอาท์พุท: รายการของเวลาทำการที่วันติดต่อกันที่มีเวลาเปิดทำการเดียวกันแสดงเป็นช่วง โปรดทราบว่าวันอาทิตย์ (วันสุดท้าย) และวันจันทร์ (วันแรก) ก็เป็นวันที่ติดต่อกันเช่นกัน วันที่วันนั้นไม่มีเวลาทำการเหมือนกันกับวันก่อนหรือหลังถูกพิมพ์ด้วยตัวเอง วันที่ระบุไว้เป็นตัวอักษรตัวเล็กสามตัว: จันทร์อังคารพุธพฤหัสบดีเสาร์อาทิตย์ โปรดจำไว้ว่าองค์ประกอบแรกในอินพุตที่สอดคล้องกับจันทร์ถัดจากอังคาร ฯลฯ เวลาเปิดทำการจะปรากฏในอินพุท ตัวอย่างสองตัวอย่าง mon-fri 0900-1800, sat-sun 1100-1500 mon-wed 1030-1530, …
20 code-golf 

30
แสดงนาฬิกาดิจิตอล
แสดงนาฬิกาดิจิตอล (ฉันเห็นว่ามีความท้าทายเกี่ยวกับนาฬิกามากมายฉันได้ลองอ่านพวกเขาทั้งหมดฉันค่อนข้างแน่ใจว่านี่ไม่เหมือนใคร) เขียนโค้ดบางส่วนที่ปรับปรุงอย่างต่อเนื่องนาฬิกาดิจิตอลแสดงในรูปแบบh:m:sที่h, mและsสามารถครอบครอง 1 หรือ 2 ตัวละครแต่ละคน ข้อ จำกัด ในแง่ง่าย ๆ เป็น @BlueEyedBeast ใส่ไว้ฉันต้องการให้มันแทนที่เวลาที่แสดง ไม่อนุญาตให้ขึ้นบรรทัดใหม่ อนุญาตให้เว้นวรรคต่อท้าย ไม่อนุญาตให้ใช้อักขระต่อท้ายอื่น ๆ ไม่ควรพลาดเป็นวินาที (57 -> 59 ไม่อนุญาต) อนุญาตให้ใช้หมายเลขที่ขึ้นต้นด้วย "0" ได้ตราบใดที่ตัวเลขเหล่านั้นมีอักขระไม่เกิน 2 ตัว รหัสจะต้องไม่ยอมรับอินพุตใด ๆ หากภาษาของคุณไม่สามารถรับเวลาปัจจุบันโดยไม่มีการป้อนข้อมูลคุณอาจใช้สำหรับการป้อนข้อมูลสูงสุด 8 ไบต์ในวิธีที่ได้รับอนุญาตมาตรฐาน เอาต์พุตต้องเป็น stdout นี่คือ codegolf ดังนั้นคำตอบที่สั้นที่สุดชนะ! ตัวอย่าง ฉันกำลังทำงานกับภาษาที่ชื่อ *> <> (ปลาดาว) เพราะโปรแกรมแบบนี้เป็นไปไม่ได้ใน> <> (แค่รอไฟล์ i / o) …
20 code-golf 

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