हाल ही में एक और दो चरित्र की भाषा पर क्रेज से प्रेरित होकर, ;#
पहचान
सामुदायिक आम सहमति के अनुसार , इस साइट पर स्वीकार्य उत्तर प्रोग्रामिंग भाषाओं का उपयोग करना चाहिए, जो कि न्यूनतम:
- यह निर्धारित कर सकता है कि क्या प्राकृतिक संख्या प्रधान है
- दो प्राकृतिक संख्याओं को एक साथ जोड़ सकते हैं
- संख्याओं की एक सूची / टपल का प्रतिनिधित्व कर सकते हैं, साथ ही एक ही संख्या भी
इस चुनौती के प्रयोजनों के लिए, हम # 3 की उपेक्षा करेंगे। इसलिए, इस साइट पर इस्तेमाल की जाने वाली सबसे सरल भाषा (# 3 को अनदेखा करना) में वास्तव में दो कमांड होंगे, isPrimeऔर add। व्याख्या और बाइट गिनती में आसानी के लिए, मान असाइन जाने isPrimeके लिए pऔर addकरने के लिए +। इस प्रकार, हम, हमारी भाषा है +p। आपकी चुनौती कुछ +pकोड की व्याख्या करना है ।
व्यवहार
+addअनुदेश दो नंबर लेता है, उन्हें जोड़ता है, और परिणाम आउटपुटpisPrimeअनुदेश एक संख्या लेता है, और आउटपुट1अगर यह प्रधानमंत्री है, और0अगर यह नहीं है
नियम
- आपको एक प्रोग्राम / फंक्शन लिखना होगा, जिसमें अक्षरों की एक स्ट्रिंग दी गई हो, उस स्ट्रिंग को
+pकोड के रूप में व्याख्या करता है । आप अच्छी तरह से गठित इनपुट (केवल+औरpवर्ण) मान सकते हैं । - इनपुट लचीला है। आप प्रोग्राम में एक स्ट्रिंग, चरित्र सरणी, कोडपॉइंट्स के पूर्णांक सरणी आदि के रूप में ले सकते हैं, व्याख्या किए जा रहे कार्यक्रम के लिए इनपुट भी लचीला है। आप पूर्णांक सरणी में ले सकते हैं, और प्रविष्टियों का उपयोग कर सकते हैं क्योंकि कार्यक्रम निष्पादित होता है, या प्रत्येक निर्देश (
+औरp) व्यक्तिगत रूप से इनपुट का अनुरोध कर सकते हैं। आप मान सकते हैं कि हर निर्देश के लिए पर्याप्त इनपुट होगा। इनपुट को 0 और 200 के बीच संख्याओं से युक्त करने की गारंटी है (लेकिन आपके एल्गोरिदम को सैद्धांतिक रूप से किसी भी सकारात्मक पूर्णांक इनपुट के लिए काम करना चाहिए)। - आउटपुट भी लचीला है। आप परिणामों को प्रिंट कर सकते हैं, उन्हें एक सूची के रूप में वापस कर सकते हैं, एक स्ट्रिंग लौटा सकते हैं जिसमें सभी परिणाम शामिल हैं, आदि। यदि मुद्रित या एक स्ट्रिंग के रूप में लौटा है, तो आउटपुट को कुछ गैर-अंक, सुसंगत विभाजक, जैसे एक नई लाइन, द्वारा अलग किया जाना चाहिए। टैब, स्थान या
,वर्ण। आपके पास एक अनुगामी विभाजक या कुछ अनुगामी व्हाट्सएप हो सकता है। साथ ही,pइसका आउटपुट कोई भी सत्य या गलत मूल्य हो सकता है, जैसा कि आप जिस भाषा में काम कर रहे हैं, उसके बजाय1या उसके द्वारा परिभाषित किया गया है0। - दुभाषिया समाप्त हो सकता है या नहीं हो सकता है (यदि यह एक पूर्ण कार्यक्रम है), लेकिन सभी निर्देशों की व्याख्या के बाद इसे छपाई बंद कर देना चाहिए। (यह हमेशा के लिए विभाजक, या अशक्त चरित्र, आदि को जारी नहीं रख सकता)।
- ये मानक कमियां डिफ़ॉल्ट रूप से मना की जाती हैं
- यह कोड-गोल्फ है , कम से कम बाइट्स जीत के साथ जवाब
परीक्षण के मामलों
Program: +
Input: [56, 50]
Output: 106
----------------------------------
Program: p
Input: [12]
Output: 0
----------------------------------
Program: p
Input: [13]
Output: 1
----------------------------------
Program: ++
Input: [172, 120, 33, 58]
Output: 292 91
----------------------------------
Program: p
Input: [29]
Output: 1
----------------------------------
Program: pp
Input: [176, 12]
Output: 0 0
----------------------------------
Program: ++++p
Input: [32, 16, 69, 197, 73, 171, 21, 178, 72]
Output: 48 266 244 199 0
----------------------------------
Program: pp+++p+pp+
Input: [151, 27, 119, 189, 198, 107, 174, 15, 166, 106, 134, 108, 169, 55, 42]
Output: 1 0 308 305 189 0 240 0 0 97
----------------------------------
Program: p+p+++++++pp+p
Input: [143, 67, 30, 149, 178, 52, 112, 122, 55, 122, 142, 199, 20, 175, 138, 80, 116, 180, 50, 116, 15, 92, 74]
Output: 0 97 1 230 234 177 341 195 218 296 0 0 107 0
----------------------------------
Program: ++p++p+pp+++++p+p+pp++
Input: [120, 177, 23, 116, 163, 52, 65, 98, 177, 16, 96, 131, 160, 48, 153, 0, 139, 33, 62, 49, 129, 86, 99, 135, 187, 80, 137, 130, 113, 136, 0, 1, 186, 100, 38, 153]
Output: 297 139 1 117 275 0 227 0 0 153 172 111 215 234 0 217 0 249 0 0 286 191
----------------------------------
Program: ++p+++++p+p+++++++
Input: [181, 169, 6, 84, 68, 171, 129, 107, 106, 114, 197, 58, 11, 88, 156, 169, 43, 77, 49, 43, 102, 78, 93, 51, 91, 37, 64, 93, 82, 126, 181, 81, 44]
Output: 350 90 0 300 213 311 69 244 0 120 0 145 171 142 101 175 307 125
----------------------------------
Program: ++p+
Input: [131, 127, 115, 40, 113, 196, 83]
Output: 258 155 1 279
----------------------------------
Program: +ppp++p+ppp+p++++++++p+p+++pp+ppp++
Input: [6, 9, 187, 168, 96, 167, 178, 139, 86, 148, 99, 103, 166, 18, 119, 15, 132, 77, 16, 88, 139, 34, 58, 90, 43, 69, 68, 152, 59, 106, 134, 49, 155, 100, 52, 55, 27, 188, 41, 77, 23, 49, 171, 23, 193, 84, 111, 165, 80, 18, 63, 23, 116, 112, 119]
Output: 15 0 0 0 345 225 0 202 0 0 0 147 0 104 173 148 112 220 165 183 255 0 82 0 118 72 194 1 0 276 0 0 0 139 231
----------------------------------
Program: ++++++++p++++++++++++
Input: [156, 5, 34, 25, 117, 98, 139, 131, 88, 82, 191, 13, 1, 170, 51, 116, 144, 85, 92, 170, 25, 94, 149, 131, 19, 161, 115, 160, 8, 6, 195, 101, 11, 185, 87, 50, 33, 140, 188, 135, 164]
Output: 161 59 215 270 170 204 171 167 0 177 195 243 150 276 168 201 112 272 83 328 299
----------------------------------
कई, कई, बहुत लंबे समय तक परीक्षण के मामले
जावा कोड परीक्षण मामलों को उत्पन्न करने के लिए उपयोग किया जाता है
उदाहरण
नीचे एक ungolfed जावा फ़ंक्शन है जो व्याख्या करेगा +p:
public static void interpret(String program, int[] input) {
int index = 0;
for (char inst : program.toCharArray()) {
switch (inst) {
case '+':
System.out.print((input[index++] + input[index++]) + " ");
break;
case 'p':
int n = input[index++];
System.out.print((isPrime(n) ? 1 : 0) + " ");
break;
}
}
}
public static boolean isPrime(long n) { //Taken from /programming//a/2385999/4484294
if (n < 2) return false;
if (n == 2 || n == 3) return true;
if (n % 2 == 0 || n % 3 == 0) return false;
long sqrtN = (long) Math.sqrt(n) + 1;
for (long i = 6L; i <= sqrtN; i += 6) {
if (n % (i - 1) == 0 || n % (i + 1) == 0) return false;
}
return true;
}
नोट: खोज क्वेरी का उपयोग करते हुए prime AND add AND interpret is:question, इस प्रश्न के लिए कोई डुप्लिकेट नहीं दिखाई देता है। यदि कोई है, तो क्षमा करें।
isprimeजूलिया में।
pविभाजक के बिना परिणाम घोषित किए जाते हैं, क्या यह इरादा है?