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

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

4
สร้างสายลับคู่หนึ่งที่จะขว้างก้อนหินลงในแม่น้ำ
เมื่อเร็ว ๆ นี้ที่Puzzling ที่เพิ่งเปิดตัวใหม่SEมีปัญหาเกี่ยวกับสายลับที่ขว้างก้อนหินไปยังแม่น้ำที่ค่อนข้างท้าทาย: สายลับสองคนจะต้องผ่านหมายเลขลับสองหมายเลข (หมายเลขหนึ่งต่อสายลับ) ซึ่งไม่มีศัตรูสังเกตเห็น พวกเขาได้ตกลงกันเกี่ยวกับวิธีการทำสิ่งนี้โดยใช้หินที่แยกไม่ออกล่วงหน้าเพียง 26 ก้อน พวกเขาพบกันที่แม่น้ำที่มีกองหิน 26 ก้อน เริ่มต้นด้วยสายลับแรกพวกเขาผลัดกันขว้างก้อนหินกลุ่มหนึ่งลงไปในแม่น้ำสายลับตัวแรกโยนก้อนหินจำนวนหนึ่งจากนั้นสายที่สองจากนั้นสายที่หนึ่งจากนั้นสายแรกจะกลับมาอีกครั้ง ... สายลับแต่ละคนจะต้องขว้างหินอย่างน้อยหนึ่งก้อนในตาของเขาจนกว่าก้อนหินทั้งหมดจะหายไป พวกเขาสังเกตการขว้างและแตกต่างเมื่อไม่มีหินอีกต่อไป พวกเขาเก็บความเงียบตลอดเวลาและไม่มีการแลกเปลี่ยนข้อมูลยกเว้นจำนวนหินที่โยนในแต่ละรอบ พวกเขาสามารถแลกเปลี่ยนตัวเลขได้สำเร็จอย่างไรถ้าตัวเลขสามารถอยู่ระหว่าง 1 ถึง M ได้? งานของคุณคือการสร้างคู่ของโปรแกรม, spy1และที่สามารถแก้ปัญหานี้สำหรับเป็นไปได้สูงสุดspy2M โปรแกรมของคุณแต่ละคนจะใช้ตัวเลขจาก1การที่คุณเลือกMเป็น input จากนั้นspy1จะเอาท์พุทตัวเลขที่แทนจำนวนก้อนหินที่มันขว้างลงไปในแม่น้ำซึ่งจะเป็นอินพุตspy2ซึ่งจะส่งออกตัวเลขที่จะป้อนเข้าspy1และอื่น ๆ จนกว่าจะมีการส่งออกตัวเลขรวม26กัน เมื่อสิ้นสุดการขว้างแต่ละโปรแกรมจะส่งออกหมายเลขที่เชื่อว่าโปรแกรมอื่นมีซึ่งจะต้องตรงกับหมายเลขที่ป้อนเข้าสู่โปรแกรมอื่นจริง โปรแกรมของคุณต้องทำงานคู่ได้รับคำสั่งเป็นไปได้ทั้งหมดของตัวเลข(i, j)ที่ทั้งสองiและjจะแตกต่างจากการ1M โปรแกรมที่ใช้งานได้ดีที่สุดMจะเป็นผู้ชนะโดยคำตอบแรกจะถูกโพสต์ นอกจากนี้ผมจะได้รับรางวัลรางวัล 100 ชื่อเสียงเพื่อแก้ปัญหาแรกที่ได้รับการพิสูจน์ในการทำงานสำหรับM >= 2286และ 300 M >= 2535เพื่อแก้ปัญหาแรกที่ได้รับการพิสูจน์ในการทำงานสำหรับ

5
ปัญหาเหรียญ
พื้นหลัง สกุลเงินอย่างเป็นทางการของประเทศจินตนาการของ Golfenistan คือฟูและมีเหรียญสามชนิดหมุนเวียน: 3 foos, 7 foos และ 8 foos จะเห็นได้ว่าเป็นไปไม่ได้ที่จะจ่ายเงินจำนวนหนึ่งเช่น 4 foos โดยใช้เหรียญเหล่านี้ อย่างไรก็ตามสามารถสร้างจำนวนมากพอทั้งหมด งานของคุณคือการหาจำนวนเงินที่ใหญ่ที่สุดที่ไม่สามารถเกิดขึ้นกับเหรียญ (5 Foos ในกรณีนี้) ซึ่งเป็นที่รู้จักกันเป็นปัญหาเหรียญ อินพุต ข้อมูลที่คุณป้อนเป็นรายการจำนวนเต็มบวกซึ่งแทนค่าของเหรียญในการหมุนเวียน รับประกันสองสิ่งเกี่ยวกับมัน:L = [n1, n2, ..., nk] GCD ขององค์ประกอบของLคือ 1 L ไม่มีหมายเลข 1 มันอาจจะไม่เรียงกันและ / หรือมีการซ้ำซ้อน (คิดว่าเหรียญฉบับพิเศษ) เอาท์พุต เนื่องจาก GCD ของLคือ 1 ทุกจำนวนเต็มมากพอmสามารถแสดงเป็นชุดค่าผสมเชิงเส้นที่ไม่เป็นลบขององค์ประกอบ ในคำอื่น ๆ เรามี m = …

