উপসর্গ ট্রি ট্রভারসাল


13

একটি প্রোগ্রাম লিখুন যা (স্টিডিন বা কমান্ড লাইনের মাধ্যমে) পুনরাবৃত্তাকারী ফর্ম সহ একটি স্ট্রিং গ্রহণ করে

PREFIX[SUFFIXES]

কোথায়

  • PREFIX খালি স্ট্রিং সহ ছোট ছোট অক্ষরের (এজে) কোনও স্ট্রিং এবং
  • SUFFIXESPREFIX[SUFFIXES]খালি ক্রম সহ একসাথে সংমিশ্রিত পুনরাবৃত্তাকার ফর্মের সাথে স্ট্রিংগুলির কোনও ক্রম হতে পারে ।

প্রতিটি প্রত্যয়টির স্ট্রিংগুলির তালিকাটি পুনরাবৃত্তিভাবে মূল্যায়ন করে এবং সেগুলি উপসর্গের সাথে যুক্ত করে ইনপুট থেকে ছোট ছোট অক্ষরের স্ট্রিংগুলির একটি তালিকা তৈরি করুন। এই তালিকার স্ট্রিংগুলিকে যে কোনও ক্রমে অবিচ্ছিন্ন করতে আউটপুট, প্রতি লাইনে একটি (আরও একটি anচ্ছিক ট্রেলিং নিউলাইন)।

উদাহরণ

যদি ইনপুট হয়

cat[s[up[][]][]ch[e[r[]s[]]]a[maran[]comb[]pult[[]ing[]]]]

তারপর প্রিফিক্স catএবং প্রত্যয় হয় s[up[][]], [], ch[e[r[]s[]]], এবং a[maran[]comb[]pult[[]ing[]]]। প্রতিটি প্রত্যয়টির নিজস্ব উপসর্গ থাকে এবং পরিবর্তে প্রত্যয় হয়।

আউটপুটটি কোনও ক্রমে এই 9 টি শব্দ হবে

catsup
cats
cat
catcher
catches
catamaran
catacomb
catapult
catapulting

কারণ ইনপুটটি এই গাছটিকে এনকোড করে

গাছের নকশা

এবং 9 টি আউটপুট শব্দের প্রত্যেকটি গাছকে শিকড় থেকে পাতায় অনুসরণ করে গঠন করা যেতে পারে।

মন্তব্য

  • মনে রাখবেন যে উপসর্গটি খালি স্ট্রিং হতে পারে, তাই এর মতো কিছু

    [donut[][]cruller[]]
    

    বৈধ ইনপুট যার ফলাফল হবে (যে কোনও ক্রমে)

    donut
    
    cruller
    

    যেখানে দ্বিতীয় প্রত্যয়টির সাথে খালি রেখাটি খালি স্ট্রিংয়ের সাথে মেলে।

  • প্রত্যয় ক্রমটি খালিও হতে পারে, তাই তুচ্ছ ইনপুট কেস

    []
    

    এর আউটপুট হিসাবে একটি ফাঁকা রেখা রয়েছে:

    
    
  • আপনি ধরে নিতে পারেন যে ইনপুটটি কেবল অনন্য আউটপুট শব্দ তৈরি করবে।
    • যেমন hat[s[]ter[]s[]]অবৈধ ইনপুট হবে কারণ hatsদুবার এনকোড করা হয়েছে।
    • একইভাবে, [[][]]অবৈধ কারণ খালি স্ট্রিংটি দুটিবার এনকোড করা হয়েছে।
  • আপনি ধরে নিতে পারেন না যে ইনপুটটি যতটা সম্ভব সংক্ষিপ্ত বা সংকুচিত।
    • যেমন 'e'উপরের মূল উদাহরণে 'ch'নোডটি নোডের সাথে একত্রিত হতে পারে তবে এর অর্থ এই নয় যে ইনপুটটি অবৈধ।
    • একইভাবে, [[[[[]]]]]উপ-অনুকূল উপায়ে কেবল খালি স্ট্রিংটি এনকোড করা সত্ত্বেও, বৈধ।
  • কোনও প্রোগ্রামের পরিবর্তে আপনি একটি ফাংশন লিখতে পারেন যা ইনপুট স্ট্রিংটিকে একটি আর্গুমেন্ট হিসাবে গ্রহণ করে এবং আউটপুটটিকে সাধারণত প্রিন্ট করে দেয় বা স্ট্রিং বা তালিকা হিসাবে ফেরত দেয়।

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

