स्वैप करें, हटाएं और दोहराएं


24

परिचय

आइए निम्नलिखित स्ट्रिंग देखें:

ABCDEFGHIJKLMNOP

यदि हम स्ट्रिंग के सिरों को स्वैप करते हैं, जो ये हैं:

ABCDEFGHIJKLMNOP
^^            ^^

हमें निम्न परिणाम मिलते हैं:

BACDEFGHIJKLMNPO

उसके बाद, हम स्ट्रिंग के सिरों को हटाते हैं, जो इस मामले में हैं Bऔर O। परिणाम है:

ACDEFGHIJKLMNP

यदि हम इस प्रक्रिया को दोहराते हैं, तो हमें निम्नलिखित सूची मिलती है:

N     Result

2     ADEFGHIJKLMP
3     AEFGHIJKLP
4     AFGHIJKP
5     AGHIJP
6     AHIP
7     AP

आप देख सकते हैं कि N = 5 के लिए , परिणाम है AGHIJP। पर एन = 7 , स्ट्रिंग की लंबाई से छोटी है 3 तो एन> 7 माना जाता है, अमान्य इस मामले में।

काम

कम से कम लंबाई 4 और दोहराव एन की संख्या के साथ एक स्ट्रिंग एस को देखते हुए , अंतिम परिणाम आउटपुट। आप मान सकते हैं कि N हमेशा मान्य है

परीक्षण के मामलों

Input                               >  Output

N = 3, S = ABCDEFGHIJKLMNOP         >  AEFGHIJKLP
N = 1, S = Hello                    >  Hlo
N = 2, S = 123321                   >  11

यह , इसलिए कम से कम बाइट्स जीत के साथ जमा करना! सादगी के लिए, आप मान सकते हैं कि स्ट्रिंग में केवल अल्फ़ान्यूमेरिक वर्ण होंगे।


प्रश्न: क्या 'गिनती के चरित्र के समान कुछ के साथ एन को लेना ठीक है ? उदाहरण के लिए ''123321:?
दावको


@ अदनान यूनिरी प्रारूप का उपयोग किया जा सकता है N, लेकिन क्या यह एक उद्धरण के साथ एक स्ट्रिंग हो सकता है? मेरा मतलब है, N=3लेने के लिए '111'(के विपरीत 111)
लुइस मेंडो

@LuisMendo हाँ, आप इसका उपयोग कर सकते हैं
अदनान

यह मुझे ऐसा लगता है जैसे हम 1 को छोड़ देते हैं और N को हटा देते हैं - क्या यह एक उत्तर के रूप में अनुमत है या कोड को हटाने और दोहराने के लिए स्वैप करने की आवश्यकता है?
एलेक्स कार्लसन

जवाबों:


5

MATL , 8 9 12 13 बाइट्स

th"P[]2(

इनपुट्स हैं: पहले Nउद्धरण के साथ एक यूनी स्ट्रिंग के रूप में (चुनौती द्वारा अनुमत); Sउद्धरण के साथ एक स्ट्रिंग के रूप में दूसरा (स्ट्रिंग में उद्धरण डिफ़ॉल्ट रूप से अनुमत हैं); एक लाइनब्रेक द्वारा अलग किया गया।

यह स्ट्रिंग को फ़्लिप करके, इसके दूसरे तत्व को हटाकर, और कुल 2*Nबार दोहराता है।

इसे ऑनलाइन आज़माएं!

th       % implicitly take first input (N) as a unary string. Concatenate horizontally
         % with itself: gives a string of 2*N ones
"        % for each (i.e., repeat 2*N times)
  P      %   flip string. Take S implicitly as input the first time
  []     %   empty array (used as new contents)
  2      %   2 (used as index)
  (      %   assign [] to position 2 of string; that is, remove second element
         % implicitly end for each
         % implicitly display

स्पष्टीकरण? : P
Addison Crump

@VoteToClose ज़रूर :-) मुझे दौड़ना था। मैंने अभी इसे जोड़ा है
लुइस मेंडो

18

रेटिना , 44 20 बाइट्स

