คำถามติดแท็ก combinatorics

สำหรับความท้าทายที่เกี่ยวข้องกับ combinatorics

1
ปัญหาการแต่งงานที่มั่นคง
พื้นหลัง สมมติว่ามี2*nคนแต่งงานและสมมติว่าแต่ละคนจะถูกดึงดูดให้nคนอื่น ๆ ภายใต้ข้อ จำกัด ที่: สถานที่น่าสนใจคือสมมาตร ; เช่นถ้าคนที่Aจะดึงดูดให้คนBคนนั้นเป็นที่ดึงดูดให้กับบุคคลBA แรงดึงดูดใจคือการต่อต้าน ; เช่นถ้าบุคคลAและบุคคลBแต่ละคนดึงดูดให้บุคคลCแล้วบุคคลAและบุคคลBจะไม่ดึงดูดซึ่งกันและกัน ดังนั้นเครือข่ายของสถานที่ท่องเที่ยวรูปแบบ (ไม่มีทิศทาง) ฝ่ายกราฟสมบูรณ์ Kn,nนอกจากนี้เรายังสมมติว่าแต่ละคนจัดอันดับคนที่พวกเขาสนใจ สิ่งเหล่านี้อาจแสดงเป็นน้ำหนักขอบในกราฟ การแต่งงานคือการจับคู่(A,B)ที่AและBดึงดูดซึ่งกันและกัน การแต่งงานไม่แน่นอนหากมีการแต่งงานอีกครั้งที่คน ๆ หนึ่งจากการแต่งงานแต่ละครั้งสามารถหย่าร้างคู่ครองของพวกเขาและแต่งงานกันและทั้งสองจบลงด้วยคนที่พวกเขาอันดับสูงกว่าอดีตคู่ของพวกเขา เป้าหมาย งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่สมบูรณ์ซึ่งใช้ความชอบของแต่ละคนในฐานะอินพุตและเอาท์พุตการแต่งงานสำหรับแต่ละคนเช่นว่าการแต่งงานแต่ละครั้งมีเสถียรภาพ อินพุต อินพุตอาจอยู่ในรูปแบบที่สะดวก เช่นกราฟถ่วงน้ำหนักรายการการตั้งค่าเรียงลำดับพจนานุกรม / การมอบหมาย ฯลฯ คุณสามารถเลือกที่จะใส่จำนวนผู้ใช้ทั้งหมดเป็นอินพุต แต่ไม่อนุญาตให้ป้อนข้อมูลอื่น เอาท์พุต เอาต์พุตยังสามารถอยู่ในรูปแบบที่สะดวกได้ เช่นรายการของสิ่งอันดับ, ปกขอบน้อยที่สุด, ฟังก์ชั่นที่เชื่อมโยงกับคู่ของพวกเขาแต่ละคน, ฯลฯ โปรดทราบว่าข้อ จำกัด เพียงอย่างเดียวคือการแต่งงานแต่ละครั้งมีเสถียรภาพ, ไม่มีข้อกำหนดอื่น ๆ หมายเหตุ คุณสามารถค้นหาข้อมูลเพิ่มเติมและO(n^2)อัลกอริทึมเพื่อแก้ปัญหานี้ในWikipediaหรือวิดีโอ Numberphileนี้ อย่างไรก็ตามคุณสามารถใช้อัลกอริทึมใด ๆ ได้ฟรี ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม นี่คือรหัสกอล์ฟ …

