आरेख कोड


10

चलो फिर से यह कोशिश करते हैं।

इस प्रतियोगिता का उद्देश्य दो ऐसे कोड बनाना है जो एक दूसरे के आरेख हैं (दोनों को एक ही बाइट में एक अलग क्रम में होना चाहिए), और वे निम्नलिखित कार्य करेंगे:

  • यदि कोई इनपुट संख्या खुश या प्राइम है , और यदि संख्या या तो (उदाहरण के लिए, 7आउटपुट होना चाहिए happy primeऔर 4आउटपुट होना चाहिए sad non-prime) तो परीक्षण करना चाहिए ।

  • दूसरे को एक शब्द के रूप में बाइट्स में अपने कोड आकार को आउटपुट करना होगा (एक 60-बाइट प्रोग्राम आउटपुट होगा sixty, एक 39-बाइट प्रोग्राम आउटपुट होगा thirty-nine)।

यदि नियमों पर कोई स्पष्टीकरण आवश्यक है, तो मुझे बताने में संकोच न करें।

यह एक कोड गोल्फ प्रतियोगिता है, इसलिए सबसे छोटा कार्यक्रम जीत जाता है!


क्या ऐसा करने से एक होने से बचाता है /*program1*/program2और उसके बाद program1/*program2*/? मुझे लगता है कि आपको टिप्पणियों को अस्वीकार करना चाहिए।
विलियम बारबोसा

@WilliamBarbosa क्यों? यह शायद ही एक इष्टतम समाधान होगा।
मार्टिन एंडर

लेकिन आप कुछ हिस्सों को भी साझा कर सकते हैं और दूसरों को साझा नहीं कर सकते हैं जो इसे बहुत आसान बनाता है
गर्वित हैकेलर

1
@proudhaskeller टिप्पणी पर प्रतिबंध लगाना हालांकि हल नहीं करता है। आप हमेशा वर्णों को चर, चर नाम या कोड के कुछ हिस्सों में भर सकते हैं जिन्हें अन्य कारणों से निष्पादित नहीं किया जाता है।
मार्टिन एंडर

1
FWIW, मुझे नहीं लगता कि आपको अपना सबमिशन डिलीट करना चाहिए था। ओपी या नहीं, यह एक दिलचस्प जवाब था।
डेनिस

जवाबों:


6

सीजाम, 80 49 48 वर्ण

अद्यतन : अंकों के वर्गों की गणना के लिए डेनिस के कार्यान्वयन से प्रेरित होकर, यहां एक छोटा संस्करण है

हैप्पी / सैड प्राइम / नॉन-प्राइम:

ri:T{Ab2f#:+}G*X="happy""sad"?STmp4*"non-prime">

यह काम किस प्रकार करता है:

ri:T                                "Read input as integer and store it in T"
    {       }G*                     "Run this code block 16 times"
     Ab                             "Convert the number into base 10"
       2f#                          "Calculate square of each digit"
          :+                        "Sum all the squared digits and put the sum on stack"
X=                                  "Compare the sum after 16th iteration to 1"
  "happy""sad"?                     "If sum is 1, put `happy` to stack, otherwise `sad`"
               ST                   "Put space on stack then put the value of T on stack"
                 mp4*               "Put 4 to stack if input is prime, otherwise 0"
                     "non-prime">   "Put `non-prime` to stack and slice out first four characters if the input number is prime"

अड़तालीस

""A"forTy-eiGhT""ri:{b2#:+}*X=appsadSmp4*nnpm>"?

यह कैसे काम करता है:

""                                  "Push empty string to stack"
  A                                 "Push 10 to stack"
   "forTy-eiGhT"                    "Push `forTy-eiGhT` to stack"
                "ri:....pm>"        "Push this string to stack too"
                            ?       "Keep `forTy-eiGhT` on stack and pop the other string"

इसे ऑनलाइन आज़माएं

पहला प्रोग्राम STDIN से नंबर पढ़ता है


मेरा मूल 80 चरित्र समाधान

हैप्पी / सैड प्राइम / नॉन-प्राइम:

r:N{1/~]{i_*T+:T;}/T_s\1=:H!X):XK<&0:T;}g;H"happy""sad"?SNimp"prime"_"non-"\+?:Y

अस्सी

"eigHTY""r:N{1/~]{i_*T+:T}/_s\1=:H!X):XK<&0:T}happysad?SNmp";"prim_";"non-\?:+";

4

सीजेएम, 50 49 बाइट्स

सुख और प्राणशक्ति परीक्षण

