(এ [ল (টি [ই (র) এন] ই) এস] টি) একটি স্ট্রিং!


36

অল্টারনেস্টিং হ'ল স্ট্রিং নেওয়া এবং এটিকে বিকল্প ব্র্যাকেটে বাসা বাঁধার কাজ। আপনি কীভাবে একটি স্ট্রিং বিকল্প করে তা এখানে ।

  • দৈর্ঘ্যের এন এর স্ট্রিংয়ের জন্য , কেন্দ্র এন অক্ষরগুলি নিয়ে যান এবং তাদের প্রথম বন্ধনীতে ঘিরে রাখুন। সুতরাং যদি আমাদের স্ট্রিংটি Hello world!(12 টি অক্ষর) হত তবে আমরা শেষ করব

    (Hello world!)
    
  • তারপরে, অবশিষ্ট কেন্দ্রের n-2অক্ষরগুলি ধরুন এবং তাদের বর্গাকার বন্ধনীতে ঘিরে ফেলুন। এই ক্ষেত্রে, কেন্দ্রের 10 টি অক্ষর রয়েছে ello world, সুতরাং পরবর্তী পুনরাবৃত্তিটি হ'ল:

    (H[ello world]!)
    
  • যতদিন সেখানে চেয়ে বেশি দুই স্ট্রিং এর মাঝখানে বাম অক্ষর, গত দুই ধাপ পুনরাবৃত্তি, পর্যায়ক্রমে ()এবং []। এখানে শেষ পদক্ষেপগুলি রয়েছে:

    (Hello world!)
    (H[ello world]!)
    (H[e(llo worl)d]!)
    (H[e(l[l(o[ w]o)r]l)d]!)
    

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

    (H[e(l[l(o[ w]o)r]l)d]!)
    

    মাঝারি বন্ধনীগুলিতে কীভাবে দুটি অক্ষর রয়েছে তা লক্ষ্য করুন। ইনপুট একটি দৈর্ঘ্য হয় যখন এটি ঘটে। যদি ইনপুটটি একটি বিজোড় দৈর্ঘ্য হত (উদাহরণস্বরূপ, Hello, world!একটি কমা যোগ করা সহ), আমাদের মাঝখানে কেবল একটি অক্ষর থাকবে:

    (H[e(l[l(o[,( )w]o)r]l)d]!)
    

আজকের চ্যালেঞ্জের জন্য, আপনাকে অবশ্যই এমন একটি প্রোগ্রাম বা ফাংশন লিখতে হবে যা স্ট্রিংটিকে ইনপুট হিসাবে গ্রহণ করবে এবং নতুন স্ট্রিং আউটপুট তৈরি করে এটিকে বিকল্প পরিবর্তন করবে। আপনি যে কোনও যুক্তিসঙ্গত বিন্যাসে পছন্দ করতে ইনপুট এবং আউটপুট নিতে পারেন। ইনপুটটি সর্বদা কমপক্ষে একটি অক্ষর দীর্ঘ হবে এবং এতে কেবল প্রিন্টযোগ্য ASCII থাকবে। আপনি ধরেও নিতে পারেন যে ইনপুটটিতে কোনও প্রথম বন্ধনী বা বর্গাকার বন্ধনী থাকবে না । Traditionalতিহ্যবাহী ভাষার জন্য, এটি খুব বেশি গুরুত্বপূর্ণ নয়, তবে এটি কিছু গুরূত্বপূর্ণ ভাষার পক্ষে এটি আরও সহজ করে তুলতে পারে।

যথারীতি এটি একটি প্রতিযোগিতা, তাই আপনার পছন্দের ভাষায় সবচেয়ে সংক্ষিপ্ততম উত্তর দেওয়ার চেষ্টা করুন। আনন্দ কর!

পরীক্ষা IO

#Input                      #Output

