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

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

22
ลดความซับซ้อนเศษส่วนต่อเนื่อง
เศษส่วนต่อเนื่องเป็นนิพจน์ที่อธิบายเศษส่วนซ้ำ ๆ พวกเขาสามารถแสดงกราฟิก: หรือพวกเขาสามารถแสดงเป็นรายการของค่า: [a0; a1, a2, a3, ... an] ความท้าทาย: ใช้หมายเลขฐาน: และรายการค่าส่วน: และทำให้เศษส่วนต่อเนื่องเป็นเศษส่วนเชิงเหตุผลที่ทำให้ง่ายขึ้น: ส่งคืนหรือพิมพ์เศษและส่วนที่แยกจากกันa0[a1, a2, a3, ... an] ตัวอย่าง: √19 : [4;2,1,3,1,2]: 170/39 ℯ: [1;0,1,1,2,1,1]: 19/7 π: [3;7,15,1,292,1]: 104348/33215 ϕ: [1;1,1,1,1,1]: 13/8 ตัวอย่างการนำไปใช้: (python) def foo(base, sequence): numerator = 1 denominator = sequence[-1] for d in sequence[-2::-1]: temp = …

7
ฉันเขียนโปรแกรมปริศนารหัสกอล์ฟ
พื้นหลัง แน่นอนบทความอิตาลี (ตรงกับภาษาอังกฤษ) มีเจ็ดรูปแบบที่แตกต่างกัน: L' , อิลลินอยส์ , ทองหล่อ , gli , ฉัน , ลา , le ตัวเลือกใดที่ใช้ขึ้นอยู่กับตัวแปรสามตัว: เพศ: ชาย / หญิง จำนวน: เอกพจน์ / พหูพจน์ ตัวอักษรเริ่มต้นของคำต่อมา: สระ / พยัญชนะประเภท A / พยัญชนะประเภท B เสียงสระเป็นใด ๆ เหล่านี้: Aeiou พยัญชนะประเภท B เป็นกรณีใด ๆ เหล่านี้: s-ตามด้วยพยัญชนะอื่น, z- , gn- , pn- , …

2
ขอบของวงกลมที่ทับซ้อนกัน
กำหนดพิกัดของจุดหลายจุดบนระนาบและรัศมีของวงกลมล้อมรอบแต่ละจุดวาดรูปหลายเหลี่ยมที่เป็นตัวแทนของวงกลมและขอบที่วงกลมมาบรรจบกัน ขอบตรงจะลดลงตามแนวจุดตัดวงกลม - วงกลมแต่อาจไม่ยาวตามความยาวเต็มของเส้นเหล่านี้ ตามคำแนะนำของmbomb007ลองจินตนาการถึงพฤติกรรมของฟองสบู่ 2 มิติ นั่นเป็นความผิดพลาดทางเทคนิคเพราะฟองสบู่จะพบกันที่มุม 120 °เพื่อลดพลังงานในขณะที่วงกลมเหล่านี้อาจพบกันที่มุมใดก็ได้ นี่คือแผนภาพ Voronoi ลบระนาบพื้นที่ที่กำหนด ขอบคุณAndreas นี้เป็นจริงทั่วไปของแผนภาพ Voronoi เรียกว่าแผนภาพพลังงาน ตัวอย่าง ตัวอย่างเช่นเมื่อกำหนดสองจุดและสองรัศมีแล้วเอาต์พุตอาจมีลักษณะเช่นนี้: เพิ่มจุดและรัศมีอื่นและผลลัพธ์อาจมีลักษณะเช่นนี้: อินพุต คุณสามารถจัดโครงสร้างอินพุตได้ตามต้องการ กรุณาโพสต์ผลลัพธ์ด้วยอินพุตต่อไปนี้ ทดสอบ 1 x: 10, y: 10, r: 10 x: 25, y: 12, r: 8 ทดสอบ 2 x: 8, y: 10, r: 6 x: 20, y: 8, r: …

