একই নম্বর চিঠি


19

কথার চিঠিগুলি ন্যায্যতা চায়।

তারা একই বাক্যে সমান সংখ্যক বার উপস্থিত হওয়ার সিদ্ধান্ত নিয়েছে।

উদাহরণ:

Priorities

হয়ে যাবে:

Ppprrioooritttieeesss

সর্বাধিক প্রচলিত চিঠি হিসাবে 3 বার উপস্থিত হওয়ায় প্রতিটি অক্ষর 3 বার iউপস্থিত হয় appear

আপনি বারবার যে অক্ষরগুলি অনুরূপ চিঠির পাশে থাকবেন না কেন এটি গুরুত্বপূর্ণ নয়।

অর্থাৎ,

Pppriooorritttieeesss ঠিক আছে ('আর' চিঠি)

Ppprioororitttieeesss ঠিক নেই ('আর' চিঠি)

আরেকটি উদাহরণ:

invoice

হয়ে যাবে:

innvvooiccee

আরেকটি উদাহরণ:

Remittance Advice

হয়ে যাবে:

Rrremmmiitttaannncce Adddvvvice

স্থান, কমা, প্রশ্ন চিহ্ন, উদ্ধৃতি ইত্যাদি এই চ্যালেঞ্জের জন্য চিঠি হিসাবে বিবেচিত হয় না। কেবলমাত্র [a-zA-Z] বিবেচনা করা দরকার। কেবল একবার স্থান পর্যাপ্ত হয়ে গেলে এবং বর্ণগুলির ক্রম একই থাকে।

চিঠির মূলধন কোনও বিষয় নয়, উচ্চ এবং নিম্নতর ক্ষেত্রে একই চিঠি হিসাবে কাউন্টার হয়। এটি: Pip2 'পি এর এবং 1' আমি 'রয়েছে, তাই এটি হয়ে যাবে Piip

এটি সংবেদনশীল বর্ণগুলি কোনও আকারে হতে পারে, Piip=piip=piiP=PiiP

এটি


2
আমি মূল
জো কিং

"Rrreeemmmiiitttaaannncccddvvv" প্রদত্ত উদাহরণে গ্রহণযোগ্য আউটপুট (যেহেতু স্বতন্ত্র বর্ণগুলির ক্রম (আজ হিসাবে সংজ্ঞায়িত) এখনও বজায় আছে)? (আমার জেলি উত্তরটি বর্তমানে এই ব্যাখ্যাটি ঠিকঠাক হওয়ার উপর নির্ভর করে))
জনাথন অ্যালান

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

1
@ কেভিন ক্রুইজসেন স্থানটি বামে রয়েছে - এটি কোনও চিঠি নয় তাই " অক্ষরগুলির ক্রম একইরকম থাকতে হবে"
জোনাথন অ্যালান

1
@ জোনাথন অ্যালান আহ, জায়গাটি লক্ষ্য করেনি, আমার খারাপ। আপনি আপনার জেলি উত্তরে যে যুক্তি সরবরাহ করেছেন তা আমি পুরোপুরি বুঝতে পেরেছি এবং এর ভিত্তিতে এটি প্রকৃতপক্ষে একটি বৈধ আউটপুট, তবে আমি বরং বাক্যটি পরিবর্তিত দেখতে পাব, তারপরে আপনার আউটপুটটিকে অনুমতি দেবে, কারণ এটি চ্যালেঞ্জকে সম্পূর্ণরূপে বদলে দেবে।
কেভিন ক্রুজসেন

উত্তর:


5

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

lDáÙSйls¢Zα>×.;

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

ব্যাখ্যা

l                  # convert input to lowercase
 D                 # duplicate
  á                # keep only letters
   Ù               # remove duplicates
    S              # split to list of chars
     Ð             # triplicate
      ¹ls¢         # count the occurrences of each letter in lowercase input
          Zα       # absolute valuue with max occurrence
            >      # increment
             ×     # repeat each unique char that many times
              .;   # replace the first occurrence of the char in lowercase input with this

7

আর , 106 বাইট

function(s){for(A in L<-LETTERS)s=sub(A,strrep(A,max(x<-+s-+Map(gsub,L,'',s,T))-x[A]--1),s,T);s}
"+"=nchar

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

বেস আর পদ্ধতির:

  • @ জে.ডো আর + স্ট্রিংয়ের পদ্ধতির কাছ থেকে কিছু ধারণা চুরি করে আমি 26 বাইট সংরক্ষণ করেছি!
  • আর +অপারেটরকে অপব্যবহারের জন্য @ J.Doe পরামর্শ ব্যবহার করে আরও 5 টি বাইট সংরক্ষণ করা হয়েছে

