সাফিং ব্লক অনুসারে বাছাই করুন


18

সাফল্য ব্লক করুন

ব্লক এলোমেলো সাজানোর একটি (বরং কৃত্রিম) একটি তালিকা বাছাই পদ্ধতি। এটি নীচে যেমন একটি উদাহরণ দ্বারা চিত্রিত কাজ করে।

[6, 1, 0, 3, 2, 4, -2, -1]
                            Break list into contiguous blocks
[6][1, 0][3, 2, 4][-2, -1]
                            Sort each block
[6][0, 1][2, 3, 4][-2, -1]
                            Sort blocks lexicographically
[-2, -1][0, 1][2, 3, 4][6]
                            Concatenate
[-2, -1, 0, 1, 2, 3, 4, 6]

সংহত ব্লকগুলিতে পার্টিশনটি নির্বিচারে বেছে নেওয়া যেতে পারে। যাইহোক, ব্লকগুলির সমস্ত পছন্দগুলি শেষে বাছাই করা তালিকা সরবরাহ করবে না:

[6, 1, 0, 3, 2, 4, -2, -1]
[6, 1, 0][3, 2, 4][-2, -1]
[0, 1, 6][2, 3, 4][-2, -1]
[-2, -1][0, 1, 6][2, 3, 4]
[-2, -1, 0, 1, 6, 2, 3, 4]

সমস্ত ব্লকের দৈর্ঘ্য 1, বা যদি কেবল একটি ব্লক থাকে, তবে ফলাফল অবশ্যই বাছাই করা হবে। তবে এগুলি বরং চরম ঘটনা। এই চ্যালেঞ্জে আপনার কাজটি হ'ল ব্লকের সংখ্যা এবং একটি ব্লকের সর্বোচ্চ দৈর্ঘ্যের মধ্যে ভারসাম্য খুঁজে পাওয়া find

কাজটি

আপনার ইনপুটটি কোনও যুক্তিসঙ্গত বিন্যাসে নেওয়া পূর্ণসংখ্যার এল , এর সর্বমোট তালিকা । আপনার আউটপুটটি সবচেয়ে ক্ষুদ্রতম পূর্ণসংখ্যার এন হবে যাতে এল ব্লক সাফেল বাছাই করা যায় যাতে প্রতিটি ব্লকের সংখ্যা এবং দৈর্ঘ্য সর্বাধিক এন হয়

প্রতিটি ভাষায় সর্বনিম্ন বাইট গণনা জয়ী হয়। স্ট্যান্ডার্ড বিধি প্রযোজ্য।

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

[5] -> 1
[1,2] -> 2
[0,2,1,-1] -> 3
[-1,0,2,1] -> 2
[9,3,8,2,7] -> 4
[9,2,8,3,7] -> 3
[5,9,3,7,2,4,8] -> 7
[-1,-2,1,2,-1,-2,7] -> 4
[6,1,0,3,2,4,-2,-1] -> 4
[12,5,6,-6,-1,0,2,3] -> 3
[1,0,1,0,1,0,1,0,1,0] -> 6
[1,2,1,3,1,2,3,2,4,3] -> 5
[7,7,7,7,8,9,7,7,7,7] -> 4

উত্তর:


5

ব্র্যাচল্যাগ , 23 22 20 19 বাইট

কিছুটা বাইট সঞ্চয় করার জন্য জগারব, এইচ.পি.উইজ এবং ফ্যাটালাইজকে ধন্যবাদ।

~cᶠ{oᵐoc≤₁&≡ᵃlᵐ⌉}ˢ⌋

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

আমি নিশ্চিত এখানে গল্ফ করার মতো আরও কিছু আছে ...

ব্যাখ্যা

~cᶠ      Find all lists that concatenate into the input, i.e. all partitions
         of the input.
{        Discard all partitions for which this predicate fails, and replace
         the rest with the output of this predicate.
  oᵐ       Sort each sublist of the partition.
  o        Sort the entire list.
  c≤₁      And require concatenation of the result to be sorted.
  &        Then:
  ≡ᵃ       Append the partition to itself.
  lᵐ       Map "length" over this list, i.e. we get the length of each block, as
           well as the length of the partition itself.
  ⌉        Take the maximum.
}ˢ
⌋        Take the minimum of all those maxima.