"Alternesting is fun!"  --> (A[l(t[e(r[n(e[s(t[in]g) ]i)s] )f]u)n]!)
"PPCG"                  --> (P[PC]G)
"Code-golf"             --> (C[o(d[e(-)g]o)l]f)
"4 8 15 16 23 42"       --> (4[ (8[ (1[5( [1]6) ]2)3] )4]2)
"a"                     --> (a)
"ab"                    --> (ab)
"abc"                   --> (a[b]c)


আমরা কি সর্বদা বন্ধনী ( ()) দিয়ে শুরু করতে পারি বা বন্ধনী ( []) দিয়ে শুরু করতে পারি ?
সম্পূর্ণরূপে

@ টোটালিহুমান এটি সর্বদা প্রথম বন্ধনী দিয়ে শুরু করা উচিত()
ডিজেএমসিএমহেম

প্রস্তাবিত testcase: HelloWorld
এরিক আউটগলফার

এছাড়াও, পিছনের স্থানগুলিও কি অনুমোদিত?
এরিক আউটগলফার

উত্তর:



9

সি, 143 137 135 বাইট

i,l,k;f(char*s){for(k=i=0,l=strlen(s);*s;printf("%c%c","([])"[i++%2+2*(i>l/2+!k)],*s++))i>l/2-1&&l&1^1&&putchar(*s++,k=++l);puts(")");}

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

ব্যাখ্যা:

// Function (and variable) declaration.
i,l,k;f(char*s){

// Start the loop and initialize the variables. The loop terminates
// when the NUL-terminator of the string is reached.
for(k=i=0,l=strlen(s);*s;<this part saved for later>)

// Check if we have reached the middle of the string. Because of the
// short-circuiting of the conditions, we don't need to use an 'if'
// statement here; if a condition is false, no further conditions
// are evaluated.
i>l/2-1&&

// Equivalent to '!(l%2)', but one byte shorter. Checks if the length
// of the string is even.
l&1^1

// If we have reached the middle and the length of the string is even, 
// we'll need to skip one bracket, so we'll print the current character
// of the string and increment the pointer. Also we increment 'l' to
// avoid this getting done more than once, and give 'k' a non-zero
// value.
&&putchar(*s++,k=++l);

// The following is inside the 'increment' part of the 'for' loop.
// We print two characters. The first one is a bracket and the second
// one is the current character in the string.
printf("%c%c","([])"[i++%2+2*(i>l/2+!k)],*s++)

// The type of bracket is  chosen depending on the value of 'i'. A 
// character from the string "([])" is selected with the index 'i%2 + 2', 
// if we have reached the  middle of the string, and with index 'i%2', if
// we haven't.

// The exact part where this change happens depends on the parity of 
// the string length, so we use 'k' to signal if the length is even or 
// odd. If the length is odd, 'k==0', so '+!k' is the same as '+1'.  
// Otherwise 'k' is non-zero, so '+!k' is the same as '+0'.

// Output the final ')'.
puts(")");}

আমি যদি সিটিকে সঠিকভাবে মনে করি তবে বিশ্বব্যাপী ঘোষিত ভেরিয়েবলগুলি সূচনা করা হয় 0। সুতরাং, আপনার প্রয়োজন হবে না k=i=0,। আমার ভুলও হতে পারে. দেখুন এই তাই উত্তর
TAS

@ টাস আপনি প্রকৃতপক্ষে সঠিক, তবে ফাংশনগুলি বৈধ জমা দেওয়ার জন্য পুনরায় ব্যবহারযোগ্য হতে হবে, সুতরাং ফাংশনের ভিতরে ভেরিয়েবলগুলি আরম্ভ করা দরকার need
স্টেডিবক্স

7

রেটিনা , 52 বাইট

+`(?<!\()[^()]+(?!\))
($&)
(\(.)\(
$1[
r`\)(.\))
]$1

