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

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

19
สร้างพาร์ติชันย่อยทั้งหมด
ให้ลิสต์ของจำนวนเต็มแบบไม่ว่างเปล่าให้เอาต์พุตทุก ๆ การแบ่งพาร์ติชั่นที่เป็นไปได้ของรายการที่แต่ละพาร์ติชั่นเป็นรายการย่อยที่ไม่ว่างเปล่า ดังนั้นสำหรับรายการ[1, 2, 3, 4]ผลลัพธ์คือ: [[1, 2, 3, 4]] [[1, 2, 3], [4]] [[1, 2], [3, 4]] [[1, 2], [3], [4]] [[1], [2, 3, 4]] [[1], [2, 3], [4]] [[1], [2], [3, 4]] [[1], [2], [3], [4]] ลำดับของรายการในผลลัพธ์ไม่สำคัญดังนั้น[[1, 2, 3, 4]]อาจเป็นครั้งแรกสุดท้ายหรือที่ใดก็ได้ คำสั่งขององค์ประกอบจะต้องถูกเก็บรักษาไว้ นี่คือรหัสกอล์ฟคำตอบที่สั้นที่สุดจึงชนะ ที่เกี่ยวข้อง: รายการพาร์ทิชัน!

7
ผลรวมตัวเลขจนถึง Square
รับเป็นจำนวนเต็มใด ๆ x> 0 และฐานใด ๆ y> 3 รวมตัวเลขทั้งหมดของ x (ถ้าเขียนในฐานตั้ง) ทวีคูณด้วยจำนวนสูงสุดที่เป็นไปได้ (เสมอbase -1) ทำซ้ำจนกว่าค่านี้จะเป็น (y - 1) ^ 2 การค้นหาคือจำนวนครั้งของการวนซ้ำและขั้นตอนต่างๆ ตัวอย่างที่ 1: x= 739 y= 7 searched: (7 - 1) ^ 2 = 36 based: (b7)2104 sum: (dec)7 mul: (dec)42 based: (b7)60 sum: (dec)6 mul: (dec)36 2 steps needed …

8
วาดรูปสามเหลี่ยมพี
การชี้แจง: โดยทั่วไปคุณต้องทำสิ่งนี้ ฟังก์ชัน totient ของออยเลอร์มีชื่อ phi ลองคำนวณ phi (8) ก่อนอื่นให้ระบุหมายเลขทั้งหมด 8 และต่ำกว่าไม่รวม 0 หรือต่ำกว่า 8 7 6 5 4 3 2 1 ตอนนี้ค้นหาว่าตัวเลขใดไม่ใช้ตัวคูณกับ 8 (1 ไม่นับ) และวาง#ในตำแหน่งของพวกเขา 8 # 6 # 4 # 2 # ลบตัวเลข # # # # - ทีนี้ทำอย่างนี้ แต่เอาท์พุทสตริงเข้าด้วยกันในรูปสามเหลี่ยม 9 88 777 6666 55555 444444 3333333 …