11
ซ็อกเก็ต - ความเข้ากันได้ของปลั๊ก
การเดินทางด้วยอุปกรณ์อิเล็กทรอนิกส์เป็นเรื่องสนุกเสมอโดยเฉพาะอย่างยิ่งเมื่อคุณต้องการอะแดปเตอร์เพื่อชาร์จ ความท้าทายของคุณคือทำให้การวางแผนการเดินทางง่ายขึ้นเพียงเล็กน้อยโดยตรวจสอบว่าปลั๊กที่ให้มานั้นเข้ากันได้กับซ็อกเก็ตที่กำหนด ท้าทาย กำหนดประเภทปลั๊กและซ็อกเก็ตประเภทส่งกลับค่าที่ระบุว่าพวกเขาจะทำงานร่วมกันหรือไม่ ตารางความเข้ากันได้ Socket Accepted plugs | Plug Accepting Sockets A A | A A, B B A, B | B B C C | C C, D, E, F, H, J, K, L, N, O D C, D, E, F | D D E C, E, F …

19
ทำให้โปรแกรมสามเหลี่ยมเป็นสิ่งที่ถูกต้อง
Triangularityเป็น esolang ใหม่ที่พัฒนาโดยMr. Xcoderโดยที่โครงสร้างของโค้ดต้องเป็นไปตามรูปแบบที่เฉพาะเจาะจงมาก: สำหรับnบรรทัดที่รหัสจะต้องมี2n-1ตัวอักษรของโปรแกรมอย่างแน่นอน สิ่งนี้ทำให้เกิดรูปสามเหลี่ยม / ปิรามิดโดยที่บรรทัดแรกมีอักขระเพียงตัวเดียวและส่วนที่เหลือเพิ่มขึ้นทีละ 2 แต่ละบรรทัดจะต้องมีการบุด้วย.s ที่ด้านซ้ายและขวาเช่นตัวละครที่มีศูนย์กลางอยู่ที่เส้นของพวกเขาและทุกบรรทัดจะมีความยาวเบาะเดียวกัน หากlกำหนดเป็นจำนวนบรรทัดในโปรแกรมแต่ละบรรทัดในโปรแกรมต้องมีความยาว2 * l - 1 ตัวอย่างเช่นโปรแกรมทางด้านซ้ายนั้นถูกต้อง แต่โปรแกรมทางด้านขวาไม่ใช่: Valid | Invalid | ...A... | ABCDE ..BCD.. | FGH .EFGHI. | IJKLMN JKLMNOP | OPQRS เมื่อวางในโครงสร้างที่ถูกต้องชื่อจะชัดเจน งาน งานของคุณคือการใช้สตริงบรรทัดเดียวเป็นอินพุตแทนรหัสสามเหลี่ยมและเอาท์พุทมันแปลงเป็นรหัสที่ถูกต้องตามที่อธิบายไว้ข้างต้น ข้อมูลจำเพาะสำหรับ I / O: ข้อมูลที่ป้อนจะมีอักขระอยู่ในช่วงเท่านั้น 0x20 - 0x7e ความยาวของอินพุตจะเป็นตัวเลขจตุรัสเสมอ คุณต้องใช้จุดสำหรับการขยายช่องว่างไม่ใช่อย่างอื่น คุณสามารถอินพุตและเอาต์พุตด้วยวิธีการที่ยอมรับได้ นี่คือรหัสกอล์ฟเพื่อให้โค้ดที่สั้นที่สุดเป็นไบต์ชนะ! กรณีทดสอบ …
19 code-golf  string  code-golf  combinatorics  code-golf  math  number  code-golf  matrix  code-golf  string  decision-problem  code-golf  internet  code-golf  number  number-theory  integer  expression-building  code-challenge  primes  cops-and-robbers  obfuscation  code-challenge  primes  cops-and-robbers  obfuscation  code-golf  string  balanced-string  code-golf  quine  code-generation  code-golf  matrix  code-golf  tips  c#  code-golf  ascii-art  code-golf  ascii-art  source-layout  code-golf  quine  source-layout  popularity-contest  language-design  code-golf  array-manipulation  subsequence  code-golf  matrix  math  code-challenge  game  graph-theory  atomic-code-golf  code-golf  number  integer  polynomials  equation  code-golf  array-manipulation  sorting 