উত্তর:


2

রুবি, 119 115

t=['']
l=[0]
gets.chars{|c|c<?]?t<<''&&(l<<0)[-2]+=1:c<?^?(x=l.pop;t.pop==''&&(puts t*''if x<1;t[-1]='')):t[-1]<<c}

উদাহরণ

এটি ব্যবহার করে দেখুন: http://ideone.com/NW0CNB

বিবরণ

প্রোগ্রামটি স্টিডিনের কাছ থেকে ইনপুট পায় এবং ফলাফলটি স্টডআউটে আউটপুট করে।

এটি গাছের স্রোতে গাছের স্রোতকে স্ট্যাকের মধ্যে রেখে দেয়। এছাড়াও আলাদা স্ট্যাক রয়েছে, weightsযা প্রতিটি নোডের বাচ্চার সংখ্যার উপর নজর রাখে। কোনও নোড আসলেই কোনও পাতা, বা অতীতে এটির সন্তান ছিল কিনা তা নির্ধারণ করার জন্য এটি প্রয়োজন।

পঠনযোগ্য প্রোগ্রাম:

stack = ['']
weights = [0]

gets.chars do |c|
  case c
  when '['
    weights[-1] += 1
    stack << ''
    weights << 0
  when ']'
    last_weight = weights.pop

    if stack.pop == ''
      puts stack.join if last_weight < 1
      stack[-1] = ''
    end
  else
    stack[-1] << c
  end
end

6

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

t=tail.p
p=g.break(=='[')
g(a,(_:t))=(:)&(map(a++).z)$t#[]
z[]=[""];z x=x
(']':u)#a=u:a
s#a=(#)&(a++)$p s
(g&f)(x:y)=g x$f y

ফাংশনটি t(ট্র্যাভারসাল জন্য):

λ: t "cat[s[up[][]][]ch[e[r[]s[]]]a[maran[]comb[]pult[[]ing[]]]]"
["catsup","cats","cat","catcher","catches","catamaran","catacomb","catapult","catapulting"]
λ: t "[donut[][]cruller[]]"
["donut","","cruller"]
λ: t "[[[[[]]]]]"
[""]

আপনার কোডটি 124 বাইট নয়, 125 নয় :)
ক্রিশ্চিয়ান লুপাস্কু

আমি মনে করি এর পরিবর্তে প্যাটার্নটি (a,(_:t))হতে পারে(a,_:t)
গর্বিত হাসেলেলার

2

জাভা, 206 বাইট

একটি ফাংশন সংজ্ঞা দেয় যা একটি স্ট্রিংকে আর্গুমেন্ট হিসাবে গ্রহণ করে এবং স্ট্রিংগুলির একটি তালিকা প্রদান করে। একটি যুক্ত বোনাসের জন্য এটি একই ক্রমে স্ট্রিংগুলি প্রশ্নটির মতো করে দেয়।

int c,i;List a(String a){String b=a.substring(c,c=a.indexOf(91,c));List d=new ArrayList();for(;a.charAt(++c)!=93;)d.addAll(a(a));if(d.isEmpty())d.add("");for(i=0;i<d.size();)d.set(i,b+d.get(i++));return d;}

ব্যবহারের উদাহরণ:

class A{
    public static void main(String[] args){
        System.out.println(new A.a("cat[s[up[][]][]ch[e[r[]s[]]]a[maran[]comb[]pult[[]ing[]]]]"));
    }

    int c,i;List a(String a){String b=a.substring(c,c=a.indexOf(91,c));List d=new ArrayList();for(;a.charAt(++c)!=93;)d.addAll(a(a));if(d.isEmpty())d.add("");for(i=0;i<d.size();)d.set(i,b+d.get(i++));return d;}
}

সম্প্রসারিত:

int c, i;
List a(String a){
    String b = a.substring(c, c = a.indexOf(91, c));
    List d = new ArrayList();
    for(; a.charAt(++c) != 93 ;)
        d.addAll(a(a));
    if (d.isEmpty())
        d.add("");
    for (i = 0; i < d.size();)
        d.set(i, b + d.get(i++));
    return d;
}

আমি আগামীকাল একটি ব্যাখ্যা যোগ করব।


0

পাইথন, 212 অক্ষর