এটি অনলাইন চেষ্টা করুন! প্রথম পর্যায়ে প্রতিটি জোড় ইনপুট অক্ষরের মধ্যে জুটি বন্ধনী সন্নিবেশ করানো হয়, যখন দ্বিতীয় এবং তৃতীয় পর্যায়ে বিকল্প বন্ধনী বন্ধনীগুলিতে সংশোধন করা হয়।



6

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

f=([c,...s],i,l=s.pop())=>'[('[i^=1]+c+(s[0]?f(s,i)+l:l||'')+'])'[i]

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


5

ভি , 25 26 25 বাইট

1 2 বাইট অফ ডিজেএমসিএমহেমকে ধন্যবাদ জানায়

òC()Pé
%llòÍî
òF)%r[r];

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

@ Udioca এর কিছু ধার ধার নিয়েছে এছাড়াও অবশেষে একটি উত্তরের জন্য ভিতে অন্তর্ভুক্ত চারপাশের প্লাগইনটি ব্যবহার করেছে , যদিও এটি সবচেয়ে ভাল উপায় নাও হতে পারে, কে জানে। প্লাগইনটি ব্যবহার করতে চায় না।

Hexdump:

00000000: e3e1 0a6b f2e9 286c 6ce9 5b6c 6cf2 6af2  ...k..(ll.[ll.j.
00000010: e129 6868 e15d 6868 f2cd ce              .)hh.]hh...

ব্যাখ্যা:

-> |abcdefg      (the input, where | is the cursor)
ò              ' recursively
 C()           ' (C)hange from the cursor to the end of the line to '()'
-> (|)    (where | is the cursor)
     P         ' (P)aste the changed bit (what was there) left of the cursor
-> (abcdef|g)
      é        ' nsert a newline
-> (abcdef
   |g)
%              ' Goto the previous matching parenthese
-> |(abcdef
   g)
 ll            ' Move two characters right
-> (a|bcdef
   g)
   ò           ' End recursive loop (it will break on ll when there are no characters left
-> (a(b(c
   d)
   e)
   f)
    Íî         ' Remove all newlines
-> (a(b(cd)e)f|)
ò              ' Recursively
 F)            ' Go backwards to the next )
-> (a(b(cd)e|)f)
   %r[         ' Go to the matching paren and (r)eplace it with [
-> (a|[b(cd)e)f)
               ' Go back to the previous cursor location
-> (a[b(cd)e|)f)
       r]      ' (r)eplace this paren with ]
-> (a[b(cd)e|]f)
         ;     ' repeat F)
-> (a[b(cd|)e]f)
               ' implicitly end recursion

বাহ, ভাল কাজ! আমি 29 বাইটে আটকে গিয়েছিলাম তবে একগুচ্ছ প্রান্তের মামলাগুলি অনুপস্থিত। এটি একটি সুন্দর মিষ্টি উত্তর। অনলাইনে চেষ্টা করে দেখুন; শেষের পরিবর্তে আপনি একটি বাইট সংরক্ষণ করতে পারেন f) !
ডিজেএমসিএমহেম

স্পেসের কারণে এটি এখনই ভেঙে গেছে, আমি মুছে ফেলতে এবং ঠিক করতে যাচ্ছি
nmjcman101

@ ডিজেএমসিমেহেম আমি আপনার 29 বাইটটি দেখতে পাচ্ছি? যদি আপনি এটি আমার অধীনে গল্ফ করার এবং প্রতিযোগিতা করার পরিকল্পনা না করেন, যা সম্পর্কে আমি অবাক হব না :)
nmjcman101


