คำถามติดแท็ก set-partitions

สำหรับความท้าทายที่เกี่ยวข้องกับการแบ่งย่อยของเซตเป็นชุดที่แยกออกจากกัน นอกจากนี้ยังรวมถึงแผนกย่อยของคอลเล็กชันที่สั่งซื้อเช่นรายการและชุดที่ไม่ต่อเนื่องเช่นช่วงเวลา ความท้าทายควรกำหนดแนวคิดของพาร์ติชันอย่างระมัดระวัง

4
แยกตารางออกเป็นกริด
บทนำ มีหมู่บ้านเล็ก ๆ ที่ไม่มีอะไรนอกจากบ้านสองสามหลังและทุ่งโล่ง ๆ ข้าราชการในท้องถิ่นต้องการแบ่งหมู่บ้านออกเป็นล็อตเพื่อให้แต่ละล็อตมีบ้านหนึ่งหลังแน่นอนและเส้นขอบของล็อตนั้นเป็นตารางเส้นตรงที่สวยงาม งานของคุณคือการตรวจสอบว่าเป็นไปได้ งาน การป้อนข้อมูลของคุณคืออาร์เรย์ 2D บิตของบิต 1 หมายถึงบ้านและ 0 ช่องว่าง ขนาดจะมีอย่างน้อย1 × 1และจะมีอย่างน้อยหนึ่ง 1 คุณสามารถใช้อินพุตในรูปแบบที่เหมาะสม (รายการซ้อนจำนวนเต็มรายการของสตริงสตริงหลายบรรทัด ฯลฯ ) โปรแกรมของคุณจะต้องพิจารณาว่าอาเรย์สามารถแบ่งออกเป็นเซลล์กริดโดยใช้เส้นตรงแนวนอนและแนวดิ่งเพื่อให้แต่ละเซลล์กริดมีหนึ่งเดียว 1 เซลล์กริดอาจมีขนาดและรูปร่างที่แตกต่างกันแม้ว่าพวกเขาจะเป็นรูปสี่เหลี่ยมเสมอ เส้นต้องวิ่งจากขอบหนึ่งของอาร์เรย์ไปยังขอบตรงข้าม ตัวอย่างเช่นต่อไปนี้เป็นส่วนที่ถูกต้องของอาร์เรย์: 00|0010|01|1 01|0000|00|0 --+----+--+- 00|0000|00|1 01|0010|01|0 --+----+--+- 01|1000|10|1 ในขณะที่การแบ่งต่อไปนี้ไม่ถูกต้องเนื่องจากมีกริดเซลล์ที่ไม่มี 1s หรือมากกว่าหนึ่ง 1: 00|0010|01|1 --+----+--+- 01|0000|00|0 00|0000|00|1 01|0010|01|0 --+----+--+- 00|1000|10|1 หากมีการแบ่งที่ถูกต้องคุณจะต้องส่งออกค่าความจริงและมิฉะนั้นเป็นค่าเท็จ กฎและการให้คะแนน คุณสามารถเขียนโปรแกรมเต็มรูปแบบหรือฟังก์ชั่น จำนวนไบต์ต่ำสุดชนะ …

