একটি 3var দোভাষী তৈরি করুন!


24

3var একটি বৈচিত্র হয় deadfish যখন আর এর ফলে পরিবর্তনশীল হিসাবে ব্যবহার করা হয়, যা তিন ভেরিয়েবল A, B এবং আর A এবং B হয় নামক accumulators ব্যবহার করে।

এই চ্যালেঞ্জে আপনাকে এই ভাষার স্ট্রিপ-ডাউন সংস্করণের জন্য দোভাষী করতে হবে।

প্রয়োজনীয় আদেশগুলি:

i   Increments A
d   Decrements A
s   Squares A
p   Prints A
P   Prints the ASCII character of A
>   Sets A to R
a   Increments B
k   Decrements B
m   Squares B
o   Prints B
O   Prints the ASCII character of B
<   Sets B to R
+   Adds A and B, stores in R
-   Subtracts B from A, stores in R
*   Multiplies A and B, stores in R
/   Divides A by B, stores in R
w   Prints R
@   Resets A to 0
#   Resets B to 0
e   Resets R to 0

অন্যান্য সমস্ত কিছু (সাদা জায়গা সহ) উপেক্ষা করা হয়।

ব্যাখ্যা

  • oএবং এর pপরে কিছুই ছাড়াই আউটপুট করা উচিত।
  • বিভাগ হ'ল পূর্ণসংখ্যা বিভাগ।
  • 255 এর উপরে সংখ্যা এবং 0 এর নীচে সংখ্যাগুলি সমর্থিত।
  • 'ডাব্লু' এর আর এর পরে একটি স্পেস বা একটি নতুন লাইন আউটপুট করা উচিত
  • ত্রুটি ছাড়াই 0 টি থামিয়ে ভাগ করুন। (এসটিডিআরআরে কোনও আউটপুট নেই)
  • এ, বি এবং আর প্রাথমিকভাবে 0 হয়

বিধি

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

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

Hello world! (এসোলাংস থেকে নেওয়া)

iisssaa/>e
maa->e#
aamam->e#
dddddddddddddddddddddddddPiiiiiiiiiiiiiiiiiiiiiiiii
iiiiPiiiiiiiPPiiiP
@#e
iis
aamaaaa
*>P
@#e
iisssaa/>e
maa->e#
aamam->e#
iiiiiiiiiiiiiiiiiiiiiiP
ddddddddP
iiiP
ddddddP
ddddddddP
@#e
iiss
aa*>
iP

ফলাফল 20spooky22me:

iipois+iis<-<aaaO<OkOOkkkkOP@#iippisa+<m+>PaO

ফলাফল 9P-1420 100 3Q-1 162 0:

iiispsdPkokmo/w<+w#aaaommO-w@ii*wew

লিডারবোর্ড

নিয়মিত লিডারবোর্ড এবং ভাষার দ্বারা বিজয়ীদের একটি সংক্ষিপ্ত বিবরণ উভয়ই তৈরি করতে এখানে একটি স্ট্যাক স্নিপেট।

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেমপ্লেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

# Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

# Ruby, <s>104</s> <s>101</s> 96 bytes

সেখানে যদি আপনি আপনার শিরোনামে একাধিক সংখ্যা অন্তর্ভুক্ত করতে চান (যেমন আপনার স্কোর দুটি ফাইলের যোগফল বা আপনি আলাদাভাবে দোভাষী পতাকা শুল্ক তালিকাভুক্ত করতে চান), নিশ্চিত করুন যে আসল স্কোরটি শিরোনামের শেষ সংখ্যা:

# Perl, 43 + 2 (-p flag) = 45 bytes

আপনি ভাষাটির নামটিকে একটি লিঙ্কও বানাতে পারেন যা লিডারবোর্ড স্নিপেটে প্রদর্শিত হবে:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes

var QUESTION_ID=63008,OVERRIDE_USER=45220;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>


1
@ এসপি 3000 এর কথা বলতে গিয়ে আমি সম্প্রতি দোভাষীটিতে নেস্টেড লুপ বাগ ঠিক করতে সহায়তা করেছি।
LegionMammal978

2
ডেডফিশের সাথে পরিচিত ব্যক্তিদের জন্য অতিরিক্ত স্পেসিফিকেশন: 0dddddpiiiissp
তেমন

1
পরীক্ষার ক্ষেত্রে ডোজ rকী? এটি আপনার বৈধ কমান্ডগুলির তালিকায় অন্তর্ভুক্ত নেই
জিমি জাজজেক্স

1
@ জিমি জ্যাজএক্স টেস্টকেস এখন সম্পাদিত হয়েছে তবে পুরো 3var ভাষায় r সব কিছু পুনরায় সেট করে। এটা যেমন হয় @#e
DJgamer98

1
যখন দোভাষী শুরু হয় তখন কি এ, বি, এবং আর 0 দিয়ে শুরু করা হয়?
টনি এনিস

উত্তর:


7

সিজেম, 112

