যেকোন অফিক্স স্বরলিপি প্রয়োগ করুন!


16

উপসর্গ শিরোনামে, অপারেটর আর্গুমেন্টগুলির আগে উপস্থিত হয়, তাই আপনি ধরণের কল্পনা করতে পারেন যে অপারেটর কল করে next()যা পুনরাবৃত্তি বলা হয়। ইনফিক্স স্বরলিপিতে অপারেটর আর্গুমেন্টগুলির মধ্যে চলে যায়, তাই আপনি এটি কেবল একটি পার্স গাছ হিসাবে কল্পনা করতে পারেন। পোস্টফিক্স নোটেশনে অপারেটর আর্গুমেন্টের পরে আসে, তাই আপনি এটি স্ট্যাক-ভিত্তিক হিসাবে কল্পনা করতে পারেন।

Anyfix স্বরলিপি, অপারেটর জন্য যে কোন জায়গায় যেতে পারেন * । যদি কোনও অপারেটর দেখায় এবং পর্যাপ্ত আর্গুমেন্ট না থাকে তবে পর্যাপ্ত যুক্তি না হওয়া পর্যন্ত অপারেটর অপেক্ষা করে। এই চ্যালেঞ্জের জন্য, আপনাকে একটি খুব বেসিক যেকোন ফিক্স মূল্যায়নকারী বাস্তবায়ন করতে হবে। (নোট যে anyfix একটি বিনোদনমূলক ভাষা আমি পরিত্যক্ত যে আপনার সাথে চারপাশে খেলা যায় এখানে বা খুঁজে বার করো এখানে )

আপনাকে নিম্নলিখিত কমান্ডগুলি সমর্থন করতে হবে:

(আধ্যাত্মিকতা 1)

  • প্রতিলিপি
  • নেতিবাচক

(আধ্যাত্মিকতা 2)

  • সংযোজন
  • গুণ
  • সমতা: রিটার্ন 0বা 1

আপনি এই কমান্ডগুলির জন্য যে কোনও পাঁচটি অ-শ্বেত স্পেস প্রতীক ব্যবহার করতে বেছে নিতে পারেন। পরীক্ষামূলক উদ্দেশ্যে, আমি "সদৃশ, ×গুণ এবং আরও +হিসাবে ব্যবহার করব ।

আক্ষরিক জন্য, আপনার কেবল অ-নেতিবাচক পূর্ণসংখ্যার সমর্থন করা দরকার তবে আপনার দোভাষীকে অবশ্যই সমস্ত সংখ্যক (আপনার ভাষার (যুক্তিসঙ্গত) পূর্ণসংখ্যার পরিসীমা) অন্তর্ভুক্ত রাখতে সক্ষম হতে হবে।

এখানে একটি উদাহরণ কটাক্ষপাত করা যাক: 10+5। স্টোরেজটি একটি সারি হিসাবে নয়, স্ট্যাক হিসাবে আচরণ করা উচিত। সুতরাং প্রথমে, স্ট্যাকটি শুরু হয় []এবং সারি অপারেটর তালিকা শুরু হয় []। তারপরে, আক্ষরিক 10মূল্যায়ন করা হয় যা স্ট্যাকটি তৈরি করে [10]। এর পরে, অপারেটরটি +মূল্যায়ন করা হয়, যার জন্য দুটি যুক্তি প্রয়োজন requires তবে, স্ট্যাকের উপর কেবল একটি যুক্তি রয়েছে, তাই সারিযুক্ত অপারেটরের তালিকা হয়ে যায় ['+']। তারপরে, আক্ষরিক 5মূল্যায়ন করা হয় যা স্ট্যাকটি তৈরি করে [10, 5]। এই মুহুর্তে, অপারেটরটিকে '+'মূল্যায়ন করা যেতে পারে তাই এটি স্ট্যাক [15]এবং সারি তৈরি করে []

চূড়ান্ত ফলাফল হওয়া উচিত [15]জন্য + 10 5, 10 + 5এবং 10 5 +

