একটি অ্যারের পুনরাবৃত্তি গণনা করুন


20

আপনি একটি অ্যারে পাবেন এবং একাধিকবার সংখ্যার পূর্ণসংখ্যার সংখ্যা অবশ্যই প্রদান করবে।

[234, 2, 12, 234, 5, 10, 1000, 2, 99, 234]

এটি 2 এ ফিরে আসবে 234এবং প্রত্যেকে 2একাধিকবার প্রদর্শিত হবে।

[234, 2, 12, 234]
[2, 12, 234, 5, 10, 1000, 2]

তালিকাটি কখনই 100k এর বেশি পূর্ণসংখ্যার দীর্ঘ হবে না এবং তালিকার অভ্যন্তর পূর্ণসংখ্যা সর্বদা -100k এবং 100k এর মধ্যে থাকবে।

পূর্ণসংখ্যাগুলি একবারে একাধিকবার সংঘটিত হলে তা গণনা করা উচিত, সুতরাং যদি কোনও পূর্ণসংখ্যা 3 বার ঘটে তবে এটি কেবল একটি পুনরাবৃত্ত পূর্ণসংখ্যার হিসাবে গণনা করবে।

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

[1, 10, 16, 4, 8, 10, 9, 19, 2, 15, 18, 19, 10, 9, 17, 15, 19, 5, 13, 20]  = 4
[11, 8, 6, 15, 9, 19, 2, 2, 4, 19, 14, 19, 13, 12, 16, 13, 0, 5, 0, 8]     = 5
[9, 7, 8, 16, 3, 9, 20, 19, 15, 6, 8, 4, 18, 14, 19, 12, 12, 16, 11, 19]   = 5
[10, 17, 17, 7, 2, 18, 7, 13, 3, 10, 1, 5, 15, 4, 6, 0, 19, 4, 17, 0]      = 5
[12, 7, 17, 13, 5, 3, 4, 15, 20, 15, 5, 18, 18, 18, 4, 8, 15, 13, 11, 13]  = 5
[0, 3, 6, 1, 5, 2, 16, 1, 6, 3, 12, 1, 16, 5, 4, 5, 6, 17, 4, 8]           = 6
[11, 19, 2, 3, 11, 15, 19, 8, 2, 12, 12, 20, 13, 18, 1, 11, 19, 7, 11, 2]  = 4
[6, 4, 11, 14, 17, 3, 17, 11, 2, 16, 14, 1, 2, 1, 15, 15, 12, 10, 11, 13]  = 6
[0, 19, 2, 0, 10, 10, 16, 9, 19, 9, 15, 0, 10, 18, 0, 17, 18, 18, 0, 9]    = 5
[1, 19, 17, 17, 0, 2, 14, 10, 10, 12, 5, 14, 16, 7, 15, 15, 18, 11, 17, 7] = 5

আপনি কি বলতে চাইছেন Once it counts the repetition, don't count again? এছাড়াও, যেহেতু আমরা একটি নির্দিষ্ট পূর্ণসংখ্যার পুনরাবৃত্তি সন্ধান করতে চাই, আমরা কীভাবে জানব যে যদি কোনও পূর্ণসংখ্যার এটি না দেওয়া হয় তবে তাকে অনুসন্ধান করতে হবে? সবশেষে, পরীক্ষার মামলাগুলি কিছুটা বিভ্রান্তিকর; কোনটি আউটপুট এবং কোনটি ইনপুট?
অজ্ঞতার প্রতিমূর্তি

4
এটিকে কিছুটা পরিষ্কার করার চেষ্টা করার জন্য আমি এটি সম্পাদনা করেছি। আপনি কি এই উদ্দেশ্যটি কি? এছাড়াও, দয়া করে সেই পরীক্ষাগুলির জন্য উত্তরগুলি দিন।
Rɪᴋᴇʀ

1
আমি পরীক্ষার
কেসগুলিতে

1
আপনি নিশ্চিত করেছেন যতক্ষণ না আপনি নিশ্চিত হয়ে গেছেন আমি এই প্রশ্নটি বন্ধ করার পক্ষে ভোট দিয়েছি।
21

4
সম্পর্কিত (অ-অনন্য আইটেমগুলির পরিবর্তে অ-অনন্য আইটেমগুলি আউটপুট দিন)।
কেভিন ক্রুইজসেন

উত্তর:


15

আর , 20 বাইট

আপনি কি এই পরে? tableপ্রতিটি scanইনপুট মানগুলির উপস্থিতি গণনা করতে ব্যবহার করে । গণনা> 1 হলে পরীক্ষাগুলি এবং ট্রুগুলির যোগফল।

sum(table(scan())>1)

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


