ডিওজিওকে ব্যাখ্যা করুন!


9

ডিওজিও ব্যাখ্যা করুন

ডিওজিও একটি কম পরিচিত প্রোগ্রামিং ভাষা। মূল ডিওজিও (ইউজনেট পোস্টের একটি রসিক ভাষা) কখনও প্রয়োগ করা হয়নি, তবে এর মতো একটি ভাষা তৈরি করা হয়েছে। ভাষার আদেশগুলি হ'ল:

+===========+================================================================+
|  Command  |                          Description                           |
+===========+================================================================+
| SIT       | If the value of the current memory cell is 0, jump to STAY.    |
+-----------+----------------------------------------------------------------+
| STAY      | If the value of the current memory cell is not 0, jump to SIT. |
+-----------+----------------------------------------------------------------+
| ROLL-OVER | Select the next operation from the operation list.             |
+-----------+----------------------------------------------------------------+
| HEEL      | Execute the currently selected operation.                      |
+-----------+----------------------------------------------------------------+

অপারেশনগুলি হ'ল:

+========+=======================================================+====+
| Number |                      Description                      | BF |
+========+=======================================================+====+
|      0 | Increment current memory cell.                        | +  |
+--------+-------------------------------------------------------+----+
|      1 | Decrement current memory cell.                        | -  |
+--------+-------------------------------------------------------+----+
|      2 | Move to next memory cell.                             | >  |
+--------+-------------------------------------------------------+----+
|      3 | Move to previous memory cell.                         | <  |
+--------+-------------------------------------------------------+----+
|      4 | Input a byte and store it in the current memory cell. | ,  |
+--------+-------------------------------------------------------+----+
|      5 | Output the current memory cell as ASCII.              | .  |
+--------+-------------------------------------------------------+----+

উদাহরণ

ওহে বিশ্ব:

roll-over roll-over heel roll-over roll-over roll-over roll-over heel heel heel 
heel heel heel heel heel heel sit roll-over roll-over roll-over heel roll-over 
roll-over roll-over heel heel heel heel heel heel heel heel roll-over roll-over 
heel roll-over roll-over roll-over roll-over roll-over heel roll-over roll-over 
roll-over roll-over roll-over stay roll-over roll-over roll-over heel roll-over 
roll-over heel roll-over roll-over roll-over heel roll-over roll-over roll-over 
roll-over heel heel heel heel heel heel heel sit roll-over roll-over roll-over 
heel roll-over roll-over roll-over heel heel heel heel roll-over roll-over heel 
roll-over roll-over roll-over roll-over roll-over heel roll-over roll-over 
roll-over roll-over roll-over stay roll-over roll-over roll-over heel roll-over  
roll-over roll-over heel roll-over roll-over roll-over roll-over roll-over heel 
roll-over heel heel heel heel heel heel heel roll-over roll-over roll-over 
roll-over roll-over heel heel roll-over heel heel heel roll-over roll-over 
roll-over roll-over roll-over heel roll-over roll-over roll-over heel heel heel 
roll-over roll-over roll-over roll-over heel heel heel heel heel heel heel heel 
sit roll-over roll-over roll-over heel roll-over roll-over roll-over heel heel 
heel heel roll-over roll-over heel roll-over roll-over roll-over roll-over 
roll-over heel roll-over roll-over roll-over roll-over roll-over stay roll-over 
roll-over roll-over heel roll-over roll-over heel roll-over roll-over roll-over 
heel heel heel roll-over roll-over roll-over roll-over heel heel heel heel heel 
heel heel heel heel heel sit roll-over roll-over roll-over heel roll-over 
roll-over roll-over heel heel heel heel heel heel heel heel heel roll-over 
roll-over heel roll-over roll-over roll-over roll-over roll-over heel roll-over 
roll-over roll-over roll-over roll-over stay roll-over roll-over roll-over heel 
roll-over roll-over roll-over roll-over heel heel heel roll-over roll-over 
roll-over roll-over heel roll-over roll-over roll-over roll-over heel heel heel 
heel roll-over roll-over heel roll-over heel heel heel roll-over roll-over 
roll-over roll-over roll-over heel roll-over roll-over heel heel heel heel heel 
heel roll-over roll-over roll-over roll-over heel roll-over roll-over heel heel 
heel heel heel heel heel heel roll-over roll-over roll-over roll-over heel 
roll-over roll-over roll-over heel heel roll-over roll-over roll-over roll-over 
heel roll-over roll-over roll-over roll-over roll-over heel

99 বোতল বিয়ার

বিধি

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

স্কোরিং

বাইট অনুযায়ী প্রোগ্রাম করা হয় । ডিফল্ট অক্ষর সেটটি ইউটিএফ -8, আপনি যদি অন্য কোনও ব্যবহার করে থাকেন তবে দয়া করে উল্লেখ করুন।

একপাশে, এই , এবং সর্বনিম্ন বাইট গণনাটি বিজয়ী হিসাবে গণ্য হবে!

জমা

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

# 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

লিডারবোর্ড

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

হালনাগাদ:

sitএবং stayআদেশগুলি খুব ভালভাবে ব্যাখ্যা না করার জন্য দুঃখিত । তারা হলেন, যেমন @ user6245072 বলেন মত [এবং ]বি এফ হবে।