আমি মুগ্ধ হয়েছি আপনি বেস-আর দিয়ে 111 এ গিয়েছেন!
জে.ডো

@ জে.ডো: আমার আসল ১৩7 বাইট সমাধান প্রকাশের পরে আমি আপনার দ্বারা অনুপ্রাণিত হয়ে আমার দৃষ্টিভঙ্গিটি কিছুটা পরিবর্তন করেছি এবং আমি মূলত আপনার সমাধানে রূপান্তর করেছি, কেবল স্ট্রিংর অপসারণ করে: ডি
ডিগেমাল

1
অপারেটরের অপব্যবহারের সাথে 106 বাইট । বেস-আর জয়!
জে.ডো

@ জে.ডো: দুর্দান্ত!
digEmAll সমস্ত

5

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

-৩ বাইট নোহেলহোফকে ধন্যবাদ

->\a{a.=lc.=subst($_,$_ x a.comb(/<:L>/).Bag.values.max+1-a.comb($_))for 'a'..'z'}

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

একটি পরিবর্তনীয় স্ট্রিং নেয় এবং এটি জায়গায় সংশোধন করে।

ব্যাখ্যা:

->\a{        # Anonymous code block that takes a mutable string            }
 a.=lc;  # Lowercase
                                                               for 'a'..'z'  # For each letter
 .=subst(                                                    )  # Substitute
          $_,   #The first occurrence of the letter with
             $_ x  #The letter repeated
                  a.comb(/<:L>/).Bag.values.max    # The count of the most common letter
                                                 +1  # Plus 1
                                                   -a.comb($_)  # Minus the count of that letter already in the string

আপনি .=অপারেটর মত চেইন করতে পারেন a.=lc.=subst(...)। আমি নিশ্চিত নই যে বিদ্যমান চিঠির ক্ষেত্রে পরিবর্তন আনার অনুমতি রয়েছে কিনা। এছাড়াও <:L>পরিবর্তে <:Ll>
nwellnhof

@ ননহ্নহোফ হ্যাঁ, প্রশ্নকারী বলেছেন যে আউটপুটটি সংবেদনশীল নয়
জো কিং

5

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

s=>(m=g=F=>s.replace(/[a-z]/gi,c=>F(c.toLowerCase())))(c=>g[c]=c+c.repeat(m-g[c]),g(c=>m=(n=g[c]=-~g[c])<m?m:n))

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

মন্তব্য

s => (                       // s = input string
  m =                        // m = max. number of occurrences of the same letter
  g = F =>                   // g = helper function taking a callback function F
    s.replace(               //     (also used to store the # of occurrences of each letter)
      /[a-z]/gi,             //   for each letter c in s:
      c => F(                //     invoke F():
        c.toLowerCase()      //       with c.toLowerCase()
      )                      //     end of call to F()
    )                        //   end of replace()
)(c =>                       // invoke g() (second pass):
  g[c] =                     //   update g[c] to a non-numeric value
    c +                      //   append c once, unconditionally
    c.repeat(m - g[c]),      //   and append c as many times as required to reach m
                             //   (any subsequent iteration with the same letter will
                             //   lead to c.repeat(m - g[c]) --> c.repeat(NaN) --> '')
  g(c =>                     //   invoke g() (first pass):
    m = (n = g[c] = -~g[c])  //     increment g[c], save the result in n
      < m ? m : n            //     and update m to max(m, n)
  )                          //   end of first pass
)                            // end of second pass

আমার জাতীয় দক্ষতা, স্তন্যপান তাই আমি একটি বিট এই অংশ সম্পর্কে বিভ্রান্ত: o[l] = // updates o[l] to a non-numeric value। যদি আমি সঠিকভাবে বুঝতে পারি , তবে এবং ফাংশনগুলিতে oএকটি পূর্ণসংখ্যা-অ্যারে হয় তবে আমি যে অংশটি পূর্বে উল্লিখিত অংশে অক্ষরটি এক বা একাধিকবার ধরে একটি স্ট্রিং-অ্যারেতে পরিবর্তন হয় ? এছাড়াও, আমি অনুমান করি ডিফল্টরূপে এর মানগুলি , যেহেতু আপনি পরিবর্তে ব্যবহার করছেন ? Fgcoundefinedo[l]=-~o[l]++o[l]
কেভিন ক্রুজসেন

1
@ কেভিন ক্রুজসেন আমরা প্রতিটি চিঠিটি কেবল একবারে সর্বাধিক সংখ্যক সংখ্যায় প্যাড করতে চাই। o[l]কোনও চিঠিতে আপডেট করে, একই বর্ণের পরবর্তী কোনও পুনরাবৃত্তি m - o[l] --> NaN(পূর্ণসংখ্যার বিয়োগ পত্র) এবং এর দিকে পরিচালিত করবে l.repeat(NaN) == ''। (শেষ পয়েন্ট সম্পর্কে: হ্যাঁ, এটি সঠিক))
আর্নাউল্ড