এর একটি কঠিন উদাহরণ কটাক্ষপাত করা যাক: 10+"। স্ট্যাক এবং কিউ হিসাবে শুরু []এবং []10প্রথমে মূল্যায়ন করা হয় যা স্ট্যাক তৈরি করে [10]। এরপরে, +মূল্যায়ন করা হয়, যা স্ট্যাকটি পরিবর্তন করে না (কারণ পর্যাপ্ত যুক্তি নেই) এবং সারি তৈরি করে ['+']। তারপরে, "মূল্যায়ন করা হয়। এটি তাত্ক্ষণিকভাবে চলতে পারে এটি স্ট্যাক তৈরি করে [10, 10]+এখন মূল্যায়ন করা যায় যাতে স্ট্যাকটি হয়ে যায় [20]এবং সারি হয় []। চূড়ান্ত ফলাফল [20]

অপারেশন অর্ডার সম্পর্কে কি?

একনজরে দেখে নেওয়া যাক ×+"10 10। স্ট্যাক এবং সারি উভয় হিসাবে শুরু []:

  • ×: স্ট্যাকটি অপরিবর্তিত এবং সারি হয়ে যায় ['×']
  • +: স্ট্যাকটি অপরিবর্তিত এবং সারি হয়ে যায় ['×', '+']
  • ": স্ট্যাকটি অপরিবর্তিত এবং সারি হয়ে যায় ['×', '+', '"']
  • 10: স্ট্যাক হয়ে যায় [10]। যদিও ×এটি প্রদর্শিত হওয়ার আগে থেকেই মূল্যায়ন করা প্রথম অপারেটর হওয়া উচিত, "তাত্ক্ষণিকভাবে চালানো যেতে পারে এবং অপারেটরগুলির মধ্যে এটির আগে কেউই এটি করতে পারে না, তাই এটি মূল্যায়ন করা হয়। স্ট্যাকটি হয়ে যায় [10, 10]এবং সারি হয় ['×', '+']×এখন মূল্যায়ন করা যেতে পারে, যা স্ট্যাক [100]এবং সারি তৈরি করে ['+']
  • 10: স্ট্যাকটি হয়ে যায় [100, 10], যা +মূল্যায়নের অনুমতি দেয় । স্ট্যাকটি হয়ে যায় [110]এবং সারি হয় []

চূড়ান্ত ফলাফল [110]

এই বিক্ষোভগুলিতে ব্যবহৃত আদেশগুলি যে কোনও ফিক্স ভাষার সাথে সামঞ্জস্যপূর্ণ; তবে, আমার দোভাষীটিতে বাগের কারণে শেষ উদাহরণটি কাজ করবে না। (অস্বীকৃতি: আপনার জমাগুলি কোনও ফিক্স দোভাষীতে ব্যবহৃত হবে না)

চ্যালেঞ্জ

৫ টি অ-হোয়াইটস্পেস অ-অঙ্কের অক্ষরের একটি সেট নির্বাচন করুন এবং উপরের স্পেসিফিকেশন অনুসারে কোনও যেকোন ফিক্স ইন্টারপ্রেটার তৈরি করুন। আপনার প্রোগ্রামটি হয় একক অ্যারে আউটপুট করতে পারে বা এর দ্বারা থাকা মানকে; এটি গ্যারান্টিযুক্ত যে মানগুলির স্ট্যাক কেবলমাত্র মৃত্যুদন্ডের শেষে একক মান ধারণ করে এবং কার্যকর করা শেষে অপারেটরগুলির সারি খালি থাকবে।

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

পরীক্ষার কেস

এই পরীক্ষার বিষয় জন্য, সদৃশ ", নেতিবাচক -, উপরন্তু হল +, গুণ হল ×, এবং সমতা হয় =

Input -> Output
1+2×3 -> 9
1"+"+ -> 4
2"××" -> 16
3"×+" -> 18
3"+×" -> 36
123"= -> 1 ("= always gives 1)
1+2=3 -> 1
1"=2+ -> 3
1-2-+ -> -3
-1-2+ -> 3 (hehe, the `-1` becomes `+1` at the `-` rather than making the `2` a `-1`)
+×"10 10 -> 200 (after the 10 is duplicated (duplication is delayed), 10 + 10 is performed and then 20 * 10, giving 200)

বিধি

  • স্ট্যান্ডার্ড লুফোলস প্রয়োগ করুন
  • আপনি চাইলে যে কোনও ফিক্স অফিসিয়াল দোভাষী এবং গল্ফ নিতে পারেন। ভয়াবহভাবে হারানোর প্রত্যাশা

