এমন একটি প্রোগ্রাম লিখুন যা একটি স্ট্রিংয়ের মধ্যে সবচেয়ে সংঘটিত জোড় যুক্ত অক্ষরের সন্ধান করে


20

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

"Sally's friend Bobby searched for seashells."

এটি অবশ্যই আউটপুট হবে Lকারণ "ll"দুবার ঘটে যা অন্য জুটির চেয়ে বেশি ঘন ঘন "bb"

নিয়মাবলী:

  • একাধিক চিঠি ঘটনার জন্য 1 ম স্থান, তারপর ক্রম অনুযায়ী আউটপুট তাদের সব থাকে (যেমন "Sally's friends Jimmy and Bobby rummaged for seashells."উচিত আউটপুট উভয় Lএবং M[বা "LM"আপনি দয়া করে] কারণ তারা উভয় অন্যান্য জোড়া চেয়ে আরও ঘন ঘন ঘটে।)
  • চিঠিপত্র যা, তিনগুণ হয় চারগুণ, ইত্যাদি এক জোড়া হিসাবে গণনা (যেমন "lll"মধ্যে "willless"মাত্র এক যুগল হিসাবে গণনা করা হয় L।)
  • চিঠি জোড়া অবশ্যই এক কথায় থাকতে হবে (যেমন "Sally's sociable friends Sammy and Bobby searched for fabulous seashells."আউটপুট হওয়া উচিত Lএবং এর চেয়ে বেশি সংখ্যক ঘটনা Sথাকা সত্ত্বেও এগুলি স্পেস দ্বারা পৃথক করা উচিত))"ss""ll"
  • ইংরেজি বর্ণমালা থেকে কেবল অক্ষর গণনা করুন
  • কেস কিছু যায় আসে না (যেমন "Ss"হিসাবে "SS"বা একই "ss", এবং সব এক জোড়া হিসাবে গণনা করা হয় S।)

আপনি যেখানে খুশি আপনার ইনপুটটি পড়তে পারেন। সংক্ষিপ্ততম কোড জিতেছে।


2
আমরা কি ধরে নিতে পারি যে কেবলমাত্র অক্ষরগুলি জোড়া লাগবে বা ইনপুটটিতে ডাবল স্পেস বা ডাবল 'ইত্যাদি থাকতে পারে ?
মার্টিন ইন্ডার

1
আমরা কি ধরে নিতে পারি যে কমপক্ষে একটি চিঠি দু'বার প্রদর্শিত হবে?
মার্টিন ইন্ডার

@ মার্টিনবাটনার হ্যাঁ, আপনি ধরে নিতে পারেন কমপক্ষে একটি অক্ষরের জুড়ি পড়েছে। তবে অন্যান্য চরিত্রগুলিও জুটিতে উপস্থিত হতে পারে। কেবলমাত্র অক্ষর গণনা করুন।
আয়ান

এমনকি যদি একটি মাত্র জুটি থাকে তবে আমি কি এখনও এটির মতো তালিকায় মুদ্রণ করতে পারি ['l']?
মালটিসেন

@ মালটিসেন হ্যাঁ, আপনি এটি করতে পারেন।
আয়ান

উত্তর:


6

পাইথ, 26 25 24 16 15 বাইট

.M/sfthTrrz08ZG

অনলাইনে চেষ্টা করুন: বিক্ষোভ

ব্যাখ্যা:

.M/sfthTrrz08ZG   implicit: z = input string
         rz0      convert z to lower-char
        r   8     run-length-encoding (into tuples [count, char])
    f             filter for tuples T, which satisfy:
     thT            T[0]-1 != 0 (count > 1)
   s              join to a string
.M            G   find the elements Z of "abcd...z", which produce the highest value:
  /...........Z       count of Z in ...

1
eC-> sএকটি বাইট সংরক্ষণ করে।
isaacg

পাইথ শেখার জন্য আমি যে কোনও ভাল সংস্থান ব্যবহার করতে পারি তা কি জানেন?
বিটা ক্ষয়

@ বেটাডেকে আপনি পাইথ সম্পর্কে একটি টিউটোরিয়াল খুঁজে পেতে পারেন pyth.readthedocs.org এটি সমস্ত কার্যকারিতা এবং কৌশল কভার করে না, তবে এটি একটি ভাল শুরু। এবং আপনার যদি কোনও প্রশ্ন থাকে তবে কেবল চ্যাটে জিজ্ঞাসা করুন ।
জাকুব

