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

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

13
รายได้ตัวแปรราคา!
บทนำและเครดิต สมมติว่าคุณเป็นบาร์เทนเดอร์ คุณมีคนที่มีความสุขมากมายในบาร์ของคุณในเวลาส่วนใหญ่ แต่หลายคนเคยดื่มเครื่องดื่มเดียวกันและน้อยเกินไปสำหรับรสนิยมของคุณและคุณต้องการที่จะเปลี่ยน ดังนั้นคุณแนะนำระบบที่ราคาของเครื่องดื่มแปรผันขึ้นอยู่กับจำนวนที่ขายไปแล้ว แต่ไม่เคยแพงหรือน้อยกว่าเกณฑ์ที่กำหนด ด้วยเหตุผลแปลก ๆ บางอย่างคุณลืมที่จะติดตามเครื่องดื่มและราคาขายที่ถูกต้องเสมอและดังนั้นคุณต้องคิดถึงรหัส (= จดจำ!) สั้น ๆ ที่จะช่วยคุณคำนวณปริมาณเครื่องดื่ม ความท้าทายนี้ปรากฏในการสอบกลางภาคในปี 2012 ที่หลักสูตรการเขียนโปรแกรมการทำงานที่มหาวิทยาลัยของฉันและฉันก็มีอาจารย์ของฉันตกลงที่จะโพสต์ที่นี่ เราได้จัดทำโซลูชันตัวอย่างในภาษาของการสอบ อินพุต ข้อมูลที่คุณป้อนจะเป็นรายการสตริงที่ไม่มีช่องว่าง - นี่คือชื่อของเครื่องดื่มที่ขาย รับอินพุตโดยใช้วิธีการป้อนข้อมูลที่คุณต้องการยอมรับโดยทั่วไป เอาท์พุต ผลลัพธ์ของคุณจะเป็นตัวเลขเดียว - นี่คือรายได้ที่คุณสร้างขึ้นในเย็นนี้ ให้การส่งออกโดยใช้ที่ต้องการของคุณวิธีการส่งออกได้รับการยอมรับโดยทั่วไป จะทำอย่างไร? สิ่งนี้ใช้สำหรับเครื่องดื่มแต่ละรายการ: ราคาเริ่มต้นคือ 10 ทุกครั้งที่ซื้อเครื่องดื่มราคาของมันจะเพิ่มขึ้น 1 ต่อผู้ซื้อรายต่อไป ราคาสูงสุดคือ 50 หากเครื่องดื่มซื้อ 50 ราคาใหม่จะเป็น 10 อีกครั้ง งานของคุณคือการหารายได้โดยรวมที่สร้างขึ้นจากรายการเครื่องดื่มตามกฎข้างต้น ในกรณีที่คุณสงสัยว่า: "50 bucks แพงมากสำหรับเครื่องดื่ม!" นี่คือ 50-deci Bucks …
16 code-golf  math 