2
ฉันจะทำคะแนนความท้าทายด้วยขนาดของปัญหาที่ผันแปรได้อย่างไร
เมตาดาต้ามีการสนับสนุนที่แข็งแกร่งพอสมควรสำหรับคำถามการเขียนเพื่อท้าทายในหัวข้อหลักโดยที่คำถามเหล่านี้มีความเฉพาะเจาะจงและสามารถตอบได้ อย่างไรก็ตามเรายังไม่มีคำถามใด ๆ ดังนั้นฉันจึงคิดว่าฉันจะทดสอบน่านน้ำ คำถามนี้อาจเข้าสู่ดินแดนอัตนัยที่ดีและเป็นอัตนัยไม่ดีแต่ฉันคิดว่าเป็นไปได้ว่าคำถามการเขียนที่ท้าทายจะต้องเป็น เพื่อให้แน่ใจว่าพวกเขายังคงสร้างเนื้อหาที่มีคุณภาพสูงโปรดอย่าเพิ่งโพสต์แนวคิดเก็งกำไรในคำตอบ อธิบายว่าทำไมพวกเขาหลีกเลี่ยงปัญหาที่กล่าวถึงด้านล่างหรือชี้ไปที่ความท้าทายที่มีอยู่ซึ่งประสบความสำเร็จในการใช้เทคนิคที่แนะนำในอดีต สำหรับความท้าทายในการปรับให้เหมาะสมบางอย่างพารามิเตอร์อิสระในการตั้งค่าความท้าทายคือขนาดของปัญหาที่จะปรับให้เหมาะสม โดย "การเพิ่มประสิทธิภาพความท้าทาย" ฉันไม่ได้หมายถึงสิ่งต่าง ๆ เช่นประเภทรหัสที่เร็วที่สุดของเราซึ่งมักจะต้องตอบคำถามให้ถูกต้อง / เหมาะสมที่สุดและความท้าทายนั้นจะได้คะแนนจากขนาดของปัญหาที่คงที่ ในระยะเวลาที่แน่นอน ฉันหมายถึงความท้าทายโดยเฉพาะอย่างยิ่งที่การแก้ปัญหาที่ไม่เหมาะสมกับปัญหาพื้นฐานได้รับอนุญาตและมีโอกาสมากยิ่งขึ้นและเป้าหมายก็คือการทำเช่นนั้นให้ได้ เพื่อความชัดเจนให้พิจารณาความท้าทายของบีเวอร์ที่ยุ่งแม้ว่าโดยหลักการแล้วสิ่งนี้จะใช้กับประเภทการท้าทายอื่น ๆ ที่ไม่มีวิธีการแก้ปัญหาที่ดีที่สุดเช่นกัน (ฉันแค่ใช้บีเว่อร์ที่ไม่ว่างที่นี่ บอกเด็ก ๆ ว่าฉันต้องการท้าทายเกี่ยวกับการค้นหาบีเวอร์ Brainfuck ที่คึกคักที่สุด พารามิเตอร์อิสระในปัญหาช่องคลอดไม่ว่างคือขนาดของรหัส ฉันไม่สามารถตั้งค่าความท้าทายโดยไม่อ้างอิงขนาดรหัสในทางใดทางหนึ่ง ด้วยวิธีการแต่ละค่าของพารามิเตอร์ขนาดปัญหาNให้ความท้าทายที่แยกต่างหาก (ยากขึ้น) คำถามหลักของฉันคือฉันจะทำให้ความท้าทายนั้นทำงานได้อย่างไรโดยไม่ประสบปัญหาเรื่องความสมดุล ทางออกที่ชัดเจนคือการแก้ไขN: "ค้นหาโปรแกรม Brainfuck ที่สิ้นสุดด้วยNไบต์ของซอร์สโค้ดซึ่งพิมพ์ตัวอักษรให้ได้มากที่สุดเท่าที่จะเป็นไปได้ นี้มีปัญหาสมดุลขนาดใหญ่: ถ้าผมเลือกขนาดเล็กเกินไปคนได้อย่างรวดเร็วอาจพบช่องคลอดที่คึกคักที่สุดและความท้าทายสิ้นสุดลง ถ้าฉันเลือกขนาดที่ใหญ่เกินไปทางออกที่ดีที่สุดจะพิมพ์จำนวนตัวละครทางดาราศาสตร์ก่อนที่จะยุติซึ่งหมายความว่ามันอาจเป็นเรื่องยากที่จะค้นหาโปรแกรมดังกล่าวและความท้าทายกลายเป็นเรื่องน่าเบื่อ / การออกกำลังกายด้วยความอดทน บีเวอร์ที่ยุ่งสามารถพบได้ในเชิงโปรแกรมและผู้คนจะต้องเริ่มพิสูจน์ผลลัพธ์ของพวกเขาอย่างเป็นทางการซึ่งผู้คนจำนวนมากอาจไม่ได้คิดว่าสนุกมาก แน่นอนปัญหานี้เด่นชัดมากขึ้นในความท้าทายช่องคลอดไม่ว่างมากกว่าประเภทอื่นเนื่องจากการเติบโตของการแก้ปัญหาที่ดีที่สุด แต่มันนำไปใช้กับความท้าทายอื่น ๆ อย่างไรก็ตาม ตัวเลือกถัดไปคือปล่อยให้Nไม่มีข้อ จำกัด และทำให้เป็นส่วนหนึ่งของการให้คะแนนผ่านทางฟังก์ชั่นบางอย่าง แม้สำหรับความท้าทาย "ปกติ" …

10
ตัวประกอบ Fibonacci
ตัวเลขฟีโบนักชี ตัวเลข Fibonacci เริ่มต้นด้วยf(1) = 1และf(2) = 1(บางคนรวมถึงf(0) = 0แต่เรื่องนี้ไม่เกี่ยวข้องกับความท้าทายนี้. แล้วสำหรับ,n > 2f(n) = f(n-1) + f(n-2) ความท้าทาย งานของคุณคือการค้นหาและส่งออกnจำนวนบวก -th ที่สามารถแสดงเป็นผลิตภัณฑ์ของหมายเลขฟีโบนักชี คุณสามารถเลือกที่จะทำให้ดัชนี 0 หรือดัชนี 1 ดัชนีใดก็ตามที่เหมาะกับคุณดีกว่า แต่คุณต้องระบุสิ่งนี้ในคำตอบของคุณ นอกจากนี้คำตอบของคุณจะต้องคำนวณคำที่ 100 ในเวลาที่เหมาะสม Testcases n result corresponding product (for reference) 1 1 1 2 2 2 3 3 3 4 4 2*2 5 …

18
เปิดเครื่องรูดตัวเลขบางส่วน
งานของคุณคือการสร้างโปรแกรมหรือฟังก์ชั่นที่สร้างซิปที่มีความยาว 10 บรรทัด ซิปแต่ละเส้นมีเครื่องหมายขีดคั่นสองอัน--: -- -- -- -- -- -- -- -- -- -- โปรแกรม / ฟังก์ชั่นจะใช้เปอร์เซ็นต์ (หารด้วย 10) เป็นอินพุตและเอาต์พุตจะเป็นซิป "คลายซิป" (คั่นด้วยเครื่องหมายขีดกลาง) จากด้านบนเป็นเปอร์เซ็นต์โดยเผยให้เห็นระดับ 1 ดัชนีต่ำสุดซ้ำ 2 ครั้งพร้อม ระดับก่อนหน้าทั้งหมดซ้ำ 4, 6, 8, ... ฯลฯ ครั้งในขณะที่การรักษาด้านล่างของซิปเป็นศูนย์กลาง ตัวอย่าง >>10% -11- -- -- -- -- -- -- -- -- -- >>50% -1111111111- -22222222- -333333- …

30
เอาท์พุท“ พอดี” ตัวเลข
"พอดีตัวเลข" แซมมีแนวคิด "ยอดเยี่ยม" สำหรับการบีบอัด! คุณช่วยได้ไหม นี่เป็นบทสรุปของแผนการบีบอัดของแซม ก่อนอื่นใช้เลขฐาน 10 แทนจำนวนธรรมชาติใด ๆ ที่มีขนาดเล็กกว่า 2 ^ 16 อย่างเคร่งครัดและเขียนเป็นสตริงไบนารีโดยไม่มีศูนย์นำหน้า 1 -> 1 9 -> 1001 15 -> 1111 13 -> 1101 16 -> 10,000 17 -> 1,0001 65535 -> 111111111111111 ตอนนี้แทนที่กลุ่มใด ๆ หนึ่งศูนย์หรือมากกว่าด้วยศูนย์เดียว นี่เป็นเพราะจำนวนนั้นผอมลง ตอนนี้สตริงไบนารีของคุณจะเป็นแบบนี้ 1 -> 1 -> 1 9 -> 1001 -> …

6
ตรวจสอบว่าการท้าทายนั้นมีค่าตอบรับ
ฉันเป็นมากนักกอล์ฟรหัสสบาย ๆ และมักจะไม่เห็นโพสต์จนกว่าพวกเขาจะแสดงใน "คำถามเครือข่ายร้อน" sidebar มากกว่าใน StackOverflow โดยปกติฉันมาช้าไปกับเกมและเนื่องจากภาษาเดียวที่ฉันรู้คือ Python มีจุดเล็กน้อยที่ฉันตอบเพราะมีคำตอบของ Python อยู่แล้ว ความท้าทายของคุณคือการคิดออกว่าคำถามนั้นคุ้มค่ากับฉันหรือไม่ การป้อนข้อมูล: รหัสของคุณ (ฟังก์ชั่นหรือโปรแกรม) จะใช้พารามิเตอร์อินพุตหนึ่งรายการ i เอาท์พุท: Truthy หรือ Falsey ค่าสำหรับ iID เอาท์พุทจริงถ้าคำถามมีมากกว่า 5 คำตอบมากกว่า 3 คะแนนคำถามและหนึ่งหรือน้อยกว่าคำตอบในงูหลาม (ไม่มีความแตกต่างระหว่างรุ่น) กฎ / ชี้แจง: รูปแบบการป้อนข้อมูลอาจเป็นสิ่งที่สมเหตุสมผล (stdin, file, command line) แต่ควรระบุไว้ในคำตอบของคุณ ชนิดข้อมูลและช่องว่างนำหน้า / ต่อท้ายนั้นไม่สำคัญ codegolf.stackexchange.comสมมติรหัสคำถามที่ถูกต้องสำหรับ ไม่สนใจข้อกำหนดคำถามเฉพาะภาษา (เช่นถ้าคำถามตรงกับคะแนนโหวตและคำตอบและไม่มีคำตอบ Python เพราะเป็น Java เท่านั้นมันยังคงส่งผลให้เกิดความจริง) คำตอบนั้นถือว่าเป็นคำตอบของ …

23
การลดตัวหาร
ตัวหารของตัวเลขnคือตัวเลขใด ๆ ที่แบ่งnเท่า ๆ กันรวมถึง 1 และnเอง จำนวนตัวหารd (n)คือจำนวนตัวหารจำนวนที่มี นี่คือd (n)สำหรับคู่แรก n: n divisors d(n) 1 1 1 2 1, 2 2 3 1, 3 2 4 1, 2, 4 3 5 1, 5 2 6 1, 2, 3, 6 4 เราสามารถลบจำนวนตัวหารออกจากตัวเลขซ้ำได้ ตัวอย่างเช่น: 16 = 16 16 - d(16) = …

3
สุ่มทดสอบ
ฉันเป็นครูและในอีกไม่กี่วันฉันต้องให้นักเรียนของฉันทำการทดสอบ ตอนนี้ฉันกังวลเสมอเกี่ยวกับนักเรียนที่น่ารักที่สุดที่ได้รับบาดเจ็บจากคนที่น่ารักที่สุดเมื่อพวกเขาโกงดังนั้นฉันจึงต้องการที่จะสุ่มทดสอบเพื่อให้ไม่มีใครสามารถโกงใครได้ ตอนนี้ฉันบันทึกการทดสอบในรูปแบบนี้แล้ว: When was Java invented? Why does this matter? 1941 War was beginning None of the above What is the increment operator in Java? Stack Overflow>how 2 incrememnt Google>how 2 incrememnt increment ++ นั่นคือคำถามจะถูกคั่นด้วยบรรทัดว่างหนึ่งบรรทัดและคำตอบทั้งหมดจะถูกนำหน้าด้วยช่องว่างสองช่อง นี่คือผลลัพธ์ที่ฉันต้องการ: What is the increment operator in Java? ++ increment Google>how 2 incrememnt Stack …
21 code-golf  random 

9
การตรวจจับสี่เหลี่ยมผืนผ้า
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในสตริงหลายบรรทัดของ0's และ1' s ไม่มีอักขระอื่นใดที่อยู่ในสตริงและสตริงจะเป็นรูปสี่เหลี่ยมผืนผ้าเสมอ (ทุกบรรทัดจะมีจำนวนอักขระเหมือนกัน) โดยมีขนาดเล็กเท่ากับ 1 × 1 แต่ไม่เช่นนั้นตัวอักษร0และ1ของอาจถูกจัดเรียงโดยพลการ คุณอาจจะสมมติสตริงมีการขึ้นบรรทัดใหม่ต่อท้ายตัวเลือกและถ้าต้องการคุณอาจใช้ใด ๆ ที่แตกต่างกันสองASCII พิมพ์ตัวอักษรในสถานที่และ01 พิมพ์หรือส่งกลับค่า truthyถ้าทั้งหมดของเส้นทางเชื่อมต่อภูมิภาคของทั้งสอง0'และ1' s ในสตริงเป็นรูปสี่เหลี่ยมที่เป็นของแข็งอื่นส่งออกมูลค่า falsy เส้นทางพื้นที่เชื่อมต่อของ0's หมายความว่าจากคนใดคนหนึ่ง0ในภูมิภาคอื่น ๆ ทั้งหมดที่0' s สามารถเข้าถึงได้โดยเฉพาะการเคลื่อนย้ายขึ้นลงซ้ายและขวาเพื่ออื่น ๆ0's (และไม่ได้ย้ายแนวทแยงมุมไม่ได้ย้ายไปอยู่ที่ใด1และไม่เคลื่อนไหวนอกขอบเขตของสตริง) แนวคิดเดียวกันนี้นำไปใช้กับ1ภูมิภาคที่เชื่อมต่อเส้นทาง สี่เหลี่ยมแข็งของ0's หมายถึงพื้นที่ทั้งหมดของสี่เหลี่ยมที่เต็มไปด้วย0' และไม่มี1's แนวคิดเดียวกันนี้ใช้กับ1สี่เหลี่ยมทึบ รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ Tiebreaker เป็นคำตอบก่อนหน้า (โปรดสังเกตว่าสตริงไม่ได้ล้อมรอบด้วยเงื่อนไขขอบเขต toroidal ) ตัวอย่าง 1)สตริงอินพุตนี้มีพื้นที่การเชื่อมต่อ 3 เส้นทาง (2 สำหรับ0และ 1 สำหรับ1) เฉพาะพื้นที่ด้านล่างขวาเท่านั้นที่00เป็นรูปสี่เหลี่ยมผืนผ้าที่มั่นคงดังนั้นเอาต์พุตจะเป็นเท็จ 0011 0111 0100 …

3
การเปลี่ยนแปลงรูตสแควร์
ในวิชาคณิตศาสตร์มีการเปลี่ยนแปลง σของการสั่งซื้อnเป็นฟังก์ชัน bijective จากเลข 1 ... nกับตัวเอง รายการนี้: 2 1 4 3 แสดงให้เห็นถึงการเปลี่ยนแปลงσดังกล่าวว่าσ (1) = 2 σ (2) = 1 σ (3) = 4 และσ (4) = 3 รากของการเปลี่ยนแปลงσคือการเปลี่ยนแปลงที่เมื่อนำไปใช้กับตัวเองให้σ ตัวอย่างเช่น2 1 4 3มีรากที่τ3 4 2 1 = k 1 2 3 4 τ(k) 3 4 2 1 τ(τ(k)) 2 1 …

3
ทำตามคำแนะนำที่ไม่สมบูรณ์
เพื่อนของคุณได้บอกเส้นทางไปยังร้านอาหารที่ดีที่สุดในเมือง เป็นชุดของการเลี้ยวซ้ายและขวา น่าเสียดายที่พวกเขาลืมที่จะพูดถึงระยะเวลาที่คุณต้องก้าวไปข้างหน้าระหว่างรอบเหล่านั้น โชคดีที่คุณมีแผนที่ถนนพร้อมร้านอาหารทั้งหมดในนั้น บางทีคุณสามารถคิดได้ว่าร้านอาหารพวกเขาหมายถึงอะไร อินพุต แผนที่ได้รับเป็นตารางสี่เหลี่ยมของอักขระ ASCII .เป็นถนน#เป็นอาคารAที่จะZมีร้านอาหารต่างๆ คุณเริ่มที่มุมซ้ายบนไปทางตะวันออก ตัวอย่าง: .....A .#.### B....C ##.#.# D....E ##F### คำแนะนำของเพื่อนของคุณจะได้รับเป็นสตริง (อาจว่างเปล่า) หรือรายการของตัวละครที่มีLs และRs เอาท์พุต คุณสามารถเดินเส้นทางใด ๆ ที่สอดคล้องกับการเลี้ยวซ้ายและขวาในสตริงการป้อนข้อมูลโดยที่คุณต้องก้าวไปข้างหน้าอย่างน้อยหนึ่งก้าวก่อนที่พวกเขาแต่ละคนรวมทั้งในตอนท้าย โดยเฉพาะอย่างยิ่งนี่หมายความว่าถ้าสตริงเริ่มต้นด้วยRคุณไม่สามารถไปทางใต้ได้ทันทีในคอลัมน์ซ้ายสุด นอกจากนี้ยังหมายความว่าคุณไม่สามารถหมุนได้ 180 องศา คุณไม่สามารถเดินผ่านอาคารหรือร้านอาหารได้ยกเว้นอาคารที่คุณไปถึงในตอนท้าย .คุณอาจจะคิดว่าด้านบนซ้ายมุมเป็น คุณควรส่งออกร้านอาหารทั้งหมดที่สามารถเข้าถึงได้ด้วยคำแนะนำของเพื่อนของคุณเป็นสตริงหรือรายการ คุณอาจคิดว่าคำแนะนำจะนำไปสู่ร้านอาหารอย่างน้อยหนึ่งแห่ง เช่นเดียวLจะไม่ถูกต้องสำหรับแผนที่ด้านบน ตัวอย่างบางส่วนสำหรับแผนที่ด้านบน: <empty> A R F RR B,D RL C,E RLRL E RLLR C RLLL B RLRR …

14
สร้างลำดับที่เหลือน้อยที่สุด
ทุกหมายเลขสามารถแสดงได้โดยใช้ลำดับที่เหลือแบบไม่สิ้นสุด ตัวอย่างเช่นถ้าเราใช้เวลาจำนวน 7, และดำเนินการ7mod2แล้ว7mod3แล้ว7mod4และอื่น ๆ 1,1,3,2,1,0,7,7,7,7,....ที่เราได้รับ อย่างไรก็ตามเราต้องการลำดับที่เหลือที่สั้นที่สุดเท่าที่จะเป็นไปได้ซึ่งยังสามารถใช้แยกแยะได้จากตัวเลขที่ต่ำกว่าทั้งหมด การใช้ 7 อีกครั้ง[1,1,3]เป็นลำดับที่สั้นที่สุดเนื่องจากลำดับก่อนหน้าทั้งหมดไม่เริ่มต้นด้วย[1,1,3]: 0: 0,0,0,0... 1: 1,1,1,1... 2: 0,2,2,2... 3: 1,0,3,3... 4: 0,1,0,4... 5: 1,2,1,0... 6: 0,0,2,1... โปรดทราบว่า[1,1] ไม่สามารถใช้แทน 7 ได้เพราะสามารถใช้แทน 1 ได้อย่างไรก็ตามคุณควรส่งออก[1]ด้วยอินพุต 1 Input / Output ข้อมูลที่คุณป้อนเป็นจำนวนเต็มที่ไม่เป็นลบ คุณต้องส่งออกลำดับหรือรายการลำดับที่เหลือน้อยที่สุดตามที่กำหนดไว้ข้างต้น กรณีทดสอบ: 0: 0 1: 1 2: 0,2 3: 1,0 4: 0,1 5: 1,2 6: …

12
วิธีที่เป็นไปได้ทั้งหมดในการสอดแทรกสองสตริง
ฉันเพิ่งเห็นคำถามนี้ใน stackoverflow มันเป็นคำถามที่ยอดเยี่ยม แต่มีปัญหาหนึ่งที่ทำให้เกิดปัญหาร้ายแรงได้ พวกเขากำลังขอวิธีที่ดีที่สุดที่จะทำ เช่นง่ายที่สุดในการอ่านสำนวนที่ประณีตที่สุด ฯลฯ พวกเขาไม่รู้หรอกว่าเรื่องอะไรสำคัญ คุณควรถามว่าจะทำอย่างไรกับโค้ดที่น้อยที่สุด! เนื่องจากฉันสงสัยว่าคำถามจะได้รับการชื่นชมใน stackoverflow ฉันจึงตัดสินใจถามที่นี่ ความท้าทาย คุณต้องเขียนโปรแกรมหรือฟังก์ชั่นที่สั้นที่สุดที่สร้างวิธีที่เป็นไปได้ทั้งหมดเพื่อสอดแทรกสตริงใดก็ได้สองอัน ตัวอย่างเช่นถ้าทั้งสองสตริงเป็น'ab'และ'cd'ผลลัพธ์คือ: ['abcd', 'acbd', 'acdb', 'cabd', 'cadb', 'cdab'] ในขณะที่คุณสามารถมองเห็นaอยู่เสมอก่อนbและอยู่เสมอก่อนcd IO สามารถอยู่ในรูปแบบที่สมเหตุสมผล ใช้รหัสหลามนี้เพื่อตรวจสอบเพื่อตรวจสอบผลลัพธ์ของคุณ (เครดิต: JeD ) def shuffle(s,t): if s=="": return [t] elif t=="": return [s] else: leftShuffle=[s[0]+val for val in shuffle(s[1:],t)] rightShuffle=[t[0]+val for val in shuffle(s,t[1:])] leftShuffle.extend(rightShuffle) …

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