স্ট্রিং হিসাবে ইনপুট দেওয়া হবে এবং অ্যারের হিসাবে আউটপুট দেওয়া হবে, একটি একক পূর্ণসংখ্যা, উভয়েরই স্ট্রিং প্রতিনিধিত্ব করে। আপনি ধরে নিতে পারেন যে ইনপুটটিতে কেবল ফাঁকা স্থান, অঙ্ক এবং আপনার চয়ন করা 5 টি অক্ষর থাকবে।

* আসলে না


2
যে কোনও জায়গায় যান * ™।
জোনাথন অ্যালান

সমতা অপারেটরের ফলাফল কী? 0এবং 1?
ফেলিক্স প্যালম্যান

1
@ জোনাথান অ্যালান উপরে দেখুন; আমি একটি কমান্ড রিপ
সরিয়েছি


1
আপনার সম্ভবত ×+"10 10পরীক্ষার ক্ষেত্রে অন্তর্ভুক্ত করা উচিত , বা অন্য কোনও উদাহরণ যা 1) একটি সাদা স্থান এবং 2) এর ব্যবহারকে বিলম্ব করে সদৃশ অপারেটরটির (দুটি জিনিস যা আমি পুরোপুরি মিস করেছি)।
আর্নৌল্ড

উত্তর:


5

জাভাস্ক্রিপ্ট (ES6), 204 203 200 বাইট

একটি পূর্ণসংখ্যা ফেরত দেয়।

e=>e.replace(/\d+|\S/g,v=>{for((1/v?s:v>','?u:b)[U='unshift'](v);!!u[0]/s[0]?s[U](u.pop()>'c'?s[0]:-S()):!!b[0]/s[1]?s[U](+eval(S(o=b.pop())+(o<'$'?'==':o)+S())):0;);},s=[],u=[],b=[],S=_=>s.shift())|s

অক্ষর ব্যবহৃত:

  • +: সংযোজন
  • *: গুণ
  • #: সমতা
  • d: প্রতিলিপি
  • -: নেতিবাচক

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

ফর্ম্যাট এবং মন্তব্য

e => e.replace(                     // given an expression e, for each value v matching
  /\d+|\S/g, v => {                 // a group of digits or any other non-whitespace char.
    for(                            //   this loop processes as many operators as possible
      (                             //   insert v at the beginning of the relevant stack:
        1 / v ? s : v > ',' ? u : b //     either value, unary operator or binary operator
      )[U = 'unshift'](v);          //     (s[], u[] or b[] respectively)
      !!u[0] / s[0] ?               //   if there's at least 1 value and 1 unary operator:
        s[U](                       //     unshift into s[]:
          u.pop() > 'c' ?           //       for the duplicate operator:
            s[0]                    //         a copy of the last value
          :                         //       else, for the negative operator:
            -S()                    //         the opposite of the last value
        ) :                         //     end of unshift()
      !!b[0] / s[1] ?               //   if there's at least 2 values and 1 binary operator:
        s[U](                       //     unshift into s[]:
          +eval(                    //       the result of the following expression:
            S(o = b.pop()) +        //         the last value, followed by the
            (o < '$' ? '==' : o) +  //         binary operator o with '#' replaced by '=='
            S()                     //         followed by the penultimate value
          )                         //       end of eval()
        ) : 0;                      //     end of unshift()
    );                              //   end of for()
  },                                // end of replace() callback
  s = [],                           // initialize the value stack s[]
  u = [],                           // initialize the unary operator stack u[]
  b = [],                           // initialize the binary operator stack b[]
  S = _ => s.shift()                // S = helper function to shift from s[]
) | s                               // return the final result

মনে হয় না যে এটি কাজ করে -1+-2। -3 এর পরিবর্তে 3 ফেরত দেয়।
রিক হিচকক

1
@ রিক হিচকক আমার বোধগম্যতা হল 2 য় অবিলম্বে -প্রয়োগ করা উচিত -1
আর্নল্ড

আমি মনে করি যে এটি দ্বিতীয় অপারেটরের পরে আসার পরে ২ য়টি -সাথে যাবে । সম্ভবত @ হাইপারনিট্রিনো স্পষ্ট করতে পারেন। নেতিবাচক অপারেটর কিছু পরিস্থিতিতে অস্পষ্ট হতে পারে। 2
রিক হিচকক

3

জাভাস্ক্রিপ্ট (ES6), 162 152 143 150 বাইট

