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

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

30
ริ้วรอยแตก
เราสามารถกำหนดริ้วหารkของจำนวนnโดยการหาที่ไม่ใช่เชิงลบที่เล็กที่สุดจำนวนเต็มkดังกล่าวว่าไม่หารด้วยn+kk+1 ท้าทาย ในภาษาที่คุณเลือกเขียนโปรแกรมหรือฟังก์ชั่นที่ส่งออกหรือส่งกลับ Divisibility Streak ของอินพุตของคุณ ตัวอย่าง: n=13: 13 is divisible by 1 14 is divisible by 2 15 is divisible by 3 16 is divisible by 4 17 is not divisible by 5 ริ้ว Divisibilty ของ13เป็น4 n=120: 120 is divisible by 1 121 is not divisible by 2 ริ้ว …

30
พิมพ์ Dichotomy Paradox ของ Zeno อย่างไม่สิ้นสุด (1 / (2 ^ n))
Wikipedia: Dichotomy Paradot ของ Zeno นักคณิตศาสตร์จำนวนไม่ จำกัด เดินเข้าไปในบาร์ คนแรกสั่งเบียร์ อันที่สองสั่งเบียร์ครึ่งหนึ่ง คนที่สามสั่งเบียร์หนึ่งในสี่ บาร์เทนเดอร์หยุดพวกเขาเทเบียร์สองขวดแล้วพูดว่า "คุณเป็นคนงี่เง่าทุกคน" Reddit พิมพ์ซีรี่ส์ต่อไปนี้ตราบเท่าที่โปรแกรมทำงานโดยมีตัวหารของแต่ละรายการถูกคูณด้วยสองในแต่ละครั้ง: 1 + 1/2 + 1/4 + 1/8 + 1/16 + 1/32 + ... ในฐานะที่เป็นวิธีการที่อินฟินิตี้รวมของลำดับนี้แนวทางn2 กฎระเบียบ ไม่คุณไม่สามารถพิมพ์2ได้ คุณไม่สามารถพิมพ์1/1เป็นรายการแรก คุณสามารถลบช่องว่าง1+1/2+...หรือเพิ่มช่องว่าง1 + 1 / 2 + ...ตามที่คุณต้องการ คุณสามารถใช้การขึ้นบรรทัดใหม่แทนการเว้นวรรคเป็นตัวคั่นเนื่องจากอุปสงค์ที่เป็นที่นิยม คุณอาจผนวกs .จำนวนคง0ที่เข้ากับตัวส่วนถ้าจำเป็น "อนันต์" หมายถึงไม่มีความล่าช้าที่ไม่จำเป็นและนานที่สุดเท่าที่เป็นไปได้ถูก จำกัด โดยข้อมูลจำเพาะของระบบปัจจุบัน (ตัวแปร) แต่ไม่ จำกัด โดยภาษาปัจจุบันของคุณ …

18
Uniquify Identifiers
บทนำ ตามคำจำกัดความตัวระบุที่ไม่ซ้ำกันควรไม่ซ้ำกัน การมีตัวระบุหลายตัวที่เหมือนกันจะทำให้เกิดการดึงข้อมูลที่ไม่คาดคิด แต่ด้วยข้อมูลที่มาพร้อมกันจากหลาย ๆ แหล่งจึงเป็นเรื่องยากที่จะรับประกันความเป็นเอกลักษณ์ เขียนฟังก์ชั่นที่ไม่ซ้ำรายการของตัวระบุ นี่อาจเป็นปริศนาตัวต่อที่แย่ที่สุดที่ฉันเคยเขียน แต่คุณก็เข้าใจ ความต้องการ ให้รายการของจำนวนเต็มบวกศูนย์หรือมากกว่าให้ใช้กฎต่อไปนี้กับแต่ละหมายเลขตั้งแต่แรกถึงสุดท้าย: หากหมายเลขเป็นหมายเลขแรกให้เก็บไว้ หากพบหมายเลขก่อนหน้านี้ให้แทนที่ด้วยจำนวนเต็มบวกต่ำสุดที่ไม่พบที่ใดก็ได้ในรายการอินพุตทั้งหมดหรือเอาต์พุตใด ๆ ที่มีอยู่ สำหรับการแก้ปัญหา: วิธีแก้ปัญหาอาจเป็นโปรแกรมหรือฟังก์ชั่น อินพุตอาจเป็นสตริงอาร์เรย์ส่งผ่านเป็นอาร์กิวเมนต์หรืออินพุตคีย์บอร์ด ผลลัพธ์อาจเป็นสตริงอาร์เรย์หรือพิมพ์ไปที่หน้าจอ ตัวเลขทั้งหมดในรายการเอาท์พุทจะแตกต่างกัน สมมติฐาน รายการอินพุตนั้นสะอาด มันมีจำนวนเต็มบวกเท่านั้น จำนวนเต็มบวกมีช่วงตั้งแต่ 1 ถึง 2 31 -1 หน่วยความจำน้อยกว่า 256 MB สำหรับตัวแปรของโปรแกรมของคุณ (โดยทั่วไปจะไม่อนุญาตให้ใช้อาร์เรย์ 2,147,483,648 องค์ประกอบ) กรณีทดสอบ Input: empty Output: empty Input: 5 Output: 5 Input: 1, 4, 2, 5, …

