আমি পরিবর্তন পছন্দ করি না!


19

ইনপুট:

নিউলাইন বা সাদা স্থান ছাড়াই দুটি স্ট্রিং।

আউটপুট:

পৃথক লাইন উভয় ইনপুট স্ট্রিং, স্পেস যেখানে প্রয়োজন সঙ্গে দুটি স্ট্রিং একটির জন্য। এবং অক্ষর সঙ্গে একটি তৃতীয় লাইন A, R, Mএবং , প্রতিনিধিত্বমূলক যোগ , মুছে , পরিবর্তিতঅপরিবর্তিত

আমরা উপরের বা নীচের ইনপুট স্ট্রিংয়ে ফাঁকা স্থান যুক্ত করি (যদি আমাদের হয়)। এই চ্যালেঞ্জের লক্ষ্যটি হ'ল ARMসম্ভব কমপক্ষে পরিবর্তনের পরিমাণ ( ) আউটপুট করা , যা লেভেনস্টাইন দূরত্ব হিসাবেও পরিচিত ।

উদাহরণ:

ধরা যাক ইনপুট স্ট্রিংগুলি ABCDEFএবং AFBECDতারপরে আউটপুটটি এটি হবে:

A B CDEF
AFBECD  
 A A  RR

এখানে আরও কয়েকটি সম্ভাব্য অবৈধ আউটপুট উদাহরণ হিসাবে দেওয়া হয়েছে (এবং আরও অনেক কিছু রয়েছে):

ABCDEF
AFBECD
 MMMMM

A BCDEF
AFBECD 
 A MMMR

AB CDEF
AFBECD 
 MAMMMR

ABC DEF
AFBECD 
 MMAMMR

ABC  DEF
AFBECD  
 MMAA RR

ABCDEF 
AFB ECD
 MMR MA

 AB CDEF   // This doesn't make much sense,
AFBECD     // but it's to show leading spaces are also allowed
AM A  RR

এগুলির কোনওটিরই কেবল চারটি পরিবর্তন নেই, সুতরাং A B CDEF\nAFBECD \n A A RRএই চ্যালেঞ্জের জন্য কেবলমাত্র একটি বৈধ আউটপুট।

চ্যালেঞ্জ বিধি:

  • আপনি ধরে নিতে পারেন ইনপুট স্ট্রিংগুলিতে কোনও নতুন লাইন বা স্পেস থাকবে না।
  • দুটি ইনপুট স্ট্রিং বিভিন্ন দৈর্ঘ্যের হতে পারে।
  • দুটি ইনপুট স্ট্রিংগুলির মধ্যে একটিতে remainচ্ছিক অগ্রণী / পিছনের স্থানগুলি বাদে থাকা উচিত।
  • যদি আপনার ভাষাগুলি ASCII ছাড়াও কিছু সমর্থন করে না, আপনি ধরে নিতে পারেন ইনপুটটিতে কেবল প্রিন্টযোগ্য ASCII অক্ষর থাকবে।
  • ইনপুট এবং আউটপুট বিন্যাস নমনীয়। আপনার কাছে তিনটি পৃথক স্ট্রিংস, একটি স্ট্রিং অ্যারে, নতুন-লাইনগুলির সাথে একটি একক স্ট্রিং, 2 ডি অক্ষর অ্যারে ইত্যাদি থাকতে পারে
  • এর পরিবর্তে আপনাকে অন্য কিছু ব্যবহার করার অনুমতি দেওয়া হয়েছে ARMতবে আপনি কী ব্যবহার করেছেন তা উল্লেখ করুন (যেমন 123, বা abc., ইত্যাদি)
  • একই পরিমাণ পরিবর্তনের ( ARM) দ্বারা যদি একাধিক বৈধ আউটপুট সম্ভব হয় তবে আপনি সম্ভাব্য আউটপুটগুলির মধ্যে একটি বা তার সমস্ত আউটপুট আউটপুট দিতে চান তা চয়ন করতে পারেন।
  • শীর্ষস্থানীয় এবং পিছনের স্থানগুলি alচ্ছিক:

    A B CDEF
    AFBECD
     A A  RR
    

    অথবা

    "A B CDEF\nAFBECD\n A A  RR"
                     ^
                     Note there are no spaces here
    