আহ ঠিক আছে, ব্যাখ্যার জন্য ধন্যবাদ! :)
কেভিন ক্রুইজসেন

(এবং আমার চিঠির চেয়ে স্ট্রিং বলা উচিত ছিল )
আর্নল্ড

5

জে , 33 56 46 বাইট

t=:~:tolower
(#~1+t*~:(*>./-])t*1#.e.)@toupper

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

~:tolowerদু'বার ব্যবহার এড়াতে কোনও উপায় খুঁজে পেল না ।

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

t=:~:tolower    Auxiliary function: isupper
     tolower    Is lowercase version of itself...
   ~:           different from itself?

(#~1+t*~:(*>./-])t*1#.e.)@toupper    Main function
                          toupper    Convert to uppercase
                      e.     Build 2D array by comparing to itself
                   1#.       Row-wise sum; Count occurrences
                 t*     A) Filter by isupper (needed for finding max count)
           >./-]        Compute max of A) minus each element of A)
       ~:          Nub sieve; 1 if first occurrence, 0 otherwise
          *        Filter first occurrences only
     t*       Filter by isupper again, to ban non-alphabets from duplicating
   1+         Add one to preserve given chars
 #~           Duplicate

5

আর + স্ট্রিংগার, 108 বাইট

আমি খুব ভাল না stringr। লোয়ার এবং আপার কেসের মিশ্রণটি ফেরত দেয় কারণ প্রশ্ন বলছে এটি কিছু যায় আসে না।

function(x){for(l in L<-letters)x=sub(l,strrep(l,max(s<-stringr::str_count(tolower(x),L))-s[L==l]+1),x,T);x}

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

ব্যাখ্যা

function(x){
for(l in letters){ # Iterate through builtin vector "a", "b", "c"...
   # Generate a 26-long integer vector for how many a's, b's, c's in lower case string
  s = stringr::str_count(tolower(x),letters)
    # Take the max of this
  m = max(s)
    # Repeat the letter in the iteration enough times to make the word 'fair'
  new.l = strrep(l,m-s[letters==l]+1)
    # Substitute the first instance only of the letter in the string for the repeated letter
    # This is case insensitive (the T at the end)
    # Notice we calculate the max letter frequency each loop
    # This is inefficient but doesn't change the answer and avoids bytes
  x=sub(l,new.l,x,T);
  }
x # Return the substituted string
}

3

K4 , 35 বাইট

সমাধান:

{x@o@<o:(&^x),/(|/#:'g)#'g:" "_=_x}

উদাহরণ:

q)k){x@o@<o:(&^x),/(|/#:'g)#'g:" "_=_x}"Priorities"
"PPPrrioooritttieeesss"
q)k){x@o@<o:(&^x),/(|/#:'g)#'g:" "_=_x}"invoice"
"innvvooiccee"
q)k){x@o@<o:(&^x),/(|/#:'g)#'g:" "_=_x}"Remittance Notice"
"RRRemmmiittaaanncce Noootice"

ব্যাখ্যা:

একটি ভিন্ন পদ্ধতির সাথে গল্ফযোগ্য হতে পারে, চিন্তা করা হবে

{x@o@<o:(&^x),/(|/#:'g)#'g:" "_=_x} / the solution
{                                 } / lambda taking implicit argument x
                                _x  / lowercase input
                               =    / group
                           " "_     / drop space from keys
                         g:         / save as g
                       #'           / take each
               (      )             / do this together
                  #:'g              / count occurances in each group
                |/                  / take the maximum
             ,/                     / flatten with
        (&^x)                       / indices where input is null (ie " ")
      o:                            / save as o
     <                              / indices to sort o ascending
   o@                               / apply these to o
 x@                                 / apply these indices to original input

3

কাঠকয়লা , 33 32 বাইট

⭆↧θ⁺§θκ×ι∧№βι∧⁼κ⌕↧θι⁻⌈Eβ№↧θλ№↧θι

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

  θ                                 Input string
 ↧                                  Lower case
⭆                                   Map over characters and join
      κ                             Current index
     θ                              Input string
    §                               Original character
   ⁺                                Concatenate with
        ι                           Lowercased character
       ×                            Repeated
            ι                       Lowercased character
           β                        Lowercase alphabet
          №                         Count
         ∧                          Logical And
                   ι                Lowercased character
                  θ                 Input string
                 ↧                  Lower case
                ⌕                   Find
               κ                    Current index
              ⁼                     Equals
             ∧                      Logical And
                       β            Lowercase alphabet
                      E             Map over characters
                           λ        Current character
                          θ         Input string
                         ↧          Lower case
                        №           Count
                     ⌈              Maximum
                    ⁻               Minus
                               ι    Lowercased character
                              θ     Input string
                             ↧      Lower case
                            №       Count
                                    Implicitly print

3

জাভা 11, 190 176 162 বাইট

s->{s=s.toUpperCase();char m=2,i=64,a[]=new char[127];for(int c:s.getBytes())m-=m+~++a[c]>>-1;for(;++i<91;)s=s.replaceFirst(i+"",repeat((i+""),m-a[i]));return s;}

-14 বাইট @ নেভায়ে ধন্যবাদ ।

আউটপুট সম্পূর্ণ বড় হাতের অক্ষরে রয়েছে।

এটি অনলাইনে চেষ্টা করুন। (দ্রষ্টব্য: একই বাইট-কাউন্ট String.repeat(int)হিসাবে অনুকরণ করা repeat(String,int)হয়েছে, কারণ জাভা 11 টি টিও তে এখনও নেই isn't)

ব্যাখ্যা:

s->{                      // Method with String as both parameter and return-type
  s=s.toUpperCase();      //  Convert the input-String to full uppercase
  char m=2,               //  Max occurrence (+1), starting at 2
       i=64,              //  Index integer, starting at 64 ('A'-1)
       a[]=new char[127]; //  Create a count-array of size 127 (printable ASCII chars)
  for(int c:s.getBytes()) //  Loop over the characters of the String as integers
    m-=m+~++a[c]>>-1;     //   Increase the occurrence-counter of the char by 1 first
                          //   And if it's larger than the max-2, increase the max by 1
  for(;++i<91;)           //  Loop `i` in the range ['A', 'Z']
    s=s.replaceFirst(i+"",//   Replace the first char `i` in the string with:
       (i+"").repeat(     //   That same character repeated
        m-a[i]));         //   The max(+1) minus its array-occurrence amount of times
  return s;}              //  Then return the now modified String as result

আপনি কি বাইট জন্য var ব্যবহার করতে পারেন?
কুইনটেক

charআপনার মানে কি কুইন্টেক ? দুর্ভাগ্যক্রমে না. varশুধুমাত্র একক ক্ষেত্রের জন্য ব্যবহার করা যেতে পারে। পরিবর্তে char m=1,i=127,a[]=new char[i];এটি হবে var m=1;var i=127;var a=new char[i];আপনি জাভা 10 এর সাথে কী করতে পারবেন এবং কী করতে পারবেন না তার একটি দরকারী টিপ var(আমি intvar
লুপটির

ধন্যবাদ, ধন্যবাদ জাভা 9/10/11 কীভাবে কাজ করে তার এখনও ধারণা নেই, হাহাহা, আমি আটকে যাব; পি
কুইন্টেক

@ কুইন্টেক জাভা 9 আমিও সত্যিই পাই না, যেহেতু এটি মূলত সেই আরএইপিএলে ফোকাস করে। জাভা 10 বেশিরভাগ জাভা 8 এর মতো, বাদে var। এবং জাভা 11 এর সাথে সম্পর্কিত সমস্ত কোডগল্ফে সবেমাত্র কোনও পরিবর্তন আছে, String.repeatআমি ইতিমধ্যে বহুবার ব্যবহার করেছি এমন পদ্ধতি ব্যতীত । এটিতে নতুন String.stripLeadingবা String.stripTrailing, যা trimকেবলমাত্র শীর্ষস্থানীয় / অনুসরণকারী শ্বেতস্পেসের মতো কাজ করে এবং String.isBlank()যা String.trim().isEmpty()(কেবল খালি বা সাদা স্থান) এর মতো।
কেভিন ক্রুইজসেন

1
-14 বাইট:s->{s=s.toUpperCase();char m=2,i=91,a[]=new char[127];for(int c:s.getBytes())m-=m+~++a[c]>>-1;for(;i-->65;)s=s.replaceFirst(i+"",repeat((i+""),m-a[i]));return s;}
নেভায়ে

3

জাপট -h , 27 বাইট

@ETH প্রোডাকশনগুলি থেকে -3 বাইট

;v
ñ oC ó¥ ú £=iXÎpXèS)UbXg

বোঝানোর চেষ্টা করছি

;v                          Convert implicit input to lowercase
ñ oC ó¥ ú £=iXÎpXèS)UbXg      Main function. Implicit lowercase input => "priorities"
ñ                           Sort => "eiiioprrst"
 oC                         Remove non alphabetical chars
   ó¥                       Split on different letters => ["e","iii","o","p","rr","s","t"]
     ú                      Right-pad each to the length of the longest with space => ["e  ","iii","o  ","p  ","rr ","s  ","t  "]
       £                    For each X in this array:
             XèS              Count the number of spaces in X
          XÎ                  Get the first character in X
            p   )             Repeat it (number of spaces) times
                              example the mapped value "e  " will become "ee"
         i                    Insert this into U at
                 UbXg           the first index of (first character in X) in U
        =                     Set U to the result

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


1
আশা করি আপনি আপত্তি করবেন না, আমি ব্যাখ্যার অংশটি প্রসারিত করেছি (এটি একটি লাইন যা প্রায় 10 চরগুলি একবারে কী করেছিল তা ব্যাখ্যা করছিল: পি) úকৌশলটি প্রতিভা,
বিটিডাব্লু

@ETH প্রোডাকশনস আমি এটি প্রশংসা করি। আমি ইংরেজিতে খুব ভাল না তাই ধন্যবাদ
লুইস ফেলিপ দে জেসুস মুনোজ

1
দুর্ভাগ্যক্রমে, যখন অক্ষরগুলি জড়িত রয়েছে তখন সেগুলি ব্যর্থ হয়েছে বলে মনে হচ্ছে (সেগুলি পরিবর্তন করা উচিত নয়)। একটি সহজ সংশোধন করা হবে একটি ñ oC ó¥;
sertোকানো

অপেক্ষা করুন ... কবে থেকে ñতারে কাজ করেছেন ?! @ ইথ প্রডাকশনস, দয়া করে আমাকে বলুন এটি একটি সাম্প্রতিক সংযোজন এবং আমি এই মুহুর্তে এটি উপেক্ষা করছি না!
শেগি

@ শেগি দৃশ্যত এটি 2.5 মাস আগে ছিল - তবে চিন্তা করবেন না, এমনকি আমি উত্তরটি না থাকলে এটির অস্তিত্বটি ভুলে গেছি ;-)
ETH প্রোডাকশন

2

রুবি , 89 বাইট

->s{1while(a=s.scan /\w/).map(&g=->x{s.scan(/#{x}/i).size}).uniq[1]&&s[a.min_by &g]*=2;s}

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

আমি বিভিন্ন পদ্ধতির চেষ্টা করেছি, তবে যা সত্যই প্রচুর পরিমাণে বাইট সঞ্চয় করে তা একবারে একটি চরিত্র যুক্ত করে।

কিভাবে:

->s{
    1while                             # 1 is a nop to the while
    (a=s.scan /\w/)                    # For all the letters in the string
    .map(&g=->x{s.scan(/#{x}/i).size}) # Count occurrences ignoring case.
    .uniq[1]                           # Break out of loop if all equals
    &&s[a.min_by &g]*=2                # Otherwise duplicate the letter
                                       #  with the lowest count
    ;s}                                # Return the string

2

পাওয়ারশেল 6, 123 বাইট

এটি একটি চর পরিসর ব্যবহার করে 'a'..'z'। নীচে আগের পাওয়ারশেলের জন্য স্ক্রিপ্ট দেখুন।

param($s)for(;'a'..'z'|%{
if($d=($s-replace"[^$_]").Length-$n){if($d-gt0){1}else{$s=$s-replace"^(.*$_)","`$1$_"}}}){$n++}$s

ব্যাখ্যা করা স্ক্রিপ্ট:

$f = {

param($s)                               # a parameter string
for(;                                   # loop while exists at least one letter...
'a'..'z'|%{                             # for each letter
    $d=($s-replace"[^$_]").Length-$n    # let $d is a difference between a number of current letter and current $n 
    if($d-gt0){                         # if the difference > 0
        1                               # then return a object to increase $n on next iteration
    }
    if($d-lt0){                         # if the differenct < 0
        $s=$s-replace"^(.*$_)","`$1$_"  # append the current letter after a last instance of the letter. Use "^(.*?$_)" regexp to append it after a first instance of the letter.
    }
}){
    $n++                                # increment $n if exists at least one letter number of witch greather then $n
}                                       # and make next iteration of the 'for'.

$s                                      # return modified string if all letters in the string occur the same number of times

}

@(
    ,('Priorities', 'Ppprrioooritttieeesss', 'PPPriooorritttieeesss')
    ,('invoice', 'innvvooiccee')
    ,('Remittance Advice', 'Rrremmmiitttaannncce Adddvvvice', 'RRRemmmitttannnce Aadddvvviicce')
) | % {
    $s,$e = $_
    $r = &$f $s
    "$($r-in$e): $r"
}

আউটপুট:

True: Pppriooorritttieeesss
True: innvvooiccee
True: Rrremmmitttannnce Aadddvvviicce

পাওয়ারশেল 5.1-, 133 বাইট

param($s)for(;97..122|%{$_=[char]$_
if($d=($s-replace"[^$_]").Length-$n){if($d-gt0){1}else{$s=$s-replace"^(.*$_)","`$1$_"}}}){$n++}$s

2

লাল , 252 বাইট

func[s][a: charset[#"a"-#"z"#"A"-#"Z"]t: parse s[collect[any[keep a | skip]]]m: copy
#()foreach c t[c: form c either n: m/:c[m/:c: n + 1][m/:c: 1]]d: last sort extract next
to-block m 2 foreach c s[prin c: form c if n: m/:c[loop d - n[prin c]m/:c: d]]]

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

হাস্যকর দীর্ঘ সমাধান ...

ব্যাখ্যা:

f: func [ s ] [
    a: charset [ #"a" - #"z" #"A" - #"Z" ]   ; letters
    t: parse s [                             ; parse the string 
        collect [ any [ keep a | skip ] ]    ; and keep only the letters
    ]
    m: copy #()                              ; initialize a map
    foreach c t [                            ; for each character in t
        c: form c                            ; the character as a string
        either n: select m c [ m/:c: n + 1 ] ; increase the count if already in map
                             [ m/:c: 1 ]     ; otherwise create a map entry with count 1 
    ]
    d: last sort extract next to-block m 2   ; convert the map to a block; extract only the 
                                             ; numbers and take the last of the sorted block
    foreach c s [                            ; for each character in the input
        c: form c                            ; the character as a string
        prin c                               ; print it (with no space nor newline)
        if n: select m c [                   ; if c is a key in the map
            loop d - n [ prin c ]            ; print the character again up to d times 
            m/:c: d                          ; set the count to max (flag it as used)
        ]
    ]
]

2

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

x=>[...x=x.toLowerCase()].map(F=c=>(F[c]=-~F[c],F[c]>w?w=F[c]:w,c),w=0).map(c=>x=x.replace(c,c.repeat(c>'`'&c<'{'?w-F[c]+1:1),F[c]=w))&&x

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

আমার প্রথম সমাধান থেকে +৩৩ বাইটস যাঁদের কখনও শেষ না করে এমন অতিরিক্ত বাধাগুলি শেষ করে না। জেএস কেস-সংবেদনশীল স্ট্রিং ম্যানিপুলেশনগুলিতে আপনি চেনেন।

-৩ বাইট পিছনে ধন্যবাদ @ আরনল্ডকে ধন্যবাদ।

ব্যাখ্যা

x =>                                     // The function.
  [...x = x.toLowerCase()].map(f = c => (// - Iterate among each character...
                                         // - Additional constraint 2
    f[c] = -~f[c],                       //   - Add one to the character counter
    f[c] > w ? w = f[c] : w,             //   - Update the maximum count if necessary
    c                                    //   - Return back the character for the use in
                                         //     the next map function
  ), w = 0)                              // - The counters
  .map(c =>                              // - Iterate again...
    x = x.replace(                       //   - Repeat the first appearance of
      c,                                 //   - Each character
      c.repeat(                          //   - Needed number times
        c > '`' & c < '{'                //   - Additional constraint 1
        ? w - f[c] + 1                   //   - If this is letter, repeat
        : 1                              //   - If not, stay as is
      ),                                 //   - That should've been clearly stated
      f[c] = w                           //   - And set the counter so that no further 
                                         //     replacements are done on this character 
    )                                    //   - (w - f[c] + 1 = 1 in further iterations)
  ) && x                                 // - Return the result

সমাধানগুলি মিশ্র-কেস ইনপুটগুলি পরিচালনা করতে সক্ষম হওয়া প্রয়োজন।
শেগি

@ শেগি আমি মনে করি আপনার মন্তব্যের পরে চ্যালেঞ্জটি সম্পাদিত হয়েছে। দেখে মনে হচ্ছে আউটপুটটির ক্ষেত্রে কিছু আসে যায় না।
আর্নল্ড

অন্যদিকে, ফাংশনগুলি অবশ্যই পুনরায় ব্যবহারযোগ্য হবে , যা এখানে ক্ষেত্রে নয় the
Arnauld

@ আরনাউল্ড ওহ আমি আপনাকে মাঝে মাঝে fঅস্থায়ী স্টোরেজ হিসাবে ব্যবহার করতে দেখি তাই ভেবেছিলাম এটি ঠিক আছে
শিয়ারু আসাকোটো

map()কলব্যাক ফাংশনগুলি সঞ্চয়স্থানের জন্য ব্যবহার করা নিরাপদ, কারণ সেগুলি স্থানীয় স্কোপে সংজ্ঞায়িত করা হয়েছে। মূল ফাংশনটি - যা বিশ্বব্যাপী সংজ্ঞায়িত - ব্যবহার করা আরও ঝুঁকিপূর্ণ। এখানে আপনি প্রথমটির কলব্যাক ব্যবহার করতে পারেন map()যা আপনাকে 137 বাইটে ফিরিয়ে আনবে
আর্নল্ড

2

হুশ , 15 বাইট

ḟ§Ë#f√MṘO´πL¹m_

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

নিষ্ঠুর শক্তি, তাই খুব ধীর।

ব্যাখ্যা

ḟ§Ë#f√MṘO´πL¹m_  Implicit input, say s = "To do"
             m_  Convert to lowercase: t = "to do"
           L¹    Length of s: 5
         ´π      All length-5 combinations of [1..5]:
                   [[1,1,1,1,1], [1,1,1,1,2], [2,1,1,1,1], ..., [5,5,5,5,5]]
        O        Sort them lexicographically:
                   [[1,1,1,1,1], [1,1,1,1,2], [1,1,1,1,3], ..., [5,5,5,5,5]]
      MṘ         For each, replicate letters of t that many times:
                   ["to do", "to doo", "to dooo", ..., "tttttooooo     dddddooooo"]
ḟ                Find the first string that satisfies this:
                   Example argument: x = "tto ddo"
    f√             Letters of x: "ttoddo"
  Ë                They have equal
 § #               number of occurrences in x: true (all have 2).

মোটেও ফলাফল পেতে পারেনি
asmgx

@ এসএমজিএক্স প্রোগ্রামটি সত্যিই ধীর। এটি 8 মিনিটের দৈর্ঘ্যের ইনপুটগুলির জন্য টিআইওর সময়সীমা শেষ বলে মনে হচ্ছে, কারণ এটি 1 মিনিটের পরে গণনাটিকে মেরে ফেলে। আপনি যদি যথেষ্ট দীর্ঘ অপেক্ষা করেন (সম্ভবত দৈর্ঘ্য -10 ইনপুটগুলির জন্য বেশ কয়েক ঘন্টা) অফলাইন দোভাষীর একটি ফলাফল দেওয়া উচিত।
জগারব

2

পার্ল 6 , 77 70 বাইট

{s:i|$($!.min(*{*}).key)|$/$/|until [==] ($!=.lc.comb(/<:L>/).Bag){*}}

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

সমস্ত অক্ষর একই সংখ্যক বার উপস্থিত না হওয়া অবধি কোনও অক্ষর সন্নিবেশ করার জন্য জিবি'র দৃষ্টিভঙ্গি নেওয়া। স্থানে পরিবর্তিত একটি স্ট্রিং প্রাপ্ত করে।

যদি আন্ডারস্কোরগুলি অক্ষরের মতো আচরণ করা যায় তবে /\w/দুটি বাইট সংরক্ষণ করে রেজেক্স হয়ে উঠতে পারে ।

ব্যাখ্যা

{
                    .lc.comb(/<:L>/).Bag          # Create Bag of letter/count pairs
                ($!=                    )         # Store temporarily in $!
 ... until [==]                          .values  # Until all counts are equal
 s:i|                      |    |                 # Replace (ignoring case)
     $($!.min(*.value).key)                       # letter with minimum count
                            $/$/                  # with itself doubled
}

@ জোকিং মনে হচ্ছে আপনার {*}কৌশলটি আবিষ্কার করার আগে আপনার উন্নতি পুরানো সংস্করণের উপর ভিত্তি করে ।
nwellnhof

সুতরাং এটি "এর জন্য একটি শর্টকাটের মতো .value(s)? ঝরঝরে, আমাকে আমার কিছু পুরানো সমাধানগুলি আপডেট করতে হতে পারে
জো কিং



1

পাইথ, 31 30 বাইট

JeSm/Qd=r0QVQ=tQ=+k*N-J/+kQN)k

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

ব্যাখ্যা

JeSm/Qd=r0QVQ=tQ=+k*N-J/+kQN)k
       =r0Q                        Convert input to lowercase.
JeSm/Qd                            Find the count of the most common character.
           VQ               )      For each character in the input...
             =tQ                   ... remove that character from the input...
                =+k*N-J/+kQN       ... append copies to k until we have enough.
                             k     Output.

1

সি (জিসিসি) - 175 বাইট

f(char*s){int c[999]={0},i=0,m=0,k,L;while((L=s[i++])&&(k=++c[L<97?L+32:L]))m=k>m?k:m;i=0;while(L=s[i++])for(L=L<97&&L>64?L+32:L,putchar(L);isalpha(L)&&++c[L]<=m;)putchar(L);}

Ungolfed

f(char *s) {
  int c[999]={0},i=0,m=0,k,L;                      // Array used like a dictionary, temp vars
  while((L=s[i++])&&(k=++c[L<97?L+32:L]))          // store letter counts
    m=k>m?k:m;                                     // calculate max occurance
  i=0;                                             // reset string index
  while(L=s[i++])                                  // iterate string
    for(L=L<97&&L>64?L+32:L,putchar(L);isalpha(L)&&++c[L]<=m;) // set character L to lowercase if in alphabet, print always once, repeat if in alphabet
      putchar(L);                                  // print character
}

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


0

কোটলিন অ্যান্ড্রয়েড, 413 বাইট

var l: List<Char> = w.toList().distinct();val h = HashMap<Char, Int>();var x='m';var n=0;for(z in l.indices){var c=0;for (i in 0.rangeTo(w.length-1)){if(l[z]==(w[i]))c++};h.put(l[z],c);if(n<c){n=c}};for(entry in h){h.replace(entry.key,n-entry.value)};var v=ArrayList<Char>();for(i  in 0.rangeTo(w.length-1)){if(h.containsKey(w[i])){for(p in 0.rangeTo(h.get(w[i])!!)){v.add(w[i])};h.remove(w[i])}else{v.add(w[i])}}

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

ব্যাখ্যা পদক্ষেপ 1 -> স্বতন্ত্র অক্ষরের তালিকা নির্বাচন করুন। পদক্ষেপ 2 -> স্ট্রিংয়ে প্রতিটি চরের গণনা পান এবং সর্বোচ্চ চর ফ্রিকোয়েন্সি নির্বাচন করুন select পদক্ষেপ 3 -> সর্বোচ্চ চর ফ্রিকোয়েন্সি পদক্ষেপ 4 -> স্ট্রিংয়ের পজিশনে সম্মানের সাথে চরগুলি রাখুন cha শুভ সমাধান!



0

পিএইচপি ,185 173 170 বাইট

function($s){$m=max($a=count_chars($s=strtolower($s),1));foreach(str_split($s)as$c)$o.=str_repeat($c,($b=$a[$d=ord($c)])!=($a[$d]=$m)&&$d>96&&$d<123?$m-$b+1:1);return$o;}

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

অবহেলিত (এবং আন-ট্রেনারিড এবং আন-অপ্টিমাইজড)।

function f($s) {
    $s = strtolower( $s );
    $a = count_chars( $s, 1 );
    $m = max( $a );
    foreach( str_split( $s ) as $c ) {
        if ( $c < 'a' or $c > 'z') {           // is non a-z
            $n = 1;
        } elseif ( $a[ord($c)] == $m ) {    // already has max number
            $n = 1;
        } else {
            $n = $m - $a[ord($c)] + 1;       // add this many chars
        }
        $o .= str_repeat( $c, $n );
        $a[ord($c)] = $m;                   // has reached the max
    }
    return $o; 
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.