3
แปลงตัวอย่างเป็นดัชนี
เรากำลังใส่ลูกเป็นจำนวนคงที่ถังขยะ ถังขยะเหล่านี้เริ่มว่างเปล่า Empty bin (a=4): 0 0 0 0 และหนึ่งโดยหนึ่งเราเพิ่มลูกไปที่ถังขยะ 0 0 0 1 or 0 0 1 0 or 0 1 0 0 or 1 0 0 0 เราต้องการวิธีที่รวดเร็วในการวนรอบสถานะที่เป็นไปได้ทั้งหมดที่ถังขยะใช้โดยไม่ซ้ำกันและไม่พลาดและเราไม่ต้องการแจกแจงถังขยะที่เป็นไปได้ทั้งหมด ดังนั้นเราจึงกำหนดดัชนีสำหรับถังขยะแต่ละชุดแทน เรากำหนดดัชนีโดยการจัดเรียงการกำหนดค่าที่เป็นไปได้ในวิธีเฉพาะ: เรียงลำดับจากน้อยไปหามาก: ก่อน0 0 0 0อื่นจากนั้นกำหนดค่าที่เป็นไปได้โดยเพิ่ม 1 ลูกจากนั้น 2 และอื่น ๆ จากนั้นจัดเรียงภายในแต่ละผลรวมตามลำดับจากน้อยไปหามาก: 0 0 0 2 0 0 1 …

3
ตรวจสอบสามเหลี่ยมการลงคะแนนเสียง
จำนวนการลงคะแนนเสียงซึ่งเราจะติดป้ายBคือจำนวนของวิธีการของการจัดหมายเลข 1 ผ่าน B (B + 1) / 2 ลงในรูปสามเหลี่ยมเช่นว่าแต่ละแถวและคอลัมน์ที่อยู่ในลำดับการเพิ่มใด ๆ หมายเลขบัตรสี่หมายเลขแรกคือ: a(0) = 1 a(1) = 1 a(2) = 1 a(3) = 2 a(3)คือ 2 ซึ่งหมายความว่ามี 2 วิธีในการจัดเรียงตัวเลขจาก 1 ถึง3(3+1)/2 = 6ในรูปสามเหลี่ยมดังกล่าว: 1 1 2 3 or 2 4 4 5 6 3 5 6 ดูรายการลำดับ OEISสำหรับรายละเอียดเพิ่มเติม ความท้าทายของคุณซึ่งมีรูปสามเหลี่ยมการลงคะแนนคือการตรวจสอบความถูกต้อง หากเป็นไปตามเงื่อนไขของรูปสามเหลี่ยมการลงคะแนน …

3
ปัญหาวันเกิดทั่วไป
คืนนี้คู่หมั้นของฉันพาฉันออกไปทานอาหารค่ำเพื่อฉลองวันเกิดของฉัน ในขณะที่เราออกไปข้างนอกฉันได้ยินเสียงสุขสันต์วันเกิดร้องต่อแขก 5 คน (รวมถึงตัวเอง) ในร้านอาหารที่เต็มไปด้วย 50 คน สิ่งนี้ทำให้ฉันสงสัยว่า - ปัญหาวันเกิดฉบับดั้งเดิม (การค้นหาความน่าจะเป็นที่คน 2 คนในห้องNคนเดียวกันมีวันเกิดเดียวกัน) นั้นง่ายและตรงไปตรงมา แต่สิ่งที่เกี่ยวกับการคำนวณความน่าจะเป็นที่อย่างน้อยkผู้คนจากNวันเกิดเดียวกัน ในกรณีที่คุณสงสัยความน่าจะเป็นอย่างน้อย 5 คนจากทั้งหมด 50 คนที่แบ่งปันวันเกิดเดียวกันคือประมาณ 1/10000 ความท้าทาย รับจำนวนเต็มสองค่าNและkที่ซึ่งN >= k > 0แสดงความน่าจะเป็นที่อย่างน้อยkผู้คนในกลุ่มNคนที่แบ่งปันวันเกิดเดียวกัน เพื่อให้สิ่งต่าง ๆ ง่ายขึ้นสมมติว่ามีวันเกิดที่เป็นไปได้เสมอ 365 และทุกวันมีโอกาสเท่ากัน สำหรับk = 2นี้เดือดลงไปปัญหาวันเกิดของเดิมและน่าจะเป็น1 - P(365, N)/(365)**N(ที่P(n,k)เป็นจำนวนพีชคณิต k ยาวที่เกิดขึ้นจากองค์ประกอบ n ) สำหรับค่าที่kมากกว่านี้บทความ WolfWorld MathWorldอาจพิสูจน์ว่ามีประโยชน์ กฎระเบียบ ผลลัพธ์จะต้องถูกกำหนดไว้อย่างถูกต้องและแม่นยำที่สุดสำหรับภาษาที่คุณเลือก ซึ่งหมายความว่าไม่มีการประมาณค่า Monte …