সাধারণ নিয়ম:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার পক্ষে যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • স্ট্যান্ডার্ড নিয়মগুলি আপনার উত্তরের জন্য প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতিগুলি, সম্পূর্ণ প্রোগ্রামগুলির সাথে STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে আপনার কোডের জন্য একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন।
  • এছাড়াও, প্রয়োজনে একটি ব্যাখ্যা যোগ করুন।

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

In: "ABCDEF" & "AFBECD"

Output (4 changes):
A B CDEF
AFBECD  
 A A  RR                  

In: "This_is_an_example_text" & "This_is_a_test_as_example"

Possible output (13 changes):
This_is_an       _example_text
This_is_a_test_as_example     
         MAAAAAAA        RRRRR

In: "AaAaABBbBBcCcCc" & "abcABCabcABC"

Possible output (10 changes):
AaAaABBbBBcCcCc
 abcABCab cABC 
R MM  MMMR MM R

In: "intf(){longr=java.util.concurrent.ThreadLocalRandom.current().nextLong(10000000000L);returnr>0?r%2:2;}" & "intf(){intr=(int)(Math.random()*10);returnr>0?r%2:2;}"

Possible output (60 changes):
intf(){longr=java.util.concurrent.ThreadLocalRandom.current().nextLong(10000000000L);returnr>0?r%2:2;}
intf(){i ntr=(      i    n      t)(M  ath.r   andom        ()*         10          );returnr>0?r%2:2;}
       MR M  MRRRRRR RRRR RRRRRR MMMRR MMMMRRR     RRRRRRRR  MRRRRRRRRR  RRRRRRRRRR 

In: "ABCDEF" & "XABCDF"

Output (2 changes):
 ABCDEF
XABCD F 
A    R 

In: "abC" & "ABC"

Output (2 changes):
abC
ABC
MM 


যদি একই দূরত্বের একাধিক ব্যবস্থা থাকে তবে কেবলমাত্র সেগুলির মধ্যে একটিকে আউটপুট দেওয়া কি ঠিক হবে?
অ্যাডমবর্কবার্ক

@ অ্যাডমবার্কবার্ক হ্যাঁ, সম্ভাব্য আউটপুটগুলির মধ্যে একটি হ'ল প্রকৃত উদ্দেশ্য হ'ল আউটপুট (যদিও সমস্ত উপলভ্য বিকল্পগুলি আউটপুট আউট করাও ভাল)। আমি চ্যালেঞ্জের নিয়মে এটি পরিষ্কার করব।
কেভিন ক্রুইজসেন

@ আর্নল্ড আমি শীর্ষস্থানীয় স্থানগুলি সম্পর্কে নিয়মটি সরিয়ে ফেলেছি, সুতরাং নেতৃত্বাধীন এবং পিছনের স্থানগুলি modচ্ছিক এবং অপরিবর্তিত লাইনে বৈধ উভয়ই। (যার অর্থ আপনার উত্তরের শেষ পরীক্ষার মামলাটি সম্পূর্ণ বৈধ))
কেভিন ক্রুইজসেন

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

উত্তর:


5

হাস্কেল , 192 181 174 161 158 150 147 143 158 1 বাইট

e@(a:r)&f@(b:s)=snd$maximum[([1|' '<-s!!2],s)|s<-z(z(:))[a:" R",' ':b:"A",a:b:last("M":[" "|a==b])][r&f,e&s,r&s]]
x&y=[x,y,"RA"!!(0^length x)<$x++y]
z=zipWith

এটি অনলাইন চেষ্টা করুন! উদাহরণ ব্যবহার: "ABCDEF" & "AFBECD"। তিনটি স্ট্রিংয়ের একটি তালিকা ফেরত দেয়। এটি সাধারণ লেভেনস্টাইন দূরত্বের প্রশ্নের আমার পুনরাবৃত্ত সমাধানের একটি বর্ধিতাংশ ।

ব্যাখ্যা:

এর থেকে পেতে সর্বনিম্ন পরিবর্তনগুলি গণনা "xyz"করতে "yw", আমরা উভয় স্ট্রিংয়ের প্রথম চরিত্রের উপর ফোকাস করি। তিনটি সম্ভাবনা রয়েছে:

  • সরান:x প্রথম স্ট্রিং থেকে ড্রপ এবং পুনরাবৃত্তভাবে থেকে প্রাপ্ত পরিবর্তনগুলি গণনা করুন"yz" করতে "yw"। এটি তিনটি লাইন দেয় ["yz","yw"," M"]। যোগ xপ্রথমটি, দ্বিতীয়টি প্রয়োজন এবং একটি স্থান Rতৃতীয় এক। আমরা পেতে
    Xyz
    yw
    আরএম
  • যোগ করুন ড্রপ yদ্বিতীয় স্ট্রিং এবং Compute থেকে "xyz" & "w", যা ফলাফলের ফেরৎ["xyz","w","MRR"] । আমাদের প্রথম সারিতে yদ্বিতীয় এবং Aতৃতীয় লাইনে একটি স্থান যুক্ত করতে হবে:
     Xyz
    yw
    AMRR
  • সংশোধিত / অপরিবর্তিত: কারণ উভয় উভয় স্ট্রিং প্রথম অক্ষরটি ড্রপ এবং অবশিষ্ট স্ট্রিং মধ্যে ন্যূনতম পরিবর্তন গনা প্রয়োজন আমরা তাদের দুটি মামলা একত্রিত করতে পারেন: "yz" & "w"। ফলস্বরূপ ["yz","w","MR"], আমরা xপ্রথমে তিনি এবং yদ্বিতীয় লাইনে যুক্ত করি। কেবলমাত্র শেষ পংক্তির জন্য আমাদের প্রাথমিক অক্ষরগুলি একই কিনা তা আলাদা করতে হবে। যদি সেগুলি একই হয়, তৃতীয় লাইনে একটি স্থান যুক্ত করা হবে, অন্যথায় (এই ক্ষেত্রে কারণ x \= y) একটি যুক্ত Mকরা হয়েছে:
    Xyz
    yw
    এমএমআর

এই তিনটি প্রার্থীর কাছ থেকে আমাদের খুব কম সংশোধনকারী একটি খুঁজে নেওয়া দরকার। এটি তৃতীয় লাইনে সর্বাধিক স্থান থাকার সমতুল্য। অতএব আমরা প্রতিটি প্রার্থীকে s(তিনটি স্ট্রিংয়ের একটি তালিকা) একটি টুপলে রূপান্তর করি ([1|' '<-s!!2],s), যেখানে sদ্বিতীয় উপাদান হিসাবে উপস্থিত হয় এবং প্রথম উপাদানটি একটি তালিকার তৃতীয় লাইনে শূন্যস্থান রয়েছে এমন অনেক উপাদানগুলির সাথে তালিকা থাকে s( s!!2কারণ 0-ইনডেক্সিংয়ের কারণে)। যেহেতু তালিকার উপাদান 1ব্যবহার করা হয় তবে প্রকৃত উপাদান যতক্ষণ না এটি সমস্ত প্রার্থীর ক্ষেত্রে একই থাকে তত অপ্রাসঙ্গিক।

সামগ্রিকভাবে, এটি টিপলগুলির তালিকা দেয়