q{"+-*/dspP>@ikmoO<#awe"_@#\4<"X2 U|{TU :V;}P?"S/f*'T"( _*T cT;V;0)"2/f+":T;"f+_'Tf/'Uf*+"VS 0:V; "S/++=~}%Pa/0=

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

ব্যাখ্যা:

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

q            read the input
{…}%         transform each character
  "…"        push a string with all the 3var commands, in a convenient order
  _@         duplicate the string and bring the current character to the top
  #          find the index of the character in the string (or -1 if not found)
  \          swap with the other string copy
  4<         keep only the first 4 characters ("+-*/")
  "…"        push a string that will be used for implementing those operators
  S/         split by space into ["X2" "U|{TU" ":V;}P?"]
  f*         join with each of '+', '-', '*', '/' -> 4 strings
  'T         push the 'T' character
  "…"        push a string with implementations of commands involving A
  2/         split into pieces of length 2
  f+         prepend 'T' to each piece
  ":T;"f+    append ":T;"to each piece
  _          duplicate the array (containing full A-command implementations)
  'Tf/       split each piece by the 'T' character
  'Uf*       join each split piece using the 'U' character
              practically replacing 'T' with 'U'
              to obtain B-command implementations
  +          concatenate the 2 arrays
  "…"        push a string containing implementations for "w" and "e", 
              separated by space; the string also ends with a space
  S/         split by space, obtaining the implementations for "w" and "e"
              and an empty string, for handling unrecognized characters
  ++         concatenate with the A and B command and +-*/ implementations
  =          get the corresponding string implementing the current command
              if the character was not found, -1 will get the empty string (no-op)
  ~          execute it
Pa/          split the array of results by the π separator
0=           get the first piece (before the first π, if any)

প্রকৃত কমান্ড বাস্তবায়ন (প্রোগ্রাম দ্বারা নির্মিত):

+: X2+U|{TU+:V;}P?    if (1+2)|U != 0, set V=T+U, else push π
-: X2-U|{TU-:V;}P?    if (1-2)|U != 0, set V=T-U, else push π
*: X2*U|{TU*:V;}P?    if (1*2)|U != 0, set V=T*U, else push π
/: X2/U|{TU/:V;}P?    if (1/2)|U != 0, set V=T/U, else push π
d: T( :T;             set T=T-1
s: T_*:T;             set T=T*T
p: TT :T;             push T and set T=T (no-op)
P: TcT:T;             push T converted to character and set T=T (no-op)
>: T;V:T;             push and pop T (no-op) and set T=V
@: T;0:T;             push and pop T (no-op) and set T=0
i: T):T;              set T=T+1
k: U( :U;             set U=U-1
m: U_*:U;             set U=U*U
o: UU :U;             push U and set U=U (no-op)
O: UcU:U;             push U converted to character and set U=U (no-op)
<: U;V:U;             push and pop U (no-op) and set U=V
#: U;0:U;             push and pop U (no-op) and set U=0
a: U):U;              set U=U+1
w: VS                 push V and a space
e: 0:V;               set V=0
(default): (empty)    no-op

10

জাভাস্ক্রিপ্ট (ES7) 208 213 223 237 241 311

সম্পাদনা 3 একে অপরকে অনুলিপি করা হচ্ছে, আমি এবং ডেন্ড্রোবিয়াম একসাথে ভেঙে যাচ্ছি।

সম্পাদনা 2 মাত্র 2 বাইট সংরক্ষণের জন্য এক্সমা স্ক্রিপ্ট 7 ব্যবহার করে এ এবং বি এর একসাথে হ্যান্ডলিংয়ে যোগদান করেছে

নিয়মের পরিবর্তন অনুসরণ করে সম্পাদনা করুন

দ্রষ্টব্য, আমি rকমান্ডটি যুক্ত করেছি যা প্রশ্নের প্রয়োজন নেই, কেবলমাত্র পুরানো উদাহরণটি হ্যালো ওয়ার্ল্ড চালানোর জন্য

V=p=>(o='',[for(c of'@#e'+p)eval('++x,--x,x*=x,x=R,x=0,o+=x,o+=String.fromCharCode(x),R=A+B,R=A-B,R=A*B,R=A/B|0,R=0,o+=R+` `'.replace(/x/g,(k='ids>@pP+-*/ewakm<#oO'.indexOf(c))<13?'A':'B').split`,`[k%13])],o)

// More readable
U=p=>(
  o='',
  [for(c of'@#e'+p)
   eval(
   '++x,--x,x*=x,x=R,x=0,o+=x,o+=String.fromCharCode(x),R=A+B,R=A-B,R=A*B,R=A/B|0,R=0,o+=R+` `'
   .replace(/x/g,(k='ids>@pP+-*/ewakm<#oO'.indexOf(c))<13?'A':'B')
   .split`,`[k%13])]
  ,o
)

// ES6, no array comprehension, 2 bytes more
W=p=>
  [...'@#e'+p].map(c=>
    eval(
    '++x,--x,x*=x,x=R,x=0,o+=x,o+=String.fromCharCode(x),R=A+B,R=A-B,R=A*B,R=A/B|0,R=0,o+=R+` `'
    .replace(/x/g,(k='ids>@pP+-*/ewakm<#oO'.indexOf(c))<13?'A':'B')
    .split`,`[k%13]),
    o=''
  )&&o

// Test
function test() 
{ 
  OUT.innerHTML = V(I.value) 
}

test()
textarea { width: 75%; height: 8em }
Test program <button onclick="test()">Run</button><br><textarea id=I>
iisssaa/>e
maa->e#
aamam->e#
dddddddddddddddddddddddddPiiiiiiiiiiiiiiiiiiiiiiiii
iiiiPiiiiiiiPPiiiP
@#e
iis
aamaaaa
*>P
@#e
iisssaa/>e
maa->e#
aamam->e#
iiiiiiiiiiiiiiiiiiiiiiP
ddddddddP
iiiP
ddddddP
ddddddddP
@#e
iiss
aa*>
iP
</textarea><br>Output<pre id=OUT></pre>


আপনি পারে সংরক্ষণ 2 বাইট সরিয়ে A=B=R=0,এবং প্রকৃত ব্যবহার করছেন তাদের ভেরিয়েবলের মান স্থাপনার 3var স্ট্রিং প্রক্রিয়াকরণের, মত সামনে ফাংশন: [...'@#e'+p]
সন্নিবেশকারী নাম 21

2
@ অন্তর্ভুক্তকারীর নাম THX, আমি এটিকে ভালবাসি
edc65

8

জিএনইউ শেড ( dcএক্সপ্রেশন মূল্যায়নের বিকল্প বিকল্প সহ ), 254

ডেডফিশ মানচিত্রের একটি উপসেট মোটামুটি সুন্দরভাবে dc। সুতরাং আমরা সেই ম্যাপিং করতে সিড ব্যবহার করি:

s/^/@#e/
s/\+/AB+r/g
s/-/AB-r/g
s/\*/AB*r/g
s|/|AB/r|g
s/a/B1+b/g
s/i/A1+a/g
s/d/A1-a/g
s/s/Ad*a/g
s/p/An/g
s/P/AP/g
s/>/Ra/g
s/k/B1-b/g
s/m/Bd*b/g
s/o/Bn/g
s/O/BP/g
s/</Rb/g
s/w/Rn/g
s/@/0a/g
s/#/0b/g
s/e/0r/g
s/[ABR]/l&/g
s/[abr]/s\u&/g
s/.*/dc -e'&'/e

8

জাভাস্ক্রিপ্ট ES6 ES7, 217 215 213 208 বাইট

f=s=>(O='',[for(c of'@#e'+s)eval('v=0,++v,--v,v*=v,O+=v,O+=String.fromCharCode(v),v=R,R=0,R=A+B,R=A-B,R=A*B,R=A/B|0,O+=R+" "'.replace(/v/g,'AB'[(x='@idspP>e+-*/w#akmoO<'.indexOf(c))/13|0]).split`,`[x%13])],O)

Ungolfed

f=s=>(
    O='',                                                                   // initialize output to empty string
    [for(c of'@#e'+s)eval(                                                  // initialize A, B, and R, loop over all chars in input, eval returned function string
        'v=0,++v,--v,v*=v,O+=v,O+=String.fromCharCode(v),v=R,R=0,R=A+B,R=A-B,R=A*B,R=A/B|0,O+=R+" "' // operation list
            .replace(/v/g,'AB'[(x='@idspP>e+-*/w#akmoO<'.indexOf(c))/13|0]) // replace all instances of v with either A or B
            .split`,`[x%13])],                                              // split ops list, select corresponding function string
    O)                                                                      // return output string

1
+1 আমার থেকে খুব বেশি দূরে নয়, তবে আরও ভাল। এখন আমাকে কিছু আলাদা চেষ্টা করতে হবে
edc65

1
আপনি পারে সংরক্ষণ 2 বাইট সরিয়ে A=B=R=0,এবং প্রকৃত ব্যবহার করছেন তাদের ভেরিয়েবলের মান স্থাপনার 3var স্ট্রিং প্রক্রিয়াকরণের, মত সামনে ফাংশন: for(c of '@#e'+s)
সন্নিবেশকারী নাম 21

1
@ অন্তর্ভুক্তকারীর নাম আহা, বেশ চালাক, ধন্যবাদ!
ডেন্ড্রোবিয়াম

আপনার উত্তরটি সংশোধন করে, আমি দেখতে পাচ্ছি আপনি কমান্ডের জন্য একটি নতুন লাইন আউটপুট দিচ্ছেন নাw
edc65

@ edc65 স্পষ্টকরণের বুলেটগুলির মধ্যে একটিতে বলা হয়েছে "" ডাব্লু "আর এর পরে কোনও স্থান বা একটি নতুন লাইন আউটপুট করা উচিত
ডেনড্রোবিয়াম

6

এপিএল, 191

{0::→⋄A B R←0⋄{⍵∊G←'aikdms<>':⍎'AB'[1+2|G⍳⍵],'+-*∘'[M],'←','112R'[M←⌈2÷⍨G⍳⍵]⋄⍵∊G←'PpOo':⍞←⎕UCS⍣(2|G⍳⍵)⊢A B[⌈2÷⍨G⍳⍵]⋄⍵∊G←'+-*/':R∘←⌊A(⍎'+-×÷'[G⍳⍵])B⋄⍵∊G←'@#e':⍎'ABR'[G⍳⍵],'∘←0'⋄⍵='w':⍞←R}¨⍵}

এটি এমন একটি ফাংশন যা প্রোগ্রামটিকে আর্গুমেন্ট হিসাবে গ্রহণ করে, যেমন:

      ∆3var←{0::→⋄A B R←0⋄{⍵∊G←'aikdms<>':⍎'AB'[1+2|G⍳⍵],'+-*∘'[M],'←','112R'[M←⌈2÷⍨G⍳⍵]⋄⍵∊G←'PpOo':⍞←⎕UCS⍣(2|G⍳⍵)⊢A B[⌈2÷⍨G⍳⍵]⋄⍵∊G←'+-*/':R∘←⌊A(⍎'+-×÷'[G⍳⍵])B⋄⍵∊G←'@#e':⍎'ABR'[G⍳⍵],'∘←0'⋄⍵='w':⍞←R}¨⍵}
      ∆3var 'iipois+iis<-<aaaO<OkOOkkkkOP@#iippisa+<m+>PaO'
20spooky22me

এটি একটি বেনামি ফাংশন হিসাবে ব্যবহার করা যেতে পারে, আমি এটি স্বচ্ছতার জন্য একটি নাম দিয়েছি।

ব্যাখ্যা:

  • 0::→: যদি কোনও ত্রুটি দেখা দেয় (বলুন, শূন্য দ্বারা বিভাগ), ত্রুটি বার্তাটি প্রিন্ট না করে থামুন lt
  • A B R←0: ভেরিয়েবল সূচনা
  • {... }¨⍵: প্রতিটি কমান্ডের জন্য:

    • ⍵∊G←'aikdms<>': কমান্ডটি যদি var ← fn (var, x) প্রকারের মধ্যে একটি হয় তবে যথাযথ fn এবং x সন্ধান করুন , সেগুলিকে প্রতিস্থাপন করুন এবং তারপরে এটি মূল্যায়ন করুন:
      • : মূল্যায়ন
      • 'AB'[1+2|G⍳⍵: Aঅবস্থান যদি মধ্যে 'aikdms<>'এমনকি, Bঅন্যথায়।
      • '+-*∘'[M]: যোগ করুন, বিয়োগ, শক্তি, বা কিছুই, উপর নির্ভর করে M(পরে সংজ্ঞায়িত)
      • '←': বরাদ্দ
      • '112R'[M←⌈2÷⍨G⍳⍵]: 1(যোগ করার এবং বিয়োগের জন্য), 2(পাওয়ারের জন্য), এবং R(কোনও কিছুর জন্য নয়, এটি কেবল চলককে সেট করে R) M, যার উপর নির্ভর করে কমান্ডটি প্রথম, দ্বিতীয়, তৃতীয় বা চতুর্থ জুটির অন্তর্ভুক্ত কিনা।
    • ⍵∊G←'PpOo': আউটপুট:
      • ⍞←: আউটপুট
      • ⎕UCS⍣(2|G⍳⍵): এএসসিআইআই (ভাল, ইউনিকোড) বা নম্বরটি নির্ভর করে যে কমান্ডটি বিজোড় বা এমনকি অবস্থানের উপর নির্ভর করে PpOo,
      • ⊢A B[⌈2÷⍨G⍳⍵]: Aবা B, কমান্ডটি প্রথম বা দ্বিতীয়ার্ধে ছিল কিনা তার উপর নির্ভর করে।
    • ⍵∊G←'+-*/: গণিত:
      • R∘←⌊A(⍎'+-×÷'[G⍳⍵])B: Rপ্রদত্ত অপারেটরটিতে Aএবং প্রয়োগের ফলাফলের জন্য সেট করে B
    • ⍵∊G←'@#e': রিসেট:

      • : মূল্যায়ন
      • 'ABR'[G⍳⍵]: সঠিক ভেরিয়েবল নির্বাচন করুন
      • '∘←0': শূন্যতে সেট করুন
    • ⍵='w':⍞←R: যদি কমান্ড হয় w, আউটপুট R


4

সি, 253 241 বাইট

#define _ c--?c--?c--
k="id@s>ak#m<e+-*/wpoPO",*p;main(c,a,b,r){for(a=b=r=0;~c;c=getchar())c=strchr(k,c),c&&(c-=k,p=&a+c/5,*p=_?_?_?_?_?printf(c?c<3?"%d":"%c":"%d ",c?c%2?a:b:r):a/(b?b:exit()):a*b:a-b:a+b:0:r:b*b:0:b-1:b+1:r:a*a:0:a-1:a+1);}

এই কোডটি id@s>ak#m<e+-*/wpoPOকমান্ডের সারণী হিসাবে স্ট্রিংটি ব্যবহার করে । স্ট্রিংটি গণনা করা অভিব্যক্তির গন্তব্য অনুযায়ী সাজানো হয়। এটি ঠিক তাই ঘটে যে এখানে 5 টি কমান্ড রয়েছে যা প্রতিটি ভেরিয়েবলকে আপডেট করে:

  • id@s> - হালনাগাদ a
  • ak#m< - হালনাগাদ b
  • e+-*/ - হালনাগাদ r
  • wpoPO- আপডেট ... পরে মেমরি অবস্থানকে a, bএবং r। আমি আশা করি এটি খুব গুরুত্বপূর্ণ নয় :)

সুতরাং কমান্ডগুলির স্ট্রিংয়ে ইনপুট চরিত্রটি সনাক্ত করার পরে, এর সূচকটি বারবার হ্রাস পেয়েছে এবং 0 এ পৌঁছানোর উপর নির্ভর করে একটি অভিব্যক্তি চয়ন করা হয়।

যদি এটি 15 বিয়োগের পরে 0 এ পৌঁছায় না, তবে এটি printfকিছু সঠিকভাবে নির্বাচিত যুক্তি সহ with

বিভাজক করার সময়, এটি কল করে 0 দ্বারা বিভাজন এড়ায় exit()

এই কোড, অপ্টিমাইজেশন ছাড়া কম্পাইল উচিৎ নয় কারণ এটি যে অনুমান a, bএবং rস্ট্যাক সংলগ্ন ঠিকানাগুলি এ অবস্থিত হয় (CPU- র রেজিস্টার নেই)।

এছাড়াও, এটি 32-বিট মোডে সংকলন করা উচিত, কারণ এটি পয়েন্টারগুলিকে পূর্ণসংখ্যা এবং তদ্বিপরীতকে রূপান্তর করে।


4

ভিবিএ, 484, 453 380 বাইট

জয়ের জন্য দীর্ঘতর তবে করণীয়গুলির একটি দুর্দান্ত সরল উপায়, কিছুই নয় অভিনব অভিনেত্রী কেবল ভাল Select Case

পূর্ণসংখ্যা বিভাগে যোগ করা এবং ডিভ 0 টি ত্রুটি পরিচালনা করার ফলে প্রচুর বাইট খেয়েছে
সরানো হয়েছে ত্রুটি হ্যান্ডলিং স্বাভাবিক ত্রুটি হ্যান্ডলিংয়ের ফলে একই কার্যকারিতা দেখা যাচ্ছে। প্রত্যাশিতভাবে কাজ করতে ফিক্সড আইটি বিভাগ। খাটোও ছিল।

Function Y(x)
For Z=1 To Len(x)
w=Mid(x,Z,1)
Select Case w
Case"i":A=A+1
Case"d":A=A-1
Case"s":A=A^2
Case"p":Y=Y &A
Case"P":Y=Y &Chr(A)
Case">":A=R
Case"a":B=B+1
Case"k":B=B-1
Case"m":B=B^2
Case"o":Y=Y &B
Case"O":Y=Y &Chr(B)
Case"<":B=R
Case"+":R=A+B
Case"-":R=A-B
Case"*":R=A*B
Case"/":R=A\B
Case"w":Y=Y &R &vbCrLf
Case"@":A=0
Case"#":B=0
Case"e":R=0
End Select
Next
End Function

31 104 বাইট সঞ্চয় করার জন্য হেনরিক ইলজেনকে ধন্যবাদ


2
না সম্পূর্ণরূপে নিশ্চিত যদি (এটা ভিবি 6 মধ্যে আছে), কিন্তু আপনি ব্যবহার দ্বারা বাইট একটি গুচ্ছ সংরক্ষণ করতে পারিনি VBA মধ্যে এই কাজ DefInt A-Zফলে স্পষ্টভাবে ঘোষণা করার প্রয়োজনীয়তা বাদ A, Bএবং Rযেমন Integer: DefInt A-Z:Dim A, B, R। এটা হিসাবে ভাল শুধু তাদের দায়িত্ব অর্পণ করা, ঘোষণা ছাড়া কাজ করতে পারেন: A=0:B=0:R=0। গণনাগুলিও ভেরিয়েন্টগুলিতে কাজ করা উচিত
হেনরিক ইলজেন

@ হেনরিকলিজেন অনেক ধন্যবাদ, DefIntআমি প্রতিদিন ব্যবহার করি না এমন কিছু সম্পর্কে ভুলে গেছি তবে ভবিষ্যতে সুপার গল্ফিং ভিবিএ হতে চলেছি। দুঃখের বিষয় A=0এটি কেবল আমার পরীক্ষাগুলি থেকে দ্বিগুণের মতো কাজ করবে। সেখানে তৈরীর জন্য iiiaa/wউত্পাদন একটি দশমিক বরং তারপর একটি সম্পূর্ণ স্থাপিত।
জিমি জাজজেক্স

1
পূর্ণসংখ্যা বিভাগের জন্য \ চেষ্টা করুন;)
হেনরিক ইলজেন