पार किया 44 अभी भी नियमित है 44 :(

+`'(\w).(.*).\B
$1$2

निम्नलिखित प्रारूप में इनपुट मानता है (एकात्मक - गिनती वर्ण में '):
{number of repeats}{string}
उदाहरण के लिए: '''''''ABCDEFGHIJKLMNOP
दोहराव और स्ट्रिंग की संख्या के बीच कोई स्थान नहीं है।

24 बाइट्स से शेविंग करने के लिए धन्यवाद @ मार्टिनबटनर !

इसे ऑनलाइन आज़माएं!



@ मार्टिनबटनर अहा! तो यह आपका मनोवैज्ञानिक मास्टरप्लान था: p
अदनान

9
@ अदनान Ad \ _ (ツ) _ /
Martin

44 को पार करने पर ऐसा लगता है कि 11 पार कर गए ...
कोकोआ


9

गणितज्ञ, 29 बाइट्स

मेरा पहला जवाब!

#~Delete~{{2},{-2}}&~Nest~##&

ब्रैकेटलेस मैथमेटिका का क्रूस! फ़ंक्शन इनपुट एक सूची (वर्णों की, या जो भी हो) और एक संख्या है।


1
PPCG में आपका स्वागत है! : डी नाइस पहला जवाब।
एडिसन क्रम्प

9

भूलभुलैया , 40 बाइट्स

<
,,}:?
.
;("   {(={}{".
,",;=};} }) "{@

इनपुट Nस्ट्रिंग द्वारा पीछा किया जाता है, किसी भी गैर-संख्यात्मक चरित्र द्वारा अलग किया जाता है।

इसे ऑनलाइन आज़माएं!

यह Sp3000 के साथ मिलकर लिखा गया था (जिसका अर्थ है कि मुझे एक एल्गोरिथ्म का पता लगाने के लिए परेशान नहीं किया जा सकता है, इसलिए उन्होंने इस पर काम करना शुरू कर दिया, 118 बाइट समाधान के साथ आया लेकिन इसे गोल्फिंग से परेशान नहीं किया जा सकता था, इसलिए मैंने गोल्फ किया। .. टीम वर्क के लिए याय)।

व्याख्या

सपा के सामान्य प्राइमर (हमेशा की तरह थोड़ा संशोधित):

  • भूलभुलैया एक स्टैक-आधारित 2 डी भाषा है, जिसमें दो ढेर हैं, मुख्य और सहायक। बहुत कुछ सब कुछ मुख्य स्टैक पर होता है, लेकिन आप मूल्यों को दूसरे पर शिफ्ट कर सकते हैं, जैसे कि उन्हें उल्टा करना या बाद में उन्हें सहेजना।
  • ढेर नीचे और शून्य से भरे होते हैं, इसलिए खाली स्टैक से पॉपिंग करना कोई त्रुटि नहीं है।
  • निष्पादन पहले वैध चरित्र (यहां शीर्ष बाएं) से शुरू होता है। प्रत्येक जंक्शन पर, जहां निर्देश सूचक (आईपी) के लिए दो या अधिक संभावित रास्ते हैं, आगे जाने के लिए यह निर्धारित करने के लिए स्टैक के शीर्ष की जाँच की जाती है। नेगेटिव लेफ्ट है, जीरो आगे है और पॉजिटिव राइट है। एक ओर जहां यह किया गया था मतलब घुमावदार, twisty मार्ग की तरह कोड देखो बनाने के लिए, वहाँ "कमरे" जहाँ इन शर्तों के हर सेल में जाँच कर रहे हैं करने से रोक रहा है कुछ भी नहीं है। वे काफी अप्रत्याशित व्यवहार पैदा कर सकते हैं, लेकिन गोल्फ के लिए महान हैं।
  • स्रोत कोड (और इसलिए भूलभुलैया के लेआउट) को रनटाइम पर संशोधित किया जा सकता है, <>^vजिसमें एक चक्र या स्तंभ या ग्रिड को स्थानांतरित किया जाता है।
  • " ऑप्स नहीं हैं।

ये रहा।

कोड पर शुरू होता है <, जो कि एक गोल्फ चाल है जिसे मैंने रैखिक कोड के लंबे टुकड़े के साथ शुरू करते समय कुछ बार उपयोग किया है। यह पहली पंक्ति को चक्रवात से बाईं ओर बदलता है, उस पर आईपी के साथ , इसलिए स्रोत फिर इस तरह दिखता है:

              <
,,}:?
.
;("   {(={}{".
,",;=};} }) "{@

लेकिन अब आईपी कहीं भी स्थानांतरित नहीं हो सकता है, इसलिए यह <फिर से निष्पादित करता है । यह तब तक जारी रहता है जब तक हम इस अवस्था तक नहीं पहुँच जाते:

    <
,,}:?
.
;("   {(={}{".
,",;=};} }) "{@

इस बिंदु पर, आईपी सेल छोड़ सकता है और दूसरी लाइन को शुरू करना शुरू कर सकता है ?। तो यहाँ रैखिक कोड टूट गया है:

?   # Read the first integer on STDIN, i.e. N.
:}  # Duplicate it and move one copy over to the auxiliary stack.
,   # Read the separator character.
,.  # Read the first character of the input string and directly print it.

आईपी ​​अब इस 3x2 कमरे में प्रवेश करता है, जो वास्तव में दो कसकर संकुचित (अतिव्यापी) 2x2 दक्षिणावर्त छोरों है। पहला लूप N-1STDIN के वर्णों को पढ़ता है और उनकी व्याख्या करता है।

;   # Discard the top of the stack. On the first iteration, this is the
    # separator we've already read. On subsequent iterations this will be
    # one of the N-1 characters from the input string.
(   # Decrement N. If this hits zero, we leave the loop, otherwise we continue.
,   # Read the next character from STDIN to be discarded.

अब हम दूसरे लूप में प्रवेश करते हैं जो इनपुट स्ट्रिंग के शेष भाग को पढ़ता है। हम ईओएफ का पता लगा सकते हैं क्योंकि उस मामले में ,वापस आ जाएगा -1, जिससे आईपी मोड़ बचेगा।

,   # Read a character. Exit the loop if EOF.
(   # Decrement it.

यह कमी वास्तव में उपयोगी नहीं है, लेकिन हम इसे बाद में मुफ्त में पूर्ववत कर सकते हैं और यहां यह हमें दो छोरों को ओवरलैप करने की अनुमति देता है।

यदि हम 5 ABCDEFGHIJKLMNOPइनपुट को एक उदाहरण के रूप में लेते हैं , तो स्टैक इस तरह दिखता है:

Main [ ... 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' -1  |  5 ... ] Auxiliary

ध्यान दें कि ये वास्तव में इनपुट वर्णों के अनुरूप हैं FGHIJKLMNOP(क्योंकि हमने उन्हें डिक्रिप्ट किया है), और यह कि हम वास्तव में उनमें से पहला प्रिंट नहीं करना चाहते हैं (हम केवल N-1वर्णों को छोड़ चुके हैं, लेकिन छोड़ना चाहते हैं N)।

अब एक छोटी रैखिक बिट है जो अगले लूप के लिए स्टैक तैयार करती है:

;   # Discard the -1.
=   # Swap the tops of the stacks, i.e. N with the last character. 
    # By putting the last character on the auxiliary stack, we ensure that
    # it doesn't get discarded in the next loop.
}   # Move N over to the auxiliary stack as well.

स्टैक अब जैसे दिखते हैं:

Main [ ... 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N'  |  5 'O' ... ] Auxiliary

हम एक और 2x2 दक्षिणावर्त लूप दर्ज करते हैं। यह Nमुख्य पात्र से शीर्ष वर्णों को निकालता है:

;   # Discard the top of the main stack.
{   # Pull N over from the auxiliary stack.
(   # Decrement it. It it's 0 we leave the loop.
}   # Push N back to the auxiliary stack.

जब हम बाहर निकलते हैं तो लूप =स्वैप होता है 0और इनपुट स्ट्रिंग के अंतिम वर्ण को फिर से। अब स्टैक इस तरह दिखते हैं:

Main [ ... 'E' 'F' 'G' 'H' 'I' 'O'  |  ... ] Auxiliary

हम मुख्य स्टैक की सामग्री को प्रिंट करना चाहते हैं (नीचे के तत्व को छोड़कर और सभी 1 से बढ़े हुए), बाईं ओर से । इसका मतलब है कि हमें इसे सहायक स्टैक पर लाने की आवश्यकता है। यही अगले 2x2 (दक्षिणावर्त) लूप करता है:

{   # Pull an element over from the auxiliary stack. This is necessary so we
    # have a 0 on top of the stack when entering the loop, to prevent the IP
    # from turning right immediately.
}   # Move the top of the main stack back to the auxiliary stack. If this was the
    # bottom of the stack, exit the loop.
)   # Increment the current character.
}   # Move it over to the auxiliary stack.

ढेर अब:

Main [ ...  |  'F' 'G' 'H' 'I' 'J' 'P] ... ] Auxiliary

हम उनमें से पहले को स्थानांतरित करते हैं (एक जिसे हम प्रिंट नहीं करना चाहते हैं) मुख्य स्टैक के साथ वापस आ जाते हैं {। और अब हम अंतिम 2x2 ( वामावर्त ) लूप में प्रवेश करते हैं, जो बाकी प्रिंट करता है:

{   # Pull another character over from the auxiliary stack. Exit the loop
    # if that's the zero at the bottom of the stack.
.   # Print the character.

अंत में हम के साथ कार्यक्रम समाप्त करते हैं @


6

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

(s,n)=>s[0]+s.slice(++n,-n)+s.slice(-1)

पता चलता है कि मैंने @ Sp3000 के उत्तर को फिर से बहाल किया है।


6

जेली, 8 बाइट्स

Ḣ1¦UðḤ}¡

इसे ऑनलाइन आज़माएं!

यह काम किस प्रकार करता है

Ḣ1¦UðḤ}¡  Main link. Left input: S (string). Right input: N (deletions)

Ḣ         Pop the first element of S.
          This return the element and modifies S.
 1¦       Apply the result to the first index.
          This replaces the first character of the popped S with the popped char.
   U      Upend/reverse the resulting string.
    ð     Convert the preceding chain into a (dyadic) link.
     Ḥ}   Apply double to the right input.
          This yields 2N.
       ¡  Repeat the link 2N times.

5

जेली , 10 बाइट्स

Ḣ;ṪjḊṖ$Ɠ¡F

एसटीडीआईएन के माध्यम से नंबर इनपुट करें, और कमांड लाइन के माध्यम से स्ट्रिंग । बहुत सारे संकेत के लिए @ डेनिस को धन्यवाद / काम करने के लिए इसे प्राप्त करने में मदद (जेली अभी भी मुझे हटाती है)।

इसे ऑनलाइन आज़माएं!

Ḣ;Ṫ               Pop first and last chars of string and concatenate
   j              Join by...
       Ɠ¡           Execute n times...
    ḊṖ$               Drop first, drop last of string ($ combines the two monadically)
         F        Flatten to filter out empty lists, since Jelly's j is weird

ईमानदार सवाल, 10 बाइट कैसे काम करती हैं? क्या यह UTF-8 में नहीं है (और क्या यह कम से कम 16 बाइट्स नहीं होना चाहिए क्योंकि ḢṪḊṖƓ¡सभी 1 बाइट से अधिक का उपयोग कर रहे हैं) या क्या आप पठनीयता के लिए किसी प्रकार के वर्ण कोड तालिका का उपयोग करते हैं?
स्वचालित

1
@AutomatedChaos उत्तरार्द्ध :) (उस लिंक पर क्लिक करें जहां "बाइट्स" शब्द हेडर में है)। जेली एपीएल जैसी भाषाओं के लिए एक कस्टम कोड पेज का उपयोग करता है।
Sp3000


4

विटसी, 12 9 (कोड) + 1 (फ़ंक्शन घोषणा के लिए नई रेखा ) = 10 बाइट्स

\ O /

संख्या के बाद स्ट्रिंग के रूप में स्टैक पर इनपुट की उम्मीद है।

2*\[vXvr]
2*         Multiply by 2.
  \[    ]  Do the stuff in the brackets that many times. (input num * 2)
    v      Take the top item off the stack and save it as a local variable.
     X     Remove the top item of the stack.
      v    Push the temporary variable back onto the stack.
       r   Reverse the stack.

जिसे आप कॉल कर सकते हैं:

'String' r <number> 1m Z
2*\[vXvr]

यह एक फ़ंक्शन है जो स्टैक पर परिणामी स्ट्रिंग को छोड़ देता है। मैंने इसे TryItOnline लिंक में एक प्रोग्राम के रूप में प्रदान किया है।

TryItOnline!


@ अदनान फिक्स्ड - यह मुझे पाइथ के बहुत करीब है। डी:
एडिसन क्रम्प

लेकिन फिर भी एक बाइट आगे: डी
अदनान

@ अदनान क्या मैं यह कहकर दूर जा सकता हूं कि यह इनपुट के बजाय स्टैक पर वस्तुओं की अपेक्षा करता है? या कि एक नहीं है?
एडिसन क्रम्प

मुझे यकीन नहीं है कि इसके लिए नीति क्या है, लेकिन अगर आप पहले से ही स्टैक पर मौजूद वस्तुओं के बारे में एक मेटा पोस्ट पा सकते हैं, तो यह ठीक है :)
अदनान

@ अदनान उन चीजों के बारे में एक मेटा पोस्ट है जो पहले से ही ब्रेनफैक जैसी भाषाओं के लिए टेप पर हैं। मैं इसके बारे में मेटा में पूछूंगा (क्योंकि यह वास्तव में विटी के लिए सुपर महत्वपूर्ण है: डी)
एडिसन क्रम्प

4

पायथन 2, 49 48 बाइट्स

g=lambda s,n:n and g(s[0]+s[2:-2]+s[-1],n-1)or s

Testcases के साथ यहाँ की कोशिश करो!

सरल पुनरावर्ती समाधान। इनपुट स्ट्रिंग से दूसरा और अंतिम दूसरा तत्व निकालता है और खुद को इसके साथ और n-1जब तक कहता है n=0

संपादित करें: थोड़े बेवकूफ लग रहा है, अन्य अजगर समाधान को देख रहा है । मुझे लगता है कि मैं बहुत अधिक पुनरावृत्ति की तरह ...


4

सी, 96 बाइट्स

i;main(c,v,p)char**v,*p;{i=atoi(v[2])+1;c=strlen(p=v[1]);printf("%c%.*s%s",*p,c-2*i,p+i,p+c-1);}

Ungolfed

i; /* Param 2, the number of chars to remove */

main(c,v,p)char**v,*p;
{
    i=atoi(v[2])+1; /* convert param 2 to integer */
    c=strlen(p=v[1]); /* Length of the input */
    printf("%c%.*s%s",*p, /* Print the first char... */
        c-2*i, /* a number of characters equal to the length minus twice the input... */
        p+i, /* skip the "removed" chars... */
        p+c-1); /* Print the last character of the string */
}

3

रूबी, 29 बाइट्स

->s,n{s[0]+s[n+1...~n]+s[-1]}

बहुत सीधा है।

~Sp के जवाब से चुराया गया ट्रिक , जो बाइट को बचाता है s[n+1..-2-n]। (यह काम करता है क्योंकि ~nहै -1-ntwo's-पूरक में, और उसके बाद ...एक विशेष श्रृंखला है।)


3

पर्ल, 36 32 + 1 = 33 बाइट्स

for$i(1..<>){s;\B.(.+).(.);$1$2;}

-pध्वज की आवश्यकता होती है और अंत में पुनरावृत्तियों की संख्या के साथ दो लाइनों पर इनपुट लिया जाता है:

$ perl -pe'for$i(1..<>){s;\B.(.+).(.);$1$2;}' <<< $'ABCDEFGHIJKLMNOP\n4'
AFGHIJKP

Ungolfed?

for $i ( 1..<> ) {
  s;
  \B.(.+).(.);$1$2;x
}

3

CJam, 12 बाइट्स

q~{VW@)t(t}*

इसे ऑनलाइन आज़माएं!

यह काम किस प्रकार करता है

q~            Read and evaluate all input. This pushes S (string) and N (integer).
  {       }*  Do the following N times:
   VW           Push 0 and -1.
     @          Rotate S on top of them.
      )         Pop the last character of S.
       t        Set the item at index -1 to that character.
        (       Pop the first character of S.
         t      Set the item at index 0 to that character.


3

जंग, 135 बाइट्स

खैर, यह एक बहुत भयानक लंबाई है।

fn f(s:&str,n:usize)->String{let s=s.as_bytes();s[..1].iter().chain(&s[n+1..s.len()-n-1]).chain(s.last()).map(|d|*d as char).collect()}

सुंदर मुद्रित:

fn f(s: &str, n: usize) -> String {
    let s = s.as_bytes();
    s[..1].iter()
          .chain(&s[n+1..s.len()-n-1])
          .chain(s.last())
          .map(|d| *d as char)
          .collect()
}

यदि हम उचित तारों के बजाय बाइटस्ट्रेस की अनुमति देते हैं, तो आप इसे 104 बाइट्स तक ले सकते हैं।

fn f(s:&[u8],n:usize)->Vec<u8>{let mut r=vec![s[0]];r.extend(&s[n+1..s.len()-n-1]);r.extend(s.last());r}

सुंदर मुद्रित:

fn f(s: &[u8], n: usize) -> Vec<u8> {
    let mut r = vec![s[0]];
    r.extend(&s[n+1..s.len()-n-1]);
    r.extend(s.last());
    r
 }

उत्सुक अगर कोई बेहतर कर सकता है।


3

एमएसएल - 137 बाइट्स

c {
%l = $len($1)
return $mid($+($mid($1,2,1),$left($1,1),$right($left($1,-2),-2),$right($1,1),$mid($1,$calc(%l -1),1)),2,$calc(%l -2))
}

स्पष्टीकरण:

%l = $len($1) इनपुट स्ट्रिंग की लंबाई प्राप्त करेगा और इसे l नामक वेरिएबल में सेव करेगा

$right(<input>,<length>) तथा $left(<input>,<length> मूल स्ट्रिंग के बाएं या दाएं अधिकांश भाग को सम्मानपूर्वक वापस करने के लिए उपयोग किया जा सकता है। $ बाएं हमेशा बहुत बाईं ओर से शुरू होने वाले पाठ को वापस करते हैं जबकि $ हमेशा हमेशा दाईं ओर से पाठ शुरू करते हैं। यदि निर्दिष्ट की गई लंबाई एक ऋणात्मक संख्या है, तो $ बाईं और $ दाईं ओर संपूर्ण पाठ ऋण देता है जो कि उनके संबंधित पक्षों के कई वर्ण हैं।

$mid(<string>,<start>,[length])स्ट्रिंग के मध्य से एक विकल्प प्राप्त करने के लिए उपयोग किया जाता है। प्रारंभ बाईं ओर से सबस्ट्रिंग की शुरुआत है। एक नकारात्मक मान दाईं ओर से प्रारंभ होने का संकेत देता है। दोनों ही स्थिति में, एक वैकल्पिक लंबाई निर्दिष्ट की जा सकती है। एक नकारात्मक लंबाई का उपयोग अंत से कई पात्रों को हटाने के लिए किया जा सकता है। इसलिए मैंने इसे इनपुट स्ट्रिंग की लंबाई का उपयोग करके दूसरे वर्ण और दूसरे अंतिम चरित्र को पुनः प्राप्त करने के लिए उपयोग किया।

$calc(<input>) गणितीय गणना करने के लिए उपयोग किया जाता है


1
PPCG में आपका स्वागत है! आमतौर पर कुछ एनोटेशन या अपने कोड के स्पष्टीकरण को जोड़ना एक अच्छा विचार है।
Zach गेट्स

@ZachGates धन्यवाद! अगली बार के लिए यह याद रहेगा!
डेनी

2

अभी तक बिना शीर्षक वाली भाषा (इतनी नई अप्रतिस्पर्धी), 9 बाइट्स

hD_RQ:Q|J

आप यहां सोर्स कोड पा सकते हैं , भाषा पूरी तरह से अस्थिर है (इसके लिए पहली परीक्षा चुनौती) इसलिए भविष्य में इसके काम करने की उम्मीद न करें (7)

यह एक स्टैक पर आधारित भाषा है, जो स्टैक से ऑब्जेक्ट्स को जोड़ने और हटाने वाले कार्यों के साथ है। वर्तमान में 2 स्टैक मैनिपुलेशन कमांड हैं: D(स्टैक एन के शीर्ष को दोहराएं) औरR (स्टैक पर शीर्ष एन आइटम को घुमाएं)

स्पष्टीकरण:

          - autoassign Q = eval_or_not(input()) (string)
h         - imp_eval_input()+1
 D        - duplicate(^)
  _       - neg(^)
   R      - rotate(^)
    Q:    - Q[^:^]
      Q|  - Q[0], Q[-1]
        J - "".join(all)

2

CJam, 14 बाइट्स

l(o)\l~_W*@<>o

इसका परीक्षण यहां करें।

व्याख्या

l   e# Read the input string.
(o  e# Pull off the first character and print it.
)\  e# Pull off the last character and swap with the rest of the string.
l~  e# Read the second line of the input and evaluate it (N).
_   e# Duplicate.
W*  e# Multiply by -1 to get -N.
@   e# Pull up the string.
<   e# Discard the last N characters.
>   e# Discard the first N characters.
o   e# Output what's left. The last character of the input is now still on the
    e# stack and is automatically printed at the end of the program.

2

विम, 27 बाइट्स

o0lxehx <ESC>"ay0ddA@a<ESC>B"bdWx@b

इनपुट STRING Nपहली पंक्ति में फॉर्म में होने की उम्मीद है जिसमें कोई अन्य वर्ण नहीं है।

स्पष्टीकरण:

#Write a macro to do one round of the swap and delete and save to register a
o0lxehx <ESC>"ay0dd

#Append register a to N and save in register B so it will run @a N times.
A@a<ESC>B"bdWx

# Actually run the macro
@b

2

ब्रेनफक, 130 बाइट्स

मेरी पहली पीपीसीजी प्रविष्टि!

जाहिर है जीत नहीं है, लेकिन हे।

इनपुट की तरह लेता है: 4ABCDEFGHIJKL, पहला चरित्र एन के साथ।

,>+++++++[<------->-]<+>>+[>,]<[<]>-<<[>>>[<+>-]>[<+>-]<<[>>+<<-]>[>]<[>+<-]<[>+<-]>>[<<+>>-]<[-]<[<]>[-]>[[<+>-]>]<<[<]<<-]>>>[.>]

इस अद्भुत साइट पर इसका परीक्षण करें

N से सीमित या 9 के बराबर, क्योंकि दो अंकों की संख्या बट में दर्द है।

संपादित करें: मैंने इसे चूसा और दो अंकों की संख्या के लिए समर्थन जोड़ा। एकल अंकों के लिए एक शून्य के साथ पैड।

,>+++++++[<------->-]<+ [>++++++++++<-]>[<+>-],>+++++++[<------->-]<+ [<+>-]>+[>,]<[<]>-<<[>>>[<+>-]>[<+>-]<<[>>+<<-]>[>]<[>+<-]<[>+<-]>>[<<+>>-]<[-]<[<]>[-]>[[<+>-]>]<<[<]<<-]>>>[.>]

PPCG में आपका स्वागत है! यह एक बहुत अच्छा पहला जवाब है! :)
अदनान

@AndN धन्यवाद! मैं थोड़ी देर के लिए एक चुनौती की तलाश में था, जो बीएफ में यथोचित रूप से आसानी से हल हो सके, जो मेरी नई पसंदीदा भाषाओं में से एक है: डी
वासिलेस्कुर

2

पर्ल, 27 बाइट्स

के लिए +1 शामिल करें -p

ऐसे दोड़ो perl -p sdr.pl

एसटीडीआईएन पर दिया गया इनपुट, पहली पंक्ति स्ट्रिंग, दूसरी पंक्ति गिनती मान लेता है कि स्ट्रिंग में केवल "शब्द" अक्षर हैं

sdr.pl:

eval's%\B.(.*).\B%$1%;'x<>

1

PHP, 60 बाइट्स

यह सॉल्यूशन इनपुट के स्ट्रिंग से इंडेक्स द्वारा खाली स्ट्रिंग में कैरेक्टर सेट करता है। मैं एक लंबे समय को रोकने के लिए सीधे इनपुट स्ट्रिंग में हेरफेर कर रहा हूं return

function(&$w,$i){for(;$i;)$w[$i--]=$w[strlen($w)-$i-2]="";};

मूल रूप से स्मृति में $wऐसा होने पर दिखता है:

Addr 0 1 2 3 4
     H   l   o
     ^   ^   ^
>Result: Hlo

इस तरह से चलाएं:

php -r '$f = function(&$w,$i){for(;$i;)$w[$i--]=$w[strlen($w)-$i-2]="";}; $f($argv[1],$argv[2]);echo"$argv[1]\n";' Hello 1

PHP 4.1 (50 बाइट्स) <?for(;$I;)$W[$I--]=$W[strlen($W)-$I-2]="";echo$W;:। यह उम्मीद है कुंजी पर मान Wऔर Iपोस्ट / प्राप्त / कुकी से अधिक, ... एक उदाहरणhttp://example.com/a.php?W=MyString&I=5
इस्माइल मिगुएल

1
हाँ, मैं उन उत्तरों को नहीं चाहता, जिनकी register globalsअब आवश्यकता है । हालांकि सुझाव के लिए Thx :)
23

1

पाइलोंस , 16 बाइट्स।

i:At,{\,v\,v,A}c

यह काम किस प्रकार करता है:

i    # Get command line input.
:At  # Set A equal to the top of the stack.
,    # Pop the stack.
{    # Start a for loop.
 \   # Swap the top two elements of the stack.
  ,  # Pop the stack.
   v # Reverse the stack.
 \   # Swap the top two elements of the stack.
  ,  # Pop the stack.
   v # Reverse the stack.
 ,   # Switch to loop iterations.
 A   # Iterate A times.
}    # End the for loop.
c    # Print the stack as a string

1

सीजेएम, 15 बाइट्स

r(\)\{(;);}ri*\

मुझे यकीन है कि यह आगे गोल्फ के लिए संभव है ...



1

गंभीरता से, 17 बाइट्स

,#,`p@pXod@dXq`nΣ

के रूप में इनपुट लेता है s \n n

इसे ऑनलाइन आज़माएं!

स्पष्टीकरण:

,#,`p@pXod@dXq`nΣ
,#                 push a list of characters in s
  ,`          `n   do the following n times:
    p@pXo          pop 2 characters off the front, discard the second, put the first back
         d@dXq     pop 2 characters off the back, discard the second, put the first back
                Σ  join

1

सी #, 129 बाइट्स

चूंकि हम मूल रूप से 1 को छोड़ते हैं और एन और उलट परिदृश्य को हटाते हैं

string o(string i,int n){var s=i.ToList();int x=0;while(x<2){s.RemoveRange(1,n);s.Reverse();x++;}return new string(s.ToArray());}

ungolfed

string o(string i, int n)
{
    var s = i.ToList();
    int x = 0;
    while (x < 2) //Repeat the following twice
    {
        s.RemoveRange(1, n); //remove n at index 1
        s.Reverse(); //Reverse the list
        x++;
    }
    return new string(s.ToArray());
}

Wóuld यह पाशन के लिए उपयोग करके स्क्रिप्ट की लंबाई को कम करना संभव है: (int x = 0xi <2; i ++) के लिए
t-clausen.dk

1

जावा, 144 बाइट्स

static String y(int i,String s){return i==0?s:y(i-1,new StringBuffer(s).replace(1,2,"").replace(s.length()-3,s.length()-2,"").toString());}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.