অ্যাডভেন্ট চ্যালেঞ্জ:: পরিবহন ডক রিলেবলিং!


9

<< পূর্ববর্তী পরবর্তী >>

পিপিসিজি সম্প্রদায়ের জন্য ধন্যবাদ, সান্তা ট্রান্সপোর্টেশন ডকের দিকে যাওয়ার জন্য তার উপহারগুলি সঠিক ক্রমে সাজানোর ব্যবস্থা করেছিলেন। দুর্ভাগ্যক্রমে, পরিবহন ডকের লক্ষণগুলি ভেঙে গেছে তাই তিনি সমস্ত উপহার কোথায় রাখবেন তা জানেন না! উপহারগুলি সমস্ত একত্রিত করা হয় এবং তাদের পরিসীমা অনুসারে নয়, যা সান্তা স্বীকার করে নেয় এটি আরও ভাল ধারণা ছিল।

এখন, সাজানো ক্রমে উপহারগুলি প্রদান করে, সমস্ত সম্ভাব্য ন্যূনতম ব্যাপ্তি কনফিগারেশনগুলি নির্ধারণ করুন যা ফলাফলটি সঠিক ক্রমে উপস্থিত হবে। এটি হ'ল, সমস্ত ন্যূনতম পরিসরের কনফিগারেশনগুলি সন্ধান করুন যে চ্যালেঞ্জ # 5 এ অ্যালগরিদম অনুসারে উপস্থাপনা বাছাই করলে ক্রম পরিবর্তন হবে না।

চ্যালেঞ্জ

একটি ন্যূনতম ব্যাপ্তি কনফিগারেশন হ'ল রেঞ্জগুলির তালিকা যেমন ব্যাপ্তিগুলি যথাসম্ভব ছোট হয়। এটি হ'ল, যদি উপস্থাপনের নির্দিষ্ট উপসেটটি কভার করার জন্য কোনও ব্যাপ্তিকে মনোনীত করা হয়, তবে সর্বনিম্ন এবং সর্বাধিক সীমাটির সীমা অবশ্যই সাবসেটের সমান হতে হবে। অন্য কথায়, কভারের যে কোনও ব্যাপ্তি সঙ্কুচিত করা এটিকে আর কভার হতে পারে না।

চ্যালেঞ্জটি হ'ল সম্ভাব্য সর্বনিম্ন ব্যাপ্তি কনফিগারেশনগুলি পাওয়া যা বর্তমান আকারগুলিতে প্রযোজ্য। একটি উদাহরণ নেওয়া যাক:[3, 1, 2, 5, 4, 7, 6]

একটি তুচ্ছ ঘটনা রয়েছে যা পুরো উপস্থিত কনফিগারেশনের পরিসর নিতে হবে। এই ক্ষেত্রে, [[1, 7]]একটি সমাধান হবে।

অনন্য উপাদান সহ উদাহরণগুলির জন্য, আরও একটি তুচ্ছ ঘটনাটি হবে [[3], [1], [2], [5], [4], [7], [6]](কারণ সীমাগুলি অর্ডার করার প্রয়োজন নেই)।

এই উদাহরণস্বরূপ, আমরা এটি দেখতে পাই [[1, 3], [4, 7]]এবং [[1, 3], [4, 5], [6, 7]]কাজ করি, পাশাপাশি [[1, 3], [5], [4], [6, 7]]এবং [[1, 3], [4, 5], [7], [6]]

এর চূড়ান্ত উত্তর [3, 1, 2, 5, 4, 7, 6]হবে [[[3], [1], [2], [5], [4], [7], [6]], [[3], [1], [2], [5], [4], [6, 7]], [[3], [1], [2], [4, 5], [7], [6]], [[3], [1], [2], [4, 5], [6, 7]], [[3], [1], [2], [4, 7]], [[3], [1, 2], [5], [4], [7], [6]], [[3], [1, 2], [5], [4], [6, 7]], [[3], [1, 2], [4, 5], [7], [6]], [[3], [1, 2], [4, 5], [6, 7]], [[3], [1, 2], [4, 7]], [[1, 3], [5], [4], [7], [6]], [[1, 3], [5], [4], [6, 7]], [[1, 3], [4, 5], [7], [6]], [[1, 3], [4, 5], [6, 7]], [[1, 3], [4, 7]], [[1, 5], [7], [6]], [[1, 5], [6, 7]], [[1, 7]]]

ফর্ম্যাটিং স্পেসিফিকেশন

ইনপুটটি কোনও যুক্তিযুক্ত বিন্যাসে আপনার ভাষার যুক্তিসঙ্গত সমর্থিত সংখ্যা সীমার মধ্যে ইতিবাচক পূর্ণসংখ্যার সমতল তালিকা হিসাবে দেওয়া হবে। ইনপুটটিতে সদৃশ উপাদান থাকতে পারে। আউটপুটটি কোনও যুক্তিসঙ্গত বিন্যাসে ধনাত্মক পূর্ণসংখ্যার 3 ডি তালিকা হিসাবে দেওয়া উচিত।

আপনার আউটপুটে প্রতিটি পরিসীমা (যা দ্বিতীয় স্তরে রয়েছে) তা উপস্থাপিত হতে পারে [min, max], [num]যদি এটি একক মানের পরিসীমা হয় বা সম্পূর্ণ পরিসীমা হিসাবে থাকে তবে আপনার আউটপুট ফর্ম্যাটটি অবশ্যই সামঞ্জস্যপূর্ণ হতে পারে। আপনি যদি কিছু ভিন্ন যুক্তিসঙ্গত আউটপুট ফর্ম্যাট ব্যবহার করতে চান তবে দয়া করে নির্দিষ্ট করুন।

