একটি অ্যারের মধ্যে ছোট গ্রুপ


14

ভূমিকা

আসুন নিম্নলিখিত অ্যারে পর্যবেক্ষণ করুন:

[1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1]

একটি গ্রুপ একে অপরের পাশে একই সংখ্যা নিয়ে গঠিত। উপরের অ্যারেটিতে 5 টি আলাদা গ্রুপ রয়েছে:

[1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1]

 1, 1, 1 
          2, 2
                1, 1, 1, 1
                            2, 2, 2
                                     1, 1, 1

এর মধ্যে ক্ষুদ্রতম গ্রুপটি [2, 2], সুতরাং আমরা আউটপুট [2, 2]

এর আরেকটি উদাহরণ নেওয়া যাক:

[3, 3, 3, 4, 4, 4, 4, 5, 5, 4, 4, 3, 3, 4, 4]

 3, 3, 3
          4, 4, 4, 4
                      5, 5
                            4, 4
                                  3, 3
                                        4, 4

আপনি দেখতে পাচ্ছেন যে একই দৈর্ঘ্যের একাধিক গ্রুপ রয়েছে। ক্ষুদ্রতম গ্রুপগুলি হল:

[3, 3], [4, 4], [4, 4] and [5, 5].

সুতরাং আমরা ঠিক যে [3, 3], [4, 4], [4, 4], [5, 5]কোনও যুক্তিসঙ্গত ফর্ম্যাট মধ্যে আউটপুট । আপনি যে কোনও ক্রমে এগুলি আউটপুট দিতে পারেন।

কাজটি

শুধুমাত্র ধনাত্মক পূর্ণসংখ্যার সমন্বয়ে একটি অ্যারে দেওয়া হয়েছে, অ্যারে থেকে ক্ষুদ্রতম গ্রুপ (গুলি) আউটপুট করুন। আপনি ধরে নিতে পারেন যে অ্যারেতে কমপক্ষে 1 টি পূর্ণসংখ্যা থাকবে।

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

Input: [1, 1, 2, 2, 3, 3, 4]
Output: [4]

Input: [1]
Output: [1]

Input: [1, 1, 10, 10, 10, 100, 100]
Output: [1, 1], [100, 100]

এটি , তাই সর্বনিম্ন পরিমাণ বাইটের সাথে জমা দেওয়া!



ইনপুট একটি স্ট্রিং হতে পারে?
ডাউনরেপ_নেশন

@ ডাউনরেপ_নেশন হুম, আপনি কীভাবে তা করতে চান? আপনি যদি এটি মাল্টিডিজিট পূর্ণসংখ্যার সাথে করতে পারেন তবে এটি ঠিক আছে।
আদনান

ints আকার দ্বারা খুব সীমাবদ্ধ এবং স্ট্রিং হয় না। কেন আমি জিজ্ঞাসা করছি
ডাউনরেপ_নেশন

@ ডাউনরেপ_নেশন ঠিক আছে, তাহলে কীভাবে আপনি শেষ পরীক্ষার ক্ষেত্রে ইনপুট সরবরাহ করতে চান? 11101010100100ইনপুট জন্য সঠিক বলে মনে হচ্ছে না: পি।
আদনান

উত্তর:


5

Pyth, 14 12 11

mM_MmhbrQ8

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

2 বাইট জাকুবে ধন্যবাদ! এবং 1 বাইট আইস্যাককে ধন্যবাদ!

দুর্ভাগ্যক্রমে, রান দৈর্ঘ্যের ডিকোডিং আমরা যা করতে চাই তা পুরোপুরি করে না, তবে এটি একটি ছোটখাটো কাজের সাথে কাজ করবে, তবে এটি ম্যানুয়াল বাস্তবায়নের চেয়ে কিছুটা দীর্ঘতর করে তোলে:

mr]d9.mhbrQ8

এটি সন্ধানের জন্য জাকুবে ক্রেডিট।


বিটিডাব্লু, আরএলডি কাজ করে তবে আপনাকে জোড়ার একটি তালিকা সরবরাহ করতে হবে:mr]d9.mhbrQ8
জাকুব

রান দৈর্ঘ্যের ডিকোডিং সম্পর্কে আরও: রান দৈর্ঘ্যের ডিকোডিং জোড়াগুলির তালিকার প্রত্যাশা করে, যেমন কোনও পৃথক জুটি নয়, রান লেন্থ এনকোডিং কী পরিমাণ ফিরে আসে।
isaacg

.bmYN==mM_M
isaacg

