अपने साथ एक स्ट्रिंग रखें!


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में केवल लोअरकेस अल्फ़ान्यूमेरिक वर्ण और स्थान होंगे
  • यह बाइट्स जीत में इतना छोटा कोड है !

क्या मेरे संपादन आपके मूल विचार से मेल खाते हैं?
लेजिओनमाला 978

ठीक लगता है, मुझे आशा है कि लोग यह समझेंगे कि हर दौर में वे हर दौर में वर्णों की जगह एक एन्क्रिप्टेड स्ट्रिंग को एन्क्रिप्ट करते हैं। उदाहरण इसे स्पष्ट करते हैं, इसलिए मुझे लगता है कि वे करेंगे।
थॉमस डब्ल्यू

जवाबों:



9

टीस्क्रिप्ट , 17 बाइट्स 19 21 24

TeaScript गोल्फिंग के लिए जावास्क्रिप्ट है

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

जावास्क्रिप्ट ईएस 6, 69 बाइट्स

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


3
आप F=अपनी बाइट गिनती में छोड़ सकते हैं ।
य्प्निपन

@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

k2 - 17 चार

1 तर्क ले रहा है।

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

k2 अंतर्निहित कहा जाता है _ssrके लिए एस tring एस earch और आर eplace। _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

PHP, 76 बाइट्स

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

यहाँ ungolfed संस्करण है:

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 बाइट बचाने के लिए @RandyC को धन्यवाद।

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लैंबडाबोट के "प्वाइंटलेस" प्लगइन का उपयोग करके अभिव्यक्ति प्राप्त की गई थी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.