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

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

9
การนับน้ำพุ
น้ำพุคือการจัดเรียงของเหรียญในแถวเพื่อให้แต่ละเหรียญสัมผัสสองเหรียญในแถวด้านล่างหรืออยู่ในแถวด้านล่างและแถวล่างมีการเชื่อมต่อ นี่คือน้ำพุ 21 เหรียญ: ความท้าทายของคุณคือการนับจำนวนน้ำพุที่แตกต่างกันด้วยจำนวนเหรียญที่กำหนด คุณจะได้รับเป็น input nเป็นจำนวนเต็มบวก คุณต้องส่งออกจำนวนnน้ำพุที่แตกต่างกันที่มีอยู่ กฎ I / O มาตรฐานห้ามช่องโหว่มาตรฐาน คำตอบควรจะสามารถคำนวณได้n = 10ภายในไม่กี่นาที ผลลัพธ์ที่ต้องการสำหรับn = 1 ... 10: 1, 1, 2, 3, 5, 9, 15, 26, 45, 78 ลำดับนี้เป็นOEIS A005169 นี่คือรหัสกอล์ฟ ไบต์ที่น้อยที่สุดจะเป็นผู้ชนะ

1
หนังสติ๊กที่ไม่มั่นคง
นี่คือรายการของหนังสติ๊กทั่วไป ใน Unicode (อันที่ฉันสามารถสร้างได้ด้วยคีย์การเขียนบนเดเบียน): Orig Ascii Lig ae [ae] æ AE [AE] Æ oe [oe] œ OE [OE] Œ ij [ij] ij IJ [IJ] IJ ff [ff] ff fi [fi] fi fl [fl] fl ffi [ffi] ffi ffl [ffl] ffl คุณมีสองตัวเลือกในการท้าทายนี้: ใช้ตัวยึด UTF-8 จริงหรือใช้ชุดตัวเลือก ASCII เท่านั้น หากคุณใช้ตัวแปรสายรัด UTF-8 จริงคุณจะได้รับโบนัส 20% …

4
พลิกสวิตช์
หลังจากที่คุณตื่นในห้องมืดคุณจะเห็นกริดของไฟเป็นรูปสี่เหลี่ยมผืนผ้าพร้อมสวิตช์ที่เกี่ยวข้อง คุณตัดสินใจที่จะใช้ระบบพิกัดที่มีแสงด้านล่างซ้ายแทน (1,1) และพิกัดเพิ่มขึ้นเมื่อคุณขึ้นไป (ทิศทาง y) และไปทางขวา (ทิศทาง x) กริดเหมือนกันในการพลิกสวิตช์ที่ (a, b) สลับ (เปลี่ยนจากปิดเป็นเปิดหรือปิดเปิด) แสงที่ (a, b) เช่นเดียวกับไฟในคอลัมน์เดียวกันหรือแถวเดียวกันกับ ( A, B) ข้อมูลที่คุณป้อนจะเป็นตารางสี่เหลี่ยมที่มีอักขระสองตัวที่แตกต่างกันซึ่งแสดงถึงการเปิดและปิด (ฉันใช้ 1 และ 0 ตามลำดับ) นอกจากนี้ส่วนหนึ่งของอินพุตจะเป็นชุดของคู่พิกัดอย่างน้อยหนึ่งคู่ (กับรูปแบบและการแยกใด ๆ ที่คุณต้องการ) ซึ่งจะแสดงสวิตช์ที่คุณพลิก เอาต์พุตจะเป็นกริดเดียวกันโดยใช้ "ฟลิป" ที่คู่ประสานงานแต่ละคู่ที่ได้รับเป็นอินพุต คุณสามารถเลือกวิธีจัดรูปแบบอินพุตของคุณแม้ว่าเอาต์พุตจะต้องเป็นกริดไม่ใช่อาเรย์ ตัวอย่าง ตัวอย่างอินพุต 1 111111 111111 111111 111111 (3,2) ตัวอย่างผลลัพธ์ 1 110111 110111 000000 110111 …
17 code-golf  grid 

