অ্যারে ডেটা গোষ্ঠীকরণ


13

একটি পূর্ণসংখ্যা ম্যাট্রিক্স দেওয়া aএবং নন-নেগেটিভ পূর্ণসংখ্যা i, আউটপুট একটি ম্যাপিং bযে স্বতন্ত্র মান মানচিত্র iতম কলাম aসারি থেকে aযারা যে মান আছে iতম কলাম।

আপনি ধরে নিতে পারেন যে iঅর্ধ-খোলা পরিসীমাতে রয়েছে [0, num_cols(a))(বা [1, num_cols(a)]আপনি যদি 1-ভিত্তিক সূচকগুলি ব্যবহার করতে পছন্দ করেন) এবং সমস্ত সংখ্যক আপনার ভাষার জন্য উপস্থাপিত সীমার মধ্যে রয়েছে। ইনপুট এবং আউটপুট যেকোন যুক্তিসঙ্গত উপায়ে করা যেতে পারে, যতক্ষণ না এটি চ্যালেঞ্জের প্রাথমিক প্রয়োজনীয়তাগুলি পূরণ করে (2 ডি অ্যারে -> ইনপসের 2 ডি অ্যারে থেকে ম্যাপিং)। ম্যাপিংটি যতক্ষণ পরিষ্কার এবং সামঞ্জস্যপূর্ণ তাই কীগুলি আউটপুটটিতে অন্তর্ভুক্ত করার দরকার নেই।

উদাহরণ

[[1]], 0 -> {1: [[1]]}
[[3, 4, 5], [1, 4, 2], [5, 5, 5], [7, 7, 7], [1, 5, 9]], 1 -> {4: [[3, 4, 5], [1, 4, 2]], 5: [[5, 5, 5], [1, 5, 9]], 7: [[7, 7, 7]]}
[[1, 2, 3, 4, 5], [5, 4, 3, 2, 1], [2, 3, 4, 5, 6], [8, 9, 100, 0, 2]], 4 -> {5: [[1, 2, 3, 4, 5]], 1: [[5, 4, 3, 2, 1]], 6: [[2, 3, 4, 5, 6]], 2: [[8, 9, 100, 0, 2]]}

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর ins



শুধু পরীক্ষা করে দেখুন, ম্যাপিং কি কোনও ফাংশন হতে পারে? এটি যদি ডিফল্ট হয় তবে আমি সচেতন নই, তবে মনে হচ্ছে এমন কিছু যা আপনি মঞ্জুর করতে চান।
FryAmTheEggman 20'18

@ ফ্রাইআম দ্য এজিগম্যান হ্যাঁ, একটি সাধারণ ক্রিয়াকলাপ যা আমাদের সাধারণ প্রয়োজনীয়তা পূরণ করে তা অনুমোদিত। আই / ও অত্যন্ত নমনীয়।
মেগো 20'18

3
আমি এই আই / ও ফর্ম্যাটটি খুব পছন্দ করি কারণ আউটপুটটি আসলে নিজের মধ্যে ইনপুট ধারণ করে না। কোনও ফাংশনটি ম্যাপিং হওয়া পর্যন্ত রেফারেন্স দ্বারা ইনপুট অ্যাক্সেস করে এমন কোনও ফাংশন ফিরিয়ে দেওয়া পুরোপুরি ঠিক।
জংহওয়ান মিন

পছন্দ করুন আমি খুব আলগা আই / ও ফর্ম্যাটটি নিয়ে পরীক্ষা করতে চেয়েছিলাম, এবং এটি এখন পর্যন্ত বেশ ভালো চলছে
মেগো

উত্তর:


4

অক্টাভা , 24 বাইট

@(a,i)@(n)a(a(:,i)==n,:)

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

এটি একটি অনামী ফাংশন তৈরি করে যা এমন ম্যাট্রিক্স প্রদান করে যার সারি মানদণ্ডের সাথে মেলে। অক্টভেভ সূচকগুলি শূন্য নয়, 1 এ অ্যারে এবং ম্যাট্রিক্সের সারিগুলি a দ্বারা পৃথক করা হয় ;

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

ব্যাখ্যা

@(a,i)                   % creates an anonymous function that...
      @(n)               % returns another function that takes input n and
                         % maps it to the rows of a.
          a(         ,:) % Return all the columns of a, with the rows filtered by...
            a(:,i)       % whether the ith column of each row of a...
                  ==n    % equals n


3

ওল্ফ্রাম ভাষা (গণিত) , 21 বাইট

#~GroupBy~Extract@#2&

1-ইন্ডেক্স। একটি Associationম্যাপিং ফেরত দেয় ।

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

এটি একটি বিরল ক্ষেত্রে যেখানে দীর্ঘ ক্রিয়াকলাপ ( Extract) বাইট গণনা হ্রাস করে (সংক্ষিপ্ততর একটি হচ্ছে Partবা [[ ... ]]) কারণ Extractতরকারি করতে পারে। ফলাফল এটি অত্যন্ত সংক্ষিপ্ত দ্বি-কার্য সমাধান।

