একটি তালিকায় একটি সেট উপস্থিতি গণনা করুন


15

একটি খালি খালি স্ট্রিং এবং স্ট্রিংয়ের একটি তালিকা দেওয়া, তালিকায় সেটটি কতবার হয় তা খুঁজে বার করুন, অর্থাত আপনি তালিকা থেকে আইটেম সহ কতবার সেট তৈরি করতে পারেন। তালিকা থেকে প্রতিটি উপাদান কেবল একবার ব্যবহার করা যাবে।

ইঙ্গিত: একটি সেট অনন্য আইটেমের একটি আনর্ডারড তালিকা।

ডিফল্ট ইনপুট / আউটপুট বিধি প্রযোজ্য।

কোনও বাহ্যিক গ্রন্থাগার অনুমোদিত নয়। সংকলক / ইন্টারপ্রেটার স্ট্যান্ডার্ড libs ঠিক আছে। এটি কোড গল্ফ, তাই সংক্ষিপ্ততম সমাধান গণনা করা হয়।


পরীক্ষার কেস:

["apple", "banana"], ["apple", "pear", "apple", "banana", "banana"] => 2

["apple", "banana"], ["apple", "pear", "apple", "banana", "apple"] => 1

["apple", "banana", "pear"], ["apple", "banana", "kiwi", "apple"] => 0

["coconut"], [] => 0

সম্পাদনা: ইনপুট প্যারামগুলি স্থানীয় সুযোগে সংজ্ঞায়িত করা হয়েছে এমন একটি বাক্য মুছে ফেলেছে। এটি উপরে লিঙ্কযুক্ত ডিফল্ট আইও বিধিগুলির বিরোধিতা করে।


হ্যাঁ এটি স্পষ্ট করে। তবে আমি তৃতীয় বাক্যে একটু ঝুলিয়ে আছি। "অবজেক্টস পরিচালনা করে না" বলতে আপনার অর্থ কী?
পোস্ট রক গারফ হান্টার

@ ওয়েট উইজার্ড কিছু ভাষাগুলি অবজেক্ট-ভিত্তিক নয় এবং যথেচ্ছ বিষয়গুলির তুলনা করার ধারণাটি জানে না।
হুবার্ট গ্রেজস্কোয়াক

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

@ ওয়েট উইজার্ড ঠিক আছে, আপডেটের বিবরণ। এই অনুচ্ছেদটি সি, এসেম্ব্লার বা ম্যাপেলের মতো ভাষার জন্য বোঝানো হয়েছিল।
হুবার্ট গ্রেজস্কোয়াক

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

উত্তর:


12

পাইথন, 30 বাইট

lambda s,l:min(map(l.count,s))

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


সুন্দর. মানচিত্র ব্যবহার সম্পর্কে ভাবেননি। ল্যাম্বদা বিটিডাব্লু সংজ্ঞায়নের পরিবর্তে আপনি মুদ্রণ ব্যবহার করে কিছুটা সঞ্চয় করতে পারেন।
হুবার্ট গ্রেজস্কোয়াক

1
@ হুবার্টগ্রিজকোইয়াক একটিতে পরিবর্তন করা বাইট গণনাটি 37 টির lambdaজন্য প্রয়োজনীয় printকারণ দুটি input()প্রয়োজন।
পোস্ট রক গারফ হান্টার

@ ওয়েট উইজার্ড চ্যালেঞ্জ হিসাবে বর্ণিত হিসাবে স্থানীয় সুযোগে সংজ্ঞায়িত ইনপুট বিবেচনা করুন। আপনার ইনপুটগুলি স্পষ্টভাবে সংজ্ঞায়িত করার প্রয়োজন নেই, যেমন ফাংশন প্যারাম বা ব্যবহারকারীর ইনপুট।
হুবার্ট গ্রেজস্কোইয়াক

@ হুবার্টগ্রাজকোইয়াক যদি এর কোনও ভাল কারণ না থাকে তবে আপনার ইনপুট এবং আউটপুট নেওয়ার জন্য আমাদের ডিফল্ট এবং কোডগল্ফ সাবমিশনের
ovs

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


