स्वयं स्कोरिंग कार्यक्रम


15

हमारे पास आपके स्वयं के स्कोर को आउटपुट करने की एक चुनौती है , लेकिन ऐसा लगता है कि सभी उत्तर सिर्फ आउटपुट को हार्डकोड करते हैं और यह 1 उबाऊ है । तो चलो एक नई चुनौती है। आपके प्रोग्राम को स्ट्रिंग के बाद बाइट्स में अपनी स्वयं की लंबाई का उत्पादन करना चाहिए , लेकिन हार्डकोडेड समाधानों को रोकने के लिए यदि हम किसी एक बाइट को हटाकर इसका आकार कम करते हैं , तो नए प्रोग्राम को भी आउटपुट करना होगा जो कि नए बाइट काउंट के बाद भी होता है । आउटपुट को संवेदनशील होने की आवश्यकता नहीं है। तुम भी एक अनुगामी newline उत्पादन के लिए चुन सकते हैं।" bytes"" bytes"

आपके उत्तर बाइट्स में कम बाइट्स के साथ बेहतर स्कोर किए जाएंगे।


1: मुझे वास्तव में वहां के कुछ उत्तर पसंद हैं।


हो सकता है कि आप चुनौती का नाम बदलकर "सेल्फ स्कोरिंग मोडिफायेबल प्रोग्राम" या कुछ इसी तरह कर सकते हैं।
डायलन

क्या आप संकलित भाषाओं का उपयोग कर सकते हैं या केवल व्याख्या की जा सकती है?
लोगन

@Logern आप या तो उपयोग कर सकते हैं।
पोस्ट रॉक गार्फ हंटर

2
अरे। मैंने हेक्सागोनी समाधान बनाने में आधे घंटे का समय बिताया , लेकिन जब मैं इसका परीक्षण करने गया, तो बाइट को हटाकर षट्कोण सिकुड़ गया ! :(
जो किंग

1
@ मेरा क्या मतलब है " 1 bytesतकनीकी रूप से गलत व्याकरण है, लेकिन यह मानते हुए कि भाषाओं में <= 2 बाइट्स में स्ट्रिंग" बाइट्स "का उत्पादन करने के लिए अंतर्निहित नहीं है, कार्यक्रम 3 बाइट्स से अधिक लंबा होगा, इसलिए यह नहीं करता है मामला "- यह वैसे भी कोई फर्क नहीं पड़ता।
user202729

जवाबों:


16

बैकहैंड , 40 36 29 बाइट्स

vv""sseettyybb  ""jjHHOO]

इसे ऑनलाइन आज़माएं! सत्यापन!

जब संदेह में, सब कुछ पर डबल। यह अतिरेक को लागू करने के लिए बैकहैंड की क्षमता को एक बार में एक से अधिक चरणों में स्थानांतरित करने की क्षमता का उपयोग करता है। सभी unprintables बाइट मूल्य 28 है।

स्पष्टीकरण:

गैर-विकिरणित कार्यक्रम:

v       Reduce step count to 2
  "    Start string literal
    s e t y b        Push the " bytes" part of the output
                  " Push 28 twice and end the string literal
                       j    Jump to the 28th position (0 indexed) 
                             ]   Increment the 28 to 29
                           O     Print the 29
                         H       Halt and output the entire stack

विकिरणित कार्यक्रम:

यदि किसी वर्ण को हटा दिया जाता है, तो उसके बाद का प्रत्येक वर्ण नीचे स्थानांतरित कर दिया जाता है।

vv"sseettyybb
v " s e t y b     The same instructions are still executed

हालांकि, इसके बजाय कूदने के बजाय ], यह कार्यक्रम के अंत और Oइसके बजाय भूमि को दर्शाता है ।

                             v  28th character (0 indexed)
vv""sseettyybb       ""jjHHOO]
v""sseettyybb       ""jjHHOO]OOHHjj"".....
                             ^ 28th character, reflecting off the end of the code

3

रूनिक एनचेंमेंट्स , 47 बाइट्स

>>yyLL     @"setyb 64"/
"47 bytes"@"setyb 64"L\

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

जो मेरे गीगर काउंटर उत्तर का एक या अधिक पोर्ट है , लेकिन विभिन्न आउटपुट के साथ (जो कि, खुद, क्लेन उत्तर का एक पोर्ट है)।

>>yyLLRunic के लिए आवश्यक है कि वह (कम से कम) एक IP उत्पन्न करे, दो IPS को मर्ज करे, और बाईं ओर वापस परावर्तित करे, जिससे सभी भिन्नताएँ एक ही बाएँ-बाएँ IP में परिणत होती हैं। द्वारा प्रतिस्थापित किया जा सकता है yy<<लेकिन यह किसी भी बाइट को नहीं बचाता है।

दाएं पर परावर्तक आईपी को निचले बाएँ स्ट्रिंग के लिए मजबूर करते हैं, इसलिए उनमें से शीर्ष दाएं को हटाने से आईपी को शीर्ष दाएं स्ट्रिंग में प्रवेश करने की अनुमति मिलती है। शीर्ष रेखा के साथ कहीं भी एक बाइट हटाने से एल के ऊपर बैठने के लिए शीर्ष परावर्तक समायोजित होता है (प्रोग्राम को निचले दाएं में अनुमति देता है)। नीचे के साथ एक बाइट को हटाने से उस परावर्तक (या इसे हटा दिया जाता है) को समायोजित किया जाता है ताकि अंतिम चरित्र को स्पष्ट रूप से एक स्थान से भर दिया जाए, जो आईपी को शीर्ष दाएं परावर्तक के दोनों किनारों और शीर्ष दाएं स्ट्रिंग में उछाल की अनुमति देता है।