আপডেট 2:

@ কেনিলাউ এর প্রশ্নগুলি পরিষ্কার করতে:

  • ডিফল্ট অপারেশন হয় 0
  • স্মৃতিতে 8-বিট কোষ থাকে।
  • ওভারফ্লো / আন্ডারফ্লোতে ঘর মোড়ানো।
  • অপারেশন 4 এর জন্য ইনপুট প্রয়োজন।

আমাদের কি বহিরাগত ইনপুট পরিচালনা করতে হবে? যেমনsit lie-down roll-over play-dead heel
মূল্য ইঙ্ক

1
এছাড়াও, অপারেশনটি 1বলেছে "ইনক্রিমেন্ট নেক্সট সেল`, তবে সংশ্লিষ্ট বিএফ কোডটি হ'ল "হ্রাসের বর্তমান সেল" Which কোনটি সঠিক আচরণ?
মান কালি

@ কেভিনলউ-নোট কেনি ধন্যবাদ, আমার দোষ।
জর্জ গিবসন

উত্তর:


1

রুবি, 287 বাইট

উভয় দিক দিয়ে অসীম টেপ চালিত। ডিওজিও ইনপুট হ'ল কমান্ড লাইনের একটি ফাইল। যদি কোনও কমান্ড লাইনের যুক্তি না থাকে তবে একটি ডিওজিও প্রোগ্রাম এখনও কাজ করবে যদি এটি এসটিডিএন হিসাবে পাস করা হয়, যদি না এটি অপারেশন 3(এসটিডিআইএন থেকে একটি বাইট পান) ব্যবহার করে তবে আমার কোন ধারণা নেই। যে কোনও হারে, ফাইল ইনপুট সবচেয়ে ভাল।

চারটি কমান্ড এবং হোয়াইটস্পেস ব্যতীত অন্য কোনও পাঠ্য প্রোগ্রাম ফাইলে ধরে নেই।

হ্যালো ওয়ার্ল্ড বিক্ষোভ

i=k=o=0;m={}
c=$<.read.upcase.split.map{|e|%w{SIT STAY ROLL-OVER HEEL}.index e}.join
(m[k]||=0
e=c[i].to_i
e>2?o>4?$><<m[k].chr:
o>3?m[k]=STDIN.getc.ord:
o>1?k+=o>2?-1:1:
m[k]=o<1?-~m[k]%256:~-m[k]%256:
e>1?o=-~o%6:
e>0?m[k]>0?i=c.rindex(?0,i):0:
m[k]<1?i=c.index(?1,i):0
i+=1)while c[i]

2

পাইথন 3, 388 398 373 371 বাইট

অনুমান 256 মেমরি কোষ। সহজেই বীটযোগ্য, কেবল একটি সরল বাস্তবায়ন সম্ভবত আরও গল্ফ করা যেতে পারে। Repl.it এ চেষ্টা করুন ।

পাইথন 3 যে পাইথন 2 এর চেয়ে ছোট, তা বুঝতে পেরে আমাকে @ ইস্টারলিআইর্ককে ধন্যবাদ জানাই।

সম্পাদনা: অনুধাবন করা হয়েছে যে আমি মুদ্রণের সময় কেবলমাত্র ওভার / আন্ডারফ্লোতে জবাবদিহি করেছি, প্রকৃত মান হিসাবে নয়।

তালিকা গুণ এবং ইনভার্সন অপারেটর ট্রিকস সহ 25 (!) বাইট সংরক্ষণ করার জন্য @ কেভিনলউ-নোট কেনিকে ধন্যবাদ জানাই

সম্পাদনা করুন: -3 বাইট 256 ভেরিয়েবলের মধ্যে রেখে, অপারেটরদের সাথে -4 জগাখিচুড়ি, +8 এটি লোয়ারকেস নিশ্চিত করে তোলে

def p(s):
 b=256
 l,m=[w[-1]for w in s.lower().split()],[0]*b
 i=p=x=0
 while x<len(l):
  c=l[x]
  if'm'>c:
   if 1>i:m[p]=-~m[p]%b
   if 1==i:m[p]=~-m[p]%b
   if 2==i:p=-~p%b
   if 3==i:p=~-p%b
   if 4==i:m[p]=ord(input()[0])
   if 4<i:print(chr(m[p]),end="")
  if'r'==c:i=-~i%6
  if't'==c and m[p]<1:x+=l[:x].index('y')
  if'x'<c and m[p]>0:x-=l[x::-1].index('t')
  x+=1

কেন ব্যবহার করবেন sys.stdout.write? না কেন print?
Rɪᴋᴇʀ

@ EᴀsᴛᴇʀʟʏIʀᴋ মুদ্রণ নতুন লাইন যোগ করেছে। শেষ আরগের সাথে প্রকৃত মুদ্রণ ফাংশনটি পাইথন 3
নীল

অজগর 3 প্রশ্ন থেকে কি তৈরি করে? print(...,end='')
সবেমাত্র

@ EᴀsᴛᴇʀʟʏIʀᴋ আমি এটি ইনস্টল করতে খুব অলস ছিলাম। আমি উত্তরটিও সম্ভবত পরিবর্তন করতে পারি
ব্লু

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