23
ตัวเลขรูปหลายเหลี่ยม
จำนวนเหลี่ยมเป็นจำนวนจุดในส่วนk-gon nขนาด คุณจะได้รับnและkและงานของคุณคือการเขียนโปรแกรม / ฟังก์ชั่นที่ส่งออก / พิมพ์หมายเลขที่สอดคล้องกัน เกณฑ์การให้คะแนน นี่คือรหัสกอล์ฟ ทางออกที่สั้นที่สุดในหน่วยไบต์ชนะ ตัวอย่าง 3จำนวน RD หกเหลี่ยม ( k=6, n=3) เป็น28เพราะมี28จุดที่อยู่บน Testcases สามารถสร้างขึ้นจากชุดทดสอบ Pyth นี้ การใช้งาน: สองบรรทัดต่อ testcase nข้างบนkด้านล่าง n k output 10 3 55 10 5 145 100 3 5050 1000 24 10990000 ข้อมูลเพิ่มเติม ใน Wikipedia: https://en.wikipedia.org/wiki/Polygonal_number ใน Wolfram Mathworld: http://mathworld.wolfram.com/PolygonalNumber.html ใน …

10
การเรียงสับเปลี่ยนกับรายการที่แยกไม่ออก
ให้ลิสต์ของจำนวนเต็มเอาท์พุทจำนวนพีชคณิตของจำนวนเต็มกับพีชคณิตเรียงกันไม่ได้นับครั้งเดียว หากมีnจำนวนเต็มและแต่ละกลุ่มของตัวเลขที่แยกไม่ออกมีความยาวn_iนี่คือn! / (n_1! * n_2! * ...) กฎระเบียบ อินพุตจะเป็นรูปแบบของรายการบางรายการเป็นอาร์กิวเมนต์ของฟังก์ชันหรือโปรแกรมที่มีจำนวนเต็ม 1 ถึง 12 ที่ไม่ใช่ค่าลบ ผลลัพธ์จะเป็นการพิมพ์หรือคืนจำนวนการเรียงสับเปลี่ยนตามที่อธิบายไว้ข้างต้น ไม่มีช่องโหว่มาตรฐานหรือฟังก์ชั่นในตัว (สร้างการเรียงสับเปลี่ยนชุดค่าผสม ฯลฯ ) อนุญาตให้ใช้แฟกทอรี กรณีทดสอบ ปัจจัยการผลิต: 1, 3000, 2, 2, 8 1, 1, 1 2, 4, 3, 2, 3, 4, 4, 4, 4, 4, 1, 1 ขาออก: 60 1 83160

3
นับจำนวนเมทริกซ์ Hankelable
พื้นหลัง เมทริกซ์ Hankelไบนารีคือเมทริกซ์ที่มีค่าคงตัวเอียง (diagonals ลาดเอียง) คงที่ที่มีเพียง0s และ1s เท่านั้น เช่นเมทริกซ์ Hankel ขนาด 5x5 ดูเหมือนว่า a b c d e b c d e f c d e f g d e f g h e f g h i ที่a, b, c, d, e, f, g, h, iมีทั้งหรือ01 ลองกำหนดเมทริกซ์Mเป็นHankelableถ้ามีการเรียงลำดับของแถวและคอลัมน์ของMเพื่อให้Mเป็นเมทริกซ์ Hankel นี่หมายความว่าเราสามารถใช้การเรียงสับเปลี่ยนหนึ่งครั้งกับลำดับของแถวและอีกอันหนึ่งอาจแตกต่างกับคอลัมน์ …