1
তোমাদের নিকটে নামিয়া এটা ঘনীভূত করতে 405 বাইট যদি আপনি এটি একটি ফাংশন করতে এবং "বিল্ড" এ ফলাফলের ফেরত মান ব্যবহার করেন, অভিমানী আপনি আসলে ফলাফলের :) প্রিন্ট করতে হবে না
হেনরিক Ilgen

3

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

আমার জীবনে প্রথমবার ব্যবহার করে eval:

for($A=$B=$R=0;$c=$argv[1][$i++];)eval([i=>'++$A',d=>'--$A',s=>'$A*=$A',p=>'echo$A',P=>'echo chr($A)','>'=>'$A=$R',a=>'++$B',k=>'--$B',m=>'$B*=$B',o=>'echo$B',O=>'echo chr($B)','<'=>'$B=$R','+'=>'$R=$A+$B','-'=>'$R=$A-$B','*'=>'$R=$A*$B','/'=>'$R=$A/$B',w=>'echo$R','@'=>'$A=0','#'=>'$B=0',e=>'$R=0'][$c].';');

প্রথম কমান্ড লাইন ইনপুট নেয়:

php 3var.php "iipois+iis<-<aaaO<OkOOkkkkOP@#iippisa+<m+>PaO"

উদাহরণগুলি থেকে আউটপুট:

ওহে বিশ্ব!
20spooky22me


3

সি, 357

ম্যাক্রোস এফটিডাব্লু!

(আমি কার সাথে মজা করছি - সি কখনই এটি জিততে পারে না)

#define X(p,e) case p:e;break;
#define Y(p,a,b,c,d,e,f) X(a,p++)X(b,p--)X(c,p*=p)X(d,printf("%d",p))X(e,printf("%c",p%256))X(f,p=R)
A,B,R;main(int C,char**V){for(;*V[1];)switch(*V[1]++){Y(A,'i','d','s','p','P','>')Y(B,'a','k','m','o','O','<')X('+',R=A+B)X('-',R=A-B)X('*',R=A*B)X('/',R=A/(B?B:exit(0),1))X('w',printf("%d",R))X('@',A=0)X('#',B=0)X('e',R=0)}}

2

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

f=x=>(o="",a=b=r=0,p=String.fromCharCode,[...x].map(c=>{if(eval(`m={i_a++,d_a--,s_a*=a,p_o+=a,P_o+=p(a),">"_a=r,a_b++,k_b--,m_b*=b,o_o+=b,O_o+=p(b),"<"_b=r,"+"_r=a+b,"-"_r=a-b,"*"_r=a*b,"/"_r=a/b|0,w_o+=r,"@"_a=0,"#"_b=0,e_r=0}[c]`.replace(/_/g,":_=>")))m()}),o)