6
ปฏิทินแบบโรลโอเวอร์
นี่เป็นแรงบันดาลใจจากหนึ่งในคำถามของ Downgoat ใน Sandbox ที่ฉันแนะนำว่าเขารวมวันที่ 31 เมษายนเป็นวัน Pi สำหรับผู้ที่ใช้รูปแบบวัน / เดือนเพียงเพื่อให้เขาบอกฉันว่าไม่มีวันที่ 31 เมษายน! กำหนดสตริงวันที่ในรูปแบบเดือน / วันที่อาจไม่ถูกต้องส่งออกวันที่ที่ถูกต้องโดยใช้โรลโอเวอร์ (โรลโอเวอร์ครั้งแรกของเดือนจากนั้นโรลโอเวอร์วัน) ตัวอย่าง: "15/43" - นี่เป็นวันที่ 43 ของเดือนที่ 15 อันดับแรกเราเลื่อนเดือนไปยังปีถัดไปดังนั้นเราจึงสิ้นสุดด้วย 3 (มีนาคม) ขณะนี้เนื่องจากเดือนมีนาคมมีเพียง 31 วันเราจึงเลื่อนวันพิเศษเป็นเดือนเมษายนดังนั้นเราจึงส่งออกวันที่ตามจริงเป็น"4/12" (12 เมษายน) "3/16" - นี่คือวันที่ที่ถูกต้อง (16 มีนาคม) กลับมาเหมือนเดิม "12/64" - อาความทรงจำที่น่ารักมากมายตั้งแต่ 64 ธันวาคม ... ธันวาคมมี 31 วันมกราคมมี 31 วันดังนั้นสิ่งที่ฉันหมายถึงคือ"2/2" (2 …
17 code-golf  date 

2
สุ่มกอล์ฟประจำวัน # 6: สะสม d20
เกี่ยวกับซีรี่ส์ ก่อนอื่นคุณอาจปฏิบัติเช่นนี้กับการแข่งขันกอล์ฟอื่น ๆ และตอบคำถามโดยไม่ต้องกังวลกับซีรีย์เลย อย่างไรก็ตามมีลีดเดอร์บอร์ดสำหรับทุกความท้าทาย คุณสามารถค้นหาลีดเดอร์พร้อมกับข้อมูลบางอย่างเพิ่มเติมเกี่ยวกับซีรีส์ในโพสต์แรก แม้ว่าฉันจะมีไอเดียมากมายสำหรับซีรีส์ แต่ความท้าทายในอนาคตยังไม่เกิดขึ้น หากคุณมีข้อเสนอแนะใด ๆ โปรดแจ้งให้เราทราบเกี่ยวกับการโพสต์ Sandbox ที่เกี่ยวข้อง หลุม 6: หมุน d20 การตายที่พบบ่อยมากในเกม RPG สวมบทบาทบนโต๊ะคือการตายแบบยี่สิบหน้า ( icosahedronหรือที่รู้จักกันทั่วไปว่าd20 ) มันเป็นหน้าที่ของคุณที่จะต้องตายแบบนี้ อย่างไรก็ตามหากคุณเพิ่งส่งคืนหมายเลขสุ่มระหว่าง 1 ถึง 20 นั่นอาจเป็นเรื่องเล็กน้อย ดังนั้นงานของคุณคือการสร้างเครือข่ายสุ่มสำหรับการตายที่กำหนด เราจะใช้เน็ตต่อไปนี้: มันเป็นแถบสามเหลี่ยมเพื่อให้สามารถแสดงเป็นรายการจำนวนเต็มได้อย่างง่ายดาย เช่นถ้าคุณได้รับอินพุต: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, …

3
ความขัดแย้งของการเดินทางข้ามเวลา
ผู้ชายมีอุปกรณ์สองชิ้น A time machine - เขาสามารถควบคุมเครื่องจักรนี้ได้โดยการคิด ช่วยให้เขาสามารถเดินทางจากจุดใด ๆ ในเวลาไปยังจุดอื่นในเวลาในอดีตหรืออนาคต (หรือแม้แต่จุดปัจจุบันในเวลา) ในเวลาไม่นานเลย โปรดทราบว่าหากเขาเดินทางไปที่ผ่านมาจาก B ถึง A เหตุการณ์ปกติทั้งหมด (ไทม์แมชชีนนอกเวลา, ตัวแยกกระแสสลับ) จาก A ถึง B ต้องทำซ้ำในลักษณะเดียวกัน จากจุด B เขาจะถูกนำกลับไปยังจุด A ดังนั้นการเดินทางข้ามเวลาครั้งเดียวจะสร้างวงวนไม่สิ้นสุด Alternator - ตระหนักถึงปัญหานี้เขาสร้างเครื่องอื่น เขาสังเกตเห็นว่าแม้ว่าเหตุการณ์ทางกายภาพทั้งหมดจะเกิดขึ้นซ้ำแล้วซ้ำอีกความคิดของเขาอาจแตกต่างออกไป ดังนั้นเครื่องนี้ถูกออกแบบมาให้สามารถควบคุมได้ด้วยความคิดเช่นกัน เครื่องจักรสามารถใช้งานได้ตลอดเวลาเพื่อจัดหาอนาคตสำรอง (แต่ไม่ใช่ในอดีต) เกี่ยวกับเวลาที่ใช้ ตัวอย่าง ฉันจะอธิบายรายละเอียดทั้งหมดโดยใช้ตัวอย่างที่มีความยาว 1000 T+250 250 T+0 500 T-200 100 T-50 125 A 225 T-400 …
17 code-golf 

8
ออโตเซลลูล่าร์ดิจิตอล
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในจำนวนเต็มบวกคี่และสตริงของเลขทศนิยม ( 0123456789) สตริงหมายถึงสิบรัฐหนึ่งมิติเซลล์หุ่นยนต์ แต่ละหลักครอบครองหนึ่งเซลล์และกฎการอัปเดตจากรุ่นหนึ่งไปยังอีกรุ่นหนึ่งคือทุกเซลล์กลายเป็นตัวเลขที่เกิดจากผลรวมของเซลล์ N ที่มีศูนย์กลางอยู่ที่เซลล์ modulo 10 เซลล์แรกและเซลล์สุดท้ายล้อมรอบราวกับว่าเพื่อนบ้านดังนั้นเซลล์จึงสามารถมีเซลล์ N อยู่กึ่งกลางได้ โปรดทราบว่า N อาจมีขนาดใหญ่กว่าความยาวของสตริงซึ่งหมายความว่ามันสามารถพันได้หลายครั้งและบางหลักจะอยู่ในผลรวมหลายครั้ง ตัวอย่างเช่นถ้า N คือ 7 และสตริงคือ038เพื่อให้เห็นภาพของเซลล์เพื่อหาผลรวมเราสามารถเขียน038ซ้ำแบบไม่สิ้นสุดในทั้งสองทิศทาง ...038038038038038... ดังนั้นตัวเลขที่0จะเปลี่ยนเป็นผลรวมของ 7 หลักอยู่ที่ใด ๆ0โมดูโล 10: ...038038038038038... ^_____^ | sum all these นี่คือซึ่งเป็น(0+3+8+0+3+8+0)%102 ในทำนองเดียวกันตัวเลข3และ8เปลี่ยนเป็นกำหนดโดย(3+8+0+3+8+0+3)%10= 5และ(8+0+3+8+0+3+8)%10= 0ตามลำดับ ดังนั้นรุ่นหลัง038คือ250เมื่อ N คือ 7 โปรแกรมหรือฟังก์ชั่นของคุณจำเป็นต้องพิมพ์หรือคืนค่าสายอักขระหลักของสายป้อนตัวเลข เช่นใช้กฎการอัปเดตหนึ่งครั้งกับแต่ละเซลล์และให้ผลลัพธ์ รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ กรณีทดสอบ [digit string] -> [N = 1], …

9
ลำดับรอบผลรวมของเซเว่น
ดูตารางสูตรคูณ sevens จาก 7 × 0 ถึง 7 × 9: 0, 7, 14, 21, 28, 35, 42, 49, 56, 63 ถ้าเราแค่ดูตัวเลขในตำแหน่งที่เราได้รับการเปลี่ยนแปลงของตัวเลข 0 ถึง 9: 0, 7, 4, 1, 8, 5, 2, 9, 6, 3 ลองพิจารณาจำนวนเต็มเลขทศนิยมบวก N และแทนที่แต่ละหลัก D ใน N ด้วยตัวเลขแทนตำแหน่งที่ 7 × D ยกตัวอย่างเช่น15209กลายเป็น75403เพราะ1แผนที่7, 5แผนที่เพื่อ5, 2แมปไป4, 0แมปไป0และแมปไป93 ตอนนี้ให้ทำซ้ำกระบวนการนี้ด้วยจำนวนเต็มทศนิยมใหม่นี้จนกว่าเราจะเห็นรอบเช่นจนกว่าจำนวนเต็มที่เราได้เห็นมาแล้ว ตัวอย่างเช่นเมื่อ15209เราได้วัฏจักร …

7
การแก้ไขข้อพิพาทรูปแบบวันที่
ลำดับการจัดรูปแบบของวันที่เป็นหนึ่งในปัญหาที่ซับซ้อนและแตกแยกที่สุดที่โลกเผชิญอยู่ทุกวันนี้ พวกเราบางคนแย้งว่าเดือน / วัน / ปีมีความเหมาะสมพิจารณาว่าเป็นวิธีที่เราพูดออกมาดัง ๆ คนอื่น ๆ ดังประกาศว่าวัน / เดือน / ปีที่ดีที่สุดเพราะมันทำให้เงื่อนไขในลำดับที่มากขึ้นของระยะเวลาที่พวกเขาเป็นตัวแทน พอคือพอ. คอมพิวเตอร์สามารถแก้ไขข้อพิพาทนี้ได้อย่างเรียบง่ายและยุติธรรม 12/1/2015รหัสของคุณฟังก์ชั่นที่สมบูรณ์หรือโปรแกรมจะใช้สตริงวันที่คั่นด้วยเครื่องหมายทับเช่น โปรดทราบว่านี่เป็นรูปแบบที่แน่นอนโดยไม่มีเลขศูนย์นำหน้าและมีปีสี่หลักในตอนท้าย ถ้ามันแน่นอนเดือน / วัน / ปีเช่น10/31/1998การส่งออกการแสดงข้อความของวันนั้นในรูปแบบตรงนี้มีชื่อเต็มเดือนวันและปี:October 31, 1998 ถ้ามันแน่นอนวัน / เดือน / ปีเช่นการส่งออกในประเภทเดียวกันของการแสดงข้อความ:25/12/1989December 25, 1989 หากไม่ชัดเจนว่าเป็นเดือน / วัน / ปีหรือวัน / เดือน / ปีให้ส่งออกวันที่แก้ไขความกำกวมโดยรวมสองวันที่เป็นไปได้ดังต่อไปนี้: สร้างชื่อเดือนใหม่โดยจดชื่อครึ่งแรกของเดือนก่อนหน้าและต่อท้ายครึ่งหลังของเดือนต่อมา สำหรับเดือนที่มีความยาวคี่ครึ่งแรกจะได้รับตัวอักษรพิเศษ การจะมีความชัดเจนในครึ่งแรกของเดือนที่มีJanu, Febr, Mar, Apr, Ma, Ju, Ju, …
17 code-golf  string 

1
การวาดโครงสร้างลูอิสของอัลเคน
ฉันเพิ่งมีบทเรียนในโรงเรียนเกี่ยวกับอัลเคนและคิดว่ามันอาจจะเป็นความท้าทายที่ยิ่งใหญ่สำหรับกอล์ฟ! ไม่ต้องกังวลมันไม่ซับซ้อนอย่างที่เห็น! Rehash ด่วน (โปรดทราบ: เพื่อให้ข้อมูลสั้น ๆ นี้ไม่ใช่ข้อมูลทั้งหมดที่ถูกต้อง 100%) อัลคาเนสเป็นคาร์บอนและไฮโดรเจน อะตอมคาร์บอนทุกอันมีพันธะ 4 พันธะและพันธะไฮโดรเจนทุกอัน 1 อะตอมคาร์บอนทั้งหมดของอัลเคนก่อตัวเป็นสตริงซึ่ง C-atom แต่ละอันเชื่อมต่อกับ C-atoms อีก 2 ตัว (ซ้ายและขวาในโครงสร้าง Lewis) และ 2 H-Atoms (ขึ้นและลง) ยกเว้นปลายของสตริง ที่ C-atom เชื่อมต่อกับ C อื่นเพียง 1 แต่ 3 Hs นี่เป็นตัวอย่างพื้นฐานสำหรับ pentane (อัลเคนที่มี 5 C-atoms และ 12 H-atoms): H H H H H …

6
การแจกแจง N-Dimensions เวกเตอร์
รับจำนวนเต็มบวกk > 1และไม่ใช่จำนวนเต็มลบiสร้างk-tuple (หรือk-dimensional vector) ของจำนวนเต็มไม่เป็นลบ ทุกkแผนที่จากℕเพื่อℕ k , ต้อง bijective นั่นคือทุกการป้อนข้อมูลiควรผลิต tuple ที่แตกต่างกันและทุก tuple iเป็นไปได้ที่จะต้องมีการผลิตโดยการป้อนข้อมูลบางส่วน คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น, รับอินพุตผ่าน STDIN (หรือทางเลือกที่ใกล้เคียงที่สุด), อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ของฟังก์ชันและส่งผลลัพธ์ผ่าน STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด), ค่าส่งคืนของฟังก์ชันหรือพารามิเตอร์ คุณสามารถใช้รูปแบบรายการแบบแบนที่สะดวกและไม่คลุมเครือสำหรับเอาท์พุท วิธีการแก้ปัญหาของคุณควรกำหนดไม่มีการ จำกัด เทียมkและiแต่คุณอาจคิดว่าพวกเขาพอดีกับขนาดจำนวนเต็มภาษาพื้นเมือง อย่างน้อยที่สุดคุณต้องสนับสนุนค่าถึง255แม้ว่าขนาดจำนวนเต็มดั้งเดิมของคุณจะเล็กกว่านั้น สำหรับการใด ๆ1 < k < 32, รหัสของคุณควรสร้างผลลัพธ์ในเรื่องของการวินาที (แน่นอนถ้าคำตอบของคุณไม่สนับสนุนว่าเนื่องจากขนาดใหญ่เพื่อการปกครองก่อนหน้านี้ จำกัด การปรับเปลี่ยนตาม) นี้ควรจะไม่มีปัญหา: มันเป็นไปได้ที่จะแก้ปัญหาความท้าทายเช่นนี้ว่ามันทำงานได้ถึง 2 128ในไม่กี่วินาที แต่วงเงินที่จะมีการหลีกเลี่ยงการตอบที่จริงสำทับจากการที่จะหาผลi < 231i0i โปรดระบุคำอธิบายเกี่ยวกับการทำแผนที่ที่คุณเลือกและคำตอบว่าทำไมมันถึงเป็น bijective (ไม่จำเป็นต้องพิสูจน์อย่างเป็นทางการ) นี่คือรหัสกอล์ฟคำตอบที่สั้นที่สุด …