6

জেলি , 6 5 4 বাইট

ċ@€Ṃ

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

প্রোগ্রামটির প্রথম যুক্তিটি সেট এবং দ্বিতীয় যুক্তিটি তালিকা।

ব্যাখ্যা

ċ@€Ṃ
ċ@   -- Create a link which finds the number of occurrences of 
          its left argument in its right argument (the list)
  €  -- Map this link over each element in the first argument
          of the program (the set)
   Ṃ -- Minimum value of this.

-1 বাইট @ETH প্রোডাক্টস ধন্যবাদ

-1 বাইট আবার @ETH প্রডাকশন ধন্যবাদ


খুব সুন্দর! লিঙ্কগুলিকে এক লাইনে একত্রিত করে আপনি একটি বাইট সংরক্ষণ করতে পারেন: ⁹ċ$€Ṃআমার অনুভূতি রয়েছে যা স্থির করে সঠিক যুক্তি ব্যবহার করে ছোট করা যেতে পারে ...
ETH প্রোডাকশনগুলি

আমি মনে করি ċ@€Ṃ অন্য বাইট সংরক্ষণ করার জন্য কাজ করে ... ( @যুক্তিগুলির বিপরীতগুলি ċ
ঘটে

আমি যা পরীক্ষা করেছি ঠিক তেমনই এথ প্রডাকশনগুলি সঠিকভাবে কাজ করে।
fireflame241

এটি গত বছরের 12 ই মে অবধি ছিল না, তবে এর জায়গায় @€(প্রোগ্রামটিতে বিপরীত যুক্তি দিয়ে) আরও একটি বাইট সংরক্ষণ করে: অনলাইনে চেষ্টা করে দেখুন!
নিরবিচ্ছিন্ন স্ট্রিং

6

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

f=(n,h)=>Math.min(...n.map(c=>h.filter($=>$==c).length))

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


1
একটি বেনামে ফাংশন ব্যবহার করে 2 বাইট সংরক্ষণ করুন এবং প্যারামিটারগুলি কারি করে আরেকটি: n=>h=>Math.min(...n.map(c=>h.filter($=>$==c).length))53 বাইটের জন্য
শেগি

5

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

(s,l)=>l.map(e=>m[s.indexOf(e)]++,m=s.map(e=>0))&&Math.min(...m)

উভয়ই ধরে নেয় sএবং lবস্তুর অ্যারে হয়। তুলনার জন্য জাভাস্ক্রিপ্ট কঠোর সাম্যতা ব্যবহার করে, উদাহরণস্বরূপ [] === []মিথ্যা is


খুব আকর্ষণীয় সমাধান। দয়া করে ফলাফলটি মুদ্রণ করুন বা মুদ্রণ করুন। আফাইক এটি একটি বেনামি ফাংশন দেয়।
হুবার্ট গ্রেজস্কোয়াক

2
@ হুবার্টগ্রিজকোইয়াক দেখানো কোডটি কোনও বেনামি কার্যকারিতাটির মূল্যায়ন করে। যখন ডাকা হয়, ফাংশনটি পছন্দ অনুযায়ী গণনা ফেরত দেয়।
নীল

4

হাস্কেল , 37 34 বাইট

তিন লাইনে শেভ করার জন্য @ লাইকোনিকে ধন্যবাদ।

s#l=minimum[sum[1|y<-l,y==x]|x<-s]

যে কোনও ধরণের উপার্জন (set::[a]) # (list::[a])যেখানে রয়েছে aতার সাথে কল করুন Eq


পরিবর্তে length[y|y<-l,y==x]আপনি ব্যবহার করতে পারেন sum[1|y<-l,y==x]
লাইকনি

@ লাইকনি, আপনি কি সে সম্পর্কে নিশ্চিত? আমি মনে করি আমার এমন কিছু ব্যবহার করতে হবে sum[1|y<-l,y==x,_<-y]যা দুটি বাইটের সাথে আরও বেশি সময় আসে - আমি অবশ্যই সেখানে কিছু অনুভব করতে পারি, যদিও
জুলিয়ান ওল্ফ

কিছু মনে করবেন না, আপনি অবশ্যই ঠিক বলেছেন। ভাল কল.
জুলিয়ান ওল্ফ


3

গণিত, 24 বাইট

Min[#/.Rule@@@Tally@#2]&

খাঁটি ফাংশন প্রস্তাবিত ক্রমে দুটি তালিকা আর্গুমেন্ট হিসাবে গ্রহণ করে এবং একটি অব্যবহৃত পূর্ণসংখ্যা ফেরত দেয়। Tallyইনপুট তালিকায় প্রতিটি চিহ্নের কতগুলি সংঘটন ঘটে তা গণনা করে এবং #/.Rule@@@ইনপুটটির প্রতিটি উপাদানকে সংখ্যার সাথে সম্পর্কিত সংখ্যায় রূপান্তর করে।


3

টি এসকিউএল, 62 59 বাইট

পূর্ববর্তী সংস্করণ কোনও মিল নেই সেটের জন্য কাজ করে না

select top 1(select count(*)from l where l=s)from s order by 1

সারণি এবং কলাম হিসাবে টেবিলের সমান নাম হিসাবে এস এবং এল সহ

select top 1         -- return only the first result
    (select count(*) -- count of rows
     from l          -- from table l
     where l=s)      -- for each l equal
from s               -- to each from s
order by 1           -- sort by count ascending

3

সুইফট, 39 বাইট

s.map{w in l.filter{$0==w}.count}.min()

ব্যাখ্যা:

s.map{} প্রতিটি শব্দের মধ্যে যায় এবং গণনার একটি অ্যারে উত্পাদন করে

w in পরবর্তী ফিল্টার ব্যবহারের জন্য ম্যাপযুক্ত শব্দটির নাম দেয়

l.filter{} এল অ্যারেতে একটি ফিল্টার প্রয়োগ করে

$0==w ফিল্টার শর্তটি শব্দের সাথে মেলে

.count শর্ত পূরণ করে এমন উপাদানগুলির সংখ্যা দেয়

.min() ম্যাপযুক্ত ফলাফলের মধ্যে সর্বনিম্ন গণনা প্রদান করে


1
পিপিসিজিতে আপনাকে স্বাগতম! আমি আপনার সমাধানের জন্য কোড বিন্যাস যুক্ত করেছি। কোড যুক্ত লাইনগুলিতে 4 স্পেস প্রিপেন্ড করে আপনি এটি করতে পারেন।
মেগো

3

এপিএল (ডায়ালগ) , 9 বাইট

⌊/+/⎕∘.≡⎕

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

 মূল্যায়ন ইনপুট (স্ট্রিংয়ের তালিকা) পান

⎕∘.≡ মূল্যায়ন ইনপুট (স্ট্রিংয়ের খালি সেট নয়) পান এবং সমতুল্য সারণী তৈরি করুন

+/ জুড়ে যোগ করুন

⌊/ সর্বনিম্ন জুড়ে


2

পার্ল 6 ,  37  18 বাইট

37

{+(($_=@^a⊍@^b)≽@a)&&.values.min}

চেষ্টা করে দেখুন

সম্প্রসারিত:

{
  +( # turn into a 0 if False

    (
      $_ =        # store into $_ the result of
        @^a  @^b # use the baggy multiplication operator
    )  @a        # is that the baggy superset of the set
  )

  &&          # if that is True

  .values.min # get the minimum value from the Bag in $_
}

দেখুন সেট, ব্যাগ এবং মিক্সগুলি আরও তথ্যের জন্য।


18

{@^b.Bag{@^a}.min}

চেষ্টা করে দেখুন

ব্যাখ্যা:

@^b.Bagসেই ব্যাগে মান কী থেকে একটি ব্যাগ তৈরি করুন
{@^a}(গণনাগুলির তালিকার প্রত্যাশায়)
.minফলাফলের তালিকার সর্বনিম্ন মান পান



ঝরঝরে উত্তর, তবে এগুলির
জুলিয়ান ওল্ফ

@ জুলিয়ান ওল্ফ আমি এই ধারণার মধ্যে ছিলাম যে "উভয় ইনপুটকে বর্তমান স্কোপে সংজ্ঞা দেওয়া হচ্ছে এস এবং এল হিসাবে বিবেচনা করুন।" এবং "আপনার কোনও ফাংশন সংজ্ঞায়িত করার দরকার নেই।" আমি গিয়েছিলাম এবং যাইহোক এটি সম্পাদনা করেছি ।
ব্র্যাড গিলবার্ট

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

@ জুলিয়ানওল্ফ এটি পার্ল 6 কোডের পক্ষে খুব ভাল উদাহরণ নয়। আমি ওভিডের 1hr টক পার্ল 6 - কেন লোকেরা এত উত্তেজিত , বা পার্ল 6.org এর রিসোর্স ট্যাবে দেখার পরামর্শ দিচ্ছি
ব্র্যাড গিলবার্ট

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

2

অ্যাক্সিয়োম, 42 বাইট

f(a,b)==reduce(min,[count(x,b)for x in a])

পরীক্ষার কোড এবং ফলাফল

(28) -> f(["1","2"], ["1", "2", "1", "1", "7"])
   (28)  1
                                                    Type: PositiveInteger
(29) -> f(["apple","banana"],["apple","pear","apple","banana","banana"])
   (29)  2
                                                    Type: PositiveInteger
(30) -> f(["apple","banana"],["apple","pear","apple","banana","apple"])
   (30)  1
                                                    Type: PositiveInteger
(31) -> f(["apple","banana","pear"],["apple","banana","kiwi","apple"])
   (31)  0

2

সি ++, 203 201 বাইট

দুটি বাইট সংরক্ষণ করার জন্য @ কুইন্টিনকে ধন্যবাদ!

#import<vector>
#import<string>
using T=std::vector<std::string>;
int f(T S,T L){for(int j,b,i=0;;++i)for(auto s:S){for(b=j=0;j<L.size();++j)if(L[j]==s){b=1;L.erase(begin(L)+j);break;}if(!b)return i;}}

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


L.begin()-> begin(L)একটি বাইট সংরক্ষণ করে :)
কোয়ান্টিন

এছাড়াও, using T=std::vector<std::string>;অন্যকে বাঁচায়! কে জানত আধুনিক চমত্কার বাক্য গঠন গল্ফিংয়ে সহায়তা করতে পারে।
কোয়ান্টিন

@ কুইন্টিন আমি প্রথমে চেষ্টা করেছিলাম। সম্ভবত কিছু সাধারণ টাইপো ছিল যা আমি লক্ষ্য করি নি।
স্টেডিবক্স


1

পাইথ, 5 বাইট

hS/LF

প্রথমে তালিকাটি নেয় এবং দ্বিতীয়টি সেট করে। পরীক্ষা স্যুট.

ব্যাখ্যা:

    F  Expand the input into l and s (not literally, 
                  since those are function names in Pyth, but...)
   L   for d in s:
  /        Count instances of d in l
   L   Package all the results as a list
 S     Sort the results smallest-first
h      grab the smallest element

1

সি #, 36 বাইট

f=(n,h)=>n.Min(c=>h.Count(x=>x==c));

nএবং hহয় string[]এবং আউটপুট একটি int

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

এই উত্তরটি @ovs এবং @ আলবার্তো রিভেরার যুক্তি দ্বারা অনুপ্রাণিত হয়। ধন্যবাদ!


1

জাভা, 135 বাইট

int f(List<String> s,List<String> l){int n=0,i=0;while(i<s.size()){if(!l.remove(s.get(i++)))break;if(i==s.size()){n++;i=0;}};return n;}

এটি আমার প্রথম কোড গল্ফ চ্যালেঞ্জ এবং উত্তর, সুতরাং ফর্ম্যাট সম্পর্কে নিশ্চিত নয়। এটি একটি সম্পূর্ণ সংকলন প্রোগ্রাম করা প্রয়োজন? আমার কি পরামিতিগুলি সংজ্ঞায়িত করা দরকার? পরামর্শ প্রশংসা।

সম্পাদনা : একটি ফাংশনে মোড়ানো কোড। ধন্যবাদ @ স্টেডিবক্স


একটি উত্তর একটি সম্পূর্ণ প্রোগ্রাম, একটি ফাংশন বা অন্য কোনও ফাংশন-মতো নির্মাণ হতে পারে । আপনি গ্রহণ করতে পারেন পরামিতি একটি ফাংশন বা স্ট্যান্ডার্ড ইনপুট থেকে আর্গুমেন্ট হিসাবে উদাহরণস্বরূপ।
স্টেডিবক্স


1

জাভা, 114 বাইট

<T>int a(Set<T>b,List<T>c){int m=2e32;b.stream().map(i->{int j=java.util.Collections.frequency(c,i);m=j<m?j:m;});return m;}

টিও শীঘ্রই আসছে

ব্যাখ্যা

  • স্থানীয় পরিবর্তনশীল মি।

  • একটি স্ট্রিমে সেট মানচিত্র।

  • প্রতিটি উপাদানের জন্য, তালিকায় উপাদানের উপস্থিতিগুলির সংখ্যা মি-এর চেয়ে কম হলে এম, মানটিকে সেট করা হয়।

  • এম প্রদান করে, যা সেটের সম্পূর্ণ সংস্করণের সংখ্যা


0

আর 54 বাইট

f<-function(s,l) min(table(factor(l[l%in%s],levels=s)))

ব্যাখ্যা: তালিকার কেবলমাত্র মানগুলির একটি টেবিল তৈরি করা যা সাব-লিস্টে প্রদর্শিত হবে।

আমি তখন জিরো উত্পন্ন করার জন্য ভেরিয়েবলটিকে একটি ফ্যাক্টারে পরিণত করি যদি সাবলিস্টে প্রদর্শিত মানটি তালিকায় উপস্থিত না হয়। অবশেষে, আমি গণনার সর্বনিম্ন গ্রহণ করি।


0

আর, 61 57 44 বাইট

print(min(sapply(s,function(x)sum(l%in%x))))

বেনামে ফাংশন। স্পষ্টতই আপনাকে এই চ্যালেঞ্জের জন্য কোনও ক্রিয়া সংজ্ঞায়িত করতে হবে না। 13 বাইট সংরক্ষিত হয়েছে গণনা করার জন্য ধন্যবাদ।

ব্যাখ্যা:

sum(l%in%x))একটি স্ট্রিংয়ের সংখ্যার বার sপাওয়া যায় l

