উপবৃত্তি ক্রমবর্ধমান মধ্যে বিভাজন


16

সবিস্তার বিবরণী

এই চ্যালেঞ্জটি বলা সহজ: আপনার ইনপুটটি হ'ল ননএগেটেটিভ পূর্ণসংখ্যার একটি খালি অरे, এবং আপনার কাজটি এটি যথাসম্ভব কয়েকটি বর্ধমান অনুচ্ছেদগুলিতে ভাগ করা। আরও আনুষ্ঠানিকভাবে, যদি ইনপুট অ্যারে হয় A, তবে আউটপুটটি অ্যারের অ্যারে Bযেমন:

  • প্রতিটি অ্যারে Bবিভাজন A(অবিচ্ছিন্নভাবে সংগত নয়) উপসর্গগুলিতে একটি পার্টিশন গঠন করে । ইন্দুকিটিভভাবে, এর অর্থ 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ন্যূনতম। সুতরাং এটি একটি বৈধ আউটপুট।

বিধি এবং স্কোরিং

আপনি কোনও ফাংশন বা একটি সম্পূর্ণ প্রোগ্রাম লিখতে পারেন। সর্বনিম্ন বাইট গণনা জয়, এবং মান লুফোলগুলি অনুমোদিত নয়। সময়সীমা বেঁধে দেওয়া হয় না, তবে জমা দেওয়ার আগে আপনার সমস্ত পরীক্ষার ক্ষেত্রে আপনার সমাধানটি এড়ানো উচিত।

পরীক্ষার মামলা

কেবলমাত্র একটি সম্ভাব্য আউটপুট দেখানো হয়েছে, তবে বেশ কয়েকটি বৈধ বিকল্প থাকতে পারে। বিশেষত, ফলাফলের অ্যারেগুলির ক্রম কোনও ব্যাপার নয় (তবে প্রতিটি স্বতন্ত্র অ্যারে ক্রমবর্ধমান ক্রমে হওয়া উচিত)।

[0] -> [[0]]
[3,5,8] -> [[3,5,8]]
[2,2,2,2] -> [[2,2,2,2]]
[1154,1012,976,845] -> [[845],[976],[1012],[1154]]
[6,32,1,2,34,8] -> [[1,2,8],[6,32,34]]
[1,12,1,12,1,13] -> [[1,1,1,13],[12,12]]
[6,4,6,13,18,0,3] -> [[0,3],[4,6,13,18],[6]]
[1,2,3,2,3,4,7,1] -> [[1,1],[2,2,3,4,7],[3]]
[0,9,2,7,4,5,6,3,8] -> [[0,2,3,8],[4,5,6],[7],[9]]
[7,1,17,15,17,2,15,1,6] -> [[1,1,6],[2,15],[7,15,17],[17]]
[4,12,2,10,15,2,2,19,16,12] -> [[2,2,2,12],[4,10,15,16],[12,19]]
[10,13,9,2,11,1,10,17,19,1] -> [[1,1],[2,10,17,19],[9,11],[10,13]]
[3,7,3,8,14,16,19,15,16,2] -> [[2],[3,3,8,14,15,16],[7,16,19]]
[15,5,13,13,15,9,4,2,2,17] -> [[2,2,17],[4],[5,9],[13,13,15],[15]]

3
নিয়মগুলি মনে হয় [0,5,2,0] -> [[0,5],[0,2]](যেমন, তাদের প্রতিটি একবার ব্যবহারের পরিবর্তে প্রথম শূন্যটি পুনর্ব্যবহার করা) এর মতো সমাধানগুলিকে অনুমতি দেয় । এটা কি ইচ্ছাকৃত?
ফেয়ারসুম

@ ফেয়ারসাম এটি ইচ্ছাকৃত নয়, ভাল ক্যাচ। আমি শর্তগুলি আবার লিখেছি B, আশা করি তারা এখন আরও পরিষ্কার হয়ে গেছে।
Zgarb

উত্তর:


3

হাস্কেল, 54 বাইট

n#[]=[[n]]
n#(l:c)|[n]<=l=(n:l):c|1<2=l:n#c
foldr(#)[]

ব্যবহারের উদাহরণ: foldr(#)[] [4,12,2,10,15,2,2,19,16,12]->[[2,2,2,12],[4,10,15,16],[12,19]]

এটি কীভাবে কাজ করে: ডান প্রান্ত থেকে শুরু করে ইনপুট তালিকাটি দিয়ে যান। বর্তমান উপাদানটিকে nপ্রথম সাবলিস্টে প্রিপেন্ড করে আউটপুট তালিকা (তালিকার) তৈরি করুন lযেখানে nমাথার চেয়ে কম বা সমান l। যদি কিছুই না থাকে nতবে আউটপুট তালিকার শেষে একটি নতুন সিঙ্গলটন তালিকা তৈরি করুন ।


1

পাইথ, 20 বাইট

fTu&ahfSI+THGHGQm[)Q

এটি অনলাইনে ব্যবহার করে দেখুন: বিক্ষোভ বা পরীক্ষার স্যুট

লোভী পদ্ধতির। আমি len(input)খালি তালিকা তৈরি করি । তারপরে আমি inputপ্রথমটির একটি বেছে নিয়ে প্রতিটি সংখ্যার উপরে পুনরাবৃত্তি করি যা এখনও নম্বর সংযোজনের পরে সাজানো হয়।

ব্যাখ্যা:

fTu&ahfSI+THGHGQm[)Q   implicit: Q = input list
                m[)Q   create a list of empty lists and assign to G
  u            Q       iterate over all numbers H in input:
      f     G             filter for lists T in G, which satisfy:
         +TH                 create a new list out of T and H
       SI                    and check if it is sorted
     h                    take the first such list T
    a        H            and append H
   &          G           logical and with G (so that u doesn't overwrite G)
fT                     remove all empty lists

@ থমাসকওয়া এখন অতিরিক্ত পরীক্ষা-নিরীক্ষার ক্ষেত্রে প্রচুর পরীক্ষা করেছেন। একটিও খুঁজে পেল না, এটি ভুল ফলাফল দেয়। আমি বেশ নিশ্চিত, লোভী সর্বদা সঠিক ফলাফল দেয়।
জাকুব

@ থমাসকওয়া ওহ, এই প্রতিলিপিটি একটি ভিন্ন লোভী কৌশল ছিল (দীর্ঘতম ক্রমবর্ধমান অনুচ্ছেদটি সন্ধান করুন, এটি সরিয়ে দিন এবং পুনরাবৃত্তি করুন)। আমি এমন কোনও পরীক্ষার
কেসও খুঁজে পাচ্ছি না

ঠিক আছে, আমি মনে করি যে এটি কাজ করে তা প্রমাণ করার জন্য উত্তরটি উত্তরদাতাকেই বোঝা। আমি বৈধ প্রমাণিত হলে upvote করব।
lirtosiast
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.