আমার মন duplicatedপ্রথম গিয়েছিল - tableনম্ররা গল্ফের জন্য এত উপকারী!
জিউসেপ

@ গিউসেপ্প টেবিলটি এখন প্রিয় :) :)
মিকিটি



7

এপিএল (ডায়ালগ ইউনিকোড) , 9 8 বাইট এসবিসিএস

-1 ngn ধন্যবাদ

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

+/1<⊢∘≢⌸

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

+/ সমষ্টি হল

1< 1 এর চেয়ে কম কিনা

...  প্রতিটি অনন্য উপাদান জন্য:

⊢∘ প্রকৃত অনন্য উপাদান উপেক্ষা করা,

 এর উপস্থিতি গণনা


{1<≢⍵}⌸->1<⊢∘≢⌸
এনজিএন

ধন্যবাদ অন্তর্ভূক্ত.
অ্যাডাম

6

সি (ঝনঝন) 175 117 95 বাইট

c(*a,*b){return*a-*b;}r(*l,m){qsort(l,m,4,c);return((!m||l[1]-*l)&l[-1]==*l)+(m?r(l+1,m-1):0);}

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

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

মন্তব্যগুলি থেকে আপডেট:

  • জো কিং থেকে -58 থেকে 117 বাইট
  • কেবল এএসসিআইআই -80 থেকে 95 বাইট

মূল জমা


5
স্বাগতম, সুন্দর শুরু। আমি সি ব্যক্তি নই তবে গল্ফিং সি পৃষ্ঠার টিপসের লিঙ্কটি এখানে
মিক্যিটি

2
117 বাইট => d,i;c(*a,*b){return*a-*b;}r(l[],m){qsort(l,m,4,c);for(i=d=0;++i<m;)d+=((l[i+1]-l[i]||i>m-2)&&l[i-1]==l[i]);return d;}। যেমন @ এএসসিআইআই-তে কেবল উল্লেখ করা হয়েছে, includeএস আপনার প্রোগ্রামের সংকলনকে প্রভাবিত করে না
জো কিং

2
@ জোকিং 100:d;c(*a,*b){return*a-*b;}r(*l,m){qsort(l,m,4,c);for(d=0;~m--;)d+=(!m||l[1]-*l)&l[-1]==*l++;return d;}
ASCII- কেবল

1
পছন্দ করুন আপনি যে লিঙ্কটি পোস্ট করেছেন তাতে আপনি দেখতে পাচ্ছেন, এটি অন্তর্ভুক্ত ছাড়াই জরিমানা সংকলন করে
ASCII- কেবল

2
95:c(*a,*b){return*a-*b;}r(*l,m){qsort(l,m,4,c);return((!m||l[1]-*l)&l[-1]==*l)+(m?r(l+1,m-1):0);}
ASCII-

5

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 40 বাইট

n=>n.GroupBy(c=>c).Count(c=>c.Count()>1)

অনুমানটির প্রথম খসড়াটি অস্পষ্ট ছিল এবং আমি ভেবেছিলাম এটির অর্থ একাধিকবার উপস্থিত সমস্ত উপাদানগুলি ফেরত দেওয়া। এটি আপডেট করা সংস্করণ।

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

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


1
আপনার আউটপুটটি ভুল, এটি 2 বা ততোধিক ঘটনা সহ উপাদানগুলি গণনা করা দরকার। এটা হওয়া উচিত n=>n.GroupBy(c=>c).Count(c=>c.Count()>=2)। ওপি বলেছেন এই তালিকায় উত্তর 2. আপনার কোড প্রদান 5. পরিবর্তন আমি আপনার দেওয়া 2. ফেরৎ
পল করম

1
অথবা কেবল >140 বাইট গণনা রাখতে
পল করম

@ পলকরাম আমি তা লক্ষ্য করিনি, ধন্যবাদ!
অজ্ঞতার প্রতিমূর্তি


4

জে , 11 9 বাইট

-2 বাইট জোনাকে ধন্যবাদ!

1#.1<1#.=

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

আসল সমাধান:

1#.(1<#)/.~

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

ব্যাখ্যা:

        /.~   group the list by itself
   (   )      for each group
    1<#       is the length greater than 1
1#.           sum by base-1 conversion

আরে গ্যালেন 1#.1<1#.=9 বাইটের জন্য + ভাল ওল 'স্ব-শ্রেণিবদ্ধ মজা।
জোনা

1
@ জোনাঃ ধন্যবাদ! সত্য, আমি এই সম্পর্কে অবগত ছিল না।
গ্যালেন ইভানভ


@ অ্যাডাম এবং এখানে আমি সন্তুষ্ট হয়েছি যে আমি এপিএলের সাথে জেতা পেতে চাই। আবার বানানো হয়েছে :)
জোনাহ