ব্যবহার

f(`iisssaa/>e
maa->e#
aamam->e#
dddddddddddddddddddddddddPiiiiiiiiiiiiiiiiiiiiiiiii
iiiiPiiiiiiiPPiiiP
@#e
iis
aamaaaa
*>P
@#e
iisssaa/>e
maa->e#
aamam->e#
iiiiiiiiiiiiiiiiiiiiiiP
ddddddddP
iiiP
ddddddP
ddddddddP
@#e
iiss
aa*>
iP`)

=> "Hello world!"

ব্যাখ্যা

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

f=x=>(
  o="",                           // o = output string
  a=b=r=0,
  p=String.fromCharCode,
  [...x].map(c=>{                 // iterate through each character
    if(                           // if used for NOP characters (whitespace)

      // Functions:
      eval(`m={
        i_a++,
        d_a--,
        s_a*=a,
        p_o+=a,
        P_o+=p(a),
        ">"_a=r,
        a_b++,
        k_b--,
        m_b*=b,
        o_o+=b,
        O_o+=p(b),
        "<"_b=r,
        "+"_r=a+b,
        "-"_r=a-b,
        "*"_r=a*b,
        "/"_r=a/b|0,
        w_o+=r,
        "@"_a=0,
        "#"_b=0,
        e_r=0
      }[c]`.replace(/_/g,":_=>")) // dynamically add common characters

    )m()                          // execute the function
  }),
  o                               // return the output string
)