7

বাশ + জিএনইউ কোর্টিলস, 133

grep -Eo '([A-Z])\1+'<<<"${1^^}"|cut -c1|sort|uniq -c|sort -rn|while read n l
do((a-n&&a-0))&&exit||echo $l&&a=$n
done|sort|tr -d \\n

Testcases:

$ for t in "Sally's friend Bobby searched for seashells." \
> "Sally's friends Jimmy and Bobby rummaged for seashells." \
> "willless" \
> "Sally's sociable friends Sammy and Bobby searched for fabulous seashells." \
> "11ss11aa"
> do
> ./mostpaired.sh "$t"
> echo
> done
L
LM
LS
L
AS
$ 

এটি কি কেবল অক্ষর গণনা করে? ( 11ss11aa
টেস্টকেস

@ edc65 সেখানে আমি এটি স্থির করেছি ;-)। আসলে, 11ss11aa-> এএস :)
ডিজিটাল ট্রমা

আমি মনে করি আপনার যদি 10 বা ততোধিক জোড় যুক্ত অক্ষর থাকে তবে আপনার sort -rদরকার sort -rn
টবি স্পিড 13

@TobySpeight। হ্যাঁ. সংশোধন করা হয়েছে।
ডিজিটাল ট্রমা

এটিকে এর পরিবর্তে এডাব্লুকে দিয়ে সংক্ষিপ্ত করে তুলতে পারে: awk '! n {n = $ 1}; n == $ 1' |
গ্রেপ

5

সিজেম, 29 27 বাইট

leue`{2a>},s_el-$e`$z~\)-,>

@ অপ্টিমাইজারকে 2 বাইট বন্ধ করে দেওয়ার জন্য ধন্যবাদ!

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

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

leu    e# Read a line from STDIN and covert to uppercase.
e`     e# Perform run-length encoding.
       e# Example: "AABBBC!!" -> [[2 'A] [3 'B] [1 'C] [2 '!]]
{2a>}, e# Filter out all pairs that are less of equal to [2].
s      e# Stringify.
       e# Example: [[2 'A] [3 'B] [2 '!]] -> "2A3B2!"
_el    e# Push a copy of the string and convert to lowercase.
       e# Example: "2A3B2!" -> "2a3b2!"
-      e# Remove all character from the second string from the first.
       e# Example: "2A3B2!" "2a3b2!" - -> "AB"
$e`$   e# Sort, perform run-length encoding and sort again.
       e# Example: "ABACABDBC" -> "AAABBBCCD"
       e#                      -> [[3 'A] [3 'B] [2 'C] [1 'D]]
                               -> [[1 'D] [2 'C] [3 'A] [3 'B]]
z~     e# Zip and dump.
       e# Example: [[1 'D] [2 'C] [3 'A] [3 'B]] -> [1 2 3 3] ['D 'C 'A 'B]
\)     e# Pop out the last element from the first array.
       e# Example: [1 2 3 3] -> [1 2 3] 3
-      e# Remove all occurrences of the popped element from the array.
       e# Example: [1 2 3] 3 -> [1 2]
,      e# Compute the length of the remainder.
>      e# Skip that many elements from the character array.

z~\)-,>যতদূর আমি দেখতে পাচ্ছি কাজ করা উচিত।
অপ্টিমাইজার 21

@ অপ্টিমাইজার: খাটো এবং আরও অনেক স্বজ্ঞাত। ধন্যবাদ!
ডেনিস

4

পাইথ - 23 22 21 20 বাইট

দুটি বা তার চেয়ে বেশি বর্ণমালার .Mসমস্তগুলিকে একটি অস্থায়ী মানটিতে প্রতিস্থাপন করতে regexp প্রতিস্থাপন ব্যবহার করে এবং সমস্তটি সর্বাধিক উপস্থিতি পেতে অক্ষর ব্যবহার করে। বাইট বাছাই এবং সংরক্ষণের অপ্রয়োজনীয়তার কথা উল্লেখ করার জন্য @ জাকুবেকে ধন্যবাদ

.M/:rz0+Z"{2,}"KC0KG

