2B के लिए एक दुभाषिया लिखें
मुझे डेविड केट की गूढ़ भाषा 2 बी पसंद है, जिसमें मेमोरी एक टेप में संग्रहीत है, जहां प्रत्येक सेल बाइट्स का एक अलग टेप ('उपप्रकार') है। इसके लिए एक दुभाषिया लिखें!
भाषा की विशिष्टता
आधिकारिक विनिर्देश यहां देखे जा सकते हैं । इस विनिर्देश "
में, सीमा में एक संख्या का अर्थ है 0-9
( 0
जैसा कि व्याख्या की गई है 10
), और _
इसका अर्थ है किसी भी लम्बाई की एक स्ट्रिंग। प्रत्येक सेल रेंज में एक वैल्यू स्टोर करता है 0-255
, और यह एक बीएफ होता है। (साभार @ मार्टिनबटनर)। पाठ को संख्याओं में बदलने के लिए 0-255
, ASCII कोड का उपयोग करें । क्योंकि मुझे इस पर कोई विवरण नहीं मिल रहा है, मैं यह कहने जा रहा हूं कि टेप की लंबाई 255
न्यूनतम होनी चाहिए , लेकिन अगर आप जानते हैं तो कृपया संपादित करें।
+-------------+----------------------------------------------------------------------------------------------------------------------------------------+
| Instruction | Description |
+-------------+----------------------------------------------------------------------------------------------------------------------------------------+
| 0 | Zeroes the current cell and clears the overflow/underflow flag. |
| { | If the current cell is zero, jump to the matching }. |
| } | A placeholder for the { instruction. |
| ( | Read a byte from the input stream and place it in the current cell. |
| ) | Write the value of the current cell to the console. |
| x | Store the value of the current cell in a temporary register. |
| o | Write the value of the temporary register to the console. |
| ! | If the last addition overflowed, add one to the current cell. If the last subtraction underflowed, subtract one from the current cell. |
| ? | Performs a binary NOT on the current cell. |
| +" | Adds an amount to the current cell. |
| -" | Subtracts an amount from the current cell. |
| ^" | Moves the subtape up a number of times. |
| V" | Moves the subtape down a number of times. |
| <" | Moves the tape left a number of times. |
| >" | Moves the tape right a number of times. |
| :_: | Defines a label of name _. |
| *_* | Jumps to a label of name _. |
| ~_~ | Defines a function of name _. |
| @_@ | Calls a function of name _. |
| % | Ends a function definition. |
| #_# | Is a comment. |
| [SPACE] | Is an NOP. |
| [NEWLINE] | Is treated as whitespace and removed. |
| [TAB] | Is treated as whitespace and removed. |
+-------------+----------------------------------------------------------------------------------------------------------------------------------------+
टेस्ट
+0+0+0+0+0+0+0+2)+0+0+9)+7))+3)-0-0-0-0-0-0-0-9)+0+0+0+0+0+0+0+0+7)-8)+3)-6)-8)-7-0-0-0-0-0-0)
आउटपुट चाहिए Hello world!
+1:i:{()*i*}
एक cat
कार्यक्रम की तरह, सिर्फ एक नई लाइन के बिना।
+1:loop:{@ReadChar@*loop*}@PrintHello@@WriteAll@(~ReadChar~(x-0-3<2o^1>1+1>1%~PrintHello~+0+0+0+0+0+0+0+2)-1+0+0+0)+7))+3)+1-0-0-0-0-0-0-0-0)%~WriteAll~<1x:reverse:{<1v1>1-1*reverse*}o-1:print:{-1<1)^1>1*print*}%
पहले एक नाम स्वीकार करना चाहिए, फिर, प्रेस पर Return, आउटपुट होना चाहिए Hello name
(जहां नाम इनपुट किया गया था)।
उस कार्यक्रम का श्रेय डेविड कैट को जाता है ।
मैं एक पूर्ण परीक्षण कार्यक्रम पर काम कर रहा हूं।
नियम
- मानक खामियों को मना किया जाता है
- आपके दुभाषिया को सभी विशिष्टताओं को पूरा करना होगा, टिप्पणियों को छोड़कर, जिनकी आवश्यकता नहीं है।
स्कोरिंग
- यह कोड-गोल्फ है , इसलिए सबसे कम बाइट्स जीतता है!
- -10 बाइट्स यदि आपका दुभाषिया टिप्पणियों को संभालता है।
लीडरबोर्ड
यहां एक नियमित लीडरबोर्ड और भाषा के अनुसार विजेताओं का अवलोकन करने के लिए एक स्टैक स्निपेट है।
यह सुनिश्चित करने के लिए कि आपका उत्तर दिखाई दे रहा है, कृपया अपना उत्तर शीर्षक मार्कडाउन टेम्पलेट का उपयोग करके शीर्षक के साथ शुरू करें:
# Language Name, N bytes
N
आपके प्रस्तुत करने का आकार कहां है। यदि आप अपने स्कोर में सुधार करते हैं, तो आप पुराने अंकों को हेडलाइन में रख सकते हैं , उनके माध्यम से स्ट्राइक करके। उदाहरण के लिए:
# Ruby, <s>104</s> <s>101</s> 96 bytes