(s,N=s.replace(/(-?\d+)-|-(-)/g,'- $1 ').match(/(- ?)*?\d+|R/g))=>+eval(`R=${N[0]>'9'?N[1]:N[0]},${s.match(/[+*=]/g).map((o,i)=>'R=R'+o+'='+N[i+1])}`)

সামান্য শৃঙ্খলাবদ্ধ:

(s,
 N=s.replace(/(-?\d+)-|-(-)/g,'- $1 ').      //change postfix negatives to prefix,
                                             //and change "--" to "- - "
     match(/(- ?)*?\d+|R/g)                  //grab numbers and duplicates
)=>+eval(`R=${N[0] > '9' ?  N[1] : N[0]},    //handle a delayed duplicate
          ${s.match(/[+*=]/g).               //grab the operators
              map((o,i)=>'R=R'+o+'='+N[i+1]) //create a comma-separated list of assignments
           }
         `)

ব্যাখ্যা

আমি *গুণ এবং Rডুপ্লিকেট জন্য ব্যবহার করছি । অন্যান্য অপারেটররাও প্রশ্নের মতোই।

N সংখ্যার অ্যারে (সদৃশ সহ) হয়ে যায়।

replaceকেস যেখানে নেতিবাচক চিহ্ন আসে পরিচালনা পর সংখ্যা। উদাহরণস্বরূপ, এটি পরিবর্তন করতে হবে 1-করতে - 1এবং -1-করতে- -1

এর মধ্যে eval, s.matchবাইনারি অপারেটরগুলির অ্যারে তৈরি করে। মনে রাখবেন যে এর সর্বদা এর চেয়ে কম কিছু উপাদান থাকবে N

ফাংশনের ফলাফল evalসংখ্যা এবং অপারেটরগুলির ম্যাপিং।

এখানে evalপ্রতিটি পরীক্ষার ক্ষেত্রে যা সম্পাদনা করা হয় তা এখানে :

0+2*3        R=0,R=R+=2,R=R*=3        = 6 
1+2*3        R=1,R=R+=2,R=R*=3        = 9 
1R+R+        R=1,R=R+=R,R=R+=R        = 4 
2R**R        R=2,R=R*=R,R=R*=R        = 16 
3R*+R        R=3,R=R*=R,R=R+=R        = 18 
3R+*R        R=3,R=R+=R,R=R*=R        = 36 
123R=        R=123,R=R==R             = 1 
1+2=3        R=1,R=R+=2,R=R==3        = 1 
1R=2+        R=1,R=R==R,R=R+=2        = 3 
1-2-+        R=- 1,R=R+=- 2           = -3 
-1-2+        R=1,R=R+=2               = 3 
*+R10 10     R=10,R=R*=10,R=R+=10     = 110 
+*R10 10     R=10,R=R+=10,R=R*=10     = 200 
-1+--2       R=-1,R=R+=- -2           = 1 
-1+-2        R=-1,R=R+=-2             = -3 

একটি জাভাস্ক্রিপ্ট এক্সপ্রেশন কমা অপারেটর তার শেষ প্রকাশের ফলাফল প্রদান করে, তাই map স্বয়ংক্রিয়ভাবে একটি ব্যবহারযোগ্য এক্সপ্রেশন ফিরে।

+সাইন সামনে প্রয়োজন হয় evalপরিবর্তন করার trueজন্য 1এবং falseজন্য0

Rভেরিয়েবল এবং ডুপ্লিকেট অপারেটর উভয় হিসাবে ব্যবহার করে এটিকে সহজতর করেmap সাব-এক্সপ্রেশনকে ।

পরীক্ষার কেস:


2
আমি মনে করি না replaceকাজগুলি উদ্দেশ্য হিসাবে। এটির 3জন্য এটি প্রত্যাবর্তন করে -1+--2এবং আমি মনে করি 1সঠিক হবে ( 1পরিবর্তনের জন্য +উপলভ্য হওয়ার জন্য দ্বিতীয় তর্ক যুক্ত হওয়ার আগে তিনবার সাইন ইন করুন -1 + 2)।
ফেলিক্স পেলমেন

দুর্দান্ত ক্যাচ, @ ফেলিক্সপ্যালম্যান। এখন স্থির।
রিক হিচকক

2

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