lapply(s,function(x))প্রতিটি স্ট্রিং এ sপৃথকভাবে প্রয়োগ করে এবং যোগফলগুলির একটি তালিকা প্রদান করে।

min() তালিকা থেকে সবচেয়ে ছোট ফিরিয়ে দেয়।


একটি লুপ দিয়ে 40 বাইটে নামিয়ে আনা যেতে পারে:z=c();for(i in s)z[i]=sum(l%in%i);min(z)
গণনা করুন

বা এরপরেও আরও কম 37 টি বাইট সাপ্লাই সহ: min(sapply(s,function(x)sum(l%in%x)))
গণনা করুন

উজ্জ্বল, আমি সর্বদা ভুলে যাই আপনি বুলিয়ান যোগ করতে পারেন। আমি পরে এটি সম্পাদনা করব। আমাকে বলা হয়েছে যে এটি মুদ্রণ দরকার () এটি কোনও ফাংশন না হলে।
বিএলটি

0

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

a=>b=>a.reduce((x,y)=>(l=b.filter(s=>s==y).length)>x?x:l)|0

চেষ্টা করে দেখুন

f=

a=>b=>a.reduce((x,y)=>(l=b.filter(s=>s==y).length)>x?x:l)|0

console.log(f(["apple","banana"])(["apple","pear","apple","banana","banana"]))
console.log(f(["apple","banana"])(["apple", "pear", "apple", "banana", "apple"]))
console.log(f(["apple","banana","pear"])(["apple","banana","kiwi","apple"]))
console.log(f(["coconut"])([]))

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