20
ทำ Grader การแข่งขันคณิตศาสตร์
ฉันสนุกกับการเข้าร่วมการแข่งขันคณิตศาสตร์ที่ดำเนินการโดย Mu Alpha Theta สมาคมคณิตศาสตร์แห่งสหรัฐอเมริกา ที่การแข่งขันฉันทำการทดสอบแบบปรนัย 30 ข้อ มีห้าตัวเลือกต่อคำถามที่มีข้อความ A ถึง E คะแนนของฉันในการทดสอบคือสี่คะแนนสำหรับแต่ละคำตอบที่ถูกต้องคะแนนศูนย์สำหรับคำถามที่เว้นว่างไว้และลบหนึ่งคะแนนสำหรับคำตอบที่ผิดแต่ละข้อ เขียนโปรแกรมที่ให้คะแนนการทดสอบตามระบบการให้คะแนนข้างต้น ควรมีสององค์ประกอบในการป้อนข้อมูล: คีย์คำตอบตามด้วยการตอบสนอง คำถามที่เว้นว่างไว้จะถูกป้อนเป็นช่องว่าง อินพุตแรกต้องมีเฉพาะตัวอักษร AE (หรือ ae, ตัวเลือกของคุณ) และสามารถสันนิษฐานได้ว่าไม่มีช่องว่างในอินพุต อินพุตที่สองต้องมีช่องว่างและตัวอักษร AE (หรือ ae) เท่านั้น อินพุตที่ไม่ใช้การทดสอบ 30 คำถามจะต้องพิมพ์Invalid testเป็นเอาต์พุต Invalid testการส่งออกควรจะมีคะแนนหรือ โบนัส หากโปรแกรมของคุณพิมพ์หมายเลขที่ถูกต้องจำนวนที่เว้นว่างไว้และหมายเลขที่ไม่ถูกต้องหลังจากทำคะแนนสุดท้ายให้(aR bB cW)ปิด 20 ไบต์ ตัวอย่างอินพุต CABBDCABECDBACDBEAACADDBBBEDDA //answer key CABEDDABDC BACDBBAADE CBBEDDA //responses ตัวอย่างผลลัพธ์ ไม่มีโบนัส …
17 code-golf  string 