li_{Ab2f#:+}30*(T="happy""sad"?S@mp4*"non-prime">

एसटीडीआईएन से एक नंबर पढ़ता है। दोनों परीक्षण केवल 64-बिट पूर्णांक के लिए काम करते हैं।

इसे ऑनलाइन आज़माएं।

खुद की लंबाई

A"forTy-nine""l_{b2#:+}30*(=happsadS@mp4*pim>"?""

प्रिंट्स नौ-नौ


31-बाइट सुधार के लिए +1, और "फॉर-नाइन"।
जोशिया विंसलो

3

गोल्फस्क्रिप्ट - 81

यदि कोई संख्या खुश और / या प्राइम है तो यह प्रोग्राम परीक्षण करता है।

~.:a;0.{).a\%!@+\}a*;2="""non-"if"prime"@ {`0\{48-.*+}/}9*("sad ""happy "if@@#get

यह कार्यक्रम, अंतिम का एक विमोचन, "अस्सी-एक" (इसके एक शब्द के रूप में बाइटिज़) आउटपुट करता है।

;"eighty-one"#   !""""""""%()***++-..../002489:;=@@@@\\\`aaaaadffiimnppprs{{{}}}~

यह एक उदाहरण के रूप में काम करना चाहिए।


2
हम्म, गोल्फस्क्रिप्ट में एक कोड गोल्फ चुनौती के लिए एक संदर्भ कार्यान्वयन प्रदान करना सबसे अच्छा विचार नहीं हो सकता है। मेरा मानना ​​है कि यह एक को हराना काफी मुश्किल है और इसलिए प्रतिभागियों के लिए थोड़ा निराशाजनक है।
मार्टिन एंडर

मैं देख रहा हूं कि लोग आपको सूचित नहीं कर रहे हैं और आपने प्रश्न लिखा है ... मैं पूरी तरह से मार्टिन से सहमत हूं।
घमंडी हैकेलर

@proudhaskeller आत्म-उत्तर देने में कुछ भी गलत नहीं है।
जस्टिन

मैं कहता हूं कि अपने आप को जवाब देने या कोड टिप्पणी करने में कुछ भी गलत नहीं है।
जोशियाह विंस्लो

2
@JosiahWinslow वहाँ है इसके साथ कुछ भी नहीं गलत। मैं सिर्फ इतना कह रहा हूं, अगर आप अपने आप को बहुत अच्छा समाधान पोस्ट करते हैं, तो आपको कुछ दिलचस्प लम्हों के जवाब याद आ रहे होंगे।
मार्टिन एंडर

1

जे - 87 चार

जे। में इस पर एक भोली कोशिश मानक पुस्तकालय का कोई उपयोग नहीं है, हालांकि मुझे संदेह है कि इसका उपयोग करने से कोई भी छोटा हो जाएगा।

((sad`happy{~1 e.(,[:+/@:*:,.&.":@{:)^:(1-{:e.}:)^:_);@,' ';'gtv]non-prime'}.~4+4*1&p:)
'((ad`app{~1 .(,[:+/@:*:,.&.":@{:)^:(1-{:.}:)^:_);@, ;onprm}.~4+4*1&p:)']'eighty-seven'
('(ad`app{~1 .(,[:+/@:*:,.&.:@{:)^:(1-{:.}:)^:);@, ;onprm}.~4+4*1&p:']'eighty-seven'"_)

शीर्ष पर रेखा एक क्रिया है जो पूर्णांक लेती है और आउटपुट स्ट्रिंग के रूप में इसकी खुशी और मौलिकता का निदान करती है। दूसरी पंक्ति स्ट्रिंग को लौटाने वाली एक अभिव्यक्ति है eighty-seven, जबकि तीसरी एक स्थिर फ़ंक्शन है। मैंने दोनों को शामिल किया क्योंकि वे दोनों संभव थे और क्योंकि मुझे नहीं पता है कि प्रोग्राम के विरोध के अनुसार फ़ंक्शन जवाबों पर क्या होगा, और जे के पास नो-तर्क फ़ंक्शन के रूप में ऐसा कुछ नहीं है - आप बस एक फ़ंक्शन देते हैं डमी तर्क।

हम खुशी के लिए जाँच करने वाले अधिकांश चर खो देते हैं। (,[:+/@:*:,.&.":@{:)वह मुख्य निकाय है जो किसी संख्या के अंकों के वर्ग को बताता है, और (1-{:e.}:)यह परीक्षण है कि क्या वह संख्या अभी तक हुई है। sad`happy{~1 e.यह एक शब्द परिणाम में बदल जाता है, और हम स्ट्रिंग के सामने से जोड़ते हैं non-prime, संभवतः चार वर्णों को छीन रहे हैं यदि संख्या वास्तव में प्रमुख थी।

विपर्यय में हम बस उन सभी बिट्स को छिपाते हैं 'eighty-seven'जो एक स्ट्रिंग में नहीं हैं जिसे हम अनदेखा करते हैं। मैं बेहतर कर सकता था अगर जे के पास पुन: उपयोग करने के लिए अधिक पत्र थे, लेकिन यह नहीं है, इसलिए ओह अच्छी तरह से।


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