[([১], ["xyz", "yw", "আরএম"]), ([], ["xyz", "yw", "AMRR"]), ([]], "" xyz "," yw "," এমএমআর "])]
maximumবিল্ট -ইন এই তালিকার বৃহত্তম উপাদানটি নির্বাচন করে, যেখানে ডুপ্লিক্সকে অভিধানের তুলনা করা হয়, এটি বাম থেকে ডানে উপাদান অনুসারে থাকে। এর [1]চেয়ে বড় হিসাবে [], প্রথম টিপলটি নির্বাচিত হয় এবং sndদ্বিতীয়টির উপাদানটি প্রদান করে, এটি লাইনগুলির তালিকা, টিউপলের।


একটি বাগ ঠিক করতে 1 +15 বাইট যেখানে Aস্ট্রিংয়ের শেষে- Rপরিবর্তনগুলি-পরিবর্তন হিসাবে প্রদর্শিত হবে



8

জাভাস্ক্রিপ্ট (ES6), 413 ... 343 342 বাইট

@ কেভিন ক্রুইজসেনের পরামর্শ অনুসারে লুপ সূচকগুলি টুইট করে 5 বাইট সংরক্ষণ করা হয়েছে

বাক্য গঠন সিনট্যাক্সে 2 টি স্ট্রিং হিসাবে ইনপুট নেয়। 3 টি স্ট্রিংয়ের অ্যারে প্রদান করে।

b=>a=>{m=[];x=a.length;y=b.length;for(i=j=0,c=d='';i<=y;c+=R='R')m[i]=[[c,i++]];for(;j++<x;)m[i=0][j]=[d+=A='A',j];for(;i<y;i++)for(j=0;j<x;)[C]=m[[X,S]=m[i][j],[Y,I]=m[i+1][j],[Z,D]=m[i][++j],Q=[Z+R,D+1],i+1][j]=b[i]==a[j-1]?[X+' ',S]:S<I?D<S?Q:[X+'M',S+1]:D<I?Q:[Y+A,I+1];return[(g=s=>C.replace(/./g,c=>c==s?' ':b[i++],i=0))(A),g(R,b=a),C]}

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

কম গল্ফড

b => a => {
  m = []; x = a.length; y = b.length;

  // initialize the leftmost column and the topmost row
  for(i = j = 0, c = d = ''; i <= y; c += R = 'R')
    m[i] = [[c, i++]];
  for(; j++ < x;)
    m[i = 0][j] = [d += A = 'A', j];

  // walk through the Levenshtein matrix
  for(; i < y; i++)
    for(j = 0; j < x;)
      [C] = m[                                // C = current string, once updated
        [X, S] = m[i][j],                     // substitution
        [Y, I] = m[i + 1][j],                 // insertion
        [Z, D] = m[i][++j],                   // deletion
        Q = [Z + R, D + 1],                   // precomputed update for deletion
        i + 1
      ][j] =
        b[i] == a[j - 1] ?
          [X + ' ', S]                        // unchanged character
        :
          S < I ?
            D < S ? Q : [X + 'M', S + 1]      // deletion or substitution
          :
            D < I ? Q : [Y + A, I + 1];       // deletion or insertion

  return [
    // g = helper function to format the output strings by inserting spaces
    (g = s => C.replace(/./g, c => c == s ? ' ' : b[i++], i = 0))(A),
    g(R, b = a),

    // final modification string, picked from the last visited cell
    C
  ]
}

উদাহরণ

নীচে b = "foo" এবং a = "ঠিক আছে" এর জন্য প্রাথমিক ম্যাট্রিক্স রয়েছে :

//                     'o'           'k'
[ [ [ '',    0 ], [ 'A',   1 ], [ 'AA',  2 ] ],
  [ [ 'R',   1 ],  (undefined),  (undefined) ],  // 'f'
  [ [ 'RR',  2 ],  (undefined),  (undefined) ],  // 'o'
  [ [ 'RRR', 3 ],  (undefined),  (undefined) ] ] // 'o'

এবং এখানে সমস্ত পুনরাবৃত্তির পরে চূড়ান্ত ম্যাট্রিক্স:

//                     'o'           'k'
[ [ [ '',    0 ], [ 'A',   1 ], [ 'AA',  2 ] ],
  [ [ 'R',   1 ], [ 'M',   1 ], [ 'MA',  2 ] ],  // 'f'
  [ [ 'RR',  2 ], [ 'R ',  1 ], [ 'R A', 2 ] ],  // 'o'
  [ [ 'RRR', 3 ], [ 'RR ', 2 ], [ 'R M', 2 ] ] ] // 'o'

লেভেনস্টাইন দূরত্বের সাথে চূড়ান্ত পরিবর্তন স্ট্রিংটি নীচে-ডান কক্ষে সংরক্ষণ করা হয়।


একই পরিবর্তনটি আমি -1 / + 1 সম্পর্কিত 1 বাইট সংরক্ষণের পরামর্শ দিয়েছি jএবং এটি xএখনও আপনার সর্বশেষ সম্পাদনার ক্ষেত্রে প্রযোজ্য: b=>a=>{m=[];x=a.length;y=b.length+1;for(i=y;i--;)m[i]=[[i,'R'.repeat(i)]];for(j=x+1;j--;)m[i=0][j]=[j,'A'.repeat(j)];for(;++i<y;)for(j=-1;++j<x;)R=m[S=(X=m[i-1][j])[0],I=(Y=m[i][j])[0],D=(Z=m[i-1][j+1])[0],Q=[D+1,Z[1]+'R'],i][j+1]=b[i-1]==a[j]?[S,X[1]+' ']:S<I?D<S?Q:[S+1,X[1]+'M']:D<I?Q:[I+1,Y[1]+'A'];return[(g=s=>R[1].replace(/./g,c=>c==s?' ':b[i++],i=0))('A'),g('R',b=a),R[1]]}:)
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসেন আপনার ধারণাকে আরও একধাপ এগিয়ে নিয়ে আমি 5 বাইট সংরক্ষণ করেছি। ধন্যবাদ!
Arnauld