:( অল্টারনেটিং করা ()এবং []বাইট খাটো হলেও উপায় কম শীতল
nmjcman101

5

হাস্কেল , 96 91 81 79 77 বাইট

(cycle"()[]"!)
(l:r:a)!k|[x]<-k=[l,x,r]|x:y<-k=l:x:a!init y++[last y,r]|2>1=k

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


1
আপনি পিতামাতাদের কাছাকাছি রেখে যেতে পারেন (x:y)এবং (init y)k==""=""হিসাবে খাটো হয় k==""=k
লাইকনি

1
cycle["()","[]"]মাত্র পরিবর্তন করে আরও কিছু বাইট সংরক্ষণ করুন "()[]": এটি অনলাইনে চেষ্টা করুন!
লাইকনি

@ লাইকনি দুর্দান্ত পরামর্শ, ধন্যবাদ
বার্তাভেল

1
রাখা ভাল যে পালন cycleএমনকি খাটো হয়। আপনি এখনও কাছাকাছি বন্ধনী অপসারণ করতে পারেন (init y)
লাইকনি

1
আপনি কেসটি k==""=kশেষ দিকে নিয়ে যেতে এবং এটিকে পরিবর্তন করতে পারেন 0<1=k
জাগারব


2

জাভাস্ক্রিপ্ট (ES6) 110 105 বাইট

আমাকে সম্পর্কে মনে করিয়ে দেওয়ার জন্য @ পাওয়েলসকে ধন্যবাদ x%y<1

ধন্যবাদ @ লুক এর জন্য a-b?y:x

i=>'('+[...i].map((a,b,c,d=i.length/2-1,e=b%2<1)=>a+(d>b?e?'[':'(':d-b?(d%1==0?!e:e)?')':']'):'').join``


এই জন্তুটিকে বোঝার প্রথম জিনিসটি এটির শৃঙ্খলাবদ্ধ is

function alternest(input) { //input is i in the original
  let inputArray = Array.from(input); //the [...i] section
  let result = inputArray.map((item, index, baseArray) => { //result is an added helper variable
    let middle = input.length / 2 - 1, //the middle of the string
        alternate = index % 2 == 0; //should you alternate from '(' and '[' or ')' and ']'

    let symbol; //the alternating symbol

    if(middle > index) { //if its opening braces
      symbol = alternate ? '[' : '(';
    } else if(middle < index) {
      if(middle % 1 === 0) //if middle is a whole number
        alternate = !alternate; //reverse alternate
      symbol = alternate ? ')' : ']';
    } else { //if middle === index
      symbol = ''; //there's no symbol in the center for even alternests
    }
    return item + symbol; //convert the array item into the item and symbol
  }).join('');

  return '(' + result; //add the first symbol.
}

প্রায় প্রতিটি লাইনই গল্ফযুক্ত সংস্করণের একটি অংশ, তাই এর মধ্য দিয়ে পদক্ষেপ নেওয়া:

লাইন 1: ফাংশন বিবৃতিটি একটি তীর ফাংশন হয়ে যায় , নাম পরিবর্তন inputকরে i। হয়ে যায় i=>

লাইন 2: Array.from একটি স্ট্রিংকে অ্যারে রূপান্তরিত করার নতুন, সঠিক উপায় এবং আমরা এই লাইনে কী ব্যবহার করি। তবে এটির পাশাপাশি, স্প্রেড অপারেটরটি এটি করার জন্য পুরানো .split('')পথের চেয়ে কম সস্তা উপায় , যা গল্ফযুক্ত সংস্করণে ব্যবহৃত হয়। হিসাবে শেষ হয় [...i]

লাইন 3: .map আপনাকে তিনটি যুক্তি দেয়: একটি অ্যারের মধ্য দিয়ে লুপ হয়: item( aগল্ফযুক্ত) index; হিসাবে গল্ফড bএবং baseArrayবা c। যদিও আমরা কেবল যত্ন নিই itemএবং indexরাখি baseArray(কেন জন্য লাইন 4 দেখুন)। গল্ফ থেকে .map((a,b,c,...)=>...

লাইন 4: গল্ফযুক্ত সংস্করণে চলক middle, বা আর্গুমেন্টটি dযখন পুনরাবৃত্তি হয় তখন কয়েকটি বাইট সংরক্ষণ করার জন্য তৈরি করা হয়। যুক্তি তৈরি করার cজন্য যুক্তি রাখতে dহয়েছিল। রূপান্তরিত হয় (...,d=i.length/2-1,...)

লাইন 5 : পরিবর্তনশীল alternate, বা আর্গুমেন্টটি e"(" বা "[" "বা এটি মধ্যবর্তী অতীতে থাকলে,") "এবং"] "কী অক্ষরে ছিল তা পরীক্ষা করতে ব্যবহৃত হয়। b%2<1সমান b%2==0কারণ এটি 1 এর চেয়ে কম কিছু হতে পারে না, তবে এই ক্ষেত্রে 0। সমান (...,e=b%2<1)