5
วิธีเขียน N เป็นผลิตภัณฑ์ของจำนวนเต็ม M มีกี่วิธี
รับจำนวนเต็มN , นับจำนวนวิธีที่สามารถแสดงเป็นผลคูณของMจำนวนเต็ม> 1 อินพุตเป็นเพียงNและMและเอาต์พุตคือจำนวนรวมของกลุ่มจำนวนเต็มที่แตกต่างกัน ความหมายคุณสามารถใช้จำนวนเต็มมากกว่าหนึ่งครั้ง แต่แต่ละกลุ่มจะต้องแตกต่างกัน ( 3 x 2 x 2จะไม่นับถ้า2 x 2 x 3มี) ข้อ จำกัด 1 < N <2 31 1 < M <30 ตัวอย่าง อินพุต30 2ให้เอาต์พุต3เนื่องจากสามารถแสดงได้ 3 วิธี: 2 x 15 3 x 10 5 x 6 อินพุต16 3ให้เอาต์พุต1เนื่องจากมีเพียงกลุ่มเดียวเท่านั้น: 2 x 2 x 4 อินพุต2310 …

22
สร้างลำดับStöhr
ฉันกำลังเรียนรู้ทับทิมและเขียนรหัสที่ไม่น่าสนใจครั้งแรกของฉันเพื่อแก้ปัญหานี้ ความท้าทายคือการสร้างองค์ประกอบแรกnของลำดับStöhr , Sซึ่งกำหนดไว้ดังนี้ S [0] = 1 S [n] เป็นจำนวนที่น้อยที่สุดที่ไม่สามารถแสดงเป็นผลรวมขององค์ประกอบก่อนหน้านี้สองที่แตกต่างกันในลำดับ ดังนั้นลำดับเริ่มต้นด้วย 1, 2, 4, 7 และ 10 องค์ประกอบถัดไปคือ 13 เพราะ 11 (= 1 + 10) และ 12 (= 2 + 10) เป็นผลรวมขององค์ประกอบก่อนหน้า แต่ 13 ไม่ใช่ ฉันกำลังมองหารหัสที่สั้นที่สุด ใน Ruby ของฉันเองมีความยาว 108 ตัวอักษร แต่บางทีฉันอาจจะรอดูว่าคนอื่น ๆ คิดอะไรก่อนที่จะโพสต์มัน

1
ฉันจะต้องปลดล็อกโทรศัพท์ Android ของฉันนานเท่าไร
สถานการณ์ ฉันใช้ lockscreen จับคู่รูปแบบและฉันเสียใจที่ลืมรูปแบบของฉัน ฉันต้องการทราบว่าต้องใช้เวลาในการปลดล็อคเท่าใด นี่คือข้อกำหนดของหน้าจอล็อคของ Google ที่เราจะใช้สำหรับความท้าทายนี้ ทุกรหัสผิด 5 ผู้ใช้จะต้องรอ30 secondsก่อนรายการใด ๆ เพิ่มเติม อย่างน้อยรูปแบบต้องประกอบด้วย4 points(ดูด้านล่าง) จุดหนึ่งสามารถใช้ได้เพียงครั้งเดียว แต่คุณสามารถไปได้หลายครั้ง (ดูภาพด้านล่าง): ที่นี่จุดกึ่งกลางจะใช้เพียงครั้งเดียวแม้ว่าเราจะข้ามมันอีกครั้งสำหรับรูปแบบเฉพาะนี้ สมมติฐาน & ข้อเท็จจริง เราจะสมมติว่าเราเป็นฮีโร่และเราสามารถวาดรูปแบบใด ๆ ใน1 secondเราไม่จำเป็นต้องกินหรือนอนหลับ ใช่เราเป็นมนุษย์ ฉันเป็นคนที่โชคร้ายมาก "สถานการณ์กรณีที่เลวร้ายที่สุด" คือชีวิตประจำวันของฉันดังนั้นรูปแบบที่ฉันจะลองครั้งสุดท้ายจะเป็นรูปแบบที่ถูกต้อง เราต้องทำอะไรบ้าง? สำหรับผู้ที่ไม่ทราบว่า Android (และโทรศัพท์อื่น ๆ ในขณะนี้) มีความสามารถในการปลดล็อคโทรศัพท์ผ่านการวาดรูปแบบในเมทริกซ์ 9 จุด เมทริกซ์นี้สามารถอธิบายได้ดังต่อไปนี้: C(A) M(B) C(C) M(D) X(E) M(F) C(G) M(H) C(I) …