4

পাইথন 2 , 548 536 484 500 1 488 447 381 2 373 371 357 350 বাইট

s,t=input()
n,m=len(s),len(t)
r=range
L=[[(j,'RA'[i<1]*j)for j in r(i,m-~i)]for i in r(n+1)]
for i in r(n):
 for j in r(m):M,R=L[i][j:j+2];A=L[i+1][j];v,V=min(A,R,M);x=('AR'[v in R],'M_'[s[i]==t[j]])[v in M];_=M;X=eval(x)[1]+x;L[i+1][j+1]=v+(x<'_'),X
for i in r(len(X)):s=s[:i]+' '*('B'>X[i])+s[i:];t=t[:i]+' '*('R'==X[i])+t[i:]
print s+'\n'+t+'\n'+X

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

'ARM_'পরিবর্তে ব্যবহার করে'ARM '

লেভেনস্টাইন ম্যাট্রিক্স তৈরি করে এবং তারপরে ক্রিয়াকলাপটি সন্ধানের জন্য পিছনে পিছনে গিয়ে কাজ করে । এখন আর্নল্ডের জেএস উত্তরের মতো লেভেনস্টাইন ম্যাট্রিক্সের একই সাথে অপারেশন-স্ট্রিং তৈরি করে

1: আরও বাইটস, কারণ এটি প্রথম কাজ করে না যদি প্রথম স্ট্রিংটি একটি একক অক্ষর ছিল।

2: লেভেনস্টাইন ম্যাট্রিক্সে সংমিশ্রণগুলি তৈরি করতে স্যুইচ করা হয়েছে।


আমার প্রাথমিক (ব্যর্থ) প্রয়াসের মতো character টি চরিত্রের শব্দের জন্য
seconds০

চমৎকার উত্তর! আমার কাছ থেকে +1 যেহেতু পাইথনে আমি কখনই প্রোগ্রাম করি না আমি কেবল গল্ফিংয়ে আপনাকে সাহায্য করতে পারি না, একটি জিনিস বাদে: m+i+1হতে পারে m-~i
কেভিন ক্রুজসেন

আপনি লাইন
স্টিফেন

while i+j<n+m:v,A=(L[i]+[m,m])[j:j+2];R,M=(L[i+1]+[m,m])[j:j+2];d=min(A,R,M);q=M==d or(R==d)*2;r+=' '*(d==v==M)or'AMR'[q];i+=q>0;j+=q<2
ওয়াইল লুপকে

1

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

from difflib import*
a,b=input()
U,j=[],' '
for g,s,t,x,y in SequenceMatcher(0,a,b).get_opcodes():
	g,Y,T=g[0],y-x,t-s
	z,A,B=Y-T,a[s:t],b[x:y]
	if'q'<g:U+=[A+z*j,B+j*-z,'M'*min(T,Y)+'A'*z+'R'*-z]
	if'e'==g:U+=[A,B,j*Y]
	if'i'==g:U+=[j*Y,B,'A'*Y]
	if'e'>g:U+=[A,j*T,'R'*T]