লাইন 6: একজন সাহায্যকারী পরিবর্তনশীল আমাকে রূপান্তর করার অনুমতি ternary operatorsকাছে ifবিবৃতি। আসল কোডগল্ফের কিছু নয়।

লাইনস 7-8 । সূচক স্ট্রিং এর মধ্যভাগ একজন আবর্তনে তার প্রতীক সেট কম "[" এবং "(" equates হয় তাহলে d>b?e?'[':'(':...

রেখাগুলি 9-12 : অন্যথায় (সূচকটি মাঝের চেয়ে বেশি হলে), যদি মাঝারিটি একটি সম্পূর্ণ সংখ্যা হয় কিনা তা পরীক্ষা করে দেখুন, যদি বিকল্পটি স্যুইচ করুন। তারপরে প্রতীকটি ')' এবং ']' এর বিকল্পে সেট করুন। অবরুদ্ধ (d%1==0?!e:e)?')':']'

লাইন 13-15 : যদি মাঝেরটিটি একটি খালি স্ট্রিংতে প্রতীকটি সেট করে। এটি বিজোড় বিকল্পগুলির ক্ষেত্রে প্রযোজ্য নয়, কারণ মাঝের দশমিক has হয়ে: d==b?'':...

লাইন 16 : অক্ষরে অ্যারেটিকে আবার স্ট্রিংয়ে যোগ দেয়। সমান .join``

লাইন 17 : ফিরে শুরু প্রতীক "(" এবং ফলাফল আশ্বাস যোগায়। '('+...


কিছু সাধারণ জয়ের জন্য আপনি পরিবর্তে ব্যবহার করতে %2==0পারেন %2<1এবং তার [...i]পরিবর্তে ব্যবহার করতে পারেনi.split
পাওয়েলস

1
ধন্যবাদ @ পাওয়েলস আমি সম্পূর্ণ গল্ফযুক্ত উত্তরের চেয়ে আরও একটি ব্যাখ্যা নিয়ে কাজ করছি, যাতে এটি এখনও সম্পাদনা করে না। আমি ইতিমধ্যে ছিল [..i] idea, কিন্তু আমি %2<1ধন্যবাদ সম্পর্কে ভুলে গেছি ।
ডেভিড আর্কিবাল্ড

b%2<1দ্বারা প্রতিস্থাপিত করা যেতে পারে!b%2
লুক

এছাড়াও, d==b?x:yহয়ে উঠতে পারে d-b?y:xএবং d%1==0হতে পারে !d%1
লুক

দুর্ভাগ্যক্রমে কারণ ক্রিয়াকলাপ ক্রম !d%1শুধুমাত্র প্রথম বন্ধনী নিয়ে কাজ করে: !(d%1)এবং এটি কোনও বাইট শেভ করে না। আমি ভুলে গিয়েছিলাম যে 0 কেবল একমাত্র মিথ্যা সংখ্যা, কোনও কারণে আমি ভেবেছিলাম -1 এই মিথ্যাবাদী নম্বর। আমি যদি দ্বিতীয়টি সম্পর্কে কিছু ভুল হয়ে থাকি তবে আমাকে সংশোধন করুন।
ডেভিড আর্কিবাল্ড

2

জেলি , 23 21 বাইট