def p(t,f="",o="",d=0):
 if[]==t:return
 b=[""]
 for c in t:d+=c=="[";b[-1]+=c;d-=c=="]";b+=[""]*(d==0)*(c=="]")
 for r in b[:-1]:i=r.index("[");w,s=f+r[:i],r[i:][1:-1];p(s,w);o+= ["",w+"\n"][""==s]
  if o:print o,

আমি 200 বছরের কম বয়সী হওয়ার আশা করছিলাম তবে এখনও আমি এতে খুশি।


0

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

s=>(o=[],x=_=>s[0]==']'?s=s.slice(1):0,(g=d=>{while(s&&!x())[o[d],s]=s.split(/\[(.*)/).concat``,x()?console.log(o.join``):g(d+1),o.pop()})(0))

0

প্রশ্ন: 70 বাইট

f:{,/'$({(z_x),y}\[();{`$x@&~x="]"}'w;-b])@-1+&0<b:(+/"]"=)'w:"["\:x}

একটি ফাংশন এফ সংজ্ঞা দেয় যা একটি স্ট্রিং গ্রহণ করে এবং স্ট্রিংগুলির একটি তালিকা (শব্দ) ফেরত দেয়

ল্যাম্বডা (বেনামে ফাংশন) হিসাবে আমরা প্রথম 2 টি অক্ষর f ফেলে রাখি: সুতরাং দৈর্ঘ্য 68 বাইট

পরীক্ষা

f "cat[s[up[][]][]ch[e[r[]s[]]]a[maran[]comb[]pult[[]ing[]]]]"

( "চাট্নি"; "বিড়াল"; "বিড়াল"; "পাখী"; "ক্যাচ"; "কলহপ্রি়া নারী"; "ভুগর্ভস্থ সমাধিক্ষেত্র"; "গুলতি"; "catapulting")

f "[donut[][]cruller[]]"

( "ডোনাট"; ""; "cruller")

f "[[[[[]]]]]"

, ""

মন্তব্য

, "" স্ট্রিংগুলির একটি তালিকা নির্দেশ করে যা কেবল একটি খালি স্ট্রিং রয়েছে

প্রতীকগুলি পারমাণবিক। স্ট্যাকের উপর একটি চিহ্ন চাপুন / পপ করুন একটি সাধারণ ক্রিয়া যা প্রতীকটির দৈর্ঘ্য দ্বারা প্রভাবিত হয় না (ব্যাখ্যা দেখুন)

ব্যাখ্যা

প্রশ্ন এপিএল (কেএক্স.কম) এর কাজিন

সুডোকোড:

  • "[" চরে স্প্রিট স্ট্রিং (আরগ এক্স)। ডাব্লুতে ফলাফল (স্ট্রিংগুলির তালিকা)
  • প্রতিটি এলেমে "]" অক্ষর গণনা করা হয়। ডাব্লু এর ফলাফল খ
  • "]" অক্ষর ফিল্টার আউট করতে প্রতিটি আইটেমকে পরিবর্তন করে এবং প্রতিটি স্ট্রিংকে একটি প্রতীক রূপান্তর করে
  • বি 0 তে আইটেমগুলি চিহ্নিত করতে একটি লজিকাল সিকোয়েন্স (বিটম্যাপ) উত্পন্ন করে
  • একটি স্ট্যাকের সাথে আংশিক ফলাফলের জন্য আইট্রেটস: আইটেম চিহ্নিত হলে আমাদের অবশ্যই আরও একটি প্রতীক ফেলে দিতে হবে (খ এর মান অনুসারে)। সর্বদা স্ট্যাকের জন্য প্রকৃত প্রতীক যুক্ত করুন
  • পুনরাবৃত্তি করার পরে আমাদের স্ট্যাকের সমস্ত মধ্যবর্তী অবস্থা রয়েছে। আমরা পূর্বে চিহ্নিত রাজ্যগুলি নির্বাচন করি
  • অবশেষে প্রতিটি ফলাফলের জন্য আমরা স্ট্রিংগুলিতে প্রতীকগুলিকে রূপান্তর করি এবং সেগুলি সংযুক্ত করি

-1

কোবরা - 181

def f(s='')as String*
    for m in RegularExpressions.Regex.matches(s,r'(\w*)\[((?:(?<B>\[)|\w|(?<-B>]))*)](?(B)(?!))'),for r in.f('[(u=m.groups)[2]]'),yield'[u[1]]'+r
    if''==s,yield''

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