_="f=a=>(a.replace(/\\d+|./g,mq!~(b='+*=\"- '.indexOf(a))|b>2j3j4j5&&o+aw1/y?(y*=-1wcz:1/y?oywcz:hz,rql.map(z=>m(lki,1)[0],i)),hq1/s[1]?sk0,2,+eval(`y${a=='='?a+a:a}s[1]`)):cz,cqlki,0,a),s=[],l=[],e='splice'),s)z(a,i)ys[0]w)^r``:q=z=>os.unshift(k[e](j?b-";for(i of"jkoqwyz")with(_.split(i))_=join(pop());eval(_)

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

পাঁচটি অক্ষর প্রশ্নের মধ্যে একই, ব্যয় ছাড়া *
স্ক্রিপ্টটি RegPack ব্যবহার করে সংকুচিত হয়েছে । মূল স্ক্রিপ্ট _মূল্যায়নের পরে পরিবর্তনশীল মধ্যে সংরক্ষণ করা হয় ।


মনে হয় না যে এটি কাজ করে -1+-2। -3 এর পরিবর্তে 3 ফেরত দেয়।
রিক হিচকক

@RickHitchcock। কেন আপনি বিশ্বাস করেন যে এটির -3পরিবর্তে ফিরে আসা উচিত 3?

আমি নেতিবাচক অপারেটর ভুল বুঝতে পারে। সাধারণত, -1 + -2হয় -3, তবে এটি কি --1 + 2পরিবর্তে পার্স করা উচিত ?
রিক হিচকক

1
@RickHitchcock। আমি ফলাফলটি বেশ নিশ্চিত 32এমনকি স্ট্যাকে আসার আগে দ্বিতীয়টি -মূল্যায়ন করা হয় এবং তাই আমাদের কাছে 1 2 +যা সত্যই তা হয় 3। আহ, এবং সম্ভবত আপনাকে নিজের উত্তরও সম্পাদনা করতে হবে।

তুমি সম্ভবত সঠিক. আপনি এবং আরনল্ড একই উত্তর পেয়েছেন, এবং আমি স্পষ্টির জন্য ওপিকে জিজ্ঞাসা করেছি। আমি পারলে আবার আপনাকে ভোট দিতাম।
রিক হিচকক

1

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