@ আইস্যাকগ আহ, ঠিক তা বোঝা যায়, আমি অনুমান করি যে আমি এতটা ভাবছিলাম না। এছাড়াও সেই মানচিত্রের কৌশলটি ঝরঝরে, ধন্যবাদ!
FryAmTheEggman

8

গণিত, 24 বাইট

MinimalBy[Length]@*Split

এটি দুটি ফাংশনের একটি সমন্বয় যা তালিকায় প্রয়োগ করা যেতে পারে to Splitএকটানা সংখ্যার সমস্ত গোষ্ঠী নেয় এবং MinimalBy[Length]ন্যূনতম দৈর্ঘ্য সহ তাদের নির্বাচন করে।


অভিশাপ, এই পরীক্ষা করার জন্য
মার্টিন এন্ডার

এখন আমি ভাবছি যদি আমি এটি খুব তুচ্ছ না করে / /।
আদনান

4

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

import Data.Lists
argmins length.group

ব্যবহারের উদাহরণ: argmins length.group $ [3,3,3,4,4,4,4,5,5,4,4,3,3,4,4]-> [[4,4],[3,3],[4,4],[5,5]]

সমান উপাদানের গোষ্ঠী তৈরি করুন এবং ন্যূনতম দৈর্ঘ্যের সাথে সন্ধান করুন।


কোথায় ডকুমেন্টেশন Data.Lists?
লিন

@ লিন: ডেটা.লাইস্টস । এই পৃষ্ঠায় পুনঃ রপ্তানি মডিউলগুলির লিঙ্কগুলিও দেখুন। argminsউদাহরণস্বরূপ ডেটা.লিস্ট.এক্সট্রাস.আগ্রম্যাক্স থেকে ।
নিমি

3

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

import re
r=[x.group().split()for x in re.finditer(r'(\d+ )\1*',input())]
print[x for x in r if len(x)==min(map(len,r))]

ট্রেলিং স্পেসের সাথে স্পেস-বিচ্ছিন্ন পূর্ণসংখ্যার একটি স্ট্রিং হিসাবে ইনপুট নেয় এবং স্ট্রিংগুলির তালিকার একটি তালিকা আউটপুট দেয়। কৌশলটি হ'ল রেজেক্স (\d+ )\1*(যা এক বা একাধিক স্পেস-বিচ্ছিন্ন পূর্ণসংখ্যার সাথে একটি অনুসরণযোগ্য জায়গার সাথে মেলে) ব্যবহার করে গোষ্ঠীগুলি সন্ধান করা , তারপরে সেগুলি ফাঁকে ফাঁকে পূর্ণসংখ্যার তালিকায় ভাগ করে, এবং সেই গোষ্ঠীগুলির মুদ্রণ করা হবে যার দৈর্ঘ্য ন্যূনতম গ্রুপ দৈর্ঘ্যের সমান।

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


2

সি #, 204 বাইট

void f(string o){var r=Regex.Matches(o,@"([0-9])\1{0,}").Cast<Match>().OrderBy(x=>x.Groups[0].Value.Length);foreach(var s in r){foreach(var z in r)if(s.Length>z.Length)return;Console.WriteLine(s.Value);}}

আমি জানি না যে কোনও গল্ফিং এছল্যাংগুলি একইভাবে তাদের ইনপুট পান বিবেচনা করে কোনও স্ট্রিং ব্যবহার করা ন্যায্য কিনা তবে তিনি অ্যারে ইনপুটটির অনুরোধ করেছিলেন।

এটি দেখতে কেমন লাগে

ungolfed:

    public static void f(string inp)
    {

        var r = Regex.Matches(inp, @"([0-9])\1{0,}").Cast<Match>().OrderBy(x => x.Groups[0].Value.Length);

        foreach (Match s in r)
        {
            foreach (Match z in r)
                if (s.Length > z.Length)
                    return;

        Console.WriteLine(s.Value);
        }


    }

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


প্রযুক্তিগতভাবে একটি স্ট্রিং একটি অ্যারে হয়।
ফাঁস নুন

1

পাইথন 2.x, 303 বাইট

x=input()
r=[q[2]for q in filter(lambda l:(len(l[2])>0)&((l[0]<1)or(x[l[0]-1]!=x[l[0]]))&((l[1]>len(x)-1)or(x[l[1]]!=x[l[1]-1]))&(len(filter(lambda k:k==l[2][0],l[2]))==len(l[2])),[(a,b,x[a:b])for a in range(0,len(x))for b in range(0,len(x)+1)])]
print filter(lambda k:len(k)==min([len(s)for s in r]),r)

কুৎসিত। কোড। কখনো।

ইনপুট: বিন্যাসে একটি অ্যারে r'\[(\d,)*(\d,?)?\]'
অন্য কথায়, সংখ্যার একটি অজগর অ্যারে