26
ผลรวมของแถวและคอลัมน์แรกจากนั้นแถวและคอลัมน์ที่สอง…และอื่น ๆ
ใช้เมทริกซ์ / อาร์เรย์ที่ไม่ว่างเปล่าซึ่งมีจำนวนเต็มบวกเป็นอินพุต กลับไปตามลำดับผลรวมของแถวและคอลัมน์แรกจากนั้นแถวและคอลัมน์ที่สองและดำเนินการต่อไปจนกว่าจะไม่มีแถวหรือคอลัมน์อีกต่อไป สมมติว่าอินพุตคือ: 2 10 10 2 4 9 7 7 2 9 1 7 6 2 4 7 1 4 8 9 ดังนั้นผลลัพธ์ควรเป็น: 45, 33, 16, 17 เพราะ: 2+9+1+7+10+10+2+4=45, 7+7+1+7+2+9=33, 6+4+2+4=16, 8+9=17. กรณีทดสอบ: กรณีทดสอบอยู่ในรูปแบบต่อไปนี้: Input --- Output 5 --- 5 .......... 1 4 ---- 5 .......... 7 …
31 code-golf  math  matrix 

22
สร้างทอร์นาโด
พายุทอร์นาโดมีหน้าตาแบบนี้ ######## ####### ###### ##### #### ### ## # พายุทอร์นาโดนี้เริ่มต้นด้วยความกว้างnและในแต่ละบรรทัดถัดไปตัวละครจะถูกลบออกจากด้านซ้ายหรือด้านขวาขึ้นอยู่กับอินพุต อินพุต อินพุตจะเป็นรายการของค่าที่ไม่ซ้ำกันสองค่าใด ๆ (สตริงของอักขระที่ไม่ซ้ำสองตัวทำงานเช่นกัน) และจำนวนเต็มบวกที่เป็นตัวเลือกเพื่อระบุความกว้างเริ่มต้น หากไม่ได้เลือกจำนวนเต็มความกว้างเริ่มต้นคือ 1 มากกว่าความยาวของรายการ nขอให้เริ่มต้นความกว้าง วิธีทำทอร์นาโด ในตัวอย่างของฉันฉันเลือกรายการที่จะมี 1 s และ0s แม้ว่าคุณอาจเลือกค่าคงที่ที่แตกต่างกันสองค่าหรือสตริงของอักขระคงที่ที่แตกต่างกันสองตัว แถวแรกจะประกอบด้วย nอักขระที่ไม่ใช่ช่องว่าง (คุณสามารถเลือกอักขระที่สอดคล้องกันได้ฉันเลือก#ตัวอย่าง) จากนั้นสำหรับแต่ละหมายเลขในรายการถ้าเป็นหมายเลข 0ให้ลบอักขระด้านซ้ายและสร้างแถวใหม่ ถ้าเป็น1ให้ลบตัวอักษรที่ถูกต้องออกและสร้างแถวใหม่ ดังนั้นพายุทอร์นาโดข้างต้นคือผลลัพธ์สำหรับ 8, [1, 0, 0, 0, 1, 0, 0]ดังนั้นทอร์นาโดข้างต้นเป็นผลลัพธ์สำหรับ เอาท์พุต เอาต์พุตสามารถเป็นรายการของสตริงรายการของอักขระหรือสตริงหลายบรรทัด อนุญาตให้ใช้ช่องว่างต่อท้ายในแต่ละบรรทัดและอนุญาตให้ขึ้นบรรทัดใหม่ที่ท้ายได้ กรณีทดสอบ testcases 1, 0เหล่านี้รวมถึงความกว้างและการใช้งานเริ่มต้นรายการ 5, [1,0,0,1] ##### …