3

05 এ বি 1 ই , 4 বাইট

Ù¢≠O

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

ব্যাখ্যা

   O  # sum
  ≠   # the false values
 ¢    # in the count
Ù     # of each unique digit in input

সুতরাং 1 টি নয় এমন সমস্ত মান মিথ্যা?
অ্যাডাম

@ অ্যাডাম: হ্যাঁ, এটি সঠিক।
এমিগিনা

3

জেলি , 4 বাইট

ĠITL

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

... অথবা ĠIƇL

কিভাবে?

ĠITL - Link: list of integers   e.g. [234, 2, 12, 234, 5, 10, 1000, 2, 99, 234]
Ġ    - group indices by value        [[2,8],5,6,3,9,[1,4,10],7]
 I   - incremental differences       [[6],[],[],[],[],[3,6],[]]
  T  - truthy indices                [1,6]
   L - length                        2

I( [[6],[3,6]]) এর কেবলমাত্র সত্যবাদী ফলাফল রাখতে ফিল্টার করে যাগুলির পছন্দসই দৈর্ঘ্যও রয়েছে।


3

পার্ল 6 , 15 বাইট

+*.repeated.Set

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

বেশ স্ব স্ব বর্ণনাকারী। একটি অনামী কোড ব্লক যা ইনপুট উপাদানগুলির মধ্যে উপাদানগুলির গণনা ( +) লাভ করে (Setrepeated* ) ।

আমি বুঝতে পেরেছি যে কোনও সম্পর্কিত প্রশ্নের জন্য আমি প্রায় ঠিক একই সমাধান পোস্ট করেছি ।



3

জাভা 8, 74 73 বাইট

L->L.stream().filter(i->L.indexOf(i)<L.lastIndexOf(i)).distinct().count()

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

ব্যাখ্যা:

L->                      // Method with ArrayList parameter and integer return-type
  L.stream()             //  Create a stream of the input-list
   .filter(i->           //  Filter it by:
     L.indexOf(i)        //   Where the first index of a value
     <L.lastIndexOf(i))  //   is smaller than the last index of a value
   .distinct()           //  Deduplicate this filtered list
   .count()              //  And return the count of the remaining values

3

এপিএল (ডায়ালগ প্রসারিত) , 8 7 বাইট এসবিসিএস

বেনামের পদ্ধতি ব্যবহার করে বেনামে টাসিট উপসর্গ কার্য ।

+/1<∪⍧⊢

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

+/আক্ষরিক অর্থে সত্যের যোগফলের  মোট সংখ্যা
  

1< যেখানে একজনের চেয়ে কম

 অনন্য উপাদান '

 গণনা

 অপরিবর্তিত যুক্তি


3

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

f(h:t)=sum[1|filter(==h)t==[h]]+f t
f _=0

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

প্রত্যয় গণনা করুন যেখানে প্রথম hঅংশটি পরের অংশে ঠিক একবার উপস্থিত tহয়।


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

import Data.List
f l=length$nub$l\\nub l

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

অন্যান্য উত্তর থেকে পদ্ধতিটি চুরি করা।


দাম্মিত, আমাদের ঠিক একই উত্তর ছিল
গর্বিত হাসেলেলার

3

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

f[]=0
f(a:s)=sum[1|filter(==a)s==[a]]+f s

এই সমাধানটি মূলত তালিকার কতগুলি উপাদান একই উপাদান রয়েছে তা গণনা করা হয় তালিকার ঠিক পরে।


2

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

f[]=0
f(a:b)|x<-filter(/=a)b,x/=b=1+f x|1>0=f b

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

এটি নির্বোধ পন্থা। এটির উন্নতি করার জন্য এমন কিছু কিছু করা সম্ভব হয়েছে।

f[]=0

আমরা 0খালি তালিকার জন্য ফিরে আসি

f(a:b)

খালি খালি তালিকার ক্ষেত্রে aএবং তারপরে শুরু b

|x<-filter(/=a)b,x/=b=1+f x

যদি ফিল্টার aআউট করা bথেকে পৃথক হয় b(যা এর aমধ্যে থাকে b) তবে আমরা ফিল্টার করা গুলি এর সাথে fপ্রয়োগের চেয়ে আরও 1 টি ফিরিয়ে আছি ।ba

|1>0=f b

যদি ফিল্টারিং aএর পরিবর্তন না হয় bতবে আমরা কেবলমাত্র বাকীগুলি fজুড়ে চলে ।

এখানে একই অনুরূপ পদ্ধতির সাথে একই দৈর্ঘ্য রয়েছে:

f[]=0
f(a:b)|elem a b=1+f(filter(/=a)b)|1>0=f b

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



2

