দৈর্ঘ্যের সমস্ত ব্রেস-স্ট্রিং উত্পন্ন করুন


16

একটি *()[]ধনুর্বন্ধনী স্ট্রিং এমন অক্ষর সমন্বিত একটি স্ট্রিং হিসাবে সংজ্ঞায়িত করা হয় যেখানে ব্রেসগুলি সঠিকভাবে মেলে:

[brace-string] ::= [unit] || [unit] [brace-string]
[unit]         ::= "" || "*" || "(" [brace-string] ")" || "[" [brace-string] "]"

এটি একটি বৈধ ব্রেস-স্ট্রিং:

((())***[]**)****[(())*]*

তবে এগুলি নয়:

)(
**(**[*](**)
**([*)]**

আপনার টাস্কটি এমন কোনও প্রোগ্রাম (বা ফাংশন) লিখতে হয় যা ইতিবাচক পূর্ণসংখ্যা দেওয়া হয় n, একটি সংখ্যা ইনপুট হিসাবে নেয় এবং দৈর্ঘ্যের সমস্ত বৈধ ব্রেস স্ট্রিংগুলি আউটপুট (বা প্রত্যাবর্তন) হিসাবে নেয় n

বিশেষ উল্লেখ

  • আপনি যে কোনও ক্রমে স্ট্রিংগুলি আউটপুট দিতে পারেন।
  • আপনি তালিকা বা স্ট্রিং হিসাবে আলাদা অক্ষর দ্বারা পৃথক আউটপুট করতে পারেন।
  • আপনার প্রোগ্রাম অবশ্যই 0 সঠিকভাবে পরিচালনা করতে হবে। দৈর্ঘ্যের 0 টি ব্রেস-স্ট্রিং রয়েছে, যা খালি স্ট্রিং ""
  • এটি , তাই সংক্ষিপ্ততম বৈধ উত্তর - বাইটে পরিমাপ করা - জয়।

পরীক্ষার কেস

0. 
1. *
2. ** () []
3. *** ()* []* (*) [*] *() *[]
4. **** ()** []** (*)* [*]* (**) **() **[] *(*) *[*] (()) ()() ()[] ([]) [**] [()] [[]] []() [][] *()* *[]*

3
আউটপুট এন্ট্রি সংখ্যা A025235
গ্যাব্রিয়েল বেনামি

পুনঃটুইট আমি আগে তাকানো ছিল কিনা তা ভাবছিলাম। মজাদার.
30:51

2
জয়ের অবস্থা কী? আমি স্বল্পতম প্রোগ্রাম (কোড গল্ফ) ধরে নিই।
Zgarb


1
যেহেতু প্রত্যেকেই এটি কোড গল্ফ বলে ধরে নিচ্ছে, তাই আমি সেই অনুসারে চ্যালেঞ্জটি ট্যাগ করব (যেহেতু এটি অন্যথায় সমস্ত বিদ্যমান উত্তর কিছুটা অর্থহীন করে তুলবে)। আপনি যদি একটি পৃথক বিজয়ী মানদণ্ডের উদ্দেশ্যে থাকেন তবে আপনি একটি নতুন চ্যালেঞ্জ পোস্ট করার বিষয়টি বিবেচনা করতে পারেন।
মার্টিন এন্ডার

উত্তর:


3

জেলি, 29 বাইট

-3 বাইটস @ জোনাথান অ্যালানকে ধন্যবাদ

দয়া করে , যদি কোনও সমস্যা / বাগ / ত্রুটি বা বাইটস আমি ছিটকে পারি তবে আমাকে সতর্ক করুন!

“[(*)]”ṗµḟ”*œṣ⁾()Fœṣ⁾[]FµÐLÐḟ

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

আমার পূর্ববর্তী সমাধান (গুলি):

“[(*)]”ṗµḟ”*œṣ⁾()Fœṣ⁾[]FµÐL€Ṇ€Tị
“[(*)]”ṗµ¹ḟ”*œṣ⁾()Fœṣ⁾[]FµÐL€Ṇ€Tị
“[(*)]”ṗµ¹ḟ”*œṣ⁾()Fœṣ⁾[]FµÐL€Ṇ€×Jḟ0ị
“[(*)]”x⁸ṗ⁸Qµ¹ḟ”*œṣ⁾()Fœṣ⁾[]FµÐL€Ṇ€×Jḟ0ị
“[(*)]”x⁸ṗ⁸Qµ¹µḟ”*œṣ⁾()Fœṣ⁾[]FµÐL€Ṇ€×Jḟ0ị
“[(*)]”x⁸ṗ⁸Qµ¹µḟ”*œṣ⁾()Fœṣ⁾[]FµÐLµ€Ṇ€×Jḟ0ị

ব্যাখ্যা (একটি বিবরণে আমার সেরা চেষ্টা):

Input n
“[(*)]”ṗ-All strings composed of "[(*)]" of length n
µḟ”*    -Filter out all occurences of "*"
œṣ⁾()   -Split at all occurences of "()"
F       -Flatten
œṣ⁾[]   -Split at all occurences of "[]"
F       -Flatten
µÐL     -Repeat that operation until it gives a duplicate result
Ðḟ      -Filter

আপনি ফিল্টারিং ( “[(*)]”ṗµḟ”*œṣ⁾()Fœṣ⁾[]FµÐLÐḟ) ব্যবহার করে তিনটি বাইট সংরক্ষণ করতে পারেন
জোনাথন অ্যালান

15

প্রোলোগ, 69 বাইট

s-->[];e,s.
e-->"*";"(",s,")";"[",s,"]".
b(N,A):-length(A,N),s(A,[]).

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

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

আমি লিখি কিছু যত্ন নেন s(এবং এইভাবে b) যাতে তারা একে "বক্রবন্ধনী STRING" ঠিক এক ভাবে মেলে (যা কারণ উভয় sএবং eঅস্তিত্ব, বরং তাদের এক সম্পৃক্ত মধ্যে গোষ্ঠীবদ্ধ চেয়ে থাকে)। এটি উভয়কে পুরোপুরি বিপরীত করে তোলে; এইভাবে bএকটি নির্দিষ্ট দৈর্ঘ্যের সমস্ত "ব্রেস স্ট্রিং" উত্পন্ন করতে ব্যবহার করা যেতে পারে, স্ট্রিং যদি একটি নির্দিষ্ট দৈর্ঘ্যের একটি ব্রেস স্ট্রিং হয় তা পরীক্ষার পাশাপাশি (এটি একটি তৃতীয় রাউন্ডের সাহায্যেও ব্যবহার করা যেতে পারে, একটি ব্রেসের দৈর্ঘ্য নির্ধারণ করতে স্ট্রিং, তবে এটি কার্যত তার কমপক্ষে কার্যকর কার্যকর পদ্ধতি)। বাস্তবায়ন রিকার্সিভ হয়, যেমন একটি জেনারেট করতে গুলি , কোড সব সম্ভব উত্পন্ন করবে গুলি করে আউটপুট প্রয়োজনীয় দৈর্ঘ্যের তুলনায় এখন আর নেই, এবং সব সম্ভব সংযোজন গুলিযেগুলি তাদের কাছে বাকি জায়গাগুলিতে ফিট করে; কারণ আমি আর্গুমেন্টের দৈর্ঘ্য আগেই নির্দিষ্ট করেছি ( খ এর মধ্যে ), প্রোলোগ ইঞ্জিন জানে যে এটি প্রদত্ত দৈর্ঘ্যের চেয়ে দীর্ঘতর আউটপুট তৈরি করতে পারে না, যা পুনরাবৃত্তিটি শেষ করতে দেয়।

কার্যক্রম পরিচালনার জন্য এখানে একটি উদাহরণ রয়েছে:

| ?- b(4,A),format("~s ",[A]),fail.
**** **() **[] *()* *(*) *[]* *[*] ()** ()() ()[] (*)* (**) (()) ([]) []** []() [][] [*]* [**] [()] [[]]

এটি মনে হয় যে আপনি প্রোগ্রামটি "ফরওয়ার্ডস" বা "পিছনে" চালাতে চান কিনা তা নির্দিষ্ট করার জন্য প্রয়োজনীয় সিনট্যাক্সের জন্য কিছু ব্যয় হওয়া উচিত। পার্ল এই ধরণের জিনিসটির প্রতিটি বিট জন্য 1 বাইট দেয়
স্পার

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

ওহ, হুঁ। আমি ধরে নিয়েছি আপনার উদাহরণে এমন কিছু ইঙ্গিত রয়েছে যা প্রশ্নের আচরণে ট্রিগার করে red
স্পার

নাহ, এটি পুরোপুরি কারণে যুক্তি দেওয়া হয়েছে। উপরের প্রোগ্রামে, আমি লিখি length(A,N); যদি Nদেওয়া হয় এবং Aনা হয় (যা প্রোগ্রামে অনুরোধ করা পদ্ধতিতে প্রিডিকেট ব্যবহার করা হয় তবে তা ঘটবে), অজানা উপাদানগুলির সমন্বয়ে lengthএকটি তালিকা তৈরি করবে । ব্যবহার করার জন্য পরিমাপ একটি তালিকা দৈর্ঘ্য সম্ভবত আরো সাধারণভাবে ব্যবহৃত হবে (এটি ব্যবহার যদিও "পিছন" Prolog প্রোগ্রামিং মোটামুটি সাধারণ যায়)। বেশিরভাগ পূর্বাভাসকৃতভাবে একইভাবে কাজ করা শেষ হয় (যদি তাদের উল্টানোর চেষ্টা করা হয় তবে তার একমাত্র কারণ হ'ল এটি অসীম লুপ তৈরি করে, যা মোটামুটি সাধারণ)। ANlength

1
@ ais523 -->এবং সাধারণভাবে DCGs হয় মানক ISO Prolog
ফ্যাটালাইজ করুন

5

হাস্কেল, 101 94 বাইট

Gar বাইট সংরক্ষণ করেছেন জগারব!

b 0=[""]
b n=[x++y|k<-[1..n],x<-u k,y<-b$n-k]
u 1=["*"]
u n=[a:s++b|s<-b$n-2,a:b<-["()","[]"]]

প্রায় সোজা, সংজ্ঞা অনুসরণ করে, তবে ""কেসটি সরানো হয়েছিল।

ব্যবহার করুন:

*Main> map b [0..3]
[[""],["*"],["**","()","[]"],["***","*()","*[]","()*","[]*","(*)","[*]"]]
*Main> length $ b 10
21595

(দ্বিতীয় গণনা একটি ধীর মেশিনে এক সেকেন্ডেরও কম সময় নেয়))

ফাংশন উত্পাদন করার কথা ভাবতে গিয়ে আমি যে অন্য পদ্ধতির সাথে এসেছি তার ফলাফলটিও ভাগ করে নিতে চাই। এটি স্ট্রিংগুলির তালিকার একটি তালিকা নির্ধারণ করে যা দৈর্ঘ্যের সমস্ত ব্রেস-স্ট্রিং রয়েছে । একইভাবে, আকারের সমস্ত পরমাণু রয়েছে । একটি দুর্দান্ত জিনিস কোডটি কোনও সংখ্যা ব্যবহার করছে না। এটি সম্পূর্ণরূপে গল্ফ হয় না: এবং এটি অন্তর্ভুক্ত করা যেতে পারে এবং এটি অবশ্যই অন্যান্য কয়েকটি গল্ফিং সুযোগ মিস করে। দুর্ভাগ্যক্রমে, দেখে মনে হচ্ছে না এটি প্রথম সংস্করণের চেয়ে ছোট করা যেতে পারে তবে এটি আরও দ্রুত গণনা করে ।bb!!nnu!!nn-1uilength $ b !! 10

b=[""]:b%u
u=["*"]:map i b
i=concatMap(\s->['(':s++")",'[':s++"]"])
(b:c)%f=zipWith(++)[[x++y|x<-b,y<-e]|e<-f]([]:c%f)

b$n-kএবং দিয়ে দুটি বাইট সংরক্ষণ করুন b$n-2। এছাড়াও, চূড়ান্ত লাইনে আপনি করতে পারেন a:b<-["()","[]"]এবং ফিরে আসতে পারেন a:s++b
Zgarb

ওহ আমি ব্যবহার ["()","[]"]করতে চেয়েছিলাম তবে এটির সাথে কীভাবে কোডের আকার উন্নত করা যায় তা দেখতে পেলাম না। ধন্যবাদ!
খ্রিস্টান সিভর্স

4

গণিত, 116 বাইট

#<>""&/@Select[Characters@"*([)]"~Tuples~#,(#/."*"->Nothing//.{a___,"(",")",b___}|{a___,"[","]",b___}:>{a,b})=={}&]&

ব্যাখ্যা

Characters@"*([)]"

স্ট্রিং এর অক্ষর খুঁজুন "*([)]", দান List {"*", "(", "[", ")", "]"}

... ~Tuples~#

দৈর্ঘ্য সহ উপরের তালিকার টিউপসগুলি সন্ধান করুন n

(#/."*"->Nothing//.{a___,"(",")",b___}|{a___,"[","]",b___}:>{a,b})=={}&

টুপল ভারসাম্যযুক্ত কিনা তা খুঁজে পাওয়ার জন্য বুলিয়ান ফাংশন:

#/."*"->Nothing

ইনপুটটিতে সমস্ত মুছুন "*"

... //.{a___,"(",")",b___}|{a___,"[","]",b___}:>{a,b}

বারবার সব পরপর ঘটনার মুছতে "("এবং ")"বা "["এবং "]"যতক্ষণ না ইনপুট পরিবর্তন করে না।

... =={}

ফলাফলটি খালি কিনা তা পরীক্ষা করে দেখুন List

Select[ ... , ... ]

Tuples দিতে খুঁজুন Trueযখন বুলিয়ান ফাংশন প্রয়োগ করা হয়।

#<>""&/@

প্রতিটি Listঅক্ষরকে Stringএস-তে রূপান্তর করুন ।


2
কিছুটা অপ্রত্যাশিতভাবে, {x=a___,"(",")",y=b___}|{x,"[","]",y}মনে হয় কাজ করে।
মার্টিন এন্ডার

4

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

n=input()
for i in range(5**n):
 try:s=','.join('  "00([*])00"  '[i/5**j%5::5]for j in range(n));eval(s);print s[1::4]
 except:1

স্ক্রু পুনরাবৃত্তিমূলক রেজেক্সস - আমরা পাইথনের পার্সার ব্যবহার করছি! উদাহরণস্বরূপ, *(**[])*একটি ধনুর্বন্ধনী-স্ট্রিং যাচাই করতে আমরা নিম্নলিখিতটি করি:

  1. একটি স্ট্রিং তৈরি করুন "*", (0,"*","*", [0,0] ,0) ,"*", যেখানে চারটির প্রতিটি দ্বিতীয় অক্ষর ব্রেস-স্ট্রিংয়ের একটি চরিত্র এবং বাকী অক্ষরগুলি এটিকে একটি সম্ভাব্য পাইথন এক্সপ্রেশন তৈরি করতে আঠালো

  2. eval এটা।

  3. যদি এটি ত্রুটি না ফেলে তবে মুদ্রণ করুন s[1::4](ব্রেস-স্ট্রিং অক্ষর)।

আঠালো অক্ষর তাই বাছাই করা হয় স্ট্রিং আমি একটি বৈধ পাইথন অভিব্যক্তি যদি এবং কেবল প্রতি সেকেন্ডে চরিত্র চার উৎপাদনের একটি বৈধ বক্রবন্ধনী-স্ট্রিং এর গ্রহণ করে।


2

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

for(;$argv[1]--;$l=$c,$c=[])foreach($l?:['']as$s)for($n=5;$n--;)$c[]=$s.'*()[]'[$n];echo join(' ',preg_grep('/^((\*|\[(?1)]|\((?1)\))(?1)?|)$/',$l));

ভাল পুরানো সমস্ত সম্ভব উত্পন্ন এবং তারপরে ফিল্টার পদ্ধতি ব্যবহার করে। এর মতো ব্যবহার করুন:

php -r "for(;$argv[1]--;$l=$c,$c=[])foreach($l?:['']as$s)for($n=5;$n--;)$c[]=$s.'*()[]'[$n];echo join(' ',preg_grep('/^((\*|\[(?1)]|\((?1)\))(?1)?|)$/',$l));" 4

1

পাইথন, 134 বাইট

from itertools import*
lambda n:[x for x in map(''.join,product('*()[]',repeat=n))if''==eval("x"+".replace('%s','')"*3%('*',(),[])*n)]

repl.it

অজানা ফাংশন যা দৈর্ঘ্যের বৈধ স্ট্রিংগুলির একটি তালিকা দেয় n
ফরম সব দৈর্ঘ্য nঅক্ষরের tuples *()[]তাদের ব্যবহার স্ট্রিং মধ্যে যোগদান করে map(''.join,...)এবং যারা জন্য ফিল্টার যে, "জোড়া" সরিয়ে বন্ধনী আছে সামঞ্জস্যপূর্ণ "*", "()"এবং "[]"পালাক্রমে nকাল ও পরীক্ষণ যে ফলাফলের একটি খালি স্ট্রিং আছে ( nবার Overkill, বিশেষ করে হয় "*"কিন্তু গল্ফায়ার হয়)।


1

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

বাইট গণনাটি আইএসও 8859-1 এনকোডিং ধরেছে।

.+
$*
+%1`1
*$'¶$`($'¶$`)$'¶$`[$'¶$`]
%(`^
$';
)+`(\[]|\(\)|\*)(?=.*;)|^;

A`;

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

ব্যাখ্যা

আমি 5 এর দৈর্ঘ্যের সমস্ত সম্ভাব্য স্ট্রিং উত্পন্ন করছি এবং তারপরে আমি অবৈধগুলি ফিল্টার আউট করব।

.+
$*

এটি 1ডিজিট হিসাবে ব্যবহার করে ইনপুটটিকে অ্যানারিতে রূপান্তর করে ।

+%1`1
*$'¶$`($'¶$`)$'¶$`[$'¶$`]

এটি বারবার ( +) 1প্রতিটি লাইনে প্রথম ( ) একটিকে ( %) এমনভাবে প্রতিস্থাপন করে যে এটি লাইনটির পাঁচটি অনুলিপি তৈরি করে, প্রতিটি সম্ভাব্য অক্ষরের জন্য একটি করে। এটি উপসর্গ এবং প্রত্যয়ের বিকল্পগুলি ব্যবহার করে $`এবং $'প্রতিটি লাইনের অবশিষ্ট অংশগুলি তৈরির মাধ্যমে করা হয়।

প্রতিস্থাপনের জন্য আর 1s না থাকলে এই লুপটি বন্ধ হয়ে যায়। এই সময়ে আমরা দৈর্ঘ্যের সমস্ত সম্ভাব্য স্ট্রিং পেয়েছি N, প্রতিটি লাইনে একটি করে।

%(`^
$';
)+`(\[]|\(\)|\*)(?=.*;)|^;

এই দুটি পর্যায় পৃথকভাবে প্রতিটি লাইনের জন্য নির্বাহ করা হয় ( %)। প্রথম পর্যায়ে ;দুটি অনুলিপি আলাদা করার জন্য লাইনটি কেবল অনুলিপি করে ।

দ্বিতীয় স্তরটি হ'ল আরেকটি লুপ ( +), যা বারবার মুছে ফেলে [], ()বা *স্ট্রিংয়ের প্রথম অনুলিপি থেকে, বা রেখার শুরুতে একটি সেমিকোলন সরিয়ে দেয় (যা কেবল স্ট্রিং সম্পূর্ণরূপে নিখোঁজ হওয়ার পরে সম্ভব)।

A`;

বৈধ স্ট্রিংগুলি সেগুলির সামনে সেমিকোলন আর থাকে না, তাই আমরা কেবল Aসেমিকোলনযুক্ত সমস্ত লাইন ( ) বাতিল করি ।


আমি ইনপুট 5 দিয়ে অনলিন চেষ্টা করেছিলাম: ঠিক আছে। ইনপুট 6 সহ আমি একটি ত্রুটি পৃষ্ঠা পেয়েছি
edc65

@ edc65 আমার পক্ষে কাজ করে তবে অবশ্যই এই পদ্ধতিটি সঠিকভাবে কার্যকর নয়, তাই এটি কয়েক সেকেন্ড সময় নেয়। আপনার কী ধরণের ত্রুটি পৃষ্ঠাটি বোঝানো হচ্ছে?
মার্টিন এন্ডার

ইনপুট 5: উত্তর 3 সেকেন্ডে ইনপুট 6: 7 সেকেন্ড পরে, আউটপুট বাক্সের ভিতরে, আমি আমার প্রক্সি থেকে সম্ভবত একটি ত্রুটি পৃষ্ঠা কী এর এইচটিএমএল উত্স পেয়েছি। যদি এটির সময়সীমা শেষ হয় তবে এটি একটি খুব স্বল্প মেয়াদোত্তীর্ণ ... আমি ইনপুট 6 এর জন্য একটি সঠিক পরীক্ষার কেস পাওয়ার চেষ্টা করছিলাম, কারণ আমার উত্তরটি ইনপুট 5 পর্যন্ত ঠিক আছে, তবে 6 বা তারও বেশি ভুল
edc65

@ edc65 এটি অবশ্যই 7 সেকেন্ডের চেয়ে বেশি সময় নেয় এবং টিআইওর সময়সীমা এক মিনিট। আমি ভুল আপনি বর্ণনা দেখিনি, এই লালনপালন মূল্য হতে পারে Tio চ্যাট (অথবা যদি আপনি চান gitter উপর বা GitHub )। রেফারেন্স আউটপুট হিসাবে, এখানে আমি ইনপুট 6 জন্য কি পেতে হল: pastebin.com/WmmPPmrc (ইনপুট 7 মিনিট বেশী সময় লাগে।)
মার্টিন Ender

1

পাইথন 3.5, 146 বাইট

import re;from itertools import*;lambda f:{i for i in map(''.join,permutations("[()]*"*f,f))if re.fullmatch("(\**\[\**\]\**|\**\(\**\)\**)*|\**",i)}

অন্যান্য উত্তরের তুলনায় খুব দীর্ঘ, তবে আমি বর্তমানে সবচেয়ে সংক্ষিপ্ততমটি খুঁজে পেতে পারি। এটি একটি বেনামে ল্যাম্বদা ফাংশন আকারে এবং তাই ফর্ম্যাটে কল করতে হবে

print(<Function Name>(<Integer>))

একটি পাইথন আউটপুট সেট এর unordered ইনপুট দৈর্ঘ্যের সব সম্ভব বক্রবন্ধনী-স্ট্রিং প্রতিনিধিত্বমূলক স্ট্রিং।

উদাহরণস্বরূপ, উপরের ফাংশনটির নামকরণ ধরে নিলে G, অনুরোধের G(3)ফলে নিম্নলিখিত আউটপুটটি আসবে:

{'[*]', '*()', '*[]', '(*)', '***', '[]*', '()*'}

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


যাইহোক, যদি, আমার মত, তাই না সত্যিই বিল্ট-ইন ব্যবহার জিনিষ সরল একজন অনুরাগী হয়, তারপর এখানে আমার নিজের আসল উত্তর না ব্যবহার কোনো বহিরাগত লাইব্রেরি একাধিক বিন্যাসন খোঁজার, এবং বর্তমানে একটি খুব বড় দাঁড়িয়ে 288 237 বাইট :

import re;D=lambda f:f and"for %s in range(%d)"%(chr(64+f),5)+D(f-1)or'';lambda g:[i for i in eval('["".join(('+''.join('"[()]*"['+chr(o)+'],'for o in range(65,65+g))+'))'+D(g)+']')if re.fullmatch("(\**\[\**\]\**|\**\(\**\)\**)*|\**",i)]

আবার প্রতিযোগিতামূলক উত্তরের মতো এটিও একটি ল্যাম্বডা ফাংশনের আকারে এবং সুতরাং এটি ফর্ম্যাটেও ডাকতে হবে

print(<Function Name>(<Integer>))

আর পাইথন আউটপুট তালিকা এর পাঁচমিশালী ইনপুট দৈর্ঘ্যের সমস্ত বক্রবন্ধনী-স্ট্রিং প্রতিনিধিত্বমূলক স্ট্রিং। উদাহরণস্বরূপ, যদি ল্যাম্বডাকে হিসাবে ডাকা হত তবে G(3)এই সময় আউটপুটটি নিম্নলিখিত হবে:

['*()', '(*)', '*[]', '[*]', '()*', '[]*', '***']

এছাড়াও, এই এক একটি অনেক দ্রুত আমার অন্যান্য জবাব চেয়ে হয় দৈর্ঘ্যের সমস্ত বক্রবন্ধনী-স্ট্রিং খুঁজে পেতে সক্ষম হচ্ছে 11সম্পর্কে 115 সেকেন্ড , দৈর্ঘ্য সেই 10সম্পর্কে 19 সেকেন্ড , দৈর্ঘ্য সেই 9সম্পর্কে 4 সেকেন্ড , এবং দৈর্ঘ্য যারা 8এ আমার মেশিনে প্রায় 0.73 সেকেন্ড , যদিও আমার প্রতিযোগিতামূলক উত্তরটি ইনপুট দেওয়ার জন্য 115 সেকেন্ডের চেয়ে অনেক বেশি সময় নেয় 6

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


0

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

…[(*.∞sãʒ'*м„()„[]‚õ:õQ

প্রশ্ন পোস্ট হওয়ার পরে এই বৈশিষ্ট্যগুলির কয়েকটি প্রয়োগ করা যেতে পারে। কোন পরামর্শ স্বাগত!

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

কিভাবে?

…[(* - the string '[(*'
.∞ - intersected mirror, '[(*'=>'[(*)]'
s - swap the top two items, which moves the input to the top
ã - cartesian power
ʒ ...  - filter by this code:
  '*м      - remove all occurrences of '*'
  „()„[]‚  - the array ["()","[]"]
  õ        - the empty string ""
  :        - infinite replacement (this repeatedly removes "()", "[]", and "*" from the string
  õQ       - test equality with the empty string

আমি 05AB1E জানি না, তবে কি *অপসারণ অ্যারেতেও থাকতে পারে না ? এবং õQচেকটি কি নোটের মতো প্রতিস্থাপন করা যাবে?
ফলমূল Esolanging

প্রথম পরামর্শটি কোনও বাইট সংরক্ষণ করবে না: '*м„()„[]‚õ:বনাম „()„[]‚'*«õ:(পরীক্ষিত নয়), যেহেতু 3 টি মান AFAIK সংযুক্ত করার কোনও আদেশ নেই। দ্বিতীয়টি কাজ করবে না যেহেতু এমন কোনও নেই যা স্ট্রিংয়ের মতো কাজ করবে না, আফাইক। (যেখানে
এএফআইএইকে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.