30
ทำกล่องแหลมคม
รับจำนวนเต็มบวกสองค่า W และ H ส่งออกกล่อง ASCII-art ซึ่งเส้นขอบทำจากเครื่องหมายทับ ( /และ\) ด้วย W "spikes" ที่ขอบด้านบนและด้านล่างและ H "spikes" ที่ขอบซ้ายและขวา การตกแต่งภายในของกล่องเต็มไปด้วยช่องว่าง "ขัดขวาง" เป็นเพียงสองสแลชมารวมกันเพื่อสร้างรูปร่างลูกศร: /\ \/ / \ \ / ดังนั้นผลลัพธ์สำหรับW = 4, H = 3จะเป็น /\/\/\/\ \ / / \ \ / / \ \/\/\/\/ เนื่องจากมีหนามแหลมด้านบนชี้ขึ้น 4 ตัว 4 ที่ด้านล่างชี้ลง 3 ด้านซ้ายชี้ไปทางซ้ายและ 3 ทางขวาชี้ …

24
วาดไอคอนเบนซีน hegaxon ของ HyperNeutrino ใน ASCII
ในการเฉลิมฉลองHyperNeutrinoรับกลับบัญชีและตัวแทนของเขาต่อไปนี้นาย Xcoder ขอโทษสำหรับการหมุนรูปภาพเพื่อความสามารถในการวาด พิมพ์หรือแสดงผลงานศิลปะ ASCII นี้อย่างแน่นอน คุณอาจมีช่องว่างต่อท้ายและ / หรือขึ้นบรรทัดใหม่ _______________ / \ / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ \ / \ / \ / \ / \ _____________ / \_______________/ สิ่งนี้แสดงให้เห็นว่าหนึ่งในสองของโครงสร้างกำทอนของเบนซีนโมเลกุล ที่เกี่ยวข้อง: รูปหกเหลี่ยมศูนย์กลาง , รูปหกเหลี่ยมที่เติมดอกจัน ลีดเดอร์บอร์ด: …