14
มันเป็นการสลับเพลงหรือไม่?
เมื่อวานนี้ฉันถามคำถามนี้เกี่ยวกับ ruffle shuffles ดูเหมือนว่าคำถามเมื่อวานนี้ยากไปหน่อยดังนั้นคำถามนี้เป็นงานที่เกี่ยวข้อง แต่ง่ายกว่ามาก วันนี้คุณจะถูกถามเพื่อตรวจสอบว่าการเปลี่ยนแปลงในความเป็นจริงสับเปลี่ยน riffle คำจำกัดความของการสลับแบบ riffle ของเราถูกดัดแปลงจากคำถามสุดท้ายของเรา: ส่วนแรกของการสุ่มคือการแบ่ง ในพาร์ทิชันแบ่งไพ่ในสอง ส่วนย่อยทั้งสองจะต้องต่อเนื่องเป็นเอกสิทธิ์เฉพาะบุคคลและครบถ้วนสมบูรณ์ ในโลกแห่งความเป็นจริงต้องการทำให้พาร์ติชันของคุณใกล้เคียงที่สุดเท่าที่จะเป็นไปได้อย่างไรก็ตามในความท้าทายนี้ไม่ใช่การพิจารณาพาร์ติชั่นทั้งหมดรวมถึงพาร์ติชั่นที่เสื่อมโทรม หลังจากที่พวกเขาได้รับการแบ่งพาร์ติชันบัตรจะได้แต่งงานกันในลักษณะดังกล่าวว่าบัตรรักษาลำดับญาติของพวกเขาภายในพาร์ทิชันที่พวกเขาเป็นสมาชิกของ ตัวอย่างเช่นหากการ์ดAอยู่ก่อนการ์ดBในสำรับและการ์ดAและBอยู่ในพาร์ทิชันเดียวกันการ์ดAต้องอยู่ก่อนการ์ดBในผลลัพธ์สุดท้ายแม้ว่าจำนวนการ์ดระหว่างการ์ดจะเพิ่มขึ้น หากAและBอยู่ในพาร์ติชั่นต่างกันพวกเขาสามารถอยู่ในลำดับใดก็ได้โดยไม่คำนึงถึงลำดับเริ่มต้นในผลลัพธ์สุดท้าย การสลับแบบสุ่มแต่ละอันนั้นสามารถถูกมองว่าเป็นการเปลี่ยนแปลงไพ่สำรับดั้งเดิม ตัวอย่างเช่นการเปลี่ยนแปลง 1,2,3 -> 1,3,2 เป็นการสลับแบบ riffle ถ้าคุณแยกดาดฟ้าเช่นนั้น 1, 2 | 3 เราเห็นว่าการ์ดทุกใบใน1,3,2นั้นมีลำดับที่เหมือนกันกับการ์ดอื่น ๆ ในพาร์ติชั่น ยังคงเป็นหลังจากที่21 ในทางกลับกันการเรียงสับเปลี่ยนต่อไปนี้ไม่ใช่การสลับแบบ riffle 1,2,3 -> 3,2,1 เราสามารถเห็นสิ่งนี้ได้เพราะพาร์ติชั่นทั้งสอง (ไม่สำคัญ) 1, 2 | 3 1 | 2, 3 มีคู่ของการ์ดที่ไม่รักษาลำดับญาติของพวกเขา ในพาร์ติชันแรก1และ2เปลี่ยนลำดับของพวกเขาในขณะที่พาร์ติชันที่สอง2และ3เปลี่ยนลำดับของพวกเขา …

