किसी भी आरक्षित शब्दों का उपयोग किए बिना पहले 128 अभाज्य संख्याएँ प्रिंट करें


13

स्पष्ट समाधान सिर्फ उन्हें एक स्ट्रिंग के रूप में प्रिंट करना होगा, लेकिन क्या एक छोटा कोड लिखना संभव है?

आवश्यकताएँ:

  1. कोई इनपुट संसाधित नहीं किया जाना चाहिए, और आउटपुट 2 3 5 7 11 13 ...आदि के रूप में होना चाहिए
  2. भाषा में कोई भी आरक्षित शब्द इस्तेमाल नहीं किया जाता है
  3. भाषा में कम से कम संरचित प्रोग्रामिंग की अनुमति होनी चाहिए, और आरक्षित शब्द हैं (अन्यथा बिंदु 2 मूट होगा)।

पहले मैंने विशेष रूप से सी / सी ++ को ध्यान में रखा था, लेकिन फिर भी धोखा देने से रोकने की कोशिश करते हुए सवाल को बढ़ाया


1
दुर्भाग्य से मेरे लिए, Tcl में कोई आरक्षित शब्द नहीं है।
जोहान्स कुह्न

जवाबों:


14

सी, 60 चार्ट

"कोई कीवर्ड नहीं" सीमा यहां मायने नहीं रखती है। मुझे पूरा यकीन है कि इसे सुधारना, यदि संभव हो तो, खोजशब्दों को जोड़कर नहीं किया जाएगा।

n=2;main(m){n<720&&main(m<2?printf("%d ",n),n:n%m?m-1:n++);}

वैकल्पिक संस्करण:
आउटपुट उतना अच्छा नहीं है, लेकिन मुझे printfदुरुपयोग पसंद है ।

n=2;main(m){n<720&&main(m<2?printf("%*d",n,n):n%m?m-1:n++);}

दोनों समाधानों में चाल दो छोरों (पुनरावृत्ति द्वारा कार्यान्वित) को एक में विलय करने की है।
nअगला संभावित प्रधानमंत्री है, mअगला संभावित भाजक है।
प्रत्येक पुनरावर्ती कॉल में, हम या तो वृद्धि nकरते हैं ( mइसके पिछले मूल्य पर सेट करते समय ) या वेतन वृद्धि m


7

अजगर, १०, चरस

इस चुनौती के लिए अजगर नहीं बनाया गया था। वाना print? वह आरक्षित है। खैर, हम कैसे उपयोग करते हैं stdout? ठीक है, यह एक लागत है import... आप यह अनुमान लगाया, आरक्षित है। खैर ... मैं यूनिक्स पर हूं, इसलिए मैं फाइल डिस्क्रिप्टर 1 खोल सकता हूं, जो कि स्टडआउट होता है। हैक!

आदमी, और चलना? लेकिन कुछ भी नहीं eval। नहीं, बेशक, लेकिन हम भी defया के साथ एक समारोह को परिभाषित नहीं कर सकते lambda। और चोट के अपमान को जोड़ने के लिए, हम सूची समझ का उपयोग भी नहीं कर सकते हैं! मैं हमेशा map(p.__mod__,...)कोड गोल्फ जैसी चीजों का उपयोग करने का बहाना खोजता हूं ... समझ हमेशा बेहतर होती है। अब तक, वह है।

p=1
eval(compile("p+=1;open('/dev/fd/1','w').write('%s '%p*all(map(p.__mod__,range(2,p))));"*720,'','exec'))

अब, आप शिकायत करते हैं हो सकता है कि execएक कीवर्ड है, भले ही मैं कीवर्ड का उपयोग नहीं किया (मैं भी नहीं था evalएक exec)। खैर, यहाँ एक 117-वर्ण समाधान है जो उपयोग नहीं करता है 'exec'

p=2
s="eval('('+s*(p<720)+')',open('/dev/fd/1','w').write('%s '%p*all(map(p.__mod__,range(2,p)))),{'p':p+1})";eval(s)

1
प्रिंट Python3 में आरक्षित नहीं है :) आप उपयोग कर सकते हैं __import__, लेकिन यह लागत वर्णों वाला है
gnibbler

6

जावास्क्रिप्ट (80 वर्ण)

eval((s=Array(719)).join("s[j=++n]?j:"+s.join("s[j+=n]=")+"r+=n+' ';"),r="",n=1)

अपने webbrowser के कंसोल में चलाएँ।

एक प्रमुख छलनी का इस्तेमाल किया, जो बहुत घनीभूत हुई।


4

सी, 183 वर्ण

#define q j*j<k?i%p[j++]||(i++,j=0):printf("%d\n",p[j=0,k++]=i++)
#define A q;q;q;q;q;q;q;q
#define B A;A;A;A;A;A;A;A
#define C B;B;B;B;B;B;B
main(){int i=2,j=0,k=0,p[999];C;C;C;C;C;}

खैर, यहाँ एक त्वरित पहला प्रयास है। मेरा मानना ​​है कि इससे आवश्यकताओं को पूरा करना चाहिए। मैं साधारण परीक्षण प्रभाग का उपयोग कर रहा हूँ जब तक कि मैंने उनमें से पर्याप्त नहीं पाया, इसे प्रीप्रोसेसर का उपयोग करने के लिए प्रिम्स और एक अनियंत्रित लूप का निर्माण किया। पुनरावृत्ति की संख्या को बदल दिया गया है ताकि वास्तव में 128 प्राइम्स प्रिंट हो जाएं।


4

सी, 87 चार्ट

d;p(n){--d<2||n%d&&p(n);}r(n){p(d=n);d<2&&printf("%d\n",n);++n<720&&r(n);}main(){r(2);}

(मैंने इसे और अधिक कार्यात्मक शैली में लिखने की कोशिश की, लेकिन returnउस योजना को मारने के लिए मेरी अक्षमता का उपयोग किया ।)


3

C, 134 वर्ण

यहां एक वैकल्पिक समाधान दिया गया है, जो यथासंभव, आरक्षित या अन्यथा शब्दों का उपयोग करने से बचने की कोशिश करता है:

main(i){i<9?main(2953216):i>4097?--i&4094?i/4096%(i%4096)?main(i):
main((i/4096-1)*4097):printf("%d\n",i>>12,main((i/4096-1)*4097)):0;}

यह सब उपयोग करता है printfऔर mainएक ही तर्क के साथ है।


3

गणितज्ञ 50 वर्ण

मुझे यकीन नहीं है कि मैथमेटिका के लिए "आरक्षित शब्दों" की व्याख्या कैसे की जाए, लेकिन मैं खेलना चाहता हूं, इसलिए मैं इसे अंतर्निहित कार्यों के बिना करना चाहूंगा, जो कि primality के लिए primes या परीक्षण उत्पन्न करता है।

Fold[#2Cases[#/#2,1|_Rational]&,#,#]&@Range[2,719]

2

हास्केल, 72 अक्षर

main=putStrLn.unwords$take 128[show p|p<-[2..],all((>0).mod p)[2..p-1]]

माना जाता है कि हास्केल में कीवर्ड से बचना बहुत मुश्किल नहीं है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.