স্টিডিন থেকে আউটপুট নেয় এবং স্টপআউট পছন্দ ['l', 'm']করে।

.M        G         Values which yield maximal amount over lowercase alphabet
 /                  Count
  :                 Regexp substitution
   rz0              Lowercased input
   +Z               String concatenate current loop var         
    "{2,}"          Regexp 2 or more of previous group
   KCZ              Inline assign null byte to K and use value
  K                 Count K which is null byte

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


4

সি, 155

কিছু আলাদা, কোনও রেজিেক্সপস নেই।

m=1,i=1,n[91];
main(c,a)char**a;
{
  char*t=a[1];
  for(;c=*t++;)(c&=95)>64&&c<91&&(c-(*t&95)?i=1:(c=(n[c]+=i),i=0,m=m<c?c:m));
  for(c=0;++c<91;)n[c]-m||putchar(c);
}

3

পাইথন 2, 132 143 বাইট

def f(x):import re;x=re.findall(r'(.)\1+',x.upper());s={l:x.count(l)for l in x};print "".join(sorted([l for l in s if s[l]==max(s.values())]))

উদাহরণ রান:

f("Sally's friends Jimmy and Bobby rummaged for seashells.")
LM

1
সম্ভবত এটি পূরণ করে না "যে অক্ষরগুলি তিনগুণ,
চতুর্ভূজা

তুমি ঠিক বলছো! আমি এটি ঠিক করার চেষ্টা করেছি। এটি নির্দেশ করার জন্য ধন্যবাদ :)
হি

2

সিজেম, 37 বাইট

leue`{~_el-\(e&},1f=$e`$_W=0=f-{,1=},

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

নিয়মিত মত প্রকাশের সমর্থন ব্যতীত আমি ভয় করি পাইথের সাথে প্রতিযোগিতা করা শক্ত হবে। এটি প্রথম পাসের সাথে আমি সেরা এসেছি।

ব্যাখ্যা:

l     Get input.
eu    Convert it to upper case, since case does not matter.
e`    Run length encoding, to split into groups of same characters.
{     Start of block for filtering.
  ~     Unpack the length/letter pair.
  _     Copy the letter.
  el    Change copy to lower case.
  -     Subtract to compare. If result is non-zero, this is a letter.
  \     Swap count to top.
  (     Decrement to get truthy value for count > 1.
  e&    Logical and: It's a letter, and count is > 1.
},    End of filter.
1f=   Don't need the counts anymore, filter out the letters only from the RLE pairs.
$     Sort them, so that multiples of the same letter are sequential.
e`    RLE again, to count how many multiples of each letter we had.
$     And sort again, to get the count/letter pairs in order of incrementing count.
_     Copy list.
W=0=  Pick out count of last element, which is the highest count.
f-    Remove count from pairs that have the highest count. This leaves them
      as one member lists with letter only, while others still have count/letter.
{     Start block for filter.
  ,1=   Check for list length one.
},    End filter.

2

প্রশ্ন (66)

তুলনামূলকভাবে বুট করতে পঠনযোগ্য:

{where g=max g:.Q.A#count each group y where not differ y:upper x}

2

আর, 105 বাইট

cat(substr(names(b<-table(regmatches(s<-toupper(readline()),gregexpr("([A-Z])\\1+",s))))[b==max(b)],1,1))

এটি STDIN এর পাঠ্যগুলির একটি লাইন পড়ে এবং STDOUT- এ সর্বাধিক সাধারণ জোড়িত অক্ষরের একটি স্থান সীমিত তালিকা মুদ্রণ করে।

অবহেলিত + ব্যাখ্যা:

# Read a string from STDIN, convert to uppercase
s <- toupper(readline())

# Get each match of the regex /([A-Z])\1+/
matches <- regmatches(s, gregexpr("([A-Z])\\1+", s))

# Compute the frequency of each match
freq <- table(matches)

# Get the matches with the highest frequency
highest <- names(freq)[freq == max(freq)]

# Each element of highest is the literal pair, so take the first character
first <- substr(highest, 1, 1)

# Print to STDOUT
cat(first)

উদাহরণ:

> (code)
Sally's friends Jimmy and Bobby rummaged for seashells.
L M

> (code)
Sally's friend Bobby searched for seashells.
L

> (code)
Sally's sociable friends Sammy and Bobby searched for fabulous seashells.
L

> (code)
11ss11nn
N S

আপনি এটি অনলাইন চেষ্টা করতে পারেন !


আপনি toupperযদি কেসটিকে উপেক্ষা করেন এবং আপনার মধ্যে পার্ল ব্যবহার করেন তবে সম্ভবত আপনি এ থেকে মুক্তি পেতে পারেন gregexpr। উদাহরণস্বরূপcat(substr(names(b<-table(regmatches(s<-readline(),gregexpr("(\\w)\\1+",s,T,T))))[b==max(b)],1,1))
মিকিটি

@ মিকিটি: আমি এটি সম্পর্কে ভেবেছিলাম, তবে দেখে মনে হচ্ছে ওপি আউটপুটটি বড় হাতের হতে চায়, সুতরাং এটি toupperনিশ্চিত করার জন্য এটি ব্যবহার করতে হবে।
অ্যালেক্স এ।

এটাই আশমে, আমি যখন প্রশ্নটি পড়ি তখন তা মিস করতাম।
মিকিটি

ভাঁড়টি চেষ্টা করে দেখেছি তবে ফায়ার ফক্সে কোনও আউটপুয়াই চিরকাল চলবে বলে মনে হচ্ছে। টেস্টকেস: 11ss11nn?
edc65

@ edc65 এটি আর-ফিডলের সমস্যা; কিছুই কাজ করে না। সমস্যাটি জানাতে আমি তাদের প্রশাসকের সাথে যোগাযোগ করেছি। আমার রেজেক্সকে স্থির করে নিন এবং এখন আপনার পরীক্ষাটি প্রত্যাশার মতো কাজ করে, তবে এটির জন্য আমার ব্যয় 2 বাইট। এই জিনিসটি নির্দেশ করার জন্য ধন্যবাদ, আমি এটি প্রশংসা করি!
অ্যালেক্স এ।

2

রুবি, 60

f=->s{(?a..?z).group_by{|l|s.scan(/#{l*2}+/i).size}.max[1]}

p f["Sally's friends Jimmy and Bobby rummaged for seashells."]

group_byএকটি হ্যাশ (অভিধান) কাঠামো তৈরি করে যেখানে কীগুলি হ'ল ব্লকের আউটপুট এবং মানগুলি হ'ল অক্ষরের তালিকাগুলি যার ফলে প্রতিটি কী থাকে। এই ক্ষেত্রে, কীগুলি কোনও চিঠির 2+ রানের সংখ্যার, কেস-সংবেদনশীল। maxপ্রতিটি [key,value]টিপলকে অভিধানের তুলনা করে , তাই এটি সর্বাধিক কীটি সন্ধান করে। তারপরে [1]টিপলের মান তালিকার অংশটি প্রদান করে।



2

সি # 160 বাইট

sইনপুটটি কোথায় :

char? d(string s){s=s.ToUpper();return s.Select((x,i)=>new{y=x,z=i==0?(char?)null:s[i-1]}).Where(x=>x.y==x.z).GroupBy(x=>x.z).OrderBy(x=>x.Count()).Last().Key;}

1

আরএস, 146 বাইট

[^A-Za-z]/
*(.)\1+/\1\1
*(.)(?!\1)/
$/#
+*(.)#(?!.*?\1)/#\1
+*(.)(.*)#(.*)\1/\2#\3\1\1
#/
*(.)(\1*)/\1(_)^^((^^\1\2))
([^_])(_+)(?!_)(?=.*\2_)/
_/

চেষ্টা করে দেখুন! অনুগ্রহ! এমনকি সেই পৃষ্ঠাতে আউটপুট বাক্সের সাহায্যে বোতামগুলি তৈরি করতে আমাকে চিরতরে নিয়ে গেছে ...

ঠিক আছে, এটা মোটামুটি ... পাগল ছিল। এখানে যুক্তি এক ধরণের অদ্ভুত; কেউ জিজ্ঞাসা করলে আমি কেবল একটি ব্যাখ্যা পোস্ট করব। (অবশ্যই, আমি এও বলেছি যে একটি ইন্টারক্যাল উত্তরের জন্য যার ব্যাখ্যা অনুরোধ করা হয়েছিল ... যা আমি কখনই ব্যাখ্যা করি নি ...;)


আমি দোভাষীটি পছন্দ করি তবে আপনি ডিবাগ চেকবক্সটি বোতাম বা অন্য কোনও কিছুর মতো একই লাইনে রাখতে চান। এটি সমস্ত দিক থেকে অদ্ভুত দেখাচ্ছে। তবুও শীতল! +1
মালটিসেন

এটি চেষ্টা করে (ত্রুটি ...) i.stack.imgur.com/mTioT.png
edc65

@ মালটিসেন আমি এটি বিবেচনা করব। ধন্যবাদ!
kirbyfan64sos 14

@ edc65 জঘন্য ... সম্পূর্ণ ত্রুটি বার্তাটি কী ছিল? এটি একটি পাইপাই.জেস বাগ হতে পারে বলে মনে হচ্ছে। বা ঠিক এই সত্যটি আমি ফায়ারফক্সে কখনই পরীক্ষা করে
দেখিনি

1

জাভাস্ক্রিপ্ট 156 153

var x=prompt(),f={},a=0,o
x.toUpperCase().replace(/([A-Z])\1+/g,function(m,s){m=f[s]=-~f[s]
if(a==m)o.push(s)
if(a<m)a=m,o=[s]})
alert(o.sort().join(""))


f[s]?f[s]+1:1->-~f[s]
edc65

এটি অ-অক্ষরগুলির সাথে ব্যর্থ:Count only letters from the English alphabet
edc65

ধন্যবাদ @ edc65। আমি শর্টকাট এবং এজেড চেকিং যুক্ত করেছি।
উলফহ্যামার

1
আপনার সঠিক কোডটি প্রবাহিত এবং ES6: f=x=>{x.toUpperCase(f={},a=0,o).replace(/([A-Z])\1+/g,(m,s)=>a<(m=f[s]=-~f[s])?(a=m,o=[s]):a>m?0:o.push(s));alert(o.sort().join'')}(শেষ 2 '' সত্যই ব্যাকটিকস এবং & # 96
edc65

1

বাশ + পাঠ্যসূচি (গ্রেপ, সেড), ১১১ টি অক্ষর

fold -1<<<$s|uniq -iD|sort -f|uniq -ic|sort -rn|grep -i [A-Z]|sed -n '1h;G;s/\(\s*\S\+\s\)\(.\)\n\1./\2/p'|sort

বাশ + অড (সিডের পরিবর্তে), 97 টি অক্ষর

fold -1<<<$s|uniq -iD|sort -f|uniq -ic|sort -rn|grep -i [A-Z]|awk '!n{n=$1};n==$1{print $2}'|sort

এটি পরীক্ষা করতে, প্রথমে এস

s="Sally's friends Jimmy ää and Bobby rummaged ää for seashells."

0

আর, 98 বাইট

অ্যালেক্সের সমাধানের সাথে খুব সমান, তবে একটানা অক্ষর নির্ধারণের জন্য ম্যাচের পরিবর্তে একটি বিকল্প ব্যবহার করে। স্ক্যানটি ইনপুট পেতে এবং ফাঁকা জায়গায় প্রতিস্থাপনের ফলাফলকে বিভক্ত করতে ব্যবহৃত হয়।

cat(names(a<-table(scan(,'',t=gsub('([A-z]?)(\\1?)[^A-z]*','\\U\\2 ',scan(,''),T,T))))[a==max(a)])

পরীক্ষা কয়েক

> cat(names(a<-table(scan(,'',t=gsub('([A-z]?)(\\1?)[^A-z]*','\\U\\2 ',scan(,''),T,T))))[a==max(a)])
1: 11 was a race horse, 22 was one too. 11 won one race and 22 one won too.
19: 
Read 18 items
Read 2 items
O
> cat(names(a<-table(scan(,'',t=gsub('([A-z]?)(\\1?)[^A-z]*','\\U\\2 ',scan(,''),T,T))))[a==max(a)])
1: Sally's friends Jimmy and Bobby rummaged for seashells.
9: 
Read 8 items
Read 5 items
L M
> cat(names(a<-table(scan(,'',t=gsub('([A-z]?)(\\1?)[^A-z]*','\\U\\2 ',scan(,''),T,T))))[a==max(a)])
1: 11ss11nn
2: 
Read 1 item
Read 2 items
N S
> 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.