1
แก้ Grid-Tangram
Tangramเป็นปริศนาผ่าที่ทำจากเจ็ดรูปร่าง: ห้าเหลี่ยมขนาดแตกต่างกันสี่เหลี่ยมด้านขนานและตาราง เมื่อกำหนดรูปร่างเป้าหมายจะสร้างรูปร่างขึ้นใหม่โดยใช้ชิ้นส่วนทั้งหมดและไม่ทับซ้อนกัน เห็นได้ชัดว่ามีหลายวิธีในการจัดเรียงชิ้นส่วนนี้บนเครื่องบิน เซตย่อยที่น่าสนใจคือ ตารางกริด เราสามารถวาดสี่เหลี่ยมจัตุรัส Tangram "มาตรฐาน" ลงในสี่เหลี่ยมจัตุรัสที่ใหญ่กว่าซึ่งแบ่งออกเป็นตารางย่อยเป็นสี่เหลี่ยมจัตุรัสเล็ก ๆ 16 อัน tangrams เป็นเพียงรูปทรงที่สร้างขึ้นจากชิ้นส่วน tangram เช่นว่าจุดยอดทั้งหมดของชิ้นส่วนที่อยู่ในจุดตาราง นี่คือปริศนา Tangram ประเภทที่เราต้องการพิจารณาในการท้าทายนี้เนื่องจากพวกมันอาจจะจัดการได้ง่ายกว่าปริศนาทั่วไป ตามหมายเหตุด้าน: นักคณิตศาสตร์จีน Chuan-Chin Hsiung และ Fu Traing Wang พิสูจน์ในปี 1942 ว่ามีเพียง 13 tangrams นูน ก่อนอื่นพวกเขาแสดงให้เห็นว่าปัญหาสามารถลดลงเป็นเส้นตารางกราฟแล้วใช้อาร์กิวเมนต์ combinatorial และเรขาคณิต เหล่านี้คือทั้งหมดที่ 13: ท้าทาย ให้แกรมแกรมที่แก้ไขได้เอาท์พุทการแยกแกรมแกรมออกเป็นเจ็ดแกรม IO tangram ให้เป็นภาพขาวดำ (รูปร่างเป็นสีดำ, พื้นหลังเป็นสีขาว) โดยทั้งสองฝ่ายทวีคูณ 50px ตารางมีความกว้าง 50px …