সদৃশ মানগুলি আউটপুটে একটি একক পরিসীমা দ্বারা আবৃত হওয়া আবশ্যক; অর্থাৎ আউটপুটে কোনও দুটি ব্যাপ্তির কোনও ওভারল্যাপ থাকতে পারে না।

আপনার সমাধানটি কোনও ক্রমে ব্যাপ্তিগুলি ফিরিয়ে আনতে পারে এবং এটি নির্দোষ হতে হবে না।

বিধি

  • স্ট্যান্ডার্ড লুফোলস প্রয়োগ করুন
  • এই তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তরটি জেতে
  • কোন উত্তর গৃহীত হবে না

সদৃশ উপাদানগুলির সাথে তালিকার জন্য টেস্ট কেস:

2 3 2 4 -> [[[2, 3], [4]], [[2, 4]]]

রেফারেন্স বাস্তবায়ন

শিরোনামটি হল লিঙ্ক।

দ্রষ্টব্য: আমি অ্যাডভেন্ট অফ কোড থেকে এই চ্যালেঞ্জ সিরিজের জন্য অনুপ্রেরণা তৈরি করেছি । এই সাইটের সাথে আমার কোনও সম্পর্ক নেই

আপনি এখানে প্রথম চ্যালেঞ্জের 'লিঙ্কযুক্ত' বিভাগটি দেখে সিরিজের সমস্ত চ্যালেঞ্জের একটি তালিকা দেখতে পারেন ।

শুভ গল্ফিং!

উত্তর:



3

ব্র্যাচল্যাগ , 17 16 বাইট

{~c⟨⌋⟦₂⌉⟩ᵐ.c≠∧}ᶠ

ডুপ্লিকেট সহ তালিকাগুলিতেও কাজ করে। পরিসীমাগুলি তাদের ধারণ করে এমন উপাদানগুলির তালিকা দ্বারা প্রতিনিধিত্ব করে। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

ধারণাটি হ'ল তালিকাকে ব্লকগুলিতে পরিণত করা এবং ব্লকগুলিকে রেঞ্জগুলিতে রূপান্তর করা, তারপরে যাচাই করুন যে সেগুলি ওভারল্যাপ করে না।

{~c⟨⌋⟦₂⌉⟩ᵐ.c≠∧}ᶠ  Input is a list.
{             }ᶠ  Compute all possible outputs for this predicate:
 ~c                Break the list into contiguous blocks.
   ⟨    ⟩ᵐ         For each block,
    ⌋  ⌉           take its minimum and maximum,
     ⟦₂            and create the range between them.
          .        This is the output.
           c       Also, if you concatenate the output,
            ≠      its elements are distinct.
             ∧     Prevent the interpreter from thinking this is also the output.

1

জাভাস্ক্রিপ্ট (ES6), 166 164 বাইট

সম্পাদনা: আপডেট করা সংস্করণ যা এখন নকলকে সমর্থন করে

ফলাফলগুলি [কমপক্ষে, সর্বাধিক] বিন্যাসে সরাসরি কনসোলে মুদ্রণ করে ।

f=(a,r=[],l=0)=>a[l++]?f([...a],r,l,f(a,[...r,[Math.min(...x=a.splice(0,l)),Math.max(...x)]])):a[0]|r.some(([x,y],i)=>r.some(([z])=>i--&&z>=x&z<=y))||console.log(r)

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


0

পাইথন 2 , 179 বাইট

lambda l:[l for l in[[range(min(x),max(x)+1)for x in P]for P in p(l)]if len(sum(l,[]))==len(set(sum(l,[])))]
p=lambda l:[[l[:i]]+a for i in range(1,len(l))for a in p(l[i:])]+[[l]]

এটি অনলাইন চেষ্টা করুন!

সম্পূর্ণ ব্যাপ্তির একটি তালিকা আউটপুট করে।

রেফারেন্স প্রয়োগের মাধ্যমে ভারী অনুপ্রাণিত।

সমস্ত পার্টিশন তৈরি করে, তারপরে প্রতিটি পার্টিশনের জন্য ন্যূনতম / সর্বোচ্চের ব্যাপ্তি। কোনও মান তালিকায় একাধিকবার উপস্থিত না হলে রেঞ্জের একটি তালিকা বৈধ।


sum(l,[]) তালিকাগুলির একটি তালিকা সমতল করে এবং আমাকে সদৃশগুলি পরীক্ষা করতে দেয়:

l=[[1, 2], [2, 3]]
sum(l,[]) = [1,2,2,3]
len([1,2,2,3] == len(set([1,2,2,3]))  -> False (duplicates)

0

পাইথ , 17 বাইট

f{IsTmm}hSkeSkd./

এখানে চেষ্টা করুন!

এখন এটি অনেক ভাল। পুরো ব্যাপ্তিকে আউটপুট করে। পূর্ববর্তী সংস্করণটির পুনর্বিবেচনার ইতিহাসটি দেখুন (স্তম্ভিত 31 বাইটে)

কিভাবে এটা কাজ করে

f {IsTmm} hSkeSkd./ ~> সম্পূর্ণ প্রোগ্রাম।

               ./ ~> পার্টিশনের তালিকা করুন।
     m ~> মান ভেরিয়েবল ব্যবহার করে d।
      md ~> d ভেরিয়েবল কে ব্যবহার করে ওভার ম্যাপ।
        hSk ~> সর্বনিম্ন কে।
           eSk ~> সর্বাধিক কে।
       ~ ~> অন্তর্ভুক্ত পূর্ণসংখ্যার ব্যাপ্তি।
f ~> এগুলি ফিল্টার করুন ...
   sT ~> যা, যখন সমতল হয়,
 {আমি ~> প্রতিলিপি ছাড়াই আক্রমণাত্মক।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.