अतिरिक्त स्थान निराशाजनक हैं, हालांकि। लेकिन उन्हें कम करने के सभी प्रयासों के परिणामस्वरूप या तो बड़े कार्यक्रम, समान आकार के कार्यक्रम, या ऐसे कार्यक्रम हैं जो 100% विकिरण सबूत नहीं हैं। क्लेन और> <> दोनों जवाब यहां रूनिक में उपलब्ध नहीं सुविधाओं का उपयोग करते हैं।


2

> <> , 43 39 बाइट्स

||vn-{"' bytes"-10/
 o>o<"38 bytes"[0/0

इसे ऑनलाइन आज़माएं! सत्यापन!

अन-इर्रिएटेड प्रोग्राम में, हम (39) 0को जोड़ते हैं ', और इर्रिडिएटेड प्रोग्राम में हम 0 को छोड़ देते हैं -1और इसके बजाय इसे जोड़ते हैं । यदि शीर्ष पंक्ति से कुछ हटा दिया जाता है, तो हम इसके बजाय नीचे पंक्ति में स्थानांतरित कर देते हैं और केवल आउटपुट करते हैं 38 bytes


2

हेक्सागोनी , 71 बाइट्स

//.........||.>e;s;@..\;t;y;b<>}F"+!P0;/|/F!P0$@;<...t;ye;bs/.........)

इसे ऑनलाइन आज़माएं! सत्यापन!

मैंने बहुत लंबा रास्ता तय किया और इसे 5 हेक्सागोन के आकार में लाने की कोशिश की, लेकिन मुझे इसके बजाय एक सबपर 6 आकार के लिए व्यवस्थित होना पड़ा :(

विस्तारित:

      / / . . . .
     . . . . . | |
    . > e ; s ; @ .
   . \ ; t ; y ; b <
  > } F " + ! P 0 ; /
 | / F ! P 0 $ @ ; < .
  . . t ; y e ; b s /
   . . . . . . . . .
    ) . . . . . . .
     . . . . . . .
      . . . . . .

मैंने शुरू में इसे )एक पंक्ति के साथ कम किया था, लेकिन यह पता चला कि ठीक उसी जगह है जहां आकार 5 और आकार 6 हेक्सागोन्स के बीच का विभाजन होता है। इसका मतलब यह है कि जब एक बाइट को हटा दिया जाता है, तो आकार सभी नीचे आ जाता है और रास्ते को बर्बाद कर देता है। मुझे यकीन है कि एक आकार 5 संभव है।


अगर मैं इसे सही ढंग से समझ रहा हूं, तो क्या आप )एक पंक्ति को नीचे नहीं डाल सकते हैं और फिर इसके बाद एक नो-ऑप लगा सकते हैं, तो यह एक आकार 6 षट्भुज है?
एडिनएरड

@EdgyNerd यदि आप इसे प्रोग्राम से प्रभावित किए बिना हटाया जा सकता है, तो इसके बाद नो-ओप लगा दें
Jo King

2

क्लेन 000, 41 बाइट्स

<<@"setyb "$"4"+"0"/
..@"setyb 04"(....<1

इसे ऑनलाइन आज़माएं! जोकिंग का सत्यापनकर्ता

मुझे लगता है कि यह उत्तर समान है जोकिंग के <> जवाब के , लेकिन मैं नहीं पढ़ता हूं <> इसलिए मुझे यकीन नहीं हो रहा है।

यहां 4 अलग-अलग प्रकार के बाइट हटाने हैं

  1. एक बाइट को पहली पंक्ति से पहले हटा दिया जाता है / इस मामले में स्लैश को प्रभावी रूप से एक स्थान छोड़ दिया गया है, इसे नीचे की रेखा पर दर्शाते हुए और कोड के संशोधित हिस्से को निष्पादित होने से रोका जा सकता है। इसके कारण हमें कोड चलाना पड़ता है("40 bytes"@ , जो आउटपुट करता है 40 bytes

  2. पहले /को पहली पंक्ति से हटा दिया जाता है। इस मामले में हम कोड चलाते हैं"0"+"4"$" bytes"@ , जो कि एक जटिल तरीका या प्रिंटिंग है 40 bytes

  3. नई लाइन हटा दी जाती है। यह हमें दूसरी पंक्ति के अंत से शुरू करता है और परिणामी कोड (हटाए गए नोप के साथ) है1("40 bytes"@ , जो सिर्फ प्रिंट करता है 40 bytes

  4. अंतिम पंक्ति से एक बाइट हटा दी जाती है। यह 1पहली पंक्ति के अंत में बाईं ओर ले जाने का कारण बनता है और जब इंगित द्वारा विक्षेपित होता है तो इसे स्टैक में जोड़े जाने से रोकता है /। कोड "0"+है कि कारण के लिए धक्का 0के बजाय 1, कोड के बाकी बदल जाता है 0में40 bytes

क्लेन 001, 41 बाइट्स

\("40 bytes"@......1
..@"setyb "$"4"+"0"/

इसे ऑनलाइन आज़माएं! जोकिंग का सत्यापनकर्ता

यहां एक अलग टोपोलॉजी का उपयोग करके उत्तर दिया गया है। यह उसी आकार का है लेकिन मुझे लगता है कि इसमें सुधार की गुंजाइश है।


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