11
Gamma Function Golf
กำหนดจำนวนจริงtใน(-10^9,13)(ไม่รวม-10^9หรือ13) เป็นอินพุตเอาต์พุตΓ(t)หรือที่เรียกว่าฟังก์ชันแกมมาซึ่งกำหนดไว้ดังนี้: คุณไม่สามารถใช้ฟังก์ชันแกมมาในตัวเพื่อแก้ปัญหานี้และห้ามใช้ฟังก์ชันการรวมตัวเลขหรือสัญลักษณ์ในตัว ผลลัพธ์ของคุณควรถูกต้องถึง 6 ตัวเลขที่มีนัยสำคัญหรือภายใน10^-6มูลค่าจริงแล้วแต่จำนวนใดจะน้อยกว่าสำหรับค่าที่กำหนด ฟังก์ชันแกมมาในตัวของ Python จะถูกใช้เพื่อกำหนดค่าจริง คุณอาจจะสมมติΓ(t)ถูกกำหนด - นั่นคือtเป็นทั้งจำนวนจริงบวกหรือเป็นจำนวนจริงที่ไม่ใช่จำนวนเต็มลบ - |Γ(t)| ≤ 10^9และ นี่คือโปรแกรมอ้างอิงที่คุณอาจใช้เพื่อรับค่าจริงโดยใช้ฟังก์ชันแกมม่าในตัวของ Python ตัวอย่าง 1 -> 1.000000 -2.5 -> -0.945309 3.14159265 -> 2.288038 -2.71828182846 -> -0.952682 12 -> 39916800.000000 0.5 -> 1.772454 8.675309 -> 20248.386956 -10.1 -> -0.000002 กฎระเบียบ นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุด (เป็นไบต์) ชนะ ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม อินพุตและเอาต์พุตอาจดำเนินการในลักษณะใดก็ตามที่ถือว่าเป็นมาตรฐานสำหรับภาษาของคุณ คุณสามารถเขียนโปรแกรมเต็มฟังก์ชั่นหรือสิ่งใดก็ตามที่ถือว่าเป็นคำตอบที่ถูกต้องสำหรับภาษาของคุณ …