LHĊRị
ç⁾)]żUFUż@ç⁾([$

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

LHĊRị           - helper function. Takes inputs of the input string and list of brace types
L                 - length of the input string
 HĊ               - number of parenthesis/brackets facing a single direction
   R              - range
    ị             - indexed into right argument: list of brace types ')]' or '(['

ç⁾)]żUFUż@ç⁾([$ - main function 
ç⁾)]              - get list of left-facing parentheses/brackets
    żU            - zip to the end (U) of the input string
      FU          - move the beginning of the string back to the beginning
        ż@        - zip with (to the start of the string):
          ç⁾([$   -the list of right-facing parentheses/brackets to the beginning

-২ বাইটস @ এরিকআউটগলফারকে ধন্যবাদ


আপনি একটি লাইন সরিয়ে, এবং -2 এর জন্য সহায়ক লিঙ্কে সরিয়ে নিতে পারেন:LHĊRị¶ç⁾)]żUFUż@ç⁾([$
এরিক আউটগলফার

1

এসসিএএলএ, 140 138 চর, 140 138 বাইট

আমি দুঃখিত আমি আরও ভাল করতে পারিনি ... আমি নিশ্চিত এটির উন্নতি করার অনেকগুলি উপায় রয়েছে। এখনও:

val n=s.length-1
var l=""
var r=""
for(i<-0 to n/2){l+=(if(i%2<1)"("else"[")
if(i!=n-i)l+=""+s(i)
r=""+s(n-i)+(if(i%2<1)")"else"]")+r}
l+r

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

এই চ্যালেঞ্জের জন্য ধন্যবাদ, এটি আমার পক্ষে বেশ কঠিন ছিল।

সম্পাদনা: -2 বাইট মার দেবকে ধন্যবাদ

PS: যদিও আমি কিছু জিজ্ঞাসা করব। আমি বুঝলাম, কেন এই কোড আমার স্ট্রিং এর কেন্দ্রীয় গৃহস্থালির কাজ অনুরূপ যদি আমি একটি বিজোড় দৈর্ঘ্য আছে রাখে (আমি শুধু চেক করুন এবং এটি দু 'বার যোগ করুন, উভয় না lএবং rস্ট্রিং)। কিন্তু কেন যখন আমি এটা পছন্দ সংশোধন চেষ্টা আমি প্রথম বন্ধনী একজোড়া পেতে পারি যে ? আমি কিছুতেই বুঝতে পারি না।


1
আপনি পরিবর্তন করতে পারেন i%2==0থেকে i%2<1দুই বাইট সংরক্ষণ করুন।
মারিও ইসহাক

1

পার্ল, 77 74 (73 + 1) বাইট

নিয়মিত প্রকাশগুলি গৌরবময় জিনিস। -pকমান্ড লাইন পতাকা দিয়ে চালান ।

$x=qr/[^]()[]/;$z=qr/(^|$x)\K($x+)($|$x)/;s/$z/[$2]$3/ while s/$z/($2)$3/

1

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

2ä`Rð«„)]Ig©×øRJ®Èƒ¦}s„([®×søJì

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

ব্যাখ্যা

ইনপুট জন্য উদাহরণ সহ: abcd/abcde

2ä`                              # split input to 2 separate parts on stack
                                 # RESULT: 'ab','cd' / 'abc', 'de'
   R                             # reverse the second part
    ð«                           # append a space
      „)]                        # push the string ")]"
         Ig©×                    # repeat it len(input) times
             ø                   # zip with the second part of the input string
              RJ                 # reverse and join to string
                                 # RESULT:  ' )c]d)' /  ' )d]e)'
                ®Èƒ¦}            # remove the first (1,2) chars for (odd,even) length input
                                 # RESULT: 'c]d)' / ')d]e)'
                     s           # swap the first part of the input string to top of stack
                      „([®×      # repeat the string "([" len(input) times
                           sø    # zip with first part of input string
                                 # RESULT: ['(a', '[b'] / ['(a', '[b', '(c']
                             Jì  # join to string and prepend to the second part

1

সি ++ ১৪, 154 145 বাইট

[রিকার্সিভ]

auto L(string i,bool b=1){int l=i.length();string o=b?"(":"[";auto c=b?")":"]";if(l<3)return o+i+c;return o+i[0]+L(i.substr(1,l-2),!b)+i[l-1]+c;}

সি ++ 14, 177 বাইট

[পুনরুক্তিকারী]

auto l(string s){int z=s.length();string r(z*2+z%2,'-');int i=0;for(;i<z;i+=2)r[i]=i/2%2?'[':'(',r[i+1]=s[i/2];for(i=z;i<2*z;i+=2)r[i]=s[i/2],r[i+1]=(i+1)/2%2?')':']';return r;}

0

পাইথ , 42 (!) বাইট

M?!lHH+@,\[\(G++hHg!GPtH+?qlH1keH@,\]\)Gg1

এটি অনলাইন পরীক্ষা! ইনপুট অবশ্যই উদ্ধৃত করা উচিত।

ব্যাখ্যা

M                                             # Define a function g with arguments G and H
 ?!lHH                                        # If len(H) == 0, return H. Otherwise...
      +@,\[\(G                                # Concatenate [ or ( to...
               +hHg!GPtH                      # ...to H[0] concatenated to g(not(G), H[1:-1]), itself concatenated...
              +          ?qlH1keH             # ...to H[-1] if len(H) != 1, otherwise to "" (that's for odd length input strings)...
                        +        @,\]\)G      # ...and to that concatenate ] or ).
                                        g1    # Call g(True, Q). Q is implicit input

সুতরাং মূলত আমি প্রথম বন্ধনী / বন্ধনীর সাথে যুক্ত হয়ে ক্রমান্বয়ে H এর মাথা এবং প্রান্তটি সরিয়ে ফেলছি (শুরুতে ইনপুট স্ট্রিং হচ্ছে)। জি কেবলমাত্র একটি বুলিয়ান যা মনে রাখে যদি আমার অবশ্যই বন্ধনী বা বন্ধনী ব্যবহার করা হয়।



0

পাওয়ারশেল, 125 119 111 বাইট

{param($s)for($p='()[]';($f,$s,$g=$s-split'(?<=.)(.+)(?=.)')[0]){$l+=$p[$i++]+$f;$r=$g+$p[$i++]+$r;$i%=4}$l+$r}

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

পূর্ববর্তী সংস্করণ*

{for($s="($args)";$s-ne($t=$s-replace'(\(.)([^][]+)(.\))','$1[$2]$3'-replace'(\[.)([^)(]+)(.\])','$1($2)$3')){$s=$t}$s}

* ধন্যবাদ ডিজিটাল ট্রমা।



0

এডাব্লুকে, 118 বাইট

{b=")";for(j=l=length(c=$0);j>0;){x=substr(c,j--,1);b=(j>l/2?(((d=!d)?"]":")")x):j==l/2?x:((d=!d)?"(":"[")x)b}print b}

গাওয়াকের সাথে পরীক্ষিত, তবে এটি যে কোনও আনুগত্য বিশিষ্ট অনুবাদকারীদের সাথে কাজ করা উচিত

$ awk -f alternesting.awk <<< 'abc'
(a[b]c)

0

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

কোনও বিজয়ী নয়, তবে replaceপদ্ধতির চেষ্টা করা আকর্ষণীয় ছিল । এটি অবশ্যই উন্নত হতে পারে, তবে এটি দ্রুত হাত থেকে সরে গেছে ...

s=>"("+s.replace(/./g,(a,b)=>a+(l%2|b*2+2!=l?")][("[3*(c=l>(b+=l%2-1)*2+2)+(b-c*l)%2]:""),l=s.length)

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