ব্যাখ্যা

Extract@#2

ফাংশন যা <second input>th তম উপাদানটি বের করে ।

#~GroupBy~ ...

<first input>স্বতন্ত্র কীগুলির সাথে সম্পর্কিত তালিকাগুলিগুলিকে গ্রুপ করুন <above function>[element]




2

জে , 16 বাইট

-3 বাইট ধন্যবাদ ফ্রাউনফ্রোগের জন্য!

{"1(~.@[;"0</.)]

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

ব্যাখ্যা:

একটি ডায়াডিক ক্রিয়া, iতার বাম যুক্তি aহিসাবে এবং তার ডান হিসাবে গ্রহণ করে।

] সঠিক যুক্তি, a

{"1iপ্রতিটি সারির তম কলামে সংখ্যাগুলি সন্ধান করে

</. ডান আর্গুমেন্ট থেকে বাক্স গোষ্ঠীগুলি, কী দ্বারা নির্বাচিত, বাম দ্বারা সরবরাহ করা

~.@[ অনন্য কীগুলি সন্ধান করে

;"0 নির্বাচিত গ্রুপগুলিতে কীগুলি লিঙ্ক করে


;"0,:3 টি সংরক্ষণের পরিবর্তে
ফ্রাউনফ্রোগ

নিঃসন্দেহে আমি মনে করি আমি এটি চেষ্টা করেছি, তবে দৃশ্যত সঠিক উপায়ে নয়।
গ্যালেন ইভানভ

2

jq, 100 বাইট

আউটপুট জন্য একটি অবজেক্ট ব্যবহার করে, $fস্ট্যান্ডার্ড ইনপুটটিতে একটি কমান্ড লাইন আর্গুমেন্ট এবং একটি অ্যারে নেয়

([.[]|.[$f]]|unique) as $c|[$c[] as $d|{($d|tostring):([.[]|[select(.[$f]==$d)]]|add)}]|add

deobfuscated:

.fieldnum as $field |
.input as $input |
([$input[] | .[$field]] | unique) as $categories |
[
    $categories[] as $category |
    {
        ($category | tostring) :
            ([$input[] | [select(.[$field]==$category)]] | add)
    }
] | add

আপনি কি এই ভাষাটি ব্যবহার করছেন?
20urous

2

আর , 79 55 বাইট

function(a,i)for(z in unique(a[,i]))print(a[a[,i]==z,])

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

24 বাইটগুলি জায়েসি কর্তৃক চাঁচা করা হয়েছে


আরও সরাসরি বের করে কিছু বাইট সংরক্ষণ করুনcat(z)কীটি মুদ্রণের জন্য আপনি একটি মুদ্রণের আগে যুক্ত করতে পারেন (এটির প্রয়োজন হলে আমি অস্পষ্ট)।
জয়সি


1

প্রোটন , 29 বাইট

a=>i=>n=>filter(r=>r[i]==n,a)

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

-৩ বাইটগুলি কারিরিং ব্যবহার করে এবং মিঃ এক্সকোডারকে ধন্যবাদ filter( টিবিএইচ আমি একপ্রকার অবাক হয়েছি যা filterআসলে কাজ করেছিল)


filterআপনাকে তিনটি বাইট সংরক্ষণ এবং ব্যবহার করা
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার কুল, ধন্যবাদ: ডি
হাইপার নিউট্রিনো

0

জাভাস্ক্রিপ্ট (নোড.জেএস) , 29 বাইট

a=>i=>n=>a.filter(e=>e[i]==n)

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

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


0

জেলি , 5 বাইট

ịⱮ⁹¹ƙ

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

কীগুলি বাদ দেয় তবে পরিষ্কার হওয়া উচিত।

যুক্তি 1: i + 1
তর্ক 2: a


আমি মনে করি না কীগুলি ছাড়াই এটি ম্যাপিং হিসাবে যোগ্য হবে।
ডেনিস

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

0

জাভা 10, 135 64 বাইট

m->i->n->new java.util.Stack(){{for(var a:m)if(a[i]==n)add(a);}}

Function<Integer, List<int[]>>একটি পূর্ণসংখ্যার-ইনপুট গ্রহণ করে ফেরত দেয় n, যা অ্যারের (ম্যাট্রিক্স-সারি) তালিকা দেয় যেখানে iপ্রদত্ত মানগুলি সমান করে n

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

ব্যাখ্যা:

m->i->               // Method with int-matrix and int parameters and Function return-type
  n->                //  Return a Function with integer as parameter
    new java.util.Stack(){{
                     //  and List of integer-arrays as return-type
      for(var a:m)   //   Loop over the arrays of the input-matrix
        if(a[i]==n)  //    If the `i`'the value of the current array equals `n`:
          add(a);}}  //     Add it to the return-List
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.