1
আমার মনে হয় আপনি সব প্রতিস্থাপন থাকাকালীন একটি Eval মধ্যে অভিধান পরিক্ষেপ দ্বারা কয়েক বাইট বাঁচাতে পারে :$=>সঙ্গে $, তারপর যোগ করার সময় একটি স্ট্রিং এর জন্য প্রতিস্থাপন করুন।
কনর ও'ব্রায়েন

2

সিম্প্লেক্স v.0.8 , 211 বাইট

(ইউটিএফ -8 এনকোডেড))

h@u]u2ƒ§I]ƒ§M]ƒ§^O]ƒ§o]ƒ§s]ƒ§@]ƒ§Ah]ƒ§Sh]ƒ§Mh]ƒ§Vh]ƒ§&oh]ƒðI]ƒðM]ƒð^O]ƒðo]ƒðs]ƒð@]ƒðAh]ƒðSh]ƒðMh]ƒðVh]ƒð&oh]ƒ§z]ƒðz]ƒuz@]{"idspP>akmoO<+-*/w@#e"RlyG^u·u†vøÏ}

ব্যাখ্যা

যেহেতু আমি এ পর্যন্ত লিখেছি এটি দীর্ঘতম সিম্প্লেক্স প্রোগ্রাম, আমি সাধারণত বুলেট পয়েন্টগুলিতে এটি কীভাবে কাজ করে তা ব্যাখ্যা করব।

  • h@u] - ম্যাক্রো 0 টি সংজ্ঞায়িত করে This
  • u2- উপরের স্ট্রিপে গিয়ে বর্তমান বাইট 2 এ সেট করে; এটি সংজ্ঞায়িত ল্যাম্বডাসের আর্টিকে সংজ্ঞায়িত করে।
  • ƒ- শুরু ল্যাম্বদা এক্সপ্রেশন; একবার দ্বারা সম্পন্ন] , ল্যাম্বদা ফাংশনটিকে ল্যাম্বদা স্ট্যাকের দিকে ঠেলে দেবে। এটি পয়েন্টার থেকে (আরিটি) কোষগুলিকে তার স্থানীয় স্ট্রিপে নিয়ে কাজ করে এবং সমাপ্তির পরে, তার স্থানীয় স্ট্রিপটি গৃহীত কোষগুলিতে সেট করবে, যদি না বর্তমান বাইটটি লিখিত হয়। পয়েন্টারটি প্রভাবিত হয় না। ম্যাক্রো 0 স্ট্রিপটিতে কোনও পরিবর্তন না করে কোনও ফাংশন ফেরার অনুমতি দেয়।
  • §- বর্তমান স্ট্রিপ প্রথম লিখিত কক্ষে সরানো হয় A
  • ð - বর্তমান রেখাচিত্রে সর্বশেষ লিখিত কক্ষে চলে আসে B
  • ... {"idspP>akmoO<+-*/w@#e"RlyG^u·u†vøÏ}
    • {...Ï} ইনপুট স্ট্যাকটি খালি না হওয়া পর্যন্ত পুনরাবৃত্তি করুন
    • "idspP>akmoO<+-*/w@#e" - আদেশগুলি
    • Rly - ফালা একটি tuple মধ্যে রাখুন
    • G^u - টিপল ইনপুট এর সূচক
    • ·- বর্তমান বাইট লোড তম ল্যামডা evaluator মধ্যে
    • uRL- স্ট্রিপ হোল্ডিংয়ে যায় Aএবং B(লেখেন Aএবং Bতাদের উপস্থিত না থাকলে)
    • - ল্যাম্বদা চালায় (এটি ল্যাম্বডা মূল্যায়নকারী)
    • - ফালা নীচে পুনরায় সেট