7
โซ่โดมิโนที่ยาวที่สุด
คำอธิบายการท้าทาย แต้มเป็นเกมที่เล่นกับกระเบื้องที่มีสองค่าบน - หนึ่งด้านซ้ายด้านขวาเช่นหรือ[2|4] [4|5]สองแผ่นสามารถรวมเข้าด้วยกันหากพวกเขามีค่าทั่วไป ไพ่สองใบด้านบนสามารถเข้าร่วมได้เช่นนี้: [2|4][4|5] เราจะเรียกลำดับของnกระเบื้องเข้าร่วมห่วงโซ่ยาว n แน่นอนกระเบื้องสามารถหมุนเพื่อให้กระเบื้อง[1|2], [1|3]และ[5|3]สามารถจัดใหม่เข้าไปในห่วงโซ่[2|1][1|3][3|5]ของความยาว 3 รับรายการคู่ของจำนวนเต็มกำหนดความยาวของห่วงโซ่ที่ยาวที่สุดที่สามารถเกิดขึ้นได้โดยใช้กระเบื้องเหล่านี้ หากรายการว่างเปล่าคำตอบที่ถูกต้องคือ0(โปรดทราบว่าคุณสามารถสร้างห่วงโซ่ความยาว1จากรายการไทล์ที่ไม่ว่างเปล่า) ตัวอย่างอินพุต / เอาต์พุต [(0, -1), (1, -1), (0, 3), (3, 0), (3, 1), (-2, -1), (0, -1), (2, -2), (-1, 2), (3, -3)] -> 10 ([-1|0][0|-1][-1|2][2|-2][-2|-1][-1|1][1|3][3|0][0|3][3|-3]) [(17, -7), (4, -9), (12, -3), (-17, -17), (14, -10), …

26
เหลือเวลาอีกเท่าไร
โปรแกรม คุณจะได้รับสองสายและB Aคือตำแหน่งปัจจุบันที่ตัวจับเวลาของคุณอยู่ที่และBคือตำแหน่งที่ตัวจับเวลาของคุณจะหยุด สตริงทั้งสองอยู่ในรูปแบบm: ss คุณต้องเขียนโปรแกรมที่กำหนดจำนวนของเวลาที่เหลือซึ่งก็ควรจะจัดรูปแบบเป็นm: ssหรือmm: ss ตัวอย่าง 0:00 0:01 -> 0:01 0:55 1:00 -> 0:05 1:45 3:15 -> 1:30
31 code-golf  string  date 

30
ยืนยันคำตอบ
ที่รันไทม์ให้กระตุ้นสำหรับสายของใส่จนสิ่งที่ปัจจัยการผลิตของผู้ใช้ (นอกเหนือจากการขึ้นบรรทัดใหม่ที่ว่างเปล่า) คือไม่เพียง แต่กดหรือEnter OKผลลัพธ์หรือผลลัพธ์ไม่จำเป็นหรือไม่ได้รับอนุญาต รหัสหลอก 1 myform = new form("GUI") myform.mytxt = new editfield("") myform.ok = new button("OK") repeat waitfor(myform.ok,"click") until myform.mytxt.content <> "" รหัสหลอก 2 LET TEXT = "" WHILE TEXT = "" DO TEXT = PROMPT("") ENDWHILE ตัวอย่างที่ 1 โปรแกรมทำงานและดึงแบบฟอร์มขึ้นทันทีด้วยฟิลด์ข้อความเดียวและOKปุ่ม ผู้ใช้คลิกOKปุ่ม ไม่มีอะไรเกิดขึ้น. ผู้ใช้วาง "hello world" ลงในช่องข้อความและคลิกOKปุ่ม โปรแกรมสิ้นสุดลง …
31 code-golf 

6
คุณแพ้หรือยัง
งานของคุณคือการใช้ลำดับจำนวนเต็มA130826 : nเป็นจำนวนเต็มบวกที่เล็กที่สุดเช่นว่าn - nเป็นหลายทั้ง3และครั้งที่สองจำนวนหารของ(กn - n) / 3ให้n THระยะในความแตกต่างครั้งแรกของลำดับที่ผลิตโดยฟลาเวีย ตะแกรงฟัส ลืมไปหรือยัง จริง ๆ แล้วมันค่อนข้างง่าย ฟลาเวียฟัตะแกรงกำหนดลำดับจำนวนเต็มดังต่อไปนี้ เริ่มต้นด้วยการลำดับของจำนวนเต็มบวกและการตั้งค่าk = 2 ลบทุกk THจำนวนเต็มของลำดับเริ่มต้นด้วยk TH เพิ่มค่าkแล้วย้อนกลับไปขั้นตอนที่ 2 ฉnเป็นn THจำนวนเต็ม (1 จัดทำดัชนี) ที่ไม่เคยได้รับการถอดออก ถ้า - ตามปกติ - σ 0 (k)หมายถึงจำนวนหารบวกของจำนวนเต็มที่kเราสามารถกำหนดnเป็นเลขที่เล็กที่สุดบวกดังกล่าวว่า2σ 0 ((เป็นn - n) / 3) f = 1 + n - ฉ n …

30
มันคือ [ปีปัจจุบัน] แล้วคนกลับบ้าน
สำหรับความท้าทายปีใหม่ส่วนใหญ่เมื่อไม่ได้ตรงกับปีที่ท้าทาย มันคือ [ปีปัจจุบัน] แล้วคนกลับบ้าน คุณต้องแสดงผลข้อความนี้ด้วยการทดแทนปีปัจจุบัน I / O อินพุต:ไม่มี เอาท์พุท : It's [year] already, folks, go home.ด้วย [ปี] เปลี่ยนเป็นปีปัจจุบัน
31 code-golf  date 

13
แฟร์มาต์ใกล้คิดถึง
ทฤษฎีบทสุดท้ายของแฟร์มาต์บอกว่ามีไม่มีบวกการแก้ปัญหาหนึ่งสมการสำหรับการใด ๆa^n + b^n = c^n n>2สิ่งนี้พิสูจน์แล้วว่าเป็นจริงโดย Andrew Wiles ในปี 1994 อย่างไรก็ตามมีหลาย "ใกล้คิดถึง" ที่เกือบจะตอบสนองสมการไดโอแฟนไทน์ แต่พลาดโดยหนึ่ง แม่นยำพวกเขาทั้งหมดมากกว่า 1 และเป็นคำตอบที่สมบูรณ์ของa^3 + b^3 = c^3 + 1(ลำดับคือมูลค่าของแต่ละด้านของสมการในลำดับที่เพิ่มขึ้น) งานของคุณจะได้รับnเพื่อพิมพ์nค่าแรกของลำดับนี้ นี่คือค่าแรก ๆ ของลำดับ: 1729, 1092728, 3375001, 15438250, 121287376, 401947273, 3680797185, 6352182209, 7856862273, 12422690497, 73244501505, 145697644729, 179406144001, 648787169394, 938601300672, 985966166178, 1594232306569, 2898516861513, 9635042700640, 10119744747001, 31599452533376, 49108313528001, …

3
เลือกไพ่ใบสุดท้ายในมือโป๊กเกอร์
มือโป๊กเกอร์นั้นถูกจัดอันดับจากดีที่สุดถึงแย่ที่สุดดังนี้: Straight flush - ไพ่ห้าใบเรียงตามลำดับทั้งหมดในชุดเดียวกัน ไพ่สี่ใบในประเภทเดียวกัน - ไพ่สี่ใบที่มีแต้มเท่ากันและไพ่หนึ่งใบที่มีลำดับอื่น ฟูลเฮาส์ - ไพ่สามใบในหนึ่งอันดับและไพ่สองใบในอีกอันดับหนึ่ง Flush - ไพ่ห้าใบในชุดเดียวกันทั้งหมด เส้นตรง - ไพ่ห้าใบเรียงตามลำดับ ไพ่ชนิดเดียวกันสามใบ - ไพ่สามใบที่มีแต้มเท่ากันและไพ่สองใบที่มีสองแถว สองคู่ - ไพ่สองใบในลำดับเดียวกันไพ่สองใบในลำดับอื่นและไพ่หนึ่งใบในลำดับที่สาม หนึ่งคู่ - ไพ่สองใบที่มีแต้มเท่ากันและไพ่สามใบที่มีสามแถวอื่น ๆ ไพ่สูง - ไพ่ห้าใบไม่เรียงตามลำดับหรือชุดเดียวกันทั้งหมดและไม่มีไพ่ใดในลำดับเดียวกัน อันดับ = จำนวนบนการ์ด (A, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3, 2) คุณอาจเลือกใช้ T แทน 10 …

30
Disarium Dilemma
Disarium Dilemma Disarium ถูกกำหนดให้เป็นหมายเลขที่: ผลรวมของตัวเลขที่ขับเคลื่อนด้วยตำแหน่งนั้น ๆ เท่ากับจำนวนเดิม งานของคุณ : คุณมีความหลงใหลที่แปลกประหลาดกับตัวเลขที่จัดว่าเป็นสัตว์เลี้ยง ความจำเป็นที่จะต้องทำตามวิธีของการแยกแยะนั้นยอดเยี่ยมมากในตัวคุณที่คุณปฏิเสธที่จะอ่านหน้าใด ๆ ที่ไม่ได้มีหมายเลขกำกับไว้ในหนังสือเล่มใดก็ตาม คุณมีสองBIGปัญหา: อาจารย์ของคุณเพิ่งมอบหมายให้คุณอ่านตำราเรียนจากหน้าหนึ่งnไปอีกหน้าหนึ่งm คุณตีหัวของคุณอย่างหนักเมื่อสัปดาห์ที่แล้วและดูเหมือนจะจำไม่ได้ว่าจะกำหนดโปรแกรมโดยวิธีใด เวลาเป็นสิ่งสำคัญดังนั้นรหัสในการกำหนดหน้าเว็บที่คุณจะต้องอ่านจะต้องสั้นที่สุด คุณจำเป็นต้องระบุทั้งหมดของ disarium ภายในช่วงรวมผ่านnm ตัวอย่างของ disarium : 89 = 8 1 + 9 2 135 = 1 1 + 3 2 + 5 3 518 = 5 1 + 1 2 + 8 3 …

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