আউটপুট: অ্যারেগুলির একটি অ্যারে (ক্ষুদ্রতম দলগুলি), যাতে তারা ইনপুট অ্যারেটিতে উপস্থিত হয়

অতিরিক্ত কাকতালীয় বৈশিষ্ট্য (যে বৈশিষ্ট্যগুলি আমি তৈরির উদ্দেশ্যে করি নি):

  • ইনপুটটি খালি অ্যারে হতে পারে; আউটপুট খালি অ্যারে হবে।
  • এ পরিবর্তন minকরে max, এটি বৃহত্তম গ্রুপগুলির একটি অ্যারে ফিরিয়ে দেবে।
  • আপনি যদি কেবল print rএটি করেন তবে এটি সমস্ত গোষ্ঠীগুলি ক্রমানুসারে মুদ্রণ করবে।

1

এমএটিএল, 15 বাইট

Y'tX<tb=bw)wTX"

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

ইনপুট একটি ভেক্টর, যেমন [1 2 3 4]এবং আউটপুট একটি ম্যাট্রিক্স যেখানে প্রতিটি কলাম একটি ছোট গ্রুপগুলির মধ্যে একটি, যেমন:

1 100
1 100

তৃতীয় পরীক্ষা মামলার জন্য।

ব্যাখ্যা:

Y'    %// Run length encoding, gives 2 vectors of group-lengths and values
t     %// Duplicate group lengths
X<    %// Minimum group length
tb    %// Duplicate and get vector of group lengths to the top
=     %// Find which group lengths are equal to the minimum
bw)   %// And get the values of those groups
wTX"  %// Repeats the matrix of minimum-length-group values by the minimum group length

1

জেলি, 22 17 16 বাইট

I0;œṗ¹L=¥ÐfL€Ṃ$$

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

I0;œṗ¹L=¥ÐfL€Ṃ$$     Main link. List: z = [a,b,c,...]

I                    Compute [b-a, c-b, d-c, ...]
 0;                  Concatenate 0 in front: [0, b-a, c-b, d-c, ...]
   œṗ                Split z where the corresponding item in the above array is not zero.
      L=¥Ðf          Filter sublists whose length equal:
           L€Ṃ$      the minimum length throughout the list.

     ¹         $     (grammar stuffs)

1

জাভাস্ক্রিপ্ট (ES6), 106

a=>(a.map((v,i)=>v==a[i-1]?g.push(v):h.push(g=[v]),h=[]),h.filter(x=>!x[Math.min(...h.map(x=>x.length))]))

পরীক্ষা

f=a=>(a.map((v,i)=>v==a[i-1]?g.push(v):h.push(g=[v]),h=[]),h.filter(x=>!x[Math.min(...h.map(x=>x.length))]))

console.log=x=>O.textContent+=x+'\n'

;[[1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1]
, [3, 3, 3, 4, 4, 4, 4, 5, 5, 4, 4, 3, 3, 4, 4]
, [1, 1, 2, 2, 3, 3, 4]
, [1]
, [1, 1, 10, 10, 10, 100, 100]]
.forEach(t=>console.log(t+' -> '+f(t).join` `))
<pre id=O></pre>


না h.map(length)কাজ না?
ফাঁস নুন

@ কেনি লাউ না, এটির জন্য কাজটি lengthস্ট্রিংয়ের সাথে যুক্তি হিসাবে ফাংশন হওয়া উচিত, স্ট্রিংয়ের কোনও পদ্ধতি নয়
edc65

1
@ edc65 আসলে স্ট্রিংয়ের সম্পত্তি a কোনও পদ্ধতি নয়।
চার্লস

1

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

a=>a.map(n=>n==c[0]?c.push(n):b.push(c=[n]),c=b=[])&&b.sort((a,b)=>a[l]-b[l],l='length').filter(e=>e[l]==b[0][l])

1

রেটিনা, 91 85 80 79 77 76 75 74 বাইট

M!`\b(\d+)(,\1\b)*
(,()|.)+
$#2:$&
O#`.+
s`^(.*\b(.+:).*)¶(?!\2).+
$1
.+:
<empty-line>

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

ব্যাখ্যা

ইনপুট হয় 1,1,10,10,10,100,100

প্রথম লাইন একই শর্তগুলির সাথে গ্রুপগুলির সাথে মেলে:

M!`\b(\d+)(,\1\b)*

ইনপুটটি হয়ে যায়:

1,1
10,10,10
100,100

নিম্নলিখিত দুটি লাইন লাইনে কমা সংখ্যা সংযোজন:

(,()|.)+
$#2:$&