রাম রাম আমি অভিভূত। এটি সিম্প্লেক্সের পক্ষে দীর্ঘ, তবে সমস্ত কিছুর জন্য সংক্ষিপ্ত।;)


2

মিনকোলাং 0.11 , 222 বাইট

আমি নিশ্চিত এটি আরও গল্ফ করা যেতে পারে, কিন্তু মজা ছিল। এছাড়াও, অন্য ভাষার প্রথম মিনকোল্যাং দোভাষী!

>I3&000V$Vod?.45*[di1q=5&]x00wx1i2+kw
idspP>akmoO<+-*/w@#e
vr1+r
vr1-r
vr2;r
v0c1$((dl%"0"+$rl:d)$Ok
v0cO
vrx0cr
v1g1+1G
v1g1-1G
v1g2;1G
v1c1$((dl%"0"+$rl:d)$Ok
v1cO
v1gxd1G
vx$d+
vx$d-
vx$d*
vx$dd?.:
vdN
vrx0r
v1gx01G
vx0

এখানে চেষ্টা করুন।

ব্যাখ্যা

>I3&000                    Initializes A, B, and R if they don't already exist.
V$V                        An idiom that ensures no time-travel.
od?.                       Reads in a character and halts if input is empty.
45*[di1q=5&]               Looks through the second row for a matching character.
            x00w           Jumps back to beginning if no match.
                x1i2+kw    Jumps to corresponding line upon match.

বাকী রেখাগুলি বেশ সহজ, সম্ভবত তাদের সাথে ব্যতীত 1$((dl%"0"+$rl:d)$Ok, এটি একটি মূর্খতা যা পিছনে স্থান ছাড়াই একটি সংখ্যা মুদ্রণ করে। (আমি এখনও রূপান্তর-এই-নম্বর-এ-স্ট্রিং কার্যকারিতা বাস্তবায়ন করি নি, যা হবে 1Z)) হ্যাঁ, হ্যাঁ, তাদের সবার vশুরুতে রয়েছে, যা এটি আবার শুরুতে নিয়ে যায়।


2

জিএনইউ শেড (ডিসি এক্সপ্রেশন মূল্যায়নের জন্য বিকল্প বিকল্প সহ), 289

ডিজিটাল ট্রমা দ্বারা অনুপ্রাণিত হয়ে যারা দুঃখের সাথে বুঝতে পেরেছিলেন যে ক) অবৈধ চরিত্রগুলিকে উপেক্ষা করা দরকার, খ) ডিসিকে একটি যুক্তিতে পুরো রূপান্তরিত প্রোগ্রামের প্রয়োজন এবং গ) ০ দ্বারা বিভাজন ছাড়াই অবশ্যই প্রোগ্রামটি শেষ করতে হবে।

যদি এই সমস্ত বিধি প্রয়োগ না করা হয় তবে আমার সমাধানটি কেবল ২৩৫ বাইট দীর্ঘ হবে;)