3

জেলি , 17 বাইট

Ṣ€ṢF
ŒṖÇÐṂ+Z$€L€Ṃ

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

বিকল্প সংস্করণ, 15 বাইট, চ্যালেঞ্জ পোস্টডেটস

সর্বশেষতম সংস্করণে, Ɗতিনটি লিঙ্ককে এক একজাতীয় চেইনে সংযুক্ত করে। এটি নিম্নলিখিত গল্ফ অনুমতি দেয়।

ŒṖṢ€ṢFƊÐṂ+ZLƊ€Ṃ

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

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

Ṣ€ṢF          Helper link. Argument: P (partitioned array)

Ṣ€            Sort each chunk.
  Ṣ           Sort the sorted chunks.
   F          Flatten.


ŒṖÇÐṂ+Z$€L€Ṃ  Main link. Argument: A (array)

ŒṖ            Generate all partitions of A.
  ÇÐṂ         Keep those for which the helper link returns the minimal array, i.e.,
              those that return sorted(A).
     +Z$€     Add each partition to its transpose.
              Due to how Jelly vectorizes, the length of the sum is the maximum of
              the length of the operands, and the length of the transpose is the
              length of the array's largest column.
         L€   Take the length of each sum.
           Ṃ  Take the minimum.

2

স্ট্যাক্স , 28 26 25 24 23 বাইট সিপি 437

