নিজের সাথে স্ট্রিং প্রতিস্থাপন করুন!


24

নিজের সাথে স্ট্রিং প্রতিস্থাপন করুন

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

প্রথম উদাহরণ:

Input: program
Output: apgopra

How:
Program -> mrogram (replace p by m in program)
-> mpogpam (replace r by p in mrogram)
-> mprgpam (replace o by r in mpogpam)
-> mpropam (replace g by o in mprgpam)
-> mpgopam (replace r by g in mpropam)
-> mpgoprm (replace a by r in mpgopam)
-> apgopra (replace m by a in mpgoprm)

দ্বিতীয় উদাহরণ:

Input: robot
Output: orbro

How:
Robot -> tobot (replace r by t in robot)
-> trbrt (replace o by r in tobot)
-> trort (replace b by o in trbrt)
-> trbrt (replace o by b in trort)
-> orbro (replace t by o in trbrt)

তৃতীয় উদাহরণ:

Input: x
Output: x

How:
x -> x (replace x by x in x)

চতুর্থ উদাহরণ:

Input: xy
Output: xx

How:
xy -> yy (replace x by y in xy)
-> xx (replace y by x in yy)

Sidenotes:

  • স্ট্রিংটিতে কেবল xছোট হাতের অক্ষর এবং স্পেস থাকবে
  • এটি তাই বাইট জেতে সংক্ষিপ্ততম কোড !

আমার সম্পাদনাগুলি কি আপনার মূল ধারণার সাথে মেলে?
LegionMammal978

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

উত্তর:



9

টিস্ক্রিপ্ট , 17 বাইট 19 21 24

চা স্ক্রিপ্টটি গল্ফ করার জন্য জাভাস্ক্রিপ্ট

xd(#lg(i,xC(1#a))

সুন্দর এবং সংক্ষিপ্ত

এটি অনলাইনে ব্যবহার করে দেখুন (ইনপুটটিতে শ্বেত স্থানটি অনুসরণ করার জন্য দেখুন)

অবহেলিত ও ব্যাখ্যা

x.reduce     // Reduce over input
  (#         // Anonymous function expands to ((l,i,a)=>
    l.g(        // global replace...
     i          // replace var i with...
     x.cycle(1) // Cycle x 1
     [a]        // At position a
    )
  )

7

জাভাস্ক্রিপ্ট ES6, 69 বাইট

s=>[...s].reduce((p,c,i)=>p.replace(RegExp(c,'g'),s.slice(i-1)[0]),s)


3
আপনি F=আপনার বাইট গণনা এড়িয়ে যেতে পারেন ।
Ypnypn

@Ypnypn ধন্যবাদ তারা কখনই জানেন না যখন তারা এই জিনিসগুলি নির্দিষ্ট করে না
জর্জ রিথ

s.slice(i-1)[0]সমান না s.slice(i-1,i)?
edc65

1
@ edc65 কখন নেইi=0
জর্জ রিথ

3

রুবি, 50 48 বাইট

->s{t=s.dup;t.size.times{|i|t.tr!s[i],s[i-1]};t}

টেস্ট:

f=->s{t=s.dup;t.size.times{|i|t.tr!s[i],s[i-1]};t}
f["program"]
=> "apgopra"

3

গণিত, 89 75 74 57 বাইট

""<>Fold[#/.#2&,c=Characters@#,Thread[c->RotateRight@c]]&

""<>Fold[#/.#2&,c=Characters@#,Thread[c->RotateRight@c]]&
আলেফাল্ফ

@ এলফাল্ফ ধন্যবাদ, আমি এটি চেষ্টা করে Transposeব্যর্থ হয়েছি ।
LegionMammal978


3

k2 - 17 চর

1 টি যুক্তি নিয়ে ফাংশন।

{_ssr/[x;x;-1!x]}

কে 2 এর একটি বিল্টিন রয়েছে _ssrযা এস ট্রাইং এস ইর্চ এবং আর এপিসেলের জন্য ডাকা হয়। _ssr[x;y;z]পাবেন yমধ্যে xএবং সঙ্গে এটি প্রতিস্থাপন z। সুতরাং আমরা /প্রতিটি প্রতিস্থাপন করতে চাইলে এই কার্যকারিতাটি ভাঁজ করতে ব্যবহার করি। ভাঁজ (যেমন ফাংশনাল প্রোগ্রামিং হিসাবে) সাথে অপরিচিত তাদের জন্য, মূলত _ssr/[x; (y1; y2; y3); (z1; z2; z3)]হয়ে ওঠে _ssr[_ssr[_ssr[x; y1; z1]; y2; z2]; y3; z3]। স্ট্রিংগুলি তাদের অক্ষরের তালিকাগুলি, তাই আমরা কেবল ইনপুটটি এক ধাপ পিছনে ঘোরানো এবং প্রতিস্থাপনগুলি পেতে এবং ঠিক ততক্ষণে প্লাগ করতে পারি।

  {_ssr/[x;x;-1!x]} "program"
"apgopra"
  {_ssr/[x;x;-1!x]} "robot"
"orbro"
  {_ssr/[x;x;-1!x]} (,"x")   / one-letter strings are ,"x" and parens are required
,"x"
  {_ssr/[x;x;-1!x]} "xy"
"xx"

2

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

[]#_=[];(x:y)#g@(a,b)|x==a=b:y#g|2>1=x:y#g;h x=foldl(#)x$zip x$last x:init x

খুব খারাপ, হাস্কেলের এমনকি বিল্ট-ইন প্রতিস্থাপনের কাজও নেই।


2

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

function($s){$f=str_split;echo str_replace($f($s),$f(substr($s,-1).$s),$s);}

নিখরচায় সংস্করণটি এখানে:

function selfSubstitute($originalString)
{
    $shiftedString = substr($originalString, -1) . $originalString;

    $splitOriginalString = str_split($originalString);
    $splitShiftedString = str_split($shiftedString);

    echo str_replace($splitOriginalString, $splitShiftedString, $originalString);
}

2

পাইথন, 67 64 62 57 বাইট

সোজা সমাধান, এটি সংক্ষিপ্ত করার জন্য কিছু অনুসন্ধান করবে। 5 বাইট সংরক্ষণ করার জন্য @ র্যান্ডিসিকে ধন্যবাদ

c=input()
for x in zip(c,c[-1]+c):c=c.replace(*x)
print c

ইনপুটটি উদ্ধৃতিতে হওয়া উচিত।


আপনি [:-1]জিপকে সংক্ষিপ্ততম পুনরাবৃত্তিতে বিচ্ছিন্ন করে কিছু বাইট সংরক্ষণ করতে পারেন ।
রেন্ডি

@ র্যান্ডিসি বাহ, ভাল কল! ধন্যবাদ।
কেড

1

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

r(x,y)c|x==c=y|0<1=c;f s=foldl(flip$map.r)s.zip s$last s:s

সুন্দর খ্রিস্টানের সমাধান, কিন্তু ব্যবহার অনুরূপ mapএবং যে zipঅতিরিক্ত উপাদানের উপেক্ষা করে যদি তালিকার অসম দৈর্ঘ্যের হয়। প্রতিস্থাপনের তালিকায় এটি ফোল্ড হয় (ফর্মের উপরে (from,to)), rপ্রতিটি অক্ষরে হাতের লিখিত প্রতিস্থাপনের ফাংশনটি ম্যাপিং করে স্ট্রিংটি আপডেট করে ।

flip$map.rলাম্বডবোটের "পয়েন্টলেস" প্লাগইন ব্যবহার করে এই অভিব্যক্তিটি নেওয়া হয়েছিল।

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