for e in[0,1,2]:print''.join(U[e::3])

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

এটি ব্যবহার করে difflib.SequenceMatcherদুটি স্ট্রিংয়ের মধ্যে একটি প্রান্তিককরণ গণনা করা হয়


অন্যান্য পরীক্ষার ক্ষেত্রে এটির জন্য কিছু ভুল ফলাফল বলে মনে হচ্ছে। আরও বিশেষ:"This_is_an_example_text","This_is_a_test_as_example"
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন থেক্স, আমি কেবল এটিকে fixed _ ^
mdahmoune

ভাল, জিজে! তবে উমম .. তৃতীয় পরীক্ষার কেস (এবং চতুর্থটিও) দুর্ভাগ্যক্রমে ভুল। দুটি লাইনের একটি অপরিবর্তিত হওয়া উচিত (শীর্ষস্থানীয় / পিছনের স্থানগুলি ব্যতীত)। উভয় লাইনে বর্তমানে মাঝখানে ফাঁকা স্থান রয়েছে।
কেভিন ক্রুইজসেন

কেভিন ক্রুইজসেন থেক্স আবারও, আমি এটি ঠিক করে দিচ্ছি
এমডাহমূনে

1

গণিত, 250 256 259 384 বাইট

জাভা কোড কেসের জন্য seconds 0.00035 সেকেন্ড।

(i=o=p="";a=Array;r=StringLength;If[Length@#>0,g=#&@@#;h=#[[2]];u=r@g;v=r@h;i=i<>g;o=o<>h;w=Abs[v-u];k=a[" "&,w];If[u<v,i=i<>k,o=o<>k];p=p<>a["M"&,u~Min~v];p=p<>a[If[u>v,"R","A"]&,w],i=i<>#;o=o<>#;p=p<>a[" "&,r@#]]&/@SequenceAlignment[#,#2];{i,o,p})&

ব্যবহার: f["ABCDE", "ABCDF"]

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

কোডটি একটি সত্যের ভিত্তিতে যা SequenceAlignmentডিফল্টরূপে কাজ করে

ডিফল্ট সেটিং সিম্যারিটিআরুলস-> স্বয়ংক্রিয়র সাথে, দুটি উপাদানের মধ্যে প্রতিটি ম্যাচ মোট মিলের স্কোরের জন্য 1 অবদান রাখে, যখন প্রতিটি অমিল, সন্নিবেশ এবং মুছে ফেলা -1 অবদান রাখে।

যথা, স্কোরিং দ্বারা গণনা করা হয় M , Aএবং Rতদনুসারে।

উদাহরণ:

উদাহরণ


2
হুম, আমি ম্যাথমেটিকাতে কখনও প্রোগ্রাম করি নি, তবে 2 বাইট কমানোর জন্য পরিবর্তন i="";o="";p="";করা কি সম্ভব নয় i="";o=i;p=i;?
কেভিন ক্রুইজসেন

2
কি হবে i=o=p=""?
ডেভিডসি

@ ডেভিডসি হ্যাঁ আমি এটি বুঝতে পেরেছিলাম এবং এটি ইতিমধ্যে পরিবর্তন করেছি। যাইহোক আপনাকে ধন্যবাদ
কিয়ু গান

1

ডি , 351 345 বাইট

কেভিনক্রুজসনে -6 বাইট থেক্স

string f(string a,string b){import std.algorithm;string x,y,z;size_t i,j,k;foreach(c;levenshteinDistanceAndPath(a,b)[1]){final switch(c)with(EditOp){case none:x~=a[i++];y~=b[j++];z~=" ";break;case substitute:x~=a[i++];y~=b[j++];z~="M";break;case insert:x~=" ";y~=b[j++];z~="A";break;case remove:x~=a[i++];y~=" ";z~="R";}}return x~"\n"~y~"\n"~z;}

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


আপনি শেষটি সরিয়ে ছয়টি বাইট গল্ফ করতে পারেন break;। যদিও +1, আমি প্রথমবার প্রোগ্রামিংয়ের ভাষা ডি দেখতে পাচ্ছি ডি
কেভিন ক্রুইজসেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.