3
วงจรอาคารสำหรับการหาร 3
วงจรบูลใน TCS เป็นพื้นDAGประกอบด้วยและหรือไม่ประตูเมืองและสิ่งที่เป็นที่รู้จักกันคือ "การทำงานครบถ้วน" พวกเขาสามารถคำนวณฟังก์ชั่นเป็นไปได้ทั้งหมด เช่นนี้เป็นหลักการพื้นฐานในALU ถาม: สร้างวงจรเพื่อตรวจสอบว่าตัวเลข 8 หลักสองหลักหารด้วย 3 ได้หรือไม่และเห็นภาพผลลัพธ์ของคุณ (เช่นรูปภาพบางประเภท) เกณฑ์การตัดสินคะแนนเสียงขึ้นอยู่กับว่าเป็นรหัสในการสร้างวงจรgeneralizesอย่างกับตัวเลขขนาดโดยพลการและไม่ว่าการสร้างภาพอัลกอริทึมที่สร้างขึ้นมีขนาดเล็ก / สมดุล แต่ยังคงมนุษย์สามารถอ่านได้ (เช่นการสร้างภาพโดยการจัดมือไม่ได้รับอนุญาต) นั่นคือการสร้างภาพข้อมูลสำหรับ n = 8 เท่านั้น แต่รหัสจะทำงานได้ดีสำหรับทุกคน 'n' ผลงานที่ชนะเลิศได้รับการโหวตสูงสุด คำถามที่คล้ายกัน: สร้างเครื่องคูณโดยใช้ประตูตรรกะ NAND

12
รหัสกอล์ฟ: แจกลูกบอล (I)
ท้าทาย ในภารกิจนี้คุณได้คำนวณจำนวนวิธีที่เราสามารถกระจายลูกบอล A ไปยังเซลล์ B ด้วยเซลล์ทุกเซลล์ที่มีลูกบอลอย่างน้อยหนึ่งลูก อินพุต A และ B ถูกกำหนดในบรรทัดเดียวคั่นด้วยช่องว่างอินพุตจะถูกยกเลิกโดย EOF คุณอาจต้องการตรวจสอบการแก้ปัญหาของคุณที่นี่ อินพุต 0 0 1 0 12 4 6 3 18 17 20 19 15 13 18 9 20 20 17 14 9 2 14 13 18 11 เอาท์พุต 1 0 14676024 540 54420176498688000 23112569077678080000 28332944640000 38528927611574400 2432902008176640000 …