14
สนุกกับการเรียงสับเปลี่ยน
ใครไม่รักการเรียงสับเปลี่ยนใช่ไหม? ฉันรู้ว่ามันยอดเยี่ยมมาก - สนุกมาก! ดีทำไมไม่ใช้เวลานี้สนุกและทำให้มันfunner ? นี่คือความท้าทาย: รับอินพุตในรูปแบบที่แน่นอน: nPr, ซึ่งnเป็นพูลที่นำมาจากและrเป็นจำนวนการเลือกจากพูลนั้น (และnและrเป็นจำนวนเต็ม) เอาต์พุต / ส่งกลับจำนวนพีชคณิตที่แน่นอน สำหรับผู้ที่มีสนิมเล็กน้อยกับคำศัพท์: การเปลี่ยนแปลง, การกำหนด 2a อย่างไรก็ตามนี่คือที่มาของความท้าทาย (ทำให้ไม่ง่ายเกินไป): คุณไม่สามารถใช้ไลบรารีเฟรมเวิร์กหรือเมธอดสำหรับฟังก์ชันการเรียงลำดับของคุณ คุณไม่สามารถใช้วิธีแบบแฟคทอเรียลวิธีการเรียงสับเปลี่ยนหรืออะไรก็ได้ คุณต้องเขียนทุกอย่างด้วยตัวเอง หากต้องการคำชี้แจงเพิ่มเติมโปรดอย่าลังเลที่จะบอกฉันในความคิดเห็นและฉันจะทำตามทันที นี่คือตัวอย่าง I / O: ฟังก์ชั่นตัวอย่างคือ permute(String) -> int การป้อนข้อมูล: permute("3P2") เอาท์พุท: 6 นี่คือรหัส - กอล์ฟดังนั้นรหัสที่สั้นที่สุดชนะ!