2
นับต้นไม้
ต้นไม้เป็นที่เชื่อมต่อกราฟไม่มีทิศทางที่ไม่มีรอบ งานของคุณคือการนับจำนวนต้นไม้ที่แตกต่างกันที่มีจำนวนจุดยอดที่กำหนด ต้นไม้สองต้นถือว่าแตกต่างกันหากไม่ได้เป็นมอร์ฟิค กราฟสองกราฟ isomorphic หากจุดยอดที่เกี่ยวข้องสามารถจับคู่ในลักษณะที่มีขอบระหว่างจุดยอดสองจุดในกราฟหนึ่งถ้าหากมีขอบระหว่างจุดยอดคู่กับจุดยอดเหล่านั้นในกราฟอื่น สำหรับคำอธิบายที่สมบูรณ์ยิ่งขึ้นให้ดูที่ลิงก์ด้านบน หากต้องการดูว่าทั้งหมดของต้นไม้ที่แตกต่างของขนาด 1-6 มีลักษณะเหมือนจะดูที่นี่ ชุดข้อมูลที่คุณพยายามส่งออกคือA000055ที่ OEIS ข้อ จำกัด : 6วิธีการแก้ปัญหาของคุณจะต้องใช้เวลาในช่วงนาทีหรือน้อยกว่าที่จะทำงานในการป้อนข้อมูล นี่ไม่ได้มีวัตถุประสงค์เพื่อกำจัดอัลกอริธึมเวลาเอ็กซ์โปเนนเชียล แต่มันมีจุดประสงค์เพื่อกำจัดอัลกอริธึมเวลาทวีคูณเช่นทวีคูณบังคับให้ข้ามชุดขอบทั้งหมด อินพุต:จำนวนเต็มใด ๆ ที่ไม่เป็นลบ อินพุตอาจเป็นวิธีมาตรฐานรวมถึง STDIN พารามิเตอร์บรรทัดคำสั่งอินพุตฟังก์ชัน ฯลฯ เอาท์พุท:จำนวนต้นไม้ที่แตกต่างที่มีจุดยอดมากที่สุดเท่าอินพุต เอาท์พุทอาจจะด้วยวิธีมาตรฐานใด ๆ รวมถึง STDOUT ฟังก์ชั่นกลับมา ฯลฯ ตัวอย่าง: ควรกลับ0, 1, 2, 3, 4, 5, 6, 71, 1, 1, 1, 2, 3, 6, 11 เกณฑ์การให้คะแนน:โค้ดกอล์ฟทีละไบต์ อาจเป็นรหัสที่สั้นที่สุดชนะ! …

6
ผลิตภัณฑ์ที่ตัดแบ่งสูงสุด
เราจะได้รับรายการจำนวนเต็ม p1, ... , pk (ไม่จำเป็นต้องชัดเจน) โดยที่แต่ละค่ามีค่าระหว่าง 1 ถึง 9 การใช้แต่ละ p1, ... , pk เพียงครั้งเดียวเราสามารถสร้างการเรียงตัวของตัวเลขเพื่อให้ได้รายการตัวเลขใหม่ จากนั้นเราจะส่งออกผลิตภัณฑ์ของรายการใหม่นี้ เป้าหมายคือเพื่อเพิ่มผลิตภัณฑ์นี้โดยการเลือกการต่อข้อมูลที่ดีที่สุดของตัวเลข ตัวอย่างเช่นเราได้รับรายการ: 2 3 2 (คั่นด้วยช่องว่าง) เราสามารถสร้างการเรียงต่อกันดังต่อไปนี้: 2 3 2(ผลิตภัณฑ์ของการต่อข้อมูลเหล่านี้คือ12) 23 2(ผลิตภัณฑ์คือ46) 32 2(ผลิตภัณฑ์คือ64) 22 3(ผลิตภัณฑ์คือ66) เนื่องจากผลิตภัณฑ์ที่ใหญ่ที่สุดที่เราสามารถทำการต่อกันได้คือ 66 เราจึงส่งออก กฎ: ต้องมีการคูณอย่างน้อยหนึ่งรายการ (เช่นคุณไม่สามารถต่อตัวเลขและเอาท์พุททั้งหมดเข้าด้วยกันได้) คุณไม่สามารถใช้โอเปอเรเตอร์อื่นนอกเหนือจากการคูณหรือใส่วงเล็บเป็นต้น สมมติว่ารายการจำนวนเต็มที่กำหนดถูกคั่นด้วยช่องว่างและจำนวนเต็มทั้งหมดมีค่าระหว่าง 1 ถึง 9 รหัสที่สั้นที่สุด (เป็นไบต์) ชนะ! กรณีทดสอบ: อินพุต: 1 …