3
นับอาร์เรย์ที่สร้างชุดพิเศษ
คำถามนี้มีการตั้งค่าคล้ายกับFind a array ที่เหมาะกับชุดของผลรวมแม้ว่าจะค่อนข้างแตกต่างกันในเป้าหมาย พิจารณาอาร์เรย์ของความยาวA nอาร์เรย์มีจำนวนเต็มบวกเท่านั้น A = (1,1,2,2)เช่น ให้เรากำหนดf(A)เป็นชุดของผลรวมของทุกคนที่ไม่ว่างเปล่า subarrays Aต่อเนื่องกันของ ในกรณีf(A) = {1,2,3,4,5,6}นี้ ขั้นตอนในการผลิตf(A) มีดังนี้: subarrays ของAreA จำนวนเงินของตนมี(1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2) ชุดที่คุณได้รับจากรายการนี้จึงเป็น1,1,2,2,2,3,4,4,5,6{1,2,3,4,5,6} เราเรียกอาเรย์ที่A ไม่ซ้ำกันถ้าไม่มีอาเรย์อื่นBที่มีความยาวเท่ากันเช่นนั้นf(A) = f(B)ยกเว้นสำหรับอาเรย์ที่Aกลับด้าน เป็นตัวอย่างf((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}แต่ไม่มีความยาวอื่น ๆ3ที่สร้างชุดของผลรวมเดียวกัน เราจะพิจารณาอาร์เรย์ที่องค์ประกอบที่มีทั้งจำนวนเต็มรับหรือs s+1เช่นถ้าs=1อาร์เรย์เท่านั้นที่จะมีและ12 งาน งานสำหรับที่กำหนดnและsจะนับจำนวนอาร์เรย์ที่ไม่ซ้ำกันของความยาวนั้น คุณสามารถสรุปได้ว่าsอยู่ระหว่างและ19 คุณไม่ควรนับการย้อนกลับของอาเรย์รวมทั้งอาเรย์เอง ตัวอย่าง s = 1n+1คำตอบอยู่เสมอ …

3
การแยกตัวของคำ Lyndon
พื้นหลัง คำลินดอนเป็นสตริงที่ไม่ว่างเปล่าซึ่งเป็นอย่างเคร่งครัด lexicographically ขนาดเล็กกว่าทุกหมุนเวียนอื่น ๆ มันเป็นไปได้ที่จะแยกแยะสตริงใด ๆ ที่ไม่ซ้ำกันในขณะที่การเรียงคำของลินดอนเช่นว่าคำย่อยเหล่านี้ไม่ได้เพิ่มคำในพจนานุกรม ความท้าทายของคุณคือทำสิ่งนี้ให้รัดกุมที่สุด รายละเอียด คุณควรใช้ฟังก์ชั่นหรือโปรแกรมที่ระบุการแยกตัวประกอบคำของ Lyndon ของสตริง ASCII ที่พิมพ์ได้ตามลำดับเพื่อส่งออกสตริงย่อยผลลัพธ์เป็นอาร์เรย์หรือสตรีมบางชนิด ควรเปรียบเทียบอักขระด้วยจุดรหัสและอนุญาตวิธีการอินพุตและเอาต์พุตมาตรฐานทั้งหมด ตามปกติสำหรับcode-golfโปรแกรมที่สั้นที่สุดเป็นไบต์จะเป็นผู้ชนะ กรณีทดสอบ '' [] 'C' ['C'] 'aaaaa' ['a', 'a', 'a', 'a', 'a'] 'K| ' ['K|', ' '] 'abaca' ['abac', 'a'] '9_-$' ['9_', '-', '$'] 'P&O(;' ['P', '&O(;'] 'xhya{Wd$' ['x', 'hy', 'a{', 'Wd', '$'] 'j`M?LO!!Y' …

27
คู่ที่ไม่ได้สั่งซื้อทั้งหมดระหว่างองค์ประกอบของอาร์เรย์
งาน: ส่งคืนอาร์เรย์ที่มีคู่ที่เป็นไปได้ทั้งหมดระหว่างองค์ประกอบของอาร์เรย์ ตัวอย่าง จากผลตอบแทนa=["a", "b", "c", "d"];b=[["a","b"],["a","c"],["a","d"],["b","c"],["b","d"],["c","d"]] คู่สามารถจะอยู่ในลำดับใด ๆ ตราบเท่าที่อยู่รวมกันเป็นไปได้ทั้งหมดจะถูกรวมและเห็นได้ชัดว่าเป็นเหมือนกัน["b","d"]["d","b"] อินพุต [a-z]อาร์เรย์ขององค์ประกอบที่ไม่ซ้ำกันสตริงประกอบด้วยตัวอักษรจากชั้นเรียน เอาท์พุต อาร์เรย์ 2d ที่มีองค์ประกอบของอินพุตอาร์เรย์ที่เป็นไปได้ทั้งหมด กรณีทดสอบ input=["a","b","c"]; //output=[["a","b"],["a","c"],["b","c"]] input=["a","b","c","d","e"]; //output=[["a","b"],["a","c"],["a","d"],["a","e"],["b","c"],["b","d"],["b","e"],["c","d"],["c","e"],["d","e"]] หมายเหตุ:ฉันไม่พบสิ่งที่เหมือนกันสำหรับความท้าทายนี้ หากมีอยู่แจ้งเตือนฉันด้วยความคิดเห็นเพื่อวางคำถาม

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