10
สร้างสตริงรั้งทั้งหมดของความยาว n
สตริง brace ถูกกำหนดเป็นสตริงที่ประกอบด้วยอักขระ*()[]ที่วงเล็บปีกกาตรงกันอย่างถูกต้อง: [brace-string] ::= [unit] || [unit] [brace-string] [unit] ::= "" || "*" || "(" [brace-string] ")" || "[" [brace-string] "]" นี่คือวงเล็บปีกกาที่ถูกต้อง: ((())***[]**)****[(())*]* แต่นี่ไม่ใช่: )( **(**[*](**) **([*)]** งานของคุณคือการเขียนโปรแกรม (หรือฟังก์ชั่น) ที่ได้รับเป็นจำนวนเต็มบวกnใช้ตัวเลขเป็น input และผล (หรือผลตอบแทน) nทุกสายรั้งที่ถูกต้องของความยาว ข้อมูลจำเพาะ คุณสามารถส่งออกสตริงในลำดับใดก็ได้ คุณอาจส่งออกเป็นรายการหรือสตริงที่คั่นด้วยอักขระอื่น โปรแกรมของคุณต้องจัดการกับ 0 อย่างถูกต้อง มี 1 เป็นไปรั้งสตริงของความยาว 0 ""ซึ่งเป็นสตริงที่ว่างเปล่าเป็น นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดที่ถูกต้อง - วัดเป็นไบต์ - …

10
พิมพ์บัตรลงคะแนน!
อย่างที่คุณรู้วันนี้เป็นวันเลือกตั้ง! งานของคุณในวันนี้คือการพิมพ์บัตรลงคะแนน หากอินพุตนั้นHillary Clintonพิมพ์: Hillary Clinton ===-----===> Donald Trump === ===> ____________ === ===> อย่างไรก็ตามหากอินพุตนั้นDonald Trumpพิมพ์: Hillary Clinton === ===> Donald Trump ===-----===> ____________ === ===> ถ้ามันเป็นอย่างอื่นเขียนมันในบรรทัดที่สาม: Hillary Clinton === ===> Donald Trump === ===> Oliver Ni ===-----===> (ในทางเทคนิคแล้วฉันยังไม่อายุ 18 เลย ... ) จำไว้ว่านี่คือcode-golfดังนั้นโค้ดที่มีจำนวนไบต์น้อยที่สุดจะเป็นผู้ชนะ

19
สะอึกสตริง
ความท้าทายของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ hiccups สตริง ควรใช้สตริงเป็นอินพุต (ผ่านวิธีมาตรฐาน) จากนั้นทำตามขั้นตอนเหล่านี้: สร้าง (ไม่จำเป็นต้องเหมือนกัน) จำนวนเต็มสุ่มnระหว่างวันที่ 1 และ 10 รวม รอnวินาที พิมพ์ตัวอักษรเริ่มต้น / ถัดไปnตัวอักษรของอินพุตหรือส่วนที่เหลือของอินพุตหากมีน้อยกว่าตัวอักษรnตัว หากมีอินพุตเหลือสำหรับพิมพ์ให้ย้อนกลับไปยังขั้นตอนที่ 1 กฎระเบียบ อินพุตจะเป็นสตริงที่ไม่ว่างที่มีตัวอักษร ASCII เท่านั้น (32-126) เวลาที่รอไม่ได้จะตรงnวินาที แต่มันต้องอยู่ใน 10% ของn คุณสามารถพิมพ์บรรทัดใหม่ต่อท้ายในแต่ละครั้งที่พิมพ์ส่วนของข้อความ ตัวอย่าง พื้นที่ที่นี่หมายถึง 1 วินาที หากอินพุตคือHiccupinator!เอาต์พุตอาจเป็น: Hic cupin a tor! เกณฑ์การให้คะแนน นี่คือรหัสกอล์ฟเพื่อให้รหัสที่สั้นที่สุดในไบต์ชนะ
16 code-golf  string 

10
Baley – Borwein – Plouffe ซ้ำคำซ้ำ
Baley – Borwein – Plouffe ซ้ำคำซ้ำ เราได้เห็นความท้าทายเกี่ยวกับ pi บน PPCG แล้ว แต่ก็ไม่มีสิ่งใดที่กำหนดอัลกอริทึมที่คุณควรใช้เป็นพิเศษ ผมต้องการที่จะเห็นการใช้งานของอัลกอริทึม Bailey-Borwein-Plouffeในภาษาใด ๆ nถึงการทำซ้ำ สูตรมีดังนี้: อัลกอริทึมของคุณควรแสดงผลซ้ำแต่ละครั้งจนถึง n โดยแสดงผลรวมกลางรวมทั้งผลลัพธ์สุดท้ายเพื่อสร้าง "piangle" คุณอาจใช้รูปแบบพหุนามที่ลดลงของอัลกอริทึมที่แสดงในหน้าวิกิพีเดีย ตัวอย่างการรันสำหรับn=50แสดงไว้ด้านล่าง: 3 3.1 3.14 3.141 3.1415 3.14159 3.141592 3.1415926 3.14159265 3.141592653 3.1415926535 3.14159265358 3.141592653589 3.1415926535897 3.14159265358979 3.141592653589793 3.1415926535897932 3.14159265358979323 3.141592653589793238 3.1415926535897932384 3.14159265358979323846 3.141592653589793238462 3.1415926535897932384626 3.14159265358979323846264 3.141592653589793238462643 3.1415926535897932384626433 3.14159265358979323846264338 …
16 code-golf  math  pi 

19
แวดวง N-Dim!
เขียนโปรแกรมที่ใช้ตัวเลขสองตัวเป็นอินพุต คนแรกคือจำนวนมิติ - 0 สำหรับจุด, 1 สำหรับเส้นตรง, 2 สำหรับวงกลม, 3 สำหรับทรงกลม ตัวเลขที่สองคือรัศมีของวัตถุหรือถ้าเป็น 1 มิติก็จะเป็นตัวเลข เอาท์พุท 0 สำหรับ 0 มิติ ผลลัพธ์คือความยาว / พื้นที่ / ปริมาตรของวัตถุ หากเราเรียกหมายเลขแรกหมายเลขnที่สองrและผลลัพธ์xเราจะได้รับ: สำหรับ n = 0, x = 1 สำหรับ n = 1, x = 2 × r สำหรับ n = 2, x = r 2 ×π …
16 code-golf  math 

3
เมทริกซ์ย่อยกลับด้านโดยสิ้นเชิง
(เเรงบันดาลใจจาก คำถามนี้ทางคณิตศาสตร์) คำจำกัดความ รับn x nตารางเมทริกซ์เราสามารถเรียกมันว่าถ้ามีบางเมทริกซ์ตารางBดังกล่าวว่าAB = BA = ฉันnกับฉันnเป็นเมทริกซ์เอกลักษณ์ขนาด(เมทริกซ์ที่มีเส้นทแยงมุมหลักและสิ่งอื่น) และABและBAแทนการคูณเมทริกซ์ปกติ(ฉันจะไม่เข้าไปที่นี่ - ไปเรียนพีชคณิตเชิงเส้น)invertiblen x nn x n10 จากที่เราสามารถเรียกm x nเมทริกซ์C totally invertibleถ้าทุกk x ksubmatrix (ระบุด้านล่าง) ของCคือ invertible ทั้งหมด,k > 1k <= (smaller of m,n) submatrix ถูกกำหนดให้เป็นเมทริกซ์ที่เกิดขึ้นหลังจากการลบจำนวนแถวและ / หรือคอลัมน์ใด ๆ จากเมทริกซ์ดั้งเดิม ตัวอย่างเช่น3x3เมทริกซ์Cด้านล่างสามารถเปลี่ยนเป็น2x2submatrix C 'ได้โดยการลบแถวแรก1 2 3และคอลัมน์กลาง2 5 8ดังนี้: C = [[1 …

14
ผลรวมของเชน
ลำดับ: 1เราเริ่มต้นที่ ก่อนอื่นเราจะเพิ่มค่า 1 ดัชนีปัจจุบันไปยังหมายเลขก่อนหน้าในลำดับ จากนั้นเราจะใช้การดำเนินการทางคณิตศาสตร์ต่อไปนี้ตามลำดับหากนำไปใช้กับค่าปัจจุบันนี้: หารด้วย2? => นอกจากนี้ หารด้วย 3 ? => การลบ หารด้วย4? => (เพิ่มเติมและ) ทวีคูณ ไม่หารด้วยค่า2, 3หรือ4? -> ดำเนินการกับผลรวมปัจจุบัน เอาท์พุท: เอาท์พุท 100 หมายเลขแรกในลำดับนี้: 1, 1, 21, 25, 30, 216, 223, 223, 2169, 2179, 2190, 2202, 2215, 2215, 2245, 2261, 2295, 2295, 2333, 2353, 2395, 2417, 56649, 56649, …

30
พิมพ์ tetration
การเตตเตจ, แทนด้วยa^^b, เป็นการยกกำลังซ้ำ ตัวอย่างเช่น2^^3คือ2^2^2ซึ่งคือ 16 ได้รับตัวเลขสองและขพิมพ์a^^b กรณีทดสอบ 1 2 -> 1 2 2 -> 4 5 2 -> 3125 3 3 -> 7625597484987 etc. สัญลักษณ์ทางวิทยาศาสตร์เป็นที่ยอมรับ จำไว้ว่านี่คือcode-golfดังนั้นโค้ดที่มีจำนวนไบต์น้อยที่สุดจะเป็นผู้ชนะ
16 code-golf  math  number 

1
เคล็ดลับสำหรับการเล่นกอล์ฟใน Starry
สิ่งใดที่คุณมีเคล็ดลับทั่วไปสำหรับการเล่นกอล์ฟในStarry ? ฉันกำลังมองหาความคิดที่สามารถนำไปใช้กับปัญหารหัสกอล์ฟและอย่างน้อยก็ค่อนข้างเฉพาะเจาะจงกับ Starry (เช่น "ลบความคิดเห็น" ไม่ใช่คำตอบ) กรุณาโพสต์หนึ่งเคล็ดลับต่อคำตอบ
16 code-golf  tips  starry 

13
ค้นหา Centroid ของรูปหลายเหลี่ยม
จากวิกิพีเดีย : เซนทรอยด์ของรูปหลายเหลี่ยมที่ไม่ได้ตัดกันที่กำหนดโดยจุดยอดn ( x 0 , y 0 ), ( x 1 , y 1 ), ... , ( x n - 1 , y n − 1 ) คือ จุด ( C x , C y ) โดยที่ และตำแหน่งAคือพื้นที่ที่ลงนามของรูปหลายเหลี่ยม ในสูตรเหล่านี้จุดยอดจะถือว่าเป็นตัวเลขตามลำดับการเกิดขึ้นตามแนวเส้นรอบวงของรูปหลายเหลี่ยม นอกจากนี้จุดสุดยอด ( x n , y n ) …

12
คำถามนี้มีคำตอบกี่คำ?
เขียนโปรแกรมหรือฟังก์ชั่นที่ส่งออกจำนวนตอบจำนวนคำถามที่มี โซลูชันของคุณยังควรทำงานเมื่อมีการเพิ่มคำตอบเพิ่มเติม ภาษาที่ทำงานในเบราว์เซอร์อาจถูกเรียกใช้จากคอนโซล js ขณะที่อยู่ในหน้านี้ มิฉะนั้นคุณอาจต้องดาวน์โหลดหน้านี้ โซลูชันหลายภาษาเช่นwgetการใช้หน้าเว็บและการแยกวิเคราะห์โดยใช้grepก็โอเค เพียงสรุปบรรทัดคำสั่งและแหล่งที่มาทั้งหมดที่ใช้ นี่คือรหัสกอล์ฟ คำตอบที่สั้นที่สุดในการชนะไบต์ แก้ไข: ให้อย่างน้อยหนึ่งครั้งที่ URL ของหน้านี้จะไม่นับรวมเป็นอินพุตหรือในแหล่งที่มา ไม่มีตัวย่อ URL ไม่มีข้อมูลที่เก็บไว้เช่นรับพารามิเตอร์เป็นต้นราคารอบ URL ยังคงนับถ้าจำเป็น การใช้ URL เป็นอินพุตก็ไม่เป็นไร หากคุณต้องการลบบางส่วนของ URL เช่น/how-many-answers...คุณทำได้ แต่อาจไม่ช่วยคุณได้

30
ทำรังสตริงภายในอาร์เรย์ n ครั้ง
คุณต้องสร้างฟังก์ชั่นที่สร้างสตริงsภายในอาร์เรย์nครั้ง >>> N("stackoverflow",2) [['stackoverflow']] พารามิเตอร์: s - สตริง ascii n - จำนวนเต็ม >= 0 กฎระเบียบ รหัสที่สั้นที่สุดชนะ การส่งออกจะเป็นที่ซ้อนกันarray, listหรือtuple(หรือคล้ายกันประเภทตามออกอาร์เรย์) กรณีทดสอบ >>> N("stackoverflow",0) 'stackoverflow' >>> N("stackoverflow",1) ['stackoverflow'] >>> N("stackoverflow",5) [[[[['stackoverflow']]]]] แรงบันดาลใจจาก: การซ้อนสตริงภายในรายการ nคูณคือรายการของรายการ
16 code-golf  string 

18
ความหลากหลายแบบดิจิทัล
1 <= b < infเป็นจำนวนเต็มบวกอาจจะเป็นตัวแทนในการเป็นฐานจำนวนเต็ม เมื่อแปลงเป็นฐานนั้นจะมีจำนวนหลักที่แตกต่างกัน จำนวนเต็มบวกใด ๆ ในฐาน1มี1หลักที่แตกต่างกัน จำนวนเต็มบวกมากที่สุดในฐาน2มี2ตัวเลขที่แตกต่างกันข้อยกเว้นที่เป็นผู้ที่อยู่ในรูปแบบที่มีเฉพาะ2^n - 11 ดังนั้นจำนวนเต็มบวกครั้งแรกที่อาจจะเป็นตัวแทนในการเป็นฐานจำนวนเต็มกับ1หลักที่เป็นเอกลักษณ์1และเป็นครั้งแรกที่อาจจะแทนด้วยตัวเลขที่แตกต่างกันคือ22 เราสามารถพูดได้ว่า1เป็นจำนวนเต็มแรกที่มีความหลากหลายทางดิจิตอล1และเป็นจำนวนเต็มแรกที่มีความหลากหลายทางดิจิตอล22 ท้าทาย: ป.ร. ให้ไว้เป็นจำนวนเต็มบวกnกลับจำนวนเต็มบวกเป็นครั้งแรก (ในฐานสิบ *) nที่มีความหลากหลายทางดิจิตอล * หากภาษาของคุณรองรับเฉพาะฐานเท่านั้น (เช่น unary หรือไบนารี) จากนั้นคุณอาจส่งออกในฐานนั้น อัลกอริทึมของคุณจะต้องทำงานในทางทฤษฎีสำหรับการป้อนจำนวนเต็มบวกใด ๆ : มันอาจล้มเหลวเนื่องจากความแม่นยำของจำนวนเต็มของภาษาของคุณเล็กเกินไปสำหรับการส่งออก; แต่อาจไม่ล้มเหลวเนื่องจากการแปลงฐานถูกกำหนดไว้ถึงบางขีด จำกัด เท่านั้น กรณีทดสอบ input output 1 1 2 2 3 11 4 75 5 694 6 8345 7 123717 …

7
บ้านของซานตาคลอส
บ้านของซานตาคลอส หมายเหตุ:นี่เป็นความท้าทายแรกที่ฉันพยายามตั้งไว้ มันผ่านแซนด์บ็อกซ์แล้ว แต่ถ้าคุณพบว่ามีบางอย่างผิดปกติโปรดอย่าเพิ่งลงคะแนน แต่แสดงความคิดเห็นเพื่อที่ฉันจะได้ปรับปรุงได้ พื้นหลัง มีปริศนาเด็กอายุที่ความท้าทายคือการวาดกล่องที่มีหลังคาและข้ามผ่านกลางโดยไม่ต้องยกปากกาของคุณจากกระดาษหรือข้ามเส้นใด ๆ สองครั้ง ในประเทศเยอรมนีเป็นที่รู้จักกันในนาม "das Haus des Nikolaus" หรือ "The House of Santa Claus" ฉันจำสิ่งที่เราเคยเรียกมันไม่ได้ สำหรับใครที่ไม่คุ้นเคยกับปริศนาที่รายละเอียดทั้งหมดที่มีอยู่ที่นี่ นี่คือตัวแทนศิลปะ ASCII ของบ้าน /\ /__\ |\/| |/\| ---- ท้าทาย เขียนโปรแกรมหรือฟังก์ชั่นเพื่อวาด House of Santa Claus ในภาษาที่คุณเลือก ฟังดูง่ายเกินไปหรือ นี่คือการจับ มันจะต้องส่งออกแต่ละขั้นตอนของการวาดภาพและปฏิบัติตามกฎของตัวต่อ โปรแกรมของคุณไม่จำเป็นต้องป้อนข้อมูลใด ๆ บ้านที่สร้างเสร็จจะต้องตรงตามที่แสดงด้านบน ตามเว็บไซต์ข้างต้นมี 44 โซลูชั่นที่เป็นไปได้ คุณสามารถใช้หนึ่งในนั้น นี่เป็นความท้าทายของ ASCII ดังนั้นคุณไม่จำเป็นต้องคำนวณวิธีแก้ปัญหา …

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