é%(>ù│ê²☻û◙T╠►╜◘íaæAtI╥

চালান এবং অনলাইন ডিবাগ!

3 বাইট সংরক্ষণের জন্য ক্রেডিট @ রিসার্সিভকে।

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

ব্যাখ্যা

ব্যাখ্যা করার জন্য আনপ্যাক করা সংস্করণ ব্যবহার করে।

%cFxs|!F{{omo:f:^!C_Mch\%|m
%cFxs|!F                        Do for all partitions, grouped by number of sub-arrays
                                    Grouping by number of sub-arrays in this problem does not help but it's the default                    
        {{om{o                  Sort inside block then sort blocks lexicographically
              :f:^              The result when flattened is sorted
                  !C            Skip the rest of the loop if the last line is false
                    _|<         Take the current partition, pad to the longest

                       h        Take the first element, whose length is now the maximum of all sub-arrays in the original partition
                        \       Zip with the current partition, the shorter one is repeated
                         %      Number of elements
                                Which is the maximum of all sub-array sizes and the number of sub-arrays in the current partition  
                          |m    Take the minimum among all choices of partitions


1
এটি স্ট্যাক্সের জন্য হতাশাব্যঞ্জক একধরণের পারফরম্যান্স, তবে আমি সঞ্চয় খুঁজছি।
পুনরাবৃত্তি


এটা ঠিক ... আশ্চর্যজনক।
ওয়েইজুন চাউ

ধন্যবাদ। আমি এটা ক্রীড়া-কৌতুক যে হাইপারলিঙ্ক ব্যবহার পাওয়া ঠিক ": // HTTP" সঙ্গে: সর্বোচ্চ মন্তব্য আকার, প্রতিস্থাপন পর "// HTTPS"।
পুনরাবৃত্ত

2

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

~c₎{oᵐoc≤₁&lᵐ⌉≤}ᵈ

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

ব্যাখ্যা

এটি একটি স্ব-উত্তর; আমি এই চ্যালেঞ্জটি ব্র্যাচল্যাগকে মাথায় রেখে ডিজাইন করেছি এবং ~c₎{…}ᵈএকটি আকর্ষণীয় কনস্ট্রাক্ট পেয়েছি ।

অন্তর্নির্মিত cতালিকা তালিকাকে সম্মতি দেয়। যদি এটি সাবস্ক্রিপ্ট দেওয়া হয় তবে এটির Nতালিকার সংখ্যা হওয়া দরকার N। প্রতীকটি একটি জুটি ইনপুট হিসাবে নিতে এবং অন্তর্নিহিত হিসাবে তার সঠিক উপাদানটি ব্যবহার করার জন্য একটি অন্তর্নির্মিত পরিবর্তন করে। এইভাবেc₎ একজোড়া লাগে [L,N], প্রয়োজন মধ্যে তালিকার সংখ্যা Lহয় N, এবং সংযুক্তকরণের ফেরৎ L। যখন বিপরীতে চালানো হয়, ~c₎একটি তালিকা নেয় Lএবং একটি জুটি ফেরত দেয় [P,N], যেখানে Pকোনও পার্টিশন LথাকেN ব্লক। তারা ক্রমবর্ধমান ক্রম গণনা করা হয় N

মেটাপ্রেডিকেট একটি সাধারণ শিকারিকে এমন একটিতে রূপান্তর করে যা একটি জোড়ের দুটি উপাদানগুলির মধ্যে সম্পর্ক পরীক্ষা করে। আরও স্পষ্টতই, {…}ᵈএকটি জুড়ি লাগে [A,B], A{…}Bধরে রাখে এমন চেকগুলি এবং আউটপুটগুলি B। আমি এটি যাচাই করতে এটি ব্যবহার করি যা Pব্লক-বাছাই করা যায় এবং কেবলমাত্র বেশিরভাগ দৈর্ঘ্যের তালিকা থাকে N

~c₎{oᵐoc≤₁&lᵐ⌉≤}ᵈ  Input is a list, say L = [9,2,8,3,7].
~c₎                Guess the pair [P,N]: [[[9],[2],[8,3,7]],3]
   {           }ᵈ  Verify this predicate on P and N and return N:
    oᵐ              Sort each list in P: [[9],[2],[3,7,8]]
      o             Sort lexicographically: [[2],[3,7,8],[9]]
       c            Concatenate: [2,3,7,8,9]
        ≤₁          This list is nondecreasing: true.
          &lᵐ       Length of each list in P: [1,1,3]
             ⌉      Maximum: 3
              ≤     This is at most N: true.

নোট যাতে Pখালি তালিকা থাকতে পারে। এটি সেই ক্ষেত্রেও যেখানে ব্লকের সর্বাধিক দৈর্ঘ্য ব্লকের সংখ্যার চেয়ে বেশি তার ক্ষেত্রেও নির্ভুলতা নিশ্চিত করে।




1

পাইথ ,  24 23  20 বাইট

hSmeSlMs]Bd.msSSMb./

পরীক্ষা স্যুট.

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

hSmeSlMs]Bd.msSSMb./ – Full program. Hereby, Q represents the input.
                  ./ – All possible partitions of Q.
           .m        – Take the partitions which yield a minimal (i.e. sorted) list over:
             sSSMb   – Sorting function. Uses the variable b.
               SMb   – Sort each list in each partition b.
              S      – Sort the partition b.
             s       – And flatten (by 1 level).
  meSlMs]Bd          – Map. Uses a function whose variable is d.
        ]Bd          – Pair d with its wrapping in a singleton list. Returns [d, [d]].
       s             – Flatten (by 1 level). Returns [*d, d], where "*" is splatting.
     lM              – Take the length of each element.
   eS                – Retrieve the maximal length.
hS                   – Return the minimum element of the list of maximal lengths.

0

এপিএল (ডায়ালগ ক্লাসিক) , 71 67 বাইট

{⌊/(⌈/≢,≢¨)¨T/⍨{S[⍋S]≡∊⍵[⍋↑⍵]}¨T←{⍵[⍋⍵]}¨¨⊂∘S¨(-≢S)↑¨2⊥⍣¯1¨⍳2*≢S←⍵}

⎕IO অবশ্যই 0

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

কিভাবে?

  • ⌊/- সর্বনিম্ন সন্ধান করুন ...
  • (⌈/≢,≢¨)- ... সর্বোচ্চ দৈর্ঘ্য এবং সংখ্যার সংখ্যা ...
  • ¨- ... প্রতিটি উপাদান এর ...
  • T/⍨- ... উপাদান যে ...
  • {S[⍋S]≡∊⍵[⍋↑⍵]}¨- ... সমতল করা হয় যখন এর ...
  • T←{⍵[⍋⍵]}¨¨- ... উপাদানগুলির সাজানো উপাদানসমূহ ...
  • ⊂∘S¨(-≢S)↑¨2⊥⍣¯1¨⍳2*≢S←⍵- ... আর্গুমেন্টের পার্টিশন (কিছু জঞ্জাল সহ)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.