7
การหาพาร์ติชันที่ไม่ต้องเสียเงิน
บทสรุปผู้บริหาร ป้อนข้อมูลkให้ค้นหาพาร์ทิชันของจำนวนเต็ม1เพื่อnเป็นkส่วนย่อยฟรีสำหรับที่ใหญ่ที่สุดที่nคุณสามารถภายใน 10 นาที พื้นหลัง: หมายเลข Schur ชุดAคือผลรวมฟรีถ้าผลรวมของตนเองA + A = { x + y | x, y in A}มีองค์ประกอบที่ไม่มีในการร่วมกันกับมัน สำหรับเลขจำนวนเต็มบวกทุกตัวkจะมีจำนวนเต็มที่มากที่สุดS(k)ซึ่งชุด{1, 2, ..., S(k)}นั้นสามารถแบ่งพาร์ติชันเป็นkเซ็ตย่อยที่ไม่มีผลรวมได้ หมายเลขนี้เรียกว่าหมายเลข k th Schur (OEIS A045652 ) ตัวอย่างเช่นS(2) = 4. เราสามารถแบ่งพาร์ติชัน{1, 2, 3, 4}เป็น{1, 4}, {2, 3}และนั่นคือพาร์ติชันที่ไม่ซ้ำกันในชุดย่อยที่ไม่มีผลรวมสองชุด แต่ตอนนี้เราไม่สามารถเพิ่ม5ส่วนใดส่วนหนึ่งได้ ท้าทาย เขียนโปรแกรมกำหนดขึ้นซึ่งทำสิ่งต่อไปนี้: ใช้จำนวนเต็มบวกkเป็นอินพุต เขียนการประทับเวลา Unix ปัจจุบันเพื่อ stdout ขาออกลำดับของพาร์ทิชันของ1การnเข้าไปในkส่วนย่อยรวมฟรีสำหรับเพิ่มขึ้นnตามลำดับด้วยเวลา …

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