(#([],[]))
(x:r)#(o,n)|x>'9'=r#h(o++[x],n)|[(a,t)]<-lex$x:r=t#h(o,read a:n)
_#(o,n:_)=n
h=e.e
e(o:s,n:m:r)|o>'N'=e(s,g[o]n m:r)
e(o:s,n:r)|o=='D'=e(s,n:n:r)|o=='N'=e(s,-n:r)
e(o:s,n)|(p,m)<-e(s,n)=(o:p,m)
e t=t
g"a"=(+)
g"m"=(*)
g"q"=(((0^).abs).).(-)

এটি অনলাইন চেষ্টা করুন! নিম্নলিখিত বর্ণগুলি ব্যবহার করে: aঅতিরিক্ত হিসাবে, mগুণনের qজন্য, সাম্যের Dজন্য, সদৃশ এবং Nঅবহেলার জন্য। (আমি ব্যবহার করতে চেয়েছিলেন eসমস্যা যে মধ্যে সমতা, কিন্তু দৌড়ে জন্য lexপার্স 2e3: কখগঘ ব্যবহার সঞ্চয় করুন। একটি সংখ্যা হিসাবে) (#([],[])) "2a3 4m"উৎপাদনের 20


1

6502 মেশিন কোড (সি 64), 697 বাইট

00 C0 A2 00 86 29 86 26 86 27 86 28 86 4B 86 4C 86 CC 20 E4 FF F0 FB C9 0D F0
10 C9 20 30 F3 A6 27 9D B7 C2 20 D2 FF E6 27 D0 E7 C6 CC A9 20 20 1C EA A9 0D
20 D2 FF 20 95 C0 20 09 C1 20 95 C0 A6 26 E4 27 F0 4E BD B7 C2 E6 26 C9 20 F0
E8 C9 2D D0 09 A6 4C A9 01 9D B7 C3 D0 32 C9 22 D0 09 A6 4C A9 02 9D B7 C3 D0
25 C9 2B D0 09 A6 4C A9 81 9D B7 C3 D0 18 C9 2A D0 09 A6 4C A9 82 9D B7 C3 D0
0B C9 3D D0 0D A6 4C A9 83 9D B7 C3 E6 28 E6 4C D0 A3 4C 8A C2 A6 29 F0 6F A4
28 F0 6B CA F0 4B C6 28 A6 4B E6 4B BD B7 C3 F0 F5 30 14 AA CA D0 0B 20 7B C2
20 E1 C1 20 4D C2 D0 D9 20 5C C2 D0 D4 29 0F AA CA D0 0B 20 6D C2 20 08 C2 20
4D C2 D0 C3 CA D0 0B 20 6D C2 20 16 C2 20 4D C2 D0 B5 20 6D C2 20 F4 C1 20 4D
C2 D0 AA A4 4B B9 B7 C3 F0 02 10 AC C8 C4 4C F0 0F B9 B7 C3 F0 F6 30 F4 AA A9
00 99 B7 C3 F0 A6 60 A0 00 A6 26 E4 27 F0 15 BD B7 C2 C9 30 30 0E C9 3A 10 0A
E6 26 99 37 C4 C8 C0 05 D0 E5 C0 00 F0 08 A9 00 99 37 C4 20 39 C2 60 A2 FF E8
BD 37 C4 D0 FA A0 06 88 CA 30 0A BD 37 C4 29 0F 99 37 C4 10 F2 A9 00 99 37 C4
88 10 F8 A9 00 8D 3D C4 8D 3E C4 A2 10 A0 7B 18 B9 BD C3 90 02 09 10 4A 99 BD
C3 C8 10 F2 6E 3E C4 6E 3D C4 CA D0 01 60 A0 04 B9 38 C4 C9 08 30 05 E9 03 99
38 C4 88 10 F1 30 D2 A2 06 A9 00 9D 36 C4 CA D0 FA A2 10 A0 04 B9 38 C4 C9 05
30 05 69 02 99 38 C4 88 10 F1 A0 04 0E 3D C4 2E 3E C4 B9 38 C4 2A C9 10 29 0F
99 38 C4 88 10 F2 CA D0 D6 C0 05 F0 06 C8 B9 37 C4 F0 F6 09 30 9D 37 C4 E8 C8
C0 06 F0 05 B9 37 C4 90 F0 A9 00 9D 37 C4 60 A9 FF 45 FC 85 9F A9 FF 45 FB 85
9E E6 9E D0 02 E6 9F 60 A2 00 86 9F A5 FB C5 FD D0 07 A5 FC C5 FE D0 01 E8 86
9E 60 A5 FB 18 65 FD 85 9E A5 FC 65 FE 85 9F 60 A9 00 85 9E 85 9F A2 10 46 FC
66 FB 90 0D A5 FD 18 65 9E 85 9E A5 FE 65 9F 85 9F 06 FD 26 FE CA 10 E6 60 20
33 C1 A6 29 AD 3D C4 9D 3F C4 AD 3E C4 9D 3F C5 E6 29 60 A6 29 A5 9E 9D 3F C4
A5 9F 9D 3F C5 E6 29 60 A6 29 BD 3E C4 9D 3F C4 BD 3E C5 9D 3F C5 E6 29 60 C6
29 A6 29 BD 3F C4 85 FD BD 3F C5 85 FE C6 29 A6 29 BD 3F C4 85 FB BD 3F C5 85
FC 60 A6 29 BD 3E C5 10 13 20 7B C2 20 E1 C1 20 4D C2 A9 2D 20 D2 FF A6 29 BD
3E C5 8D 3E C4 BD 3E C4 8D 3D C4 20 8B C1 A9 37 A0 C4 4C 1E AB

অনলাইন ডেমো

ব্যবহার sys49152 , তারপরে যেকোনও ফিক্স এক্সপ্রেশন লিখুন এবং রিটার্ন টিপুন।

  • কোনও ত্রুটি যাচাইয়ের কাছাকাছি, তাই অবৈধ এক্সপ্রেশনগুলিতে মজার আউটপুটগুলি আশা করুন।
  • গুণের জন্য প্রতীকটি হ'ল *, প্রস্তাবিত হিসাবে অন্য সমস্ত।
  • সর্বাধিক ইনপুট দৈর্ঘ্য 256 টি অক্ষর, 127 টির বেশি অপারেটর সারিবদ্ধ হতে পারে না।
  • ইনপুট রুটিন নিয়ন্ত্রণের অক্ষরগুলি পরিচালনা করে না , তাই ভুল টাইপ করবেন না;)
  • পূর্ণসংখ্যা 16 বিট স্বাক্ষরিত, ওভারফ্লো নিঃশব্দে চারপাশে মোড়ানো হবে।
  • বাইট গণনাটি কিছুটা বড় কারণ এই সিপিইউ এমনকি গুণটিও জানেন না এবং সি 64 ওএস / রম আপনাকে দশমিক স্ট্রিং / এ / থেকে কোনও পূর্ণসংখ্যার গাণিতিক বা রূপান্তর দেয় না ।

এখানে পঠনযোগ্য ca65- শৈলীর সমাবেশী উত্স কোড


1

VB.NET (.NET 4.5) 615 576 বাইট

-39 ফেলিক্স Palmen ধন্যবাদ বাইট পরিবর্তন করে \r\nথেকে\n

প্রয়োজনীয় Imports System.Collections.Generic(বাইট গণনা অন্তর্ভুক্ত)

Dim s=New Stack(Of Long),q=New List(Of String),i=Nothing,t=0,c=0
Function A(n)
For Each c In n
If Long.TryParse(c,t)Then
i=i &"0"+t
Else
If c<>" "Then q.Add(c)
If i<>A Then s.Push(i)
i=A
End If
If i=A Then E
Next
If i<>A Then s.Push(i)
E
A=s
End Function
Sub E()
c=s.Count
If c=0Then Exit Sub
For Each op In q
If op="-"Or op="d"Or c>1Then
Select Case op
Case"*"
s.Push(s.Pop*s.Pop)
Case"+"
s.Push(s.Pop+s.Pop)
Case"="
s.Push(-(s.Pop=s.Pop))
Case"-"
s.Push(-s.Pop)
Case"d"
s.Push(s.Peek)
End Select
q.Remove(op)
E
Exit Sub
End If
Next
End Sub

এন্ট্রি পয়েন্টটি হ'ল ফাংশন A, যা ইনপুট হিসাবে স্ট্রিং নেয় এবং একটি প্রদান করেStack(Of Long)

প্রতীক:

  • সংযোজন - +
  • গুণ - *
  • সমতা - =
  • আলোচনা - -
  • সদৃশ - d

সংক্ষিপ্ত বিবরণ:

ফাংশন Aইনপুট নেয় এবং এটিকে টোকেনাইজ করে। এটি Long?বহু অঙ্কের পূর্ণসংখ্যার জন্য চলমান মোট কাজ করতে একটি ব্যবহার করে, যা Nothingবর্তমানে আমরা কোনও পূর্ণসংখ্যা পড়ছি না তা বোঝায়।

সাবরুটিন Eপূর্ণসংখ্যার এবং অপারেটরদের কিউ স্ট্যাক নেয় এবং anyfix স্বরলিপি মূল্যায়ন করে। কোনও ক্রিয়াকলাপ বাকি না হওয়া পর্যন্ত এটি নিজেকে পুনরাবৃত্ত বলে calls

আমি ঘোষণা এবং প্যারামিটার উভয় ক্ষেত্রে উভয়ই বাইটগুলি সংরক্ষণ করতে একসাথে গ্লোবাল প্যারামগুলি ঘোষণা করি।

Aম্যাচিং ভেরিয়েবলের জন্য একটি মান নির্ধারণ করে এর থেকে প্রাপ্ত মানটি সেট করা হয় A

ভিবি Trueসমতুল্য-1 , যাতে সঠিক মান পেতে অপারেশনটিকে ফলাফলটিকে তুচ্ছ করতে হয়।

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



বিটিডাব্লু, এর সাথে Importsআমি কেবল একটি বাইট গণনা পেয়েছি 576- আপনি কি ভুল অ্যাকাউন্ট করতে পারেন?
ফেলিক্স পামেন

@ ফেলিক্স প্যালেমেনের \r\nপরিবর্তে আমি গণনা করেছি \n, সুতরাং এখানেই তাত্পর্য রয়েছে।
ব্রায়ান জে

@ ফেলিক্সপ্যালম্যান যোগ করেছেন টিআইও, আমাকে স্মরণ করিয়ে দেওয়ার জন্য ধন্যবাদ! :) (ওহ, আমি বুঝতে পারি নি যে আপনি এটি ইতিমধ্যে এই পোস্টের জন্য তৈরি করেছেন)
ব্রায়ান জে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.