3
เมทริกซ์คุณสมบัติ X กลับมาอีกครั้ง (หรือ Joy of X)
ความท้าทายนี้เป็นความท้าทายส่วนหนึ่งของอัลกอริทึมส่วนหนึ่งเป็นความท้าทายด้านการปรับให้เหมาะสมส่วนหนึ่งเป็นความท้าทายด้านโค้ดที่เร็วที่สุด AT เมทริกซ์ที่ระบุไว้อย่างเต็มที่โดยแถวแรกของมันและคอลัมน์แรกr cแต่ละองค์ประกอบที่เหลือของเมทริกซ์เป็นเพียงสำเนาขององค์ประกอบที่เป็นเส้นทแยงมุมขึ้นและซ้าย M[i,j] = M[i-1,j-1]กล่าวคือ เราจะอนุญาตให้เมทริกซ์ T ที่ไม่ได้เป็นสแควร์ อย่างไรก็ตามเราคิดเสมอว่าจำนวนแถวไม่เกินจำนวนคอลัมน์ ตัวอย่างเช่นพิจารณาเมทริกซ์ 3 คูณ 5 ต่อไปนี้ 10111 11011 11101 เราบอกว่าเมทริกซ์มีคุณสมบัติ X ถ้ามันมีคอลัมน์ที่ไม่ว่างสองชุดที่มีดัชนีไม่เหมือนกันซึ่งมีผลรวม (เวกเตอร์) เหมือนกัน ผลรวมเวกเตอร์ของคอลัมน์อย่างน้อยหนึ่งคอลัมน์เป็นเพียงการสรุปองค์ประกอบที่ชาญฉลาดของคอลัมน์ นั่นคือผลรวมของสองคอลัมน์ขึ้นไปที่มีxองค์ประกอบแต่ละรายการเป็นอีกคอลัมน์ที่มีxองค์ประกอบ ผลรวมของหนึ่งคอลัมน์เป็นคอลัมน์เล็ก ๆ น้อย ๆ เมทริกซ์ด้านบนมีคุณสมบัติ X เล็กน้อยเนื่องจากคอลัมน์แรกและคอลัมน์สุดท้ายเหมือนกัน เมทริกซ์เอกลักษณ์ไม่เคยมีคุณสมบัติ X หากเราเพิ่งลบคอลัมน์สุดท้ายของเมทริกซ์ด้านบนเราจะได้ตัวอย่างซึ่งไม่มีคุณสมบัติ X และจะให้คะแนน 4/3 1011 1101 1110 งาน งานคือการเขียนรหัสเพื่อค้นหาเมทริกซ์ T คะแนนสูงสุดกับรายการไบนารีและที่ ไม่มีคุณสมบัติ X เพื่อความชัดเจนเมทริกซ์ที่มีรายการไบนารีมีคุณสมบัติที่แต่ละรายการของรายการนั้นเป็น 0 …

1
สร้างลำดับดาเวนพอร์ท - Schinzel
พื้นหลัง ลำดับ Davenport-Schinzelมีสองตัวแปรจำนวนเต็มบวกและd nเราจะแสดงว่าชุดของทุกลำดับ Davenport-Schinzel DS(d,n)สำหรับพารามิเตอร์ที่กำหนดโดย พิจารณาลำดับทั้งหมดของตัวเลขธรรมชาติ1เพื่อnรวมซึ่งตอบสนอง: ไม่มีตัวเลขสองตัวติดต่อกันในลำดับที่เหมือนกัน ไม่มีความยาวที่มากกว่ากัน (ไม่จำเป็นต้องต่อเนื่องกัน) dซึ่งสลับไปมาระหว่างตัวเลขสองจำนวนที่แตกต่างกัน อนุญาตLแสดงความยาวสูงสุดของลำดับดังกล่าว (ที่กำหนดdและn) จากนั้นเป็นชุดของลำดับดังกล่าวทั้งหมดที่มีความยาวDS(d,n)L ตัวอย่างบางส่วนอาจช่วยได้ อนุญาตd = 4, n = 3. ลำดับที่ยาวที่สุดที่เป็นไปได้ที่มีข้อ จำกัด L = 8เหล่านี้มี ดังนั้นต่อไปนี้เป็นสมาชิกของDS(4,3): [1, 2, 1, 3, 1, 3, 2, 3] ไม่มีตัวเลขที่เหมือนกันติดต่อกันและมีการเรียงลำดับความยาวสลับกัน4แต่ไม่มีอีกต่อไป: 1 2 1 2 1 2 1 2 1 3 1 3 1 3 …