H
$!d
x
s/^/@#e/
s:[^-a><de/+i*k@w#opsmOP]::g
s:[e@#]:0&:g
s:[-*+/pPid]:Q&:g
s:[-kaoO*+/]:H&:g
s:[><w]:Z&:g
s:[diak]:1&:g
s:s:Q2^>:g
s:m:H2^<:g
s:[-+*/]:&e:g
s:[ia]:+&:g
s:[dk]:-&:g
y:Oop:Pnn:
s:w:n32P:g
s:[id>@]:sq:g
s:e:sz:g
s:[#<ka]:sh:g
s:[QHZ]:l\l&:g
s:/:d0=t/:g
s/.*/dc -e'[q]st&'/e

2

এডাব্লুকে, ৩১১ 309

func p(z,f,x){if(c~z)printf"%"f,x}BEGIN{FS=z}{for(i=0;++i<=NF;){c=$i;A=c~/i/?A+1:c~/d/?A-1:c~/s/?A*A:c~/@/?0:c~/>/?R:A;p("p","d",A);p("P","c",A);B=c~/a/?B+1:c~/k/?B-1:c~/m/?B*B:c~/#/?0:c~/</?R:B;p("o","d",B);p("O","c",B);R=c~/+/?A+B:c~/-/?A-B:c~/*/?A*B:c~/e/?0:R;if(c~"/")if(B)R=A/B;else exit;p("w","d ",R)}}

প্রিন্টফের চারপাশে টিআইএল বন্ধনীগুলির প্রয়োজন ছিল না। 2 টি বাইট সংরক্ষণ করা হয়েছে!

আরও সহজ পড়ার জন্য অবহেলিত সংস্করণ:

func p(z,f,x) {
    if(c~z) printf "%"f,x
}

BEGIN {
    FS=z
}

{
    for(i=0;++i<=NF;){
        c=$i;
        A=c~/i/?A+1:c~/d/?A-1:c~/s/?A*A:c~/@/?0:c~/>/?R:A;
        p("p","d",A);
        p("P","c",A);
        B=c~/a/?B+1:c~/k/?B-1:c~/m/?B*B:c~/#/?0:c~/</?R:B;
        p("o","d",B);
        p("O","c",B);
        R=c~/+/?A+B:c~/-/?A-B:c~/*/?A*B:c~/e/?0:R;
        if(c~"/")if(B)R=A/B;else exit;
        p("w","d ",R)
    }
}

1

পাইথন 2, 272

import sys;a,b,r=0,0,0;exec';'.join(filter(None,map(dict(x.split(':')for x in"a:b+=1|@:a=0|#:b=0|/:r=a/b|d:a-=1|PXchr(a)|i:a+=1|-:r=a-b|k:b-=1|*:r=a*b|m:b*=b|oXb|pXa|s:a*=a|OXchr(b)|wXr|+:r=a+b|e:r=0|<:b=r|>:a=r".replace('X',':print ').split('|')).get,sys.stdin.read())))

এটি কাজ করে না। আপনার printবিবৃতিতে একটি পেছনের নিউলাইন অন্তর্ভুক্ত রয়েছে।
গ্রিফিন

1

রুবি, 199 বাইট

a=b=r=0
$<.read.chars{|c|eval %w{a+=1
a-=1
a*=a
$><<a
$><<a.chr
a=r
b+=1
b-=1
b*=b
$><<b
$><<b.chr
b=r
r=a+b
r=a-b
r=a*b
b==0&&exit||r=a/b
puts\ r
a=0
b=0
r=0
p}["idspP>akmoO<+-*/w@#e".index(c)||-1]}

.readআপনি যদি রুবির নতুন সংস্করণে স্টাডারে মুদ্রণযোগ্য একটি সতর্কতা সহ্য করতে পারেন তবে দ্বিতীয় লাইন থেকে সরিয়ে 5 বাইট সংরক্ষণ করা যায় ।


1

পাইথন, 244

import sys;P=sys.stdout.write;A=B=R=0;exec';'.join(filter(None,map(dict(zip('idspP>akmoO<+-*/w@#e','A+=1 A-=1 A**=2 P(`A`) P(chr(A)) A=R B+=1 B-=1 B**=2 P(`B`) P(chr(B)) B=R R=A+B R=A-B R=A*B R=A/B print(R) A=0 B=0 R=0'.split())).get,input())))

বিট দেরী তবে আমি যেতে চাই।


1

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

সংক্ষিপ্ততম প্রোগ্রাম নয়, তবে কমপক্ষে এটি কাঠামোগত এবং পাঠযোগ্য।

q(A,B,R,i,X,B,R):-X is A+1.
q(A,B,R,d,X,B,R):-X is A-1.
q(A,B,R,s,X,B,R):-X is A*A.
q(_,B,R,>,R,B,R).
q(A,B,R,a,A,X,R):-X is B+1.
q(A,B,R,k,A,X,R):-X is B-1.
q(A,B,R,m,A,X,R):-X is B*B.
q(A,_,R,<,A,R,R).
q(A,B,_,+,A,B,X):-X is A+B.
q(A,B,_,-,A,B,X):-X is A-B.
q(A,B,_,*,A,B,X):-X is A*B.
q(_,0,_,/,_,_,_):-!,1=2.
q(A,B,_,/,A,B,X):-B>0,X is A/B.
q(_,B,R,@,0,B,R).
q(A,_,R,#,A,0,R).
q(A,B,_,e,A,B,0).
q(A,B,R,p,A,B,R):-write(A).
q(A,B,R,'P',A,B,R):-A>0,format('~c',A).
q(A,B,R,'P',A,B,R):-write(A).
q(A,B,R,o,A,B,R):-write(B).
q(A,B,R,'O',A,B,R):-format('~c',B).
q(A,B,R,'O',A,B,R):-write(B).
q(A,B,R,w,A,B,R):-write(R),nl.
q(A,B,R,_,A,B,R).
f([],_,_,_).
f([H|T],A,B,R):-q(A,B,R,H,X,Y,Z),f(T,X,Y,Z),!.
p(X):-atom_chars(X,Y),f(Y,0,0,0).

উদাহরণ ইনপুট

p('iipois+iis<-<aaaO<OkOOkkkkOP@#iippisa+<m+>PaO').

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

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