4
ความแตกต่างเป็นรูปสี่เหลี่ยมผืนผ้า
ในความท้าทายนี้คุณจะได้รับสองรูปสี่เหลี่ยมผืนผ้าที่ทับซ้อนกันและคุณจำเป็นต้องคำนวณรูปสี่เหลี่ยมผืนผ้าที่สร้างขึ้นโดยการลบหนึ่งจากอื่น ๆ ตัวอย่างเช่นหากคุณลบสี่เหลี่ยมสีแดงออกจากสีดำ: คุณท้ายด้วยหนึ่งในสองชุดสี่เหลี่ยมต่อไปนี้: คุณจะต้องจัดการสิ่งต่อไปนี้ด้วย: เพื่อให้ชัดเจนยิ่งขึ้น: คุณจะป้อนค่าพิกัดของสองรูปสี่เหลี่ยมผืนผ้า A และ B คุณต้องแสดงผลสี่เหลี่ยมที่ไม่ได้ซ้อนกันน้อยที่สุดซึ่งครอบคลุมพื้นที่ทั้งหมดของ A โดยไม่มี B การอนุญาตใด ๆ ที่เป็นไปได้จะได้รับอนุญาต พิกัดสี่เหลี่ยมถูกส่งผ่านเป็นจำนวนเต็ม 4 ตัว คุณสามารถส่งต่อพวกเขาเป็นสองคู่ (แทนจุดสองมุม) หรือเป็น tuple / list ของจำนวนเต็ม 4 ตัว อินพุตและเอาต์พุตของคุณจะต้องสอดคล้องกัน A และ B ไม่จำเป็นต้องทับซ้อนกันหรือสัมผัสและแต่ละอันจะมีพื้นที่อย่างน้อย 1 กรณีทดสอบ: [(0 0) (5 5)] [(3 4) (8 7)] -> [(0 0) (5 4)] [(0 …

13
พาร์ติชันที่ปรับปรุงแล้ว
พิจารณาอาร์เรย์ของจำนวนเต็ม: [1, 0, 9, 1, 3, 8] มีหลายวิธีในการแบ่งรายการนี้เป็นรายการย่อยที่ต่อเนื่องกัน ที่นี่มีสาม: A: [[1, 0, 9], [1, 3, 8]] B: [[1], [0, 9], [1, 3], [8]] C: [[1, 0], [9, 1], [3, 8]] เราจะเรียกพาร์ติชั่นYและการปรับแต่งพาร์ติชั่นXอีกอันถ้าXสามารถหาได้จากYโดยการรวมกลุ่มย่อยของมันเข้าด้วยกัน ดังนั้นBเป็นการปรับแต่งของA: Aถ้าเราเข้าร่วมครั้งแรกที่สองและทั้งสองรายการย่อยสุดท้ายกลับมารวมกันเราได้รับ แต่Cเป็นไม่ได้ปรับแต่งของAเราจะต้องแยกขึ้น9และ1เพื่อที่จะกู้คืนAจากมัน นอกจากนี้พาร์ติชันใด ๆ ก็มีการปรับแต่งเล็กน้อย โปรดทราบว่าเราไม่ได้รับอนุญาตให้จัดเรียงรายการย่อยหรือองค์ประกอบใหม่อีกครั้ง ความท้าทาย ป.ร. ให้ไว้สองพาร์ทิชัน (รายชื่อของรายการของจำนวนเต็ม) XและYตรวจสอบว่าเป็นการปรับแต่งของYX คุณอาจคิดว่าพาร์ติชั่นจะมีจำนวนเต็มตั้งแต่0ถึง9รวม คุณต้องไม่สมมติXและYเป็นพาร์ทิชันของรายการเดียวกัน (ถ้าไม่ใช่พวกเขาจะไม่ปรับแต่งซึ่งกันและกัน) Xและ / หรือYอาจว่างเปล่า แต่จะไม่มีรายการย่อยที่ว่างเปล่า …

1
นับ ASCII hamantaschen!
วันนี้ Purim ที่หนึ่งประเพณีคือการให้คุกกี้รูปสามเหลี่ยมที่มีการกรอกที่เรียกว่าhamantaschen (เอกพจน์: hamantasch ) ประเพณีอีกอย่างคือการดื่มหนัก ฉันไม่ใช่คนทำขนมปังที่สมบูรณ์แบบที่สุด .... ฉันมี hamantaschen ขนาดผิดปกติมากมายที่จะให้ออกไปและเพื่อนมากมายที่จะให้พวกเขา! ถ้าฉันส่งรูปคุกกี้มาให้คุณคุณบอกฉันได้ไหมว่าฉันมีขนาดและขนาดเท่าไร? แต่เนื่องจากเป็น Purim และฉันเมาเกินกว่าที่จะอ่านรหัสได้มากจึงต้องมีรหัสขนาดเล็กเท่าที่คุณสามารถทำได้ คำนิยาม ขนาด hamantasch สามารถใด ๆขนาด hamantasch ที่เล็กที่สุดคือขนาด 1 และมีลักษณะดังนี้: /\ -- -- \/ บางครั้ง hamantaschen หลายตัวสามารถซ้อนทับกันได้ รูปร่างด้านล่างนับเป็นสอง hamantaschen (หนึ่งขนาด 1, หนึ่งขนาด 2): /\ /\ \ ---- hamantaschen บางคนมีไส้ นี้จะถูกระบุโดยการกรอกช่องว่างทั้งหมดภายในด้วยตัวละคร โปรดทราบว่าขนาด 1 hamantaschen ไม่สามารถเติมได้ เราจะตั้งชื่อ …

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

15
แยกรายการออกเป็นชิ้นขนาด แต่ไม่นับรายการที่ล้มเหลวในการสรุป
แรงจูงใจ : บางครั้งบางรายการในรายการจะไม่นับรวมกับยอดรวมของคุณ ตัวอย่างเช่นการนับจำนวนผู้โดยสารเครื่องบินในแถวที่ทารกนั่งอยู่บนตักของผู้ปกครอง ท้าทาย : เขียนโปรแกรมในการแยกรายชื่อของรายการเป็นชิ้น แต่ละอัน (ยกเว้นอาจเป็นครั้งสุดท้าย) มีขนาดเท่ากันซึ่งขนาดถูกกำหนดเป็นจำนวนรายการที่ผ่านฟังก์ชันเพรดิเคต กฎ : โปรแกรมของคุณต้องใช้ รายการของรายการ ขนาดก้อนจำนวนเต็มบวก ฟังก์ชันเพรดิเคต (รับไอเท็มและส่งคืนจริงหรือเท็จ) คุณต้องส่งคืนรายการอินพุตแยกเป็นชิ้น ๆ แต่ละอันคือรายการของรายการ โดยรวมแล้วรายการจะต้องอยู่ในลำดับเดียวกันโดยไม่มีใครสนใจ จำนวนรายการที่ผ่านเพรดิเคตในแต่ละก้อน (ยกเว้นอาจเป็นรายการสุดท้าย) ควรตรงกับขนาดของก้อนข้อมูลเข้า รายการที่ล้มเหลวเพรดิเคตไม่ควรนับรวมกับขนาดนี้ รายการที่ล้มเหลวของกริยาคือ ยังคงรวมอยู่ในกลุ่มเอาต์พุต จัดสรรให้กับชิ้นแรกสุดในกรณีที่ชิ้นเป็น "เต็ม" แต่รายการถัดไปเป็นรายการที่ล้มเหลวในเพรดิเคต ดังนั้นชิ้นสุดท้ายอาจไม่เพียง แต่ประกอบด้วยรายการที่ล้มเหลวของเพรดิเคต ก้อนสุดท้ายอาจมีขนาดน้อยกว่าขนาดก้อนเนื่องจากรายการทั้งหมดได้รับการพิจารณา ตัวอย่างที่ไม่ครบถ้วนสมบูรณ์: ตัวอย่างที่ง่ายที่สุดคือการพิจารณา1และ0s x ==> x > 0ที่ฟังก์ชั่นการวินิจฉัยคือ ในกรณีนี้sumแต่ละอันจะต้องตรงกับขนาดของก้อน รายการ: [], ขนาด: 2, เพรดิเคต: x > 0-> อย่างใดอย่างหนึ่ง[]หรือ[[]] …

25
Patttern ง่าย
ปัจจัยการผลิต: ตัวเลขสองหลักเดียว (เรียกว่าพวกมันmและn) และสองตัวอักษร (เรียกมันว่า) aและbในรูปแบบอินพุตที่คุณเลือก เอาท์พุท: m=2, n=5, a='a', b='b'สำหรับคำแนะนำการหลอก เอาต์พุตของคุณจะเป็นสตริงที่สร้างจากอินพุตสี่ตัวของคุณ ขอเรียกสตริงที่มีค่าresult ""ครั้งแรก concatenate aบนresult mเวลาเพื่อ concatenate aบนresult 2ครั้ง ตอนนี้เท่ากับresult aaประการที่สอง concatenate bบนresult mเวลาเพื่อ concatenate bบนresult 2ครั้ง ตอนนี้เท่ากับresult aabbสุดท้ายหากผลเป็นที่เรียบร้อยแล้วนานกว่าn, ตัดเพื่อที่จะมีความยาวresult nมิฉะนั้นต่อสลับกับmระยะเวลาในการทำงานของaและbจนกว่าจะมีความยาวresult nสุดท้ายresultมีที่ซึ่งมีความยาวaabba5 กรณีทดสอบ: Input: m = 2, n = 4, a = A, b = B Output: AABB Input: …
17 code-golf  string  code-golf  arithmetic  code-golf  string  array-manipulation  rubiks-cube  code-golf  math  number  code-golf  tips  bash  code-golf  ascii-art  music  code-golf  arithmetic  code-golf  math  number  arithmetic  integer  code-golf  number  array-manipulation  code-golf  geometry  grid  set-partitions  code-golf  math  number  code-golf  combinatorics  code-golf  regular-expression  code-golf  permutations  code-golf  ascii-art  code-golf  number  array-manipulation  matrix  code-golf  kolmogorov-complexity  compile-time  cops-and-robbers  polyglot  cops-and-robbers  polyglot  code-golf  string  code-golf  string  ascii-art  matrix  animation  code-golf  ascii-art  code-golf  string  balanced-string  code-golf  integer  integer-partitions  expression-building 

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ตามลำดับด้วยเวลา …

7
พาร์ติชันคำศัพท์ที่เรียงของตัวเลข
ความท้าทายนั้นง่ายมาก: เมื่อได้ตัวเลขคุณจะแบ่งตัวเลขออกเป็นอาเรย์ของตัวเลขที่เล็กลงซึ่งตัวเลขที่ได้จะไม่ลดลง การจับคือคุณต้องแยกมันให้ยาวที่สุด สับสน? คุณจะได้รับจำนวนเต็มบวกผ่าน STDIN (หรือทางเลือกที่ใกล้เคียงที่สุด) อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ฟังก์ชันในรูปแบบอินพุตที่สะดวกและชัดเจน คุณต้องแบ่งตัวเลขทศนิยมให้เป็นกลุ่มที่ต่อเนื่องกัน อาร์เรย์ของตัวเลขที่แสดงโดยกลุ่มหลักเหล่านี้ควรเรียงลำดับ (ตามลำดับปกติไม่ลด) โดยไม่ต้องจัดเรียงกลุ่มใหม่ ในกรณีที่มีพาร์ติชั่นดังกล่าวมากกว่าหนึ่งตัวคุณต้องแบ่งพาร์ติชันอินพุตให้เป็นตัวเลขให้ได้มากที่สุด ในกรณีของความสัมพันธ์ให้ส่งคืนผลลัพธ์หนึ่งรายการ คุณสามารถส่งออกอาร์เรย์เพื่อ STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด) หรือเป็นค่าตอบแทนการทำงาน ในกรณีของ STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด) อาร์เรย์ควรพิมพ์ในรูปแบบรายการที่สะดวกและไม่คลุมเครือ ตัวเลขที่แยกไม่ควรมีเลขศูนย์นำหน้า ดังนั้นสำหรับตัวอย่างเช่น1002003ไม่สามารถพิมพ์ออกมาเป็นอย่างใดอย่างหนึ่ง[1, 002, 003]หรือและคำตอบที่ถูกต้องเพียงเพราะมันเป็น[1, 2, 3][100, 2003] กรณีทดสอบ: 123456 -> [1, 2, 3, 4, 5, 6] 345823 -> [3, 4, 5, 8, 23] 12345678901234567890 -> [1, 2, 3, …

10
แบ่งแผนที่น้ำไหล
นี่คือความท้าทายบนอินเทอร์เน็ตที่ถามโดย Palantir เทคโนโลยีในการสัมภาษณ์ของพวกเขา กลุ่มเกษตรกรมีข้อมูลระดับความสูงและเราจะช่วยให้พวกเขาเข้าใจว่าปริมาณน้ำฝนไหลผ่านพื้นที่การเกษตรของพวกเขาอย่างไร เราจะเป็นตัวแทนของดินแดนในระดับความสูงสองมิติและใช้แบบจำลองต่อไปนี้ตามแนวคิดที่ว่าน้ำไหลลงเขา: หากเซลล์สี่เซลล์ที่อยู่ใกล้เคียงทั้งหมดมีระดับความสูงที่สูงกว่าเราเรียกเซลล์นี้ว่า sink น้ำเก็บในอ่างล้างจาน มิฉะนั้นน้ำจะไหลไปยังเซลล์ข้างเคียงซึ่งมีระดับความสูงต่ำสุด หากเซลล์ไม่ใช่อ่างล้างจานคุณอาจคิดว่ามีเพื่อนบ้านต่ำสุดที่ไม่เหมือนใครและเพื่อนบ้านนั้นจะต่ำกว่าเซลล์ เซลล์ที่ระบายลงในอ่างเดียวกันไม่ว่าโดยตรงหรือโดยอ้อมจะกล่าวว่าเป็นส่วนหนึ่งของอ่างเดียวกัน ความท้าทายของคุณคือการแบ่งแผนที่เป็นแอ่ง โดยเฉพาะอย่างยิ่งเมื่อได้รับแผนที่ระดับความสูงรหัสของคุณควรแบ่งแผนที่เป็นแอ่งและส่งขนาดของแอ่งตามลำดับจากมากไปน้อย สมมติว่าแผนที่ความสูงเป็นรูปสี่เหลี่ยมจัตุรัส อินพุตจะเริ่มต้นด้วยบรรทัดที่มีจำนวนเต็มหนึ่งตัวคือ S ความสูง (และความกว้าง) ของแผนที่ เส้น S ถัดไปแต่ละเส้นจะมีแถวของแผนที่แต่ละเส้นมีจำนวนเต็ม S - ระดับของเซลล์ S ในแถว เกษตรกรบางคนมีที่ดินขนาดเล็กเช่นตัวอย่างด้านล่างในขณะที่บางคนมีที่ดินขนาดใหญ่ อย่างไรก็ตามไม่ว่าในกรณีใดเกษตรกรจะมีที่ดินที่ใหญ่กว่า S = 5000 รหัสของคุณควรแสดงรายการขนาดลุ่มน้ำที่คั่นด้วยช่องว่างตามลำดับจากมากไปน้อย (ช่องว่างต่อท้ายจะถูกละเว้น) ตัวอย่างด้านล่าง การป้อนข้อมูล: 3 1 5 2 2 4 7 3 6 9 เอาท์พุท: 7 2 แอ่งที่มีป้ายกำกับของ …

7
มีพาร์ติชั่นกี่ตัวที่มีสี่เหลี่ยมสมบูรณ์แบบเท่านั้น?
กำหนดจำนวนเต็มไม่เป็นลบหรือรายการของตัวเลขกำหนดจำนวนตัวเลขที่สามารถเกิดขึ้นได้โดยการเชื่อมต่อจำนวนตารางซึ่งอาจมีเลขศูนย์นำหน้า ตัวอย่าง input -> output # explanation 164 -> 2 # [16, 4], [1, 64] 101 -> 2 # [1, 01], [1, 0, 1] 100 -> 3 # [100], [1, 00], [1, 0, 0] 1 -> 1 # [1] 0 -> 1 # [0] 164900 -> 9 # [1, 64, …

2
แบ่งพาร์ติชันเป็นลำดับที่เพิ่มขึ้น
สเปค ความท้าทายนี้ง่ายต่อการระบุ: อินพุตของคุณเป็นอาร์เรย์ที่ไม่ว่างของจำนวนเต็มที่ไม่ติดลบและงานของคุณคือแบ่งพาร์ติชันให้เป็นองค์ประกอบที่เพิ่มขึ้นน้อยที่สุดเท่าที่จะทำได้ อย่างเป็นทางการมากขึ้นถ้าอาร์เรย์อินAพุทคือเอาท์พุทเป็นอาร์เรย์ของอาร์เรย์Bดังกล่าว: แต่ละอาร์เรย์ในBรูปแบบพาร์ติชันของการเรียงAกัน (ไม่จำเป็นต้องต่อเนื่องกัน) Inductively นี่หมายความว่าอย่างใดอย่างหนึ่งBเป็นอาร์เรย์เดี่ยวที่มีAหรือองค์ประกอบแรกของBเป็นลำดับของAและส่วนที่เหลือเป็นรูปแบบพาร์ทิชันที่Aมีการลบออกเรียงลำดับ ทุกแถวในBนั้น (ไม่จำเป็นต้องเพิ่ม) จำนวนของอาร์เรย์Bมีค่าน้อยที่สุด ทั้งอินพุทและเอาท์พุทสามารถใช้รูปแบบอาเรย์ดั้งเดิมของภาษาของคุณ โปรดทราบว่าอาจมีผลลัพธ์ที่ถูกต้องหลายอย่าง ตัวอย่าง A = [1,2,1,2,5,4,7,1]พิจารณาอาร์เรย์การป้อนข้อมูล B = [[1],[1,2,4,7],[1,2,5]]การส่งออกที่เป็นไปได้คือ เงื่อนไขของพาร์ติชันนั้นเห็นได้จากแผนภาพนี้: A 1 2 1 2 5 4 7 1 B[0] 1 B[1] 1 2 4 7 B[2] 1 2 5 นอกจากนี้แต่ละอาร์เรย์Bยังเพิ่มมากขึ้น ในที่สุดAไม่สามารถแบ่งออกเป็นสองส่วนที่เพิ่มขึ้นดังนั้นความยาวของBมันก็น้อยมาก ดังนั้นมันเป็นผลลัพธ์ที่ถูกต้อง กฎและการให้คะแนน คุณสามารถเขียนฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบ จำนวนไบต์ต่ำสุดที่ชนะและช่องโหว่มาตรฐานไม่ได้รับอนุญาต ไม่มีเวลาผูกมัด แต่คุณควรทำการแก้ปัญหาของคุณในทุกกรณีทดสอบก่อนที่จะส่ง กรณีทดสอบ …

1
ตัดพิซซ่าเป็นชิ้น ๆ
นี่คือสิ่งที่ฉันคิดว่าคำถามนี้จะเป็นไปได้ก่อนที่ฉันจะอ่านอย่างเต็มที่ นักกอล์ฟกลุ่มหนึ่งเดินเข้าไปใน The Nineteenth Bite Pizzeria และสั่งพิซซ่า มันมาในรูปทรงที่ผิดปกติทำจากสี่เหลี่ยมหน่วย งานของคุณคือช่วยให้พวกเขาหั่นเป็นชิ้น ๆ กล่าวคือชิ้นส่วนต้องมีรูปร่างและขนาดเท่ากันทุกประการ สามารถหมุนได้ แต่ไม่พลิก / มิร์เรอร์ ตัวอย่างเช่นหากพวกเขาเป็นชิ้นส่วน Tetris พวกเขาจะต้องเหมือนกันคุณไม่สามารถใช้ทั้งชิ้น L และชิ้น J อินพุต คุณจะได้รับจำนวนคนในกลุ่มในบรรทัดแรก (มักจะเป็นจำนวนเต็ม 2-10 รวมทุกอย่าง) ตามด้วยเมทริกซ์รูปสี่เหลี่ยมผืนผ้าของ '' (ช่องว่าง) และตัวอักษร '#' แทนพิซซ่า อักขระ '#' ทั้งหมดเชื่อมต่อผ่านขอบของมัน จำนวนอักขระ '#' รับประกันได้ว่าจะเป็นจำนวนหลายคน เอาท์พุต คุณควรพิมพ์เมทริกซ์เดียวกันโดยที่อักขระ '#' แต่ละตัวถูกแทนที่ด้วยตัวเลขตั้งแต่ 0 ถึง n-1 (n คือจำนวนคน) แต่ละหลักควรทำเครื่องหมายเป็นชิ้น รูปร่างชิ้นจะต้องเชื่อมต่อผ่านขอบสี่เหลี่ยม การจัดลำดับหมายเลขไม่จำเป็นต้องเป็นไปตามลำดับใด …

23
นับจำนวนการปรากฏของชุดในรายการ
ให้ชุดของสตริงที่ไม่ว่างเปล่าและรายการของสตริงหาจำนวนครั้งที่ชุดเกิดขึ้นในรายการเช่นกี่ครั้งที่คุณสามารถสร้างชุดที่มีรายการจากรายการ ทุกองค์ประกอบจากรายการสามารถใช้ได้เพียงครั้งเดียว คำแนะนำ: ชุดเป็นรายการที่ไม่ซ้ำของรายการที่ไม่ซ้ำกัน ใช้กฎอินพุต / เอาต์พุตเริ่มต้น ไม่อนุญาตให้ใช้ไลบรารีภายนอก libs มาตรฐานของคอมไพเลอร์ / ล่ามก็โอเค นี่คือรหัสกอล์ฟดังนั้นจึงนับเป็นการแก้ปัญหาที่สั้นที่สุด กรณีทดสอบ: ["apple", "banana"], ["apple", "pear", "apple", "banana", "banana"] => 2 ["apple", "banana"], ["apple", "pear", "apple", "banana", "apple"] => 1 ["apple", "banana", "pear"], ["apple", "banana", "kiwi", "apple"] => 0 ["coconut"], [] => 0 แก้ไข:ลบประโยคที่ระบุว่าอินพุต params ถูกกำหนดในขอบเขตโลคัล สิ่งนี้ขัดแย้งกับกฎ IO …

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