व्याख्या DOGO!


9

व्याख्या DOGO

DOGO एक कम ज्ञात प्रोग्रामिंग भाषा है। जबकि मूल DOGO (एक यूज़नेट पोस्ट से एक मजाक भाषा) कभी भी लागू नहीं किया गया है, यह एक ऐसी भाषा है जो इसे बनाया गया है। भाषा के लिए आदेश हैं:

+===========+================================================================+
|  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(या अपनी भाषा में निकटतम विकल्प) से, या एक तर्क के रूप में इनपुट ले सकते हैं ।
  • मानक खामियों को मना किया जाता है।

स्कोरिंग

कार्यक्रम बाइट्स के अनुसार बनाए जाते हैं । डिफ़ॉल्ट वर्ण सेट UTF-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 ने कहा, जैसे [और ]BF में।

अपडेट 2:

@ केनीलाऊ के प्रश्नों को स्पष्ट करने के लिए:

  • डिफ़ॉल्ट ऑपरेशन है 0
  • मेमोरी में 8-बिट सेल्स होते हैं।
  • कोशिकाएं ओवरफ्लो / अंडरफ्लो पर लपेटती हैं।
  • ऑपरेशन 4 के लिए इनपुट आवश्यक है।

क्या हमें बाहरी इनपुट को संभालने की आवश्यकता है? जैसे इनपुट काsit lie-down roll-over play-dead heel
वैल्यू इंक

1
इसके अलावा, ऑपरेशन 1कहता है "वेतन वृद्धि अगली सेल ', लेकिन संबंधित बीएफ कोड" डिक्रीमेंट करंट सेल "है। कौन सा सही व्यवहार है?
मूल्य इंक

@ केविनलाउ-केनी धन्यवाद, मेरी गलती है।
जॉर्ज गिब्सन

जवाबों:


1

रूबी, 287 बाइट्स

दोनों दिशाओं में एक अनंत टेप पर चलता है। DOGO इनपुट कमांड लाइन पर एक फाइल है। यदि कोई कमांड लाइन तर्क नहीं है, तो DOGO प्रोग्राम तब भी काम करेगा जब STDIN के रूप में पास किया जाएगा, जब तक कि यह ऑपरेशन का उपयोग नहीं करता 3(STDIN से एक बाइट प्राप्त करें) जिस स्थिति में मुझे कोई पता नहीं है। किसी भी दर पर, फ़ाइल इनपुट सबसे अच्छा है।

मान लें कि चार कमांड के अलावा कोई अन्य टेक्स्ट नहीं है और व्हॉट्सएप प्रोग्राम फाइल में मौजूद है।

नमस्ते विश्व प्रदर्शन

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 पर आज़माएँ

@EasterlyIrk के लिए धन्यवाद मुझे यह महसूस करने के लिए कि पायथन 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
ब्लू

क्या python3 प्रश्न से बाहर करता है? बस परीक्षण किया, ठीक काम करता हैprint(...,end='')
Rɪᴋᴇʀ

@ E @s installIʀᴋ मैं इसे स्थापित करने के लिए बहुत आलसी था। मैं उत्तर को भी बदल सकता हूं, थियो
ब्लू

तो शायद ideone या उसके लिए एक ऑनलाइन अजगर दुभाषिया की कोशिश करो। या इसे स्थापित करें। : पी
आर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.