ইনপুটটি হয়ে যায়:

1:1,1
2:10,10,10
1:100,100

তারপরে এগুলিকে এই লাইন অনুসারে বাছাই করা হবে যা সূচক হিসাবে প্রথম সংখ্যাটির সন্ধান করে:

O#`.+

ইনপুটটি হয়ে যায়:

1:1,1
1:100,100
2:10,10,10

তারপরে এই দুটি রেখাগুলি দৈর্ঘ্য আলাদা হওয়ার জায়গাটি খুঁজে বের করে সমস্ত কিছু সরিয়ে ফেলুন:

s`^(.*\b(.+:).*)¶(?!\2).+
$1

ইনপুটটি হয়ে যায়:

1:1,1
1:100,100

তারপরে এই দুটি লাইনের মাধ্যমে সংখ্যাগুলি সরানো হবে:

.+:
<empty-line>

ইনপুট যেখানে হয়ে যায়:

1,1
100,100

@ অ্যাডানান ধন্যবাদ, স্থির।
ফাঁস নুন

1

এপিএল, 25 টি অক্ষর

{z/⍨(⊢=⌊/)≢¨z←(1,2≠/⍵)⊂⍵}

ইংরেজীতে:

  • z যুক্তি যুক্তি বিভাজন যেখানে একটি সংখ্যা পূর্ববর্তী এক চেয়ে পৃথক;
  • প্রতিটি subarray দৈর্ঘ্য গণনা
  • ন্যূনতম তুলনা করুন প্রতিটি দৈর্ঘ্যের সাথে একটি বুলিয়ান উত্পাদন করুন ...
  • ... এটি জেড কমাতে ব্যবহৃত হয়

বিনিময় করা. বিনিময় করা. বিনিময় করা! ⍵⊂⍨1,2≠/⍵
জাকারি

1

জে , 31 বাইট

[:(#~[:(=<./)#@>)]<;.1~1,2~:/\]

ইনপুট মানগুলির একটি অ্যারে। আউটপুট বক্সযুক্ত অ্যারেগুলির একটি অ্যারে।

ব্যবহার

   f =: [:(#~[:(=<./)#@>)]<;.1~1,2~:/\]
   f 1 1 2 2 3 3 4
┌─┐
│4│
└─┘
   f 3 3 3 4 4 4 4 5 5 4 4 3 3 4 4
┌───┬───┬───┬───┐
│5 5│4 4│3 3│4 4│
└───┴───┴───┴───┘

ব্যাখ্যা

[:(#~[:(=<./)#@>)]<;.1~1,2~:/\]  Input: s
                              ]  Identity function, get s
                         2       The constant 2
                             \   Operate on each overlapping sublist of size 2
                          ~:/      Check if each pair is unequal, 1 if true else 0
                       1,        Prepend a 1 to that list
                 ]               Identity function, get s
                  <;.1~          Using the list above, chop s at each true index
[:(             )                Operate on the sublists
             #@>                 Get the length of each sublist
     [:(    )                    Operate on the length of each sublist
         <./                     Get the minimum length
        =                        Mark each index as 1 if equal to the min length else 0
   #~                            Copy only the sublists with min length and return

1

Clojure, 65 বাইট

#(let[G(group-by count(partition-by + %))](G(apply min(keys G))))

5 +হিসাবে identityফাংশন হিসাবে ব্যবহার করে (+ 5):) বাকিটি সুস্পষ্ট হওয়া উচিত, Gহ্যাশ-ম্যাপটি কোনও ফাংশন হিসাবে ব্যবহৃত হয় এবং একটি কী প্রদান করা হয় যা এটি সম্পর্কিত মান প্রদান করে।


1

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

ḅlᵒlᵍh

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

ইনপুট ভেরিয়েবলের মাধ্যমে ইনপুট এবং আউটপুট ভেরিয়েবলের মাধ্যমে আউটপুট।

ḅ         The list of runs of consecutive equal elements of
          the input
 lᵒ       sorted by length
   lᵍ     and grouped by length
          has the output variable
     h    as its first element.

যদিও, অসদৃশ , গ্রুপ অ পরপর সমান উপাদান, lᵒএখনও সবচেয়ে কম লেন্থ সাথে গোষ্ঠী এটি করা প্রয়োজন, এবং এটি কাজ করে কারণ থেকে আউটপুটে দলের অর্ডার প্রতিটি দলের প্রথম উপাদান অবস্থান দ্বারা নির্ধারিত হয়, তাই এটি সিউডো-মেটাপ্রেডিকেট দ্বারা কোনও সদৃশ ᵍhᵐহিসাবে কাজ করতে পারে ।


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