23
สลับเดี่ยวของอาร์เรย์
แรงบันดาลใจจากที่นำมาจากคำถามที่กองล้น ความท้าทาย ได้รับจำนวนเต็มผลผลิตอาร์เรย์ทั้งหมดที่สามารถรับได้โดยการเปลี่ยนตรงสองรายการในอาร์เรย์n>1[1, 2, ..., n] สามารถผลิตอาร์เรย์ในลำดับใดก็ได้ คุณสามารถใช้[0, 1, ..., n-1](ตามพื้นฐาน 0) แทน[1, 2, ..., n](ตามพื้นฐาน 1) กฎเพิ่มเติม เข้าและส่งออกมีความยืดหยุ่นได้ตามปกติ โปรแกรมหรือฟังก์ชั่นที่ได้รับอนุญาตในการเขียนโปรแกรมภาษา ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ กรณีทดสอบ อินพุต2ให้เอาต์พุต (สมมติว่าเป็นฐาน 1) 2 1 อินพุต3ให้เอาต์พุต (โปรดสังเกตว่าสามอาร์เรย์สามารถอยู่ในลำดับใดก็ได้) 1 3 2 2 1 3 3 2 1 อินพุต4ให้เอาต์พุต 1 2 4 3 1 3 2 4 1 4 …

7
จำนวนขององค์ประกอบที่ไม่ว่างที่แตกต่างกันของการขยายฐานสอง
การเรียงลำดับคือลำดับใด ๆ ที่คุณสามารถหาได้จากอีกอันด้วยการลบจำนวนอักขระใด ๆ subsequences ไม่ว่างเปล่าที่แตกต่างของ100มี0, 1, 00, ,10 100subsequences ไม่ว่างเปล่าที่แตกต่างของ1010มี0, 1, 00, 01, 10, 11,010 , 100, 101, ,1101010 เขียนโปรแกรมหรือฟังก์ชั่นที่ให้จำนวนเต็มบวก nส่งกลับจำนวนของ subsequences ไม่ว่างเปล่าที่แตกต่างกันของการขยายตัวไบนารีของn ตัวอย่าง: ตั้งแต่4เป็น100ในไบนารีและเราเห็นว่ามันมีห้า subsequences f(4) = 5ไม่ว่างเปล่าที่แตกต่างกันข้างต้นดังนั้น เริ่มต้นจากn = 1ลำดับเริ่มต้น: 1, 3, 2, 5, 6, 5, 3, 7, 10, 11, 9, 8, 9, 7, 4, 9, 14, …

6
Anaglot Polygrams
งาน เขียนโค้ดบางอย่างที่สามารถจัดใหม่เป็น n โปรแกรมที่แตกต่างกันใน n ภาษาที่แตกต่างกันแต่ละอันจะแสดงจำนวนที่แตกต่างกันตั้งแต่ 1 ถึง n ไม่ควรมีสองภาษาเหมือนกัน แต่รุ่นที่แตกต่างกันของ "ภาษาเดียวกัน" จะถือว่าเป็นภาษาที่แตกต่างกันตราบใดที่พวกเขามีหมายเลขรุ่นหลักที่แตกต่างกัน สำหรับความท้าทายนี้สภาพแวดล้อม REPL ไม่แตกต่างจากภาษาแม่ แต่ยังคงเป็นภาษา แต่ละภาษาควรใช้การเปลี่ยนแปลงที่แตกต่างกันของซอร์สโค้ดและส่งออกตัวเลขที่แตกต่างในช่วง พีชคณิตจะถูกนับเป็นไบต์ไม่ได้อยู่ในตัวละคร คุณควรรวมการเปลี่ยนแปลงแต่ละอย่างที่ใช้กับภาษาที่ใช้ในการทดสอบ เกณฑ์การให้คะแนน คะแนนของคุณจะเป็น โดยที่ N คือจำนวนภาษาและ L คือจำนวนลำดับเฉพาะของโปรแกรมไบต์ L ไม่เท่ากับความยาวของโปรแกรม (เว้นแต่ว่าโปรแกรมจะมีขนาด 1 หรือ 0 ไบต์) นี่คือสคริปต์ไพ ธ อนเพื่อคำนวณความอนุเคราะห์ L ของ Conor O'Brien L เท่ากับความยาวของโปรแกรมแฟคทอเรียลหากว่าไม่มีไบท์ซ้ำในโปรแกรม เป้าหมายคือเพื่อเพิ่มคะแนนของคุณ

5
ปัญหาการแตกสร้อยคอ
พื้นหลัง ผมได้รับแรงบันดาลใจจาก3Blue1Brown 's ล่าสุดวิดีโอเกี่ยวกับปัญหาสร้อยคอแยก (หรือในขณะที่เขาเรียกมันว่าเป็นปัญหาที่ถูกขโมยสร้อยคอ) และความสัมพันธ์กับทฤษฎีบท Borsuk-ลาม ในปัญหานี้โจรสองคนได้ขโมยสร้อยคอที่มีค่าซึ่งประกอบด้วยอัญมณีหลายประเภท อัญมณีแต่ละชนิดมีจำนวนเท่ากันและพวกโจรต้องการที่จะแยกอัญมณีแต่ละชนิดให้เท่ากันในหมู่พวกเขาสองคน จับเป็นที่พวกเขาจะต้องทำเช่นนั้นโดยการแยกสร้อยเป็นส่วนที่ต่อเนื่องกันจำนวนหนึ่งและกระจายส่วนระหว่างสองของพวกเขา นี่คือตัวอย่างที่มีสี่ประเภทอัญมณีแสดงS, E, DและR(สำหรับไพลินมรกตเพชรและทับทิมตามลำดับ) สมมติว่าสร้อยคอมีดังนี้: [S,S,S,E,S,D,E,R,S,R,E,S,S,S,D,R,E,E,R,E,D,E,R,R,D,E,E,E] มี8ไพลิน, 10มรกต, 4เพชรและ6ทับทิม เราสามารถแยกสร้อยคอดังนี้: [[S],[S],[S,E,S,D,E,R,S],[R,E,S,S,S,D,R,E,E,R,E,D,E],[R,R,D,E,E,E]] จากนั้นถ้าเราให้ส่วนที่หนึ่ง, สามและห้าแก่ขโมยหนึ่งและส่วนที่สองและสี่กับขโมยอื่น ๆ แต่ละอันจะจบลงด้วย4ไพลิน, 5มรกต, 2เพชรและ3ทับทิม: [S], [S,E,S,D,E,R,S], [R,R,D,E,E,E] [S], [R,E,S,S,S,D,R,E,E,R,E,D,E], ใช้0-indexing [1,2,9,22]ตัดเหล่านี้เกิดขึ้นในดัชนี เป้าหมาย ปรากฎว่าแผนกที่เป็นธรรมดังกล่าวสามารถใช้งานได้ทุกครั้งที่มีnการตัดมากที่สุดซึ่งnเป็นประเภทอัญมณีจำนวนเท่าใด งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่สมบูรณ์ซึ่งใช้สร้อยคอเป็นอินพุทและเอาท์พุทการแบ่งน้อยที่สุด (จำนวนการตัดน้อยที่สุด) อินพุต อินพุตอาจอยู่ในรูปแบบที่สะดวก สร้อยคอควรเป็นลำดับของอัญมณีและไม่มีอะไรเพิ่มเติม เช่นรายการจำนวนเต็มพจนานุกรมที่มีกุญแจซึ่งเป็นตัวแทนประเภทอัญมณีและค่าเป็นรายการดัชนี คุณอาจเลือกที่จะรวมความยาวของสร้อยคอหรือจำนวนอัญมณีที่แตกต่างกัน แต่คุณไม่ควรใช้อินพุตอื่น คุณอาจคิดว่าสร้อยคออินพุตนั้นถูกต้อง คุณไม่จำเป็นต้องจัดการกับกรณีที่มีอัญมณีแปลก ๆ จำนวนหนึ่งหรือสร้อยคอนั้นว่างเปล่า เอาท์พุต อีกครั้งเอาต์พุตอาจอยู่ในรูปแบบที่สะดวก เช่นรายการของเซ็กเมนต์, …

8
ย้อนกลับเรียงแทรก
วัตถุประสงค์ สร้างรายการที่มีสัญญาณรบกวนเดิมจากการเคลื่อนไหวที่มีการจัดเรียงการแทรกเพื่อจัดเรียง รายการต้นฉบับจะมีตัวเลขทั้งหมดตั้งแต่0ถึงN-1(รวม) โดยที่Nขนาดของอินพุต อินพุต รายการที่มีการเคลื่อนไหวที่จำเป็นเพื่อเรียงลำดับรายการ แต่ละค่าแสดงถึงจำนวนช่องที่แทนที่ด้วยหมายเลขเดิม (สัญญาณรบกวน) ที่จะอยู่ในตำแหน่งที่ถูกต้องโปรดทราบว่ากระบวนการนี้มาจากด้านซ้ายไปทางขวา ค่าที่ตำแหน่ง (ดัชนี 0) iในรายการอินพุตจะอยู่ระหว่าง0และiรวม คุณไม่จำเป็นต้องจัดการอินพุตที่ไม่ถูกต้องพฤติกรรมใด ๆ เป็นที่ยอมรับในกรณีนี้ (เกิดความผิดพลาดวนซ้ำไม่สิ้นสุด ฯลฯ ) เอาท์พุต รายการที่มีสัญญาณรบกวน ทีละขั้นตอนในการสร้างการเคลื่อนไหว Scrambled List | Moves to sort [4,0,2,1,3,5] | [0, , , , , ] #4 stay in place [4,0,2,1,3,5] | [0,1, , , , ] #0 is moved …
19 code-golf  array-manipulation  code-golf  code-golf  animation  code-golf  restricted-source  code-golf  java  code-golf  decision-problem  graph-theory  code-golf  conversion  electrical-engineering  code-golf  ascii-art  code-golf  string  substitution  code-golf  math  code-golf  string  set-theory  code-golf  code-golf  compile-time  code-golf  kolmogorov-complexity  binary  code-golf  sequence  cops-and-robbers  code-golf  subsequence  card-games  code-golf  sequence  primes  code-golf  code-golf  number  graphical-output  music  code-golf  ascii-art  code-golf  string  lambda-calculus  code-golf  string  code-generation  code-golf  unicode  code-golf  math  combinatorics  code-golf  balanced-string  code-golf  sequence  cops-and-robbers  code-golf  sequence  cops-and-robbers  code-challenge  fastest-code  chess  code-golf  math  graphical-output  code-golf  string  hello-world  animation  code-golf  number  arithmetic  code-golf  integer  code-golf  code-golf  combinatorics  code-golf  kolmogorov-complexity  graphical-output  code-golf  string  code-golf  code-golf  game  code-golf  math  combinatorics  code-golf  ascii-art  popularity-contest  random  code-golf  arithmetic  number-theory  integer  code-golf  tips  underload  code-golf  math  sequence  primes  code-golf  math  path-finding  code-golf  ascii-art  primes  code-golf  kolmogorov-complexity  alphabet 

11
สุ่มกอล์ฟประจำวัน # 3: ฉากกั้นระหว่างฉาก
เกี่ยวกับซีรี่ส์ ก่อนอื่นคุณอาจปฏิบัติเช่นนี้กับการแข่งขันกอล์ฟอื่น ๆ และตอบคำถามโดยไม่ต้องกังวลเกี่ยวกับซีรี่ส์เลย อย่างไรก็ตามมีลีดเดอร์บอร์ดสำหรับทุกความท้าทาย คุณสามารถค้นหาลีดเดอร์พร้อมกับข้อมูลบางอย่างเพิ่มเติมเกี่ยวกับซีรีส์ในโพสต์แรก แม้ว่าฉันจะมีไอเดียมากมายสำหรับชุด แต่ความท้าทายในอนาคตยังไม่เกิดขึ้น หากคุณมีข้อเสนอแนะใด ๆ โปรดแจ้งให้เราทราบเกี่ยวกับการโพสต์ Sandbox ที่เกี่ยวข้อง Hole 3: Integer Partitions ใช้เวลาในการเพิ่มความยากลำบากเล็กน้อย พาร์ทิชันของจำนวนเต็มบวกnถูกกำหนดให้เป็น MultiSet nของจำนวนเต็มบวกซึ่งรวมไป ตัวอย่างเช่นถ้าn = 5พาร์ติชันต่อไปนี้มีอยู่: {1,1,1,1,1} {2,1,1,1} {2,2,1} {3,1,1} {3,2} {4,1} {5} หมายเหตุว่าเหล่านี้เป็นมัลติจึงมีคำสั่งไม่ให้พวกเขา{3,1,1}, {1,3,1}และ{1,1,3}ได้รับการพิจารณาทั้งหมดเหมือนกัน งานของคุณจะได้รับการสร้างพาร์ทิชันแบบสุ่มของn nนี่คือกฎรายละเอียด: การกระจายตัวของพาร์ทิชันที่ผลิตจะต้องมีเครื่องแบบ นั่นคือในตัวอย่างข้างต้นแต่ละพาร์ติชันควรส่งคืนด้วยความน่าจะเป็น 1/7 แน่นอนเนื่องจากข้อ จำกัด ทางเทคนิคของ PRNGs ความสม่ำเสมอที่สมบูรณ์แบบจะเป็นไปไม่ได้ เพื่อวัตถุประสงค์ในการประเมินความสม่ำเสมอของการส่งของคุณการดำเนินการต่อไปนี้จะถือว่าเป็นการให้การแจกแจงที่สมบูรณ์แบบ: การรับตัวเลขจาก PRNG (มากกว่าช่วงใด ๆ ) ซึ่งได้รับการบันทึกไว้ว่าเป็นชุด …

2
จำนวนผลลัพธ์ตัวเลขที่เป็นไปได้ของการวงเล็บ 2 ^ 2 ^ … ^ 2
พิจารณาการแสดงออก2^2^...^2กับผู้ประกอบการn ^ผู้ประกอบการ^หมายถึงการยกกำลัง ("ถึงพลังของ") สมมติว่ามันไม่ได้มีค่าเริ่มต้นของการมีเพศสัมพันธ์ที่ไม่ดีดังนั้นการแสดงออกต้องได้รับการวงเล็บอย่างเต็มที่เพื่อให้ชัดเจน หลายวิธีที่จะ parenthesize การแสดงออกจะได้รับจากหมายเลขที่คาตาลัน C_n=(2n)!/(n+1)!/n! บางครั้ง parenthesizations ที่แตกต่างกันให้ผลเป็นตัวเลขเดียวกันตัวอย่างเช่น(2^2)^(2^2)=((2^2)^2)^2ดังนั้นจำนวนของผลเป็นตัวเลขที่เป็นไปได้ที่แตกต่างกันสำหรับการกำหนดnน้อยกว่าสำหรับทุกC_n n>1ลำดับเริ่มต้น1, 1, 2, 4, 8, ...เมื่อเทียบกับหมายเลขคาตาลัน1, 2, 5, 14, 42, ... ปัญหาที่เกิดขึ้นคือการเขียนโปรแกรมที่เร็วที่สุด (หรือฟังก์ชั่น) ที่ยอมรับnเป็น input และส่งกลับจำนวนของผลเป็นตัวเลขที่แตกต่างกันเป็นไปได้ของการแสดงออก2^2^...^2กับผู้ประกอบการn ^ประสิทธิภาพไม่ควรลดลงอย่างมีนัยสำคัญเมื่อnโตขึ้นดังนั้นการคำนวณโดยตรงของเสาพลังงานสูงอาจเป็นความคิดที่ไม่ดี

9
การแบ่งตารางออกเป็นสามเหลี่ยม
เป้าหมาย เป้าหมายของความท้าทายนี้คือการสร้างฟังก์ชั่นnซึ่งคำนวณจำนวนวิธีในการแบ่งn X 1ตารางเป็นสามเหลี่ยมซึ่งจุดยอดทั้งหมดของสามเหลี่ยมอยู่บนจุดกริด ตัวอย่าง ตัวอย่างเช่นมี 14 วิธีในการแบ่งพาร์ติชันตาราง 2 x 1 ดังนั้นf(2) = 14ผ่านพาร์ติชันต่อไปนี้ โดยที่พาร์ติชันมี 2, 2, 2, 2, 2, 4 และ 2 ทิศทางที่แตกต่างกันตามลำดับ เกณฑ์การให้คะแนน นี่คือรหัส - กอล์ฟดังนั้นรหัสที่สั้นที่สุดจึงชนะ

2
สับกี่เท่า
Riffle shuffle คือ shuffle แบบหนึ่งที่แบ่งเด็คออกเป็นสองพาร์ติชั่นและพาร์ติชั่นจะรวมกันเพื่อสร้างเด็คสับแบบใหม่ บัตรจะได้แต่งงานกันในลักษณะดังกล่าวว่าบัตรรักษาลำดับญาติของพวกเขาภายในพาร์ทิชันที่พวกเขาเป็นสมาชิกของ ตัวอย่างเช่นหากการ์ดAอยู่ก่อนการ์ดBในสำรับและการ์ดAและBอยู่ในพาร์ทิชันเดียวกันการ์ดAต้องอยู่ก่อนการ์ดBในผลลัพธ์สุดท้ายแม้ว่าจำนวนการ์ดระหว่างการ์ดจะเพิ่มขึ้น หากAและBอยู่ในพาร์ติชั่นต่างกันพวกเขาสามารถอยู่ในลำดับใดก็ได้โดยไม่คำนึงถึงลำดับเริ่มต้นในผลลัพธ์สุดท้าย การสลับแบบสุ่มแต่ละอันนั้นสามารถถูกมองว่าเป็นการเปลี่ยนแปลงไพ่สำรับดั้งเดิม ตัวอย่างเช่นการเปลี่ยนแปลง 1,2,3 -> 1,3,2 เป็นการสลับแบบ riffle ถ้าคุณแยกดาดฟ้าเช่นนั้น 1, 2 | 3 เราเห็นว่าการ์ดทุกใบใน1,3,2นั้นมีลำดับที่เหมือนกันกับการ์ดอื่น ๆ ในพาร์ติชั่น ยังคงเป็นหลังจากที่21 ในทางกลับกันการเรียงสับเปลี่ยนต่อไปนี้ไม่ใช่การสลับแบบ riffle 1,2,3 -> 3,2,1 เราสามารถเห็นสิ่งนี้ได้เพราะพาร์ติชั่นทั้งสอง (ไม่สำคัญ) 1, 2 | 3 1 | 2, 3 มีคู่ของการ์ดที่ไม่รักษาลำดับญาติของพวกเขา ในพาร์ติชันแรก1และ2เปลี่ยนลำดับของพวกเขาในขณะที่พาร์ติชันที่สอง2และ3เปลี่ยนลำดับของพวกเขา อย่างไรก็ตามเราจะเห็นว่า3, 2, 1สามารถทำได้โดยการเขียนสอง riffle shuffles 1, 3, 2 + …

17
บีบอัดลำดับความคลาดเคลื่อนสูงสุด -2
เอาท์พุทลำดับความยาวไบนารีของ 1,606 นี้ -++-+--++-++-+--+--++-+--+--++-+--++-++-+-++--++-+---+-++-+--+--++++--+--++-+--++-++----++-++-+-++--++-+-+---++-+--++-++-+--++-+--+---+-++-+--++-++-+--+--++-++-+--++-+--+++-+-+----+++-+--+--+++---++-++-+--+--+++--+-+-+--+-+++-++-+--+--++-+--++-++-+--+--++--+++---+++-+---++-+--++--+-+--+-+++-+--++-++-+--++-+--+--++-+--++--+-++-+-+--+-+-++-+--++-+--+--++-+-+-++-+-+-++---+-+--++++--+---++-+-++-+--++-+--+--++-+--++++--+---+-++++--+--++-++-+--++-+--+--++-+--++-++-+--++-+--+--++-++-+----+++-+--++--+++---+-++-+--+-++---+-++-++-+--+--++--++++-+--+--+--++++--+--+++---++-++-+--++--+-+--+--++-++-+--+--+-+++-++-+--+--++--+-++-++-+--+--+--++-++-+--+++---++-+--++-++---+++---++-++----+++--+-++-+--+--++-+--++-++-+-++--++--++----+++-++--++----++-+++--++---+++----+-+-++-++-++-+-+----+++--++-+--++-++-+--+--+--++-+--++-++-+--++--+-+--+-+-+-++++---+-+-++--+--+-+-+-++-+-+++--+-+--+--+-+++--+-+++---++-+--+--++-++--++---++-+-++--++-+---+-++-+--+-++--++-+--++-+--+-+++-+--++--+-+-+++--+-+--++-++-+--+--+-++---+-++-+-++--++-+--+++-+----++--+-++-+-++--++-+--++-+-++--++-+---+-++-+--+++----+-+-++--++-+--++-++-++-+--+--+--++++---++---+-+-++-+-+++--+-++--+-+--+-+-++---+++-++ ลำดับ ลำดับที่ จำกัด นี้มีโครงสร้างที่แน่นในแบบที่ฉันหวังว่าจะให้วิธีการที่ไม่ซ้ำกันสำหรับการบีบอัด มันเกิดขึ้นจากปัญหาความแตกต่างแอร์ดิชซึ่งได้รับการให้ความสำคัญในความท้าทายที่ก่อนหน้านี้ ปฏิบัติตามเงื่อนไขเป็น +1 และ -1 นี่คือลำดับความยาวสูงสุดของความคลาดเคลื่อน 2 ซึ่งหมายความว่า: สำหรับทุกขั้นตอนที่เป็นบวกdหากคุณใช้dคำศัพท์ทุกคำ (เริ่มต้นด้วยdคำศัพท์ที่สอง) ผลรวมสะสมของลำดับผลลัพธ์จะยังคงอยู่ระหว่าง -2 ถึง 2 หากคุณคิดว่าแต่ละคน+หมายถึงขั้นตอนที่ถูกต้องและ-หมายถึงขั้นตอนที่เหลือนั่นหมายความว่าการเดินของการdเรียนการสอนทุกครั้งนั้นจะไม่เดินทางไกลเกิน 2 ก้าวจากตำแหน่งเริ่มต้น ตัวอย่างเช่นสำหรับd=3การทำทุก ๆ เทอม 3 จะให้ลำดับ+-++--+--+-...ซึ่งมีผลบวกเป็นจำนวน[1,0,1,2,1,0,1,0,-1,0,1,...]ซึ่งไม่เคยกด -3 หรือ 3 -++-+--++-++-+--+--++-+--+--++-+--+... ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ + - + + - …

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