2
จำนวนการหมุนของงูที่สามารถเข้าถึงได้
ความท้าทายนี้ไม่ได้เกี่ยวกับเกมของงู ลองนึกภาพงู 2d nที่เกิดขึ้นจากการวาดเส้นแนวนอนที่มีความยาว งูนี้สามารถหมุนร่างของมันได้ 90 องศา หากเรากำหนดด้านหน้าของงูให้อยู่ทางซ้ายสุดเพื่อเริ่มต้นการหมุนจะย้ายส่วนหลังของงูและส่วนหน้าจะคงอยู่ ด้วยการหมุนวนซ้ำ ๆ มันสามารถสร้างรูปร่างของงูที่แตกต่างกันได้มากมาย กฎระเบียบ ส่วนหนึ่งของร่างกายของงูไม่สามารถทับซ้อนกันได้ จะต้องมีความเป็นไปได้ที่จะเข้าถึงการปฐมนิเทศครั้งสุดท้ายโดยไม่มีส่วนใดส่วนหนึ่งของร่างกายของงูทับซ้อนกัน จุดสองจุดที่สัมผัสถูกนับว่าทับซ้อนกันในปัญหานี้ ฉันถือว่างูและสิ่งที่ตรงกันข้ามเป็นรูปร่างเดียวกัน งาน ขึ้นอยู่กับการหมุนการแปลและกระจกสมมาตรรูปร่างของงูที่แตกต่างกันทั้งหมดที่สามารถทำได้คืออะไร? ตัวอย่างของการหมุนของส่วนของร่างกายของงู ลองนึกภาพn=10และงูอยู่ในทิศทางเริ่มต้นของเส้นตรง ตอนนี้หมุนที่จุด490 องศาทวนเข็มนาฬิกา เราได้รับงูจาก 4ไปที่10(หางของงู) นอนในแนวตั้งและงูจาก0การ4นอนในแนวนอน ตอนนี้งูมีมุมฉากอยู่หนึ่งตัว นี่คือตัวอย่างบางส่วนขอบคุณ Martin Büttner เราเริ่มต้นด้วยงูแนวนอน ตอนนี้เราหมุนจากตำแหน่ง 4 เราจบลงหลังจากการหมุนในทิศทางนี้ ตอนนี้ให้เราพิจารณาการวางแนวของงูตัวอื่น ตอนนี้เราสามารถเห็นการเคลื่อนไหวที่ผิดกฎหมายซึ่งจะมีการทับซ้อนเกิดขึ้นในระหว่างการหมุน คะแนน คะแนนของคุณมากที่สุดnซึ่งรหัสของคุณสามารถแก้ไขปัญหาได้ในเวลาไม่ถึงหนึ่งนาทีในคอมพิวเตอร์ของฉัน เมื่อมีการหมุนเกิดขึ้นมันจะเลื่อนงูไปครึ่งหนึ่งด้วย เราต้องกังวลว่าส่วนใดส่วนหนึ่งที่หมุนอยู่นี้อาจซ้อนทับส่วนหนึ่งของงูระหว่างการหมุน เพื่อความง่ายเราสามารถสมมติว่างูมีความกว้างเป็นศูนย์ คุณสามารถหมุนที่จุดใดจุดหนึ่งในงูได้สูงสุด 90 องศาตามเข็มนาฬิกาของทวนเข็มนาฬิกา สำหรับคุณไม่สามารถพับงูเป็นสองเท่าได้อย่างเต็มที่เนื่องจากจะมีการหมุนสองรอบที่จุดเดียวกันในทิศทางเดียวกัน รูปร่างที่ไม่สามารถทำได้ Tตัวอย่างง่ายๆของรูปร่างที่ไม่สามารถทำให้เป็นทุน รุ่นที่ซับซ้อนมากขึ้นคือ (ขอบคุณ Harald Hanche-Olsen …

10
ฟีโบนัชชีโดมิโนปูกระเบื้อง
มีผล combinatorial คลาสสิกที่หลายวิธีที่จะกระเบื้อง2*nแถบโดย1*2แต้มเป็นที่ n THจำนวนฟีโบนักชี เป้าหมายของคุณคือการพิมพ์ความลาดเอียงทั้งหมดเพื่อให้nวาดด้วยขีดกลางและเส้นแนวตั้งเช่น 8 เอียงเหล่านี้สำหรับn=5: |———— |———— ——|—— ——|—— |||—— |||—— ————| ————| ||——| ||——| |——|| |——|| ——||| ——||| ||||| ||||| คุณต้องจัดเตรียมโปรแกรมหรือฟังก์ชั่นที่มีชื่อซึ่งใช้nเป็นอินพุตและพิมพ์เอาต์พุตที่ต้องการ ไบต์ที่น้อยที่สุดจะเป็นผู้ชนะ อินพุต ตัวเลขnระหว่าง1และ10รวมผ่าน STDIN หรืออินพุตฟังก์ชัน เอาท์พุต พิมพ์ทุกโดมิโนที่เป็นไปได้ของ2*nแถบที่วาดในแนวนอน รอยยิ้มอาจอยู่ในลำดับใดก็ได้ แต่แต่ละอันควรปรากฏอย่างแน่นอนหนึ่งครั้ง จะต้องคั่นด้วยบรรทัดว่าง โดมิโนแนวตั้งทำจากแท่งแนวตั้งสองอัน ( |) และโดมิโนแนวนอนทำจากเครื่องหมายขีดกลางสองอัน ( —) คุณอาจใช้เครื่องหมายขีดกลาง ( -) แทนเครื่องหมายขีดกลางเพื่ออยู่ใน ASCII คุณสามารถทำอะไรกับช่องว่างตราบเท่าที่ผลลัพธ์ที่พิมพ์ออกมามีลักษณะเหมือนกัน

1
สร้างตั๋วลอตเตอรีที่น้อยที่สุดเพื่อเล่นเพื่อให้มีหมายเลขที่ดีอย่างน้อย N ตัว
นี่เป็นวิชาคณิตศาสตร์ที่ค่อนข้างซับซ้อน แต่น่าสนใจมาก (รู้จักกันในชื่อ"การแก้ปัญหา" ) และฉันต้องการให้คุณช่วยนำไปใช้ ลองนึกภาพเกมลอตเตอรีที่แต่ละตั๋วต้องเลือก 5 ตัวเลขสุ่มในชุดของ 50 หมายเลข (จาก 1 ถึง 50) มันค่อนข้างง่ายที่จะทราบความน่าจะเป็นของตั๋วที่ชนะหรือความน่าจะเป็นที่จะมีตัวเลขที่ดี 1, 2, 3 หรือ 4 นอกจากนี้ยังค่อนข้างง่ายในการ "สร้าง" ตั๋วทั้งหมดที่มีหมายเลขที่ดี 1, 2, 3, 4 คำถามของฉัน (และการท้าทายรหัส) เกี่ยวข้องกับสิ่งนี้ แต่แตกต่างกันเล็กน้อย: ฉันต้องการซื้อตั๋วลอตเตอรี (น้อยที่สุดเท่าที่จะเป็นไปได้) เช่นอย่างน้อยหนึ่งตั๋วของฉันมี 3 หมายเลขที่ดี ท้าทาย เป้าหมายของคุณคือการใช้โซลูชันทั่วไป (เป็นโปรแกรมหรือเพียงฟังก์ชั่น) เช่นนี้ในภาษาใด ๆ : // Input: 3 prameters min_lottery_tickets(total_numbers_to_choose_from, how_many_numbers_to_choose, how_many_good_numbers_i_want) สำหรับตัวอย่างข้างต้นหนึ่งจะต้องโทร: …

6
เครื่องกำเนิดตำแหน่งหมากรุก 960
บริบท Chess960 (หรือหมากรุกสุ่มฟิชเชอร์) เป็นเกมหมากรุกที่คิดค้นและให้การสนับสนุนโดยอดีตแชมป์หมากรุกโลกบ๊อบบี้ฟิสเชอร์ประกาศเมื่อวันที่ 19 มิถุนายน 2539 ในบัวโนสไอเรสอาร์เจนตินา มันใช้บอร์ดเดียวกันและชิ้นส่วนเป็นหมากรุกมาตรฐาน แม้กระนั้นตำแหน่งเริ่มต้นของชิ้นส่วนในอันดับบ้านของผู้เล่นจะถูกสุ่ม กฎระเบียบ เบี้ยสีขาววางอยู่ในอันดับที่สองเช่นเดียวกับในหมากรุกมาตรฐาน ชิ้นส่วนสีขาวที่เหลือทั้งหมดจะถูกวางแบบสุ่มในอันดับแรก บิชอปจะต้องวางบนสี่เหลี่ยมสีตรงกันข้าม จะต้องวางพระราชาบนสี่เหลี่ยมระหว่างเสา ชิ้นส่วนของสีดำถูกวางอย่างเท่าเทียมกันและตรงข้ามกับชิ้นส่วนของสีขาว จาก: http://en.wikipedia.org/wiki/Chess960 สำหรับทุกคนที่ต้องการโพสต์คำตอบ ... คุณต้องสร้างตัวสร้างตำแหน่งหมากรุก 960 ซึ่งสามารถสร้างหนึ่งใน 960 ตำแหน่งตามกฎที่อธิบายไว้ข้างต้นโดยสุ่ม (ต้องสามารถส่งออก 960, ฮาร์ดโค้ดหนึ่งตำแหน่งไม่ได้รับการยอมรับ!) และคุณต้อง เอาท์พุทอันดับสีขาวหนึ่งชิ้น ตัวอย่างผลลัพธ์: rkrbnnbq ที่อยู่: กษัตริย์ ราชินี Q b อธิการ ไม่มีอัศวิน r rook นี่จะเป็นโค้ดกอล์ฟและไทเบรกเกอร์จะเป็นอัพวีท

26
การรวมกันทางคณิตศาสตร์
เขียนโปรแกรมที่รับอินพุตเช่น: n,k ซึ่งคำนวณ: แล้วพิมพ์ผลลัพธ์ ตัวอย่างตัวเลข: การป้อนข้อมูล: 5,2 การคำนวณภายใน: พิมพ์ออก: 10 ฉันต้องการที่จะเห็นคำตอบที่เต้นงูหลามโซลูชั่นของฉัน 65 ตัวอักษร แต่ทุกภาษายินดีต้อนรับอย่างชัดเจน นี่คือทางออกของฉัน: n,k=input();f=lambda x:+(x<2)or x*f(x-1);print f(n)/(f(k)*f(n-k)) แก้ไข: ฉันยอมรับว่าคำถามนี้มาจากปริศนาการผสมทางคณิตศาสตร์ของเว็บไซต์ codegolf ฉันรู้ว่าคำตอบของฉันอาจมีความคืบหน้าไม่มากนัก แต่ผู้นำของเกมไขปริศนานี้แก้ปัญหาได้เกือบครึ่งตัวละคร จำนวนอักขระต่ำสุดปัจจุบันนับตามภาษาคือ: Perl: 35 ทับทิม: 36 Python: 39 PHP: 62

5
จำนวนทอพอโลยีทั้งหมด
สำหรับ DAG ที่กำหนด (กราฟ acyclic กำกับ) การเรียงลำดับทอพอโลยีแต่ละอันเป็นการเปลี่ยนแปลงของจุดยอดทั้งหมดที่ทุก ๆ ขอบ(u, v)ใน DAG คุณจะปรากฏก่อนvในการเปลี่ยนรูป งานของคุณคือการคำนวณจำนวนโทโพโลยีทั้งหมดของ DAG ที่กำหนด กฎระเบียบ คุณสามารถใช้รูปแบบใดก็ได้เพื่อแสดงกราฟเช่น adjacency matrix, adjacency list หรือ edge list ตราบใดที่คุณไม่มีการคำนวณที่มีประโยชน์ในการเข้ารหัสของคุณ คุณยังสามารถมีสิ่งต่าง ๆ เช่นจำนวนจุดยอดหรือรายการจุดยอดในอินพุตถ้าสิ่งเหล่านั้นมีประโยชน์ คุณสามารถสมมติกราฟในอินพุตได้เสมอ DAG (ไม่มีรอบใด ๆ ) โปรแกรมของคุณควรทำงานในทางทฤษฎีสำหรับการป้อนข้อมูลใด ๆ แต่มันอาจล้มเหลวได้หากมันล้นประเภทจำนวนเต็มพื้นฐานในภาษาของคุณ ชื่อของจุดยอดสามารถเป็นค่าต่อเนื่องในประเภทใดก็ได้ ตัวอย่างเช่น: ตัวเลขเริ่มต้นที่ 0 หรือ 1 (และเฉพาะในกรณีที่คุณไม่ได้เก็บรหัสไว้ในหมายเลขนี้แน่นอน) นี่คือรหัสกอล์ฟ รหัสที่สั้นที่สุดชนะ ตัวอย่าง นี่เป็นอินพุตเดียวกันในรูปแบบที่ต่างกัน โปรแกรมของคุณไม่จำเป็นต้องยอมรับทั้งหมด จุดยอดเป็นจำนวนเต็มเริ่มต้นที่ 0 …

3
Arbitrary Randomness (ฉบับความเร็ว)
รับจำนวนเต็มnคำนวณชุดของnจำนวนเต็มเฉพาะในช่วงสุ่ม1..n^2(รวม) ซึ่งผลรวมของชุดเท่ากับn^2 สุ่มในกรณีนี้หมายถึงการสุ่มอย่างสม่ำเสมอระหว่างผลลัพธ์ที่ถูกต้อง เอาต์พุตที่ถูกต้องแต่ละรายการสำหรับชุดที่กำหนดnจะต้องมีโอกาสที่จะถูกสร้างขึ้นอย่างสม่ำเสมอ ยกตัวอย่างเช่นn=3ควรมีโอกาสที่ 1/3 แต่ละการแสดงผล6, 1, 2, หรือ3, 5, 1 4, 3, 2เนื่องจากเป็นชุดคำสั่งซื้อจึงไม่เกี่ยวข้อง4, 3, 2จึงเหมือนกัน3, 2, 4 เกณฑ์การให้คะแนน ผู้ชนะคือโปรแกรมที่สามารถคำนวณคะแนนสูงสุดnในเวลาไม่เกิน 60 วินาที หมายเหตุ:เพื่อป้องกันฮาร์ดโค้ดบางส่วนที่เป็นไปได้รายการทั้งหมดจะต้องต่ำกว่า 4000 ไบต์ การทดสอบ รหัสทั้งหมดจะทำงานบนเครื่อง Windows 10 ในพื้นที่ของฉัน (Razer Blade 15, 16GB RAM, Intel i7-8750H 6 คอร์, 4.1GHz, GTX 1060 ในกรณีที่คุณต้องการละเมิด GPU) ดังนั้นโปรดให้คำแนะนำโดยละเอียดเพื่อเรียกใช้รหัสของคุณ เครื่องของฉัน ตามคำขอรายการสามารถเรียกใช้อย่างใดอย่างหนึ่งผ่าน Debian บน …

22
รายการคาร์ทีเซียนของรายการด้วยตัวเอง n ครั้ง
เมื่อได้รับรายชื่อ aa และค่าจำนวนเต็มบวกnรหัสของคุณควรเอาท์พุทผลิตภัณฑ์คาร์ทีเซียนของรายการด้วยnเวลาตัวเอง ตัวอย่างเช่นใน pseudocode ฟังก์ชั่นของคุณอาจคล้ายกับ: for x1 in list: for x2 in list: for x3 in list: ... for xn in list: print x1, x2, x3, ... , xn ตัวอย่าง: repeated_cart([1,2,3], 3) 1 1 1 1 1 2 1 1 3 1 2 1 1 2 2 1 2 …

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