ওল্ফ্রাম ভাষা 34 বাইট

 Length@DeleteCases[Gather@#,{x_}]&

Gatherতালিকাতে অভিন্ন ইন্টিজারগুলি গ্রুপ করে DeleteCases[...{x_}]একক সংখ্যাযুক্ত তালিকা মুছে ফেলা হয়। Lengthবাকি তালিকাগুলির সংখ্যা প্রদান করে (প্রত্যেকে দুটি বা আরও বেশি অভিন্ন ইন্টিজার সহ)।


1
Count[{_,__}]@*Gather
আলেফাল্ফ




2

পিএইচপি, 39 বাইট

পরিবর্তনশীল ভেরিয়েবলগুলি ব্যবহার করার জন্য একটি দুর্দান্ত উপলক্ষ :

foreach($argv as$v)$r+=++$$v==2;echo$r;

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়। এটি দিয়ে চালান -nrবা অনলাইনে চেষ্টা করুন


$argv[0]হয় -এবং এটি যুক্তিগুলির মধ্যে একবারে উপস্থিত হয়, সুতরাং এটি ফলাফলকে প্রভাবিত করে না।


1

এলিমেন্ট , 40 বাইট

_(#'{"2:0+4:'~1+";~2=[''1+""]$2+'[(#]'}`

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

এর জন্য একটি সংক্ষিপ্ত বিন্যাসের মতো [234, 2, 1000, 2, 99, 234](সংযুক্ত) হওয়াতে ইনপুট দরকার[] একটি কমা এবং পূর্ণসংখ্যার মধ্যবর্তী স্থানের সাথে )।

ব্যাখ্যা:

_                                        input
 (#                                      delete the [ at start of input
   '{"                               '}  WHILE the string is non-empty
   '{"2:                             '}    duplicate it
   '{"  0+                           '}    add 0 to coerce to integer (gets next number in array)
   '{"    4:                         '}    make 3 additional copies
   '{"      '                        '}    temporarily move 1 copy to control stack
   '{"       ~                       '}    fetch the current map value for given integer
   '{"        1+                     '}    increment map value
   '{"          "                    '}    retrieve temporary copy of integer (the key for the map)
   '{"           ;                   '}    store updated map value
   '{"            ~                  '}    fetch map value again (1 if 1st instance, 2 if 2nd, etc.)
   '{"             2=                '}    test for map value = 2, this is the first duplication
   '{"               [      ]        '}    IF
   '{"               [''    ]        '}      move stuff from main stack to control stack
   '{"               [  1+  ]        '}      increment the counter of duplicate (bottom of stack)
   '{"               [    ""]        '}      move stuff back to main stack
   '{"                       $       '}    take length of current integer
   '{"                        2+     '}    add 2 (for the comma and space)
   '{"                          '[  ]'}    FOR loop with that number
   '{"                          '[(#]'}      trim those many characters from front of input string
                                       ` output result

1

রেটিনা 0.8.2 , 19 বাইট

O`.+
m`^(.+)(¶\1)+$

এটি অনলাইন চেষ্টা করুন! লিঙ্কটিতে টেস্ট স্যুট অন্তর্ভুক্ত যা প্রতিটি লাইনে কমাতে বিভক্ত হয়। ব্যাখ্যা:

O`.+

সমান মান একসাথে বাছাই করুন।

m`^(.+)(¶\1)+$

কমপক্ষে দুটি মানের রান সংখ্যা গণনা করুন।



1

মরিচা, 126 বাইট

let f=|v:Vec<i32>|{let mut u=v.clone();u.sort();u.dedup();u.iter().filter(|i|v.iter().filter(|n|**n==**i).count()>1).count()};

আমি হাল ছেড়ে দিলাম। এটি মূলত রুবির মতোই। ইনপুট ভেক্টরের মানগুলি ব্যবহার করে একটি অ্যারে তৈরি করা এবং এতে ইনডেক্সিংয়ের "অন্য উপায়" রয়েছে, তবে +100000 তবে ধরণের রূপান্তরগুলি (ইউজাইজ / আই 32 হিসাবে) খুব বেশি জায়গা নেয়।



1

কে, 8 বাইট

+/1<#:'=

হিসাবে পড়ুন: যোগফল (প্রতিটি গ্রুপের দৈর্ঘ্য)> 1

+/ is sum (plus over)

#:' is length each

= is group (ex. =1 2 1 6 7 2 generates 1 2 6 7!(0 2;1 5;,3;,4) (dictionary of unique value and its positions)

উদাহরণ ব্যবহার করুন (প্রথম পরীক্ষার কেস)

+/1<#:'=1 10 16 4 8 10 9 19 2 15 18 19 10 9 17 15 19 5 13 20

4 লিখেছেন

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