প্রদত্ত অর্ডার দিয়ে একটি স্ট্রিং বাছাই করুন


23

আপনার চ্যালেঞ্জটি একটি স্ট্রিং বাছাই করা, তবে সাধারণ বর্ণানুক্রমিক আদেশ (abc..xyz) না করে আপনি একটি নির্দিষ্ট বর্ণমালা দ্বারা স্ট্রিং বাছাই করা হবে।

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

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

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

A       S               Result
axd     haxuizzxaxduxha aaaxxxxdhuizzuh
a       xyz             xyz
abc     dcba            abcd
il      nmiuplliu       iillnmupu
asdf    qwerty          qwerty

সবচেয়ে কম বাইট জিতেছে!


আমরা কি সিঙ্গলটন স্ট্রিংগুলির একটি অ্যারে মুদ্রণ / ফিরিয়ে দিতে পারি? আমরা কি ইনপুট হিসাবে একক স্ট্রিং এবং সিঙ্গলটন স্ট্রিংগুলির একটি অ্যারে নিতে পারি?
ডেনিস

@ ডেনিস হ্যাঁ, উভয়ই স্ট্রিংয়ের দুর্দান্ত উপস্থাপনা।
পাভেল

আমরা পৃথক অক্ষরের অ্যারে হিসাবে উভয় ইনপুট নিতে পারি?
শেগি

@ শেগি একটি স্ট্রিং একটি চরিত্রের অ্যারে, তাই হ্যাঁ।
পাভেল

উত্তর:


5

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

Rvy†

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

ব্যাখ্যা

R     # Reverse the alphabet
 vy   # For each letter ...
   †  # Push S with the current letter filtered to the front

চেয়ে স্মার্ট Σ²sk>
ম্যাজিক অক্টোপাস উরন

R€†যদিও প্রত্যাশিত হিসাবে কাজ করা খুব খারাপ :) কখনও কখনও এটি একটি ছোট vyলুপ হিসাবে কাজ করতে পারে । ভাল উত্তর মানুষ।
ম্যাজিক অক্টোপাস উরন

10

পাইথন 3 , 50 47 46 44 বাইট

-3 বাইট ধন্যবাদ এনএনজি!

-1 বাইট মাইপেটলিয়নকে ধন্যবাদ

lambda a,s:s.sort(key=lambda c:a.find(c)%27)

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

স্ট্রিংকে বর্ণমালা এবং অক্ষরের একটি তালিকা হিসাবে স্ট্রিং হিসাবে নিয়ে যায় এবং তালিকায় স্থানটি সাজায়।

%27নিশ্চিত যদি চরিত্র বর্ণমালায় নয় যে সূচক বর্ণমালার বাকি পর রাখে এটা ফিরে আসেন।


2
-a[::-1].find(c)->(a+c).find(c)
ngn

1
(a+c).find(c)-> a.find(c)%271 বাইট সংরক্ষণ করতে
মাইপেটলিয়ন


7

পার্ল 6 ,  55  43 বাইট

->\A,\S{[~] S.comb.sort:{%(A.comb.antipairs){$_}//∞}}

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

->\A,\S{[~] S.comb.sort:{A.index($_)//∞}}

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

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

-> \A, \S {
  [~]  # reduce using &infix:«~» (shorter than `.join`)

    S.comb.sort: # split into character list and sort by:

      {  # bare block lambda with implicit parameter $_

        A.index( $_ ) # get the position

        //  # if it is undefined (not in `A`)
           # return Inf instead (so it comes at end of result)
      }
}

যেহেতু ইনপুটটিতে কেবল 26 টি আলাদা অক্ষর থাকবে এবং এটি 3 বাইট tes তাই আপনি এটি 27 দিয়ে প্রতিস্থাপন করতে পারেন এবং এটি এখনও কাজ করবে এবং একটি বাইট সংরক্ষণ করবে।
পাভেল

6

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

-6 বাইট বিশাল লাইকোনি ধন্যবাদ ।

foldr(\c->r(==c)<>r(/=c))
r=filter

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

প্রথম লাইনটি একটি অভিব্যক্তি যা দুটি আর্গুমেন্ট গ্রহণ করে: এস এবং


1
নিস! এমনকি আপনি বাদ দিতে পারেন f=কারণ বেনাম ফাংশন অনুমোদিত।
লাইকনি

1
অধিকন্তু (<>)এখন প্রিলেডে রয়েছে, সুতরাং এটি foldr(\c->r(==c)<>r(/=c))34 বাইটের জন্য সংক্ষিপ্ত করা যেতে পারে : অনলাইনে চেষ্টা করে দেখুন!
লাইকনি

6

স্ট্যাক্স , 6 বাইট

{xrINo

এটি চালান এবং এটি ডিবাগ করুন

এটি করে এমন একটি ব্লকের দ্বারা এটি বাছাই করে।

  • বর্ণমালা বিপরীত।
  • বিপরীত বর্ণমালায় প্রতিটি অক্ষরের সূচক পান। অনুপস্থিত -১।
  • সূচকে নেগেট করুন।

5

পাইথন 2 , 38 বাইট

def f(a,s):s.sort(None,a[::-1].find,1)

একটি একটি স্ট্রিং হতে হবে, গুলি দৈর্ঘ্য 1. স্ট্রিং একটি তালিকা প্রকারের গুলি জায়গায়।

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

বিকল্প সংস্করণ, স্ট্রিং I / O, 48 বাইট

lambda a,s:`sorted(s,None,a[::-1].find,1)`[2::5]

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

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

s.sort(None,a[::-1],1)জন্য সাধারণভাবে সংক্ষেপে হয় s.sort(cmp=None,key=a[::-1],reverse=1)

দস্তাবেজগুলি থেকে :

বিপরীত একটি বুলিয়ান মান। যদি সেট করা থাকে True, তারপরে তালিকার উপাদানগুলি সাজানো হয় যেন প্রতিটি তুলনা বিপরীত হয়।


টিআইএল বাছাই 4 টি আর্গুমেন্ট নিতে পারে।
পাভেল

পাইথন ২. পাইথন 3 অবহিত cmpএবং তৈরি keyএবং reverseকীওয়ার্ড-কেবল আর্গুমেন্ট, সুতরাং এটির list.sortজন্য কেবলমাত্র একটি স্থিতিক যুক্তি লাগে ।
ডেনিস

4

জে , 5 বাইট

]/:i.

ডায়াডিক ক্রিয়া, তার বামে বর্ণমালা গ্রহণ এবং ডানদিকে স্ট্রিংয়ের জন্য স্ট্রিং।

i. বর্ণমালায় স্ট্রিং এর চরিত্রগুলির অশ্লীলতা খুঁজে পাওয়া যায়, যদি পাওয়া না যায় তবে বর্ণমালার দৈর্ঘ্য।

   'axd' i. 'haxuizzxaxduxha'
3 0 1 3 3 3 3 1 0 1 2 3 1 3 0

/: ডানদিকে নির্দিষ্ট করা অর্ডার অনুসারে এর বাম জমি বাছাই করে।

] অনড় যুক্তি (স্ট্রিং)

  'haxuizzxaxduxha' /: 3 0 1 3 3 3 3 1 0 1 2 3 1 3 0
aaaxxxxdhuizzuh

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


4

পাইথন 2 , 35 50 বাইট

lambda a,s:sorted(s,key=lambda c:-a[::-1].find(c))

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

নেয় aএবংs স্ট্রিং হিসেবে; singelton স্ট্রিংয়ের একটি তালিকা ফেরত দেয়।

দ্রষ্টব্য: অচ! ঠিক করতে 15 বাইট পেয়েছে ...


হা! এটি আসলে আমার উত্তরের জন্য আমার মূল কোডের মতোই । দুর্দান্ত মন একসাথে ভাবেন
জো কিং

1
@ জো কিং: আমার চিন্তাভাবনা নিয়ন্ত্রণ করা বন্ধ করুন! :)
চ্যাস ব্রাউন

4

কে (এনএনজি / কে) , 9 বাইট

{y@>-x?y}

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

{... }তর্ক xএবং একটি ফাংশনy

x?yyএর প্রথম উপস্থিতির সূচকে প্রতিটি উপাদান সন্ধান করে x; যদি কোনও উপাদান খুঁজে পাওয়া যায় না x, তবে এর সূচকে বিবেচনা করা হবে 0N(-2 63) )

-এটি 0Nসূচি অক্ষুণ্ন রাখে ব্যতীত সমস্ত সূচকে এড়িয়ে চলে , কারণ 2 63 ≡-2 63 (Mod 2 64 )

> একটি সাজানোর-অবতরণ অনুমানের ফেরত দেয়

y@yযে সূচকগুলি


3

কাঠকয়লা , 13 বাইট

Fθ×ι№ηιΦη¬№θι

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

 θ              First input
F               Loop over characters
     η          Second input
      ι         Current character
    №           Count matches
   ι            Current character
  ×             Repeat
                Implicitly print
        η       Second input
       Φ        Filter
           θ    First input
            ι   Current character
          №     Count matches
         ¬      Logical not
                Implicitly print non-matching characters

3

জেলি , 4 বাইট

fⱮ;ḟ

একটি ডায়াডিক লিঙ্ক ডানদিকে স্ট্রিং এবং ডানদিকে বর্ণমালা গ্রহণ করে (অক্ষরের তালিকা হিসাবে) এবং ফলাফলটি (অক্ষরের তালিকা হিসাবেও) প্রত্যাবর্তন করে।

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

কিভাবে?

fⱮ;ḟ - Link: string; alphabet                                    e.g. smallnotxl; xl
 Ɱ   - map (for each character in the alphabet):                      1=x; 2=l
f    -   filter keep (keep occurrences of this character from string)   x    lll -> xlll
   ḟ - filter discard (discard all alphabet characters from string)   smanot
  ;  - concatenate                                                    xlllsmanot

3

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

[string,ordering]যুক্তি হিসাবে গ্রহণ করে বেনামে টাসিট উপসর্গ ফাংশন ।

⍋⍨/⌷⊃

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

/ নিম্নলিখিত ফাংশন দ্বারা হ্রাস করুন:

  …  যথা নীচের ফাংশনের বিপরীত-যুক্তি সংস্করণ:

   বাম ক্রম অনুসারে ডান স্ট্রিং গ্রেড করুন (অনুপস্থিত অক্ষরগুলি শেষে যায়)

 ইনডেক্সে এটি ব্যবহার করুন ...

 আর্গুমেন্টের প্রথম উপাদান (যেমন স্ট্রিং)


3

জাভাস্ক্রিপ্ট (স্পাইডারমনকি), 50 বাইট

সিনট্যাক্স কারি করার ক্ষেত্রে ইনপুট নেয় (a)(s), যেখানে a একটি স্ট্রিং এবং গুলি হ'ল অক্ষরের অ্যারে। একটি অক্ষরের অ্যারে প্রদান করে।

a=>s=>s.sort((b,c)=>(g=c=>-1/a.search(c))(b)-g(c))

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

কিভাবে?

আমরা সহায়ক ফাংশন g () এরূপ হিসাবে সংজ্ঞা দিই :

c => -1 / a.search(c)

যা প্রত্যাবর্তন করে:

  • 1 যদি বর্ণমালা অন্তর্গত নয়
  • বর্ণমালায় সি এর অবস্থানের উপর ভিত্তি করে [-Inf, 0) এ একটি ভাসমান মান (-আইএনএফ, -1, -1/2, -1/3, ইত্যাদি)

আমরা ধরণের [] গুলি কম্পিউটিং দ্বারা ছ (গ) - ছ (খ) অক্ষরের প্রতিটি জোড়া জন্য (খ গ) এর কলব্যাক প্রেরণ () সাজানোর

যেহেতু স্পাইডারমোনকিতে সাজানো () এর প্রয়োগ স্থিতিশীল, তাই বর্ণগুলির সাথে সম্পর্কিত নয় এমন সমস্ত [গুলি] অক্ষরের উপস্থিতি অনুসারে কেবল সরানো হয় এবং একে অপরের সাথে তুলনা করা হলে অপরিবর্তিত রাখা হয় let


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

সিনট্যাক্স কারি করার ক্ষেত্রে ইনপুট নেয় (a)(s), যেখানে a এবং s উভয় অক্ষরের অ্যারে হয়। একটি স্ট্রিং প্রদান করে।

a=>s=>a.map(C=>s=s.filter(c=>c!=C||!(o+=c)),o='')&&o+s.join``

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


3

আর , 69 62 58 বাইট

function(a,s)c(rep(a,rowSums(outer(a,s,"=="))),s[!s%in%a])

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

ইনপুট এবং আউটপুট পৃথক অক্ষরের ভেক্টর।

ব্যাখ্যা:

function(a,s)c(                              ,           ) #combine:
                   a,                                      #[each char in a
               rep(                                        #each repeated
                     rowSums(               )              #the number of
                             outer(a,s,"==")               #occurrence in s]
                                              s            #with s
                                               [ s%in%a]   #all chars in a
                                                !          #omitted

3

ব্রেন-ফ্লাক (ব্রেনহ্যাক) , 118 বাইট

{({}(<>))<>}{}<>{<>([[]()]<{<>(({})<({}<>[({}<>)]){(<()>)}{}{}>)<>}<>({}<{({}<>)<>}<>>)>[]){({}()<(({}))>)}{}{}<>{}}<>

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

ইনপুট হল প্রথম স্ট্রিং, নুলের পরে এবং দ্বিতীয় স্ট্রিংয়ের পরে। একটি সংস্করণ যা পৃথক হিসাবে একটি নতুনলাইন ব্যবহার করে তার পরিবর্তে 24 বাইট যুক্ত করে:

মস্তিষ্ক-বিমানবিধ্বংসী কামান , 142 বাইট

(()){{}(({}(<>))[(()()()()()){}]<>)}{}<>{<>([[]()]<{<>(({})<({}<>[({}<>)]){(<()>)}{}{}>)<>}<>({}<{({}<>)<>}<>>)>[]){({}()<(({}))>)}{}{}<>{}}<>

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

ব্যাখ্যা

# Move A to other stack reversed
# Zeroes are pushed under each character for later.
# (This is the only part that needs to change in order to use newline as separator.)
{({}(<>))<>}{}<>

# For each character in A, starting at the end:
{

  # Track current length of S.
  <>([[]()]<

    # For each character in S:
    {

      # While keeping character from A
      <>(({})<

        # Move character from S to second stack and push difference
        ({}<>[({}<>)])

        # Delete character if equal
        {(<()>)}{}{}

      >)

    <>}

    # Move S back to first stack while maintaining character from A
    <>({}<{({}<>)<>}<>>)

  # Push difference between old and new lengths of S
  >[])

  # Insert character from A at beginning of S that many times
  {({}()<(({}))>)}{}{}

<>{}}<>

2

সি (জিসিসি) , 97 বাইট

f(D,d,S,s,i,o)char*D,*S;{
  while(d--){
    for(i=o=s;i--;)S[i]-D[d]?S[--o]=S[i]:0;
    while(o--)S[o]=D[d];
  }
}

উপরের কোডের সমস্ত সাদা স্থান (স্পেস এবং নিউলাইন) কেবল পঠনযোগ্যতার জন্য এবং এগুলি সরানো উচিত।

অভিধানটি পাস হয়েছে Dএবং তার দৈর্ঘ্য রয়েছে d, স্ট্রিংটি পাস হয়ে গেছে Sএবং এর দৈর্ঘ্য রয়েছে siএবং oবাদ দেওয়া উচিত।

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


2

পাইথ ,  9  5 বাইট

ox+vz

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

অক্স + ভিজেড সম্পূর্ণ প্রোগ্রাম। ইনপুট ফর্ম্যাট: "এস" \ n "এ"।
o এর দ্বারা অক্ষর বাছাই করুন (ভেরিয়েবল: এন) ...
 এক্স ... এন এর সূচি এতে ...
  + ভিজেড ... এ + এন

2

জাভা 8, 98 বাইট

a->s->{for(int i=a.length;i-->0;s=s.replaceAll("[^"+a[i]+"]","")+s.replaceAll(a[i],""));return s;}

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

ব্যাখ্যা:

a->s->{       // Method with String-array and String parameters, and String return-type
  for(int i=a.length;i-->0;
              //  Loop backwards over the alphabet
    s=        //   Replace the current `s` with:
      s.replaceAll("[^"+a[i]+"]","") 
              //    All the current characters of `a` in `s`
      +s.replaceAll(a[i],""));
              //    Concatted with everything else
  return s;}  //  Return the modified `s`

এমনকি জাভা 11 এর নতুন String.repeat(int)পদ্ধতিতেও নীচে যেতে পারা যায় না । নিস! :)
অলিভিয়ার গ্রাগোয়ার

@ অলিভিয়ারগ্রোওয়েরে ওহ, জাভা 11-এর প্রাথমিক অ্যাক্সেস ইতিমধ্যে উপলব্ধ ছিল না। যে .repeat(n)সৌন্দর্য প্রতিশ্রুতি, যদিও। : ডি
কেভিন ক্রুইজসেন

2

পার্ল 5 সঙ্গে -pF, 43 বাইট

$_=<>;print$F[0]x s/@{[shift@F]}//g while@F

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


এমন কোনও পতাকা নেই যা আপনাকে $_=<>;বিনামূল্যে দেয় ?
পাভেল

@ পাভেল হ্যাঁ, দুঃখিত আমি এটি জনবহুল করতে ব্যবহার করছি @F, তবে আমি এটি শিরোনামে যোগ করিনি! আমি এখন এটি করব! ধন্যবাদ!
ডোম হেস্টিংস

আপনি এটি থেকে 10 বাইট কেটে ফেলতে পারেন এবং এখনও একই যুক্তিটি ব্যবহার করতে পারেন: এটি অনলাইনে চেষ্টা করুন!
এক্সকালি





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