मेटा-बॉलिंग गोल्फ


22

आपका काम सबसे छोटा बाइट्स के साथ दूसरे प्रोग्राम (बी) को आउटपुट करने वाले सबसे छोटे प्रोग्राम (ए) को बनाना है, जो मूल प्रोग्राम (ए) को आउटपुट करता है। अनिवार्य रूप से, आप ouroboros कार्यक्रमों की एक जोड़ी को गोल्फ कर रहे हैं (उर्फ समय-समय पर चलने वाली रानी) और अन्य आधे को गेंदबाजी करते हैं। A और B अलग-अलग भाषाओं में हो सकते हैं।

नियम और स्कोरिंग

आपका अंतिम स्कोर है <number of unique bytes in B> / <number of bytes in A>। उच्चतम स्कोर जीतता है। यह ध्यान दिया जाना चाहिए कि सैद्धांतिक अधिकतम स्कोर 256 है।

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

उत्तर प्रारूप संगति के लिए, अपने उत्तर की शुरुआत कुछ इस तरह से करें:

# <Language for A> & <Language for B>, Score: <B score> / <A score> = <combined score>

इसे स्पष्ट करने के लिए मुझे लगता है कि आपको दूसरी गोली बिंदु को थोड़ा स्पष्ट करना होगा। एक चरित्र के लिए बिल्कुल नहीं होने का क्या मतलब है?
गेहूं जादूगर

अद्वितीय बाइट्स से, क्या आपका मतलब साझा बाइट्स, या दोनों के बीच समानता है?
KrystosTheOverlord

@KrystosTheOverlord, यह केवल प्रोग्राम बी के भीतर होगा, जिसका प्रोग्राम ए से कोई संबंध नहीं है। उदाहरण के लिए, aaaaaएक अद्वितीय बाइट है और abcde5 अद्वितीय बाइट्स हैं।
18

1
मैं सिर्फ उन कार्यक्रमों की प्रतीक्षा कर रहा हूं, जहां कार्यक्रम A एकात्मक या पेंगुइन में है
अज्ञानता का अवतार

4
@EmbodimentofIgnorance प्रोग्राम A को बाइट की संख्या के संदर्भ में बनाया गया है, न कि अनोखे बाइट्स में। पेंग्वेंज / यूनेरी बुरी तरह से स्कोर करेगा
जो किंग

जवाबों:


14

जाप और जाप , स्कोर: 255/38 = 6.71

कार्यक्रम ए :

"iQ ²¯24
G²õ@i'#+Xd"iQ ²¯24
G²õ@i'#+Xd

प्रोग्राम बी 8kB से अधिक लंबा है, इतना लंबा है कि लिंक टूट जाता है, इसलिए मैं पूरी बात पेस्ट नहीं करूंगा। यहाँ एक नमूना है:

#þ"iQ ²¯24
G²õ@i'#+Xd"iQ ²,#ÿ"iQ ²¯24
G²õ@i'#+Xd"iQ ²,#Ā"iQ ²¯24
G²õ@i'#+Xd"iQ ²

मुझे NULकाम करने के लिए एक बाइट प्राप्त करने का तरीका नहीं मिला , यही वजह है कि प्रोग्राम बी में केवल 255 अद्वितीय अक्षर हैं। प्रोग्राम बी में अनिवार्य रूप से एक एकल कार्यक्रम की 255 प्रतियां शामिल हैं, जहां हर बार एक अप्रासंगिक बाइट को बदल दिया जाता है, और पहले 254 निष्पादन को अनदेखा किया जाता है।

स्पष्टीकरण के लिए, मैं ए के इस सरलीकृत संस्करण के साथ शुरू करूंगा ताकि परिणामस्वरूप बी चर्चा करना आसान हो।

"iQ ²¯23
3õ@i'#+Xd"iQ ²¯23
3õ@i'#+Xd

यह कार्यक्रम मूल पेलोड-सक्षम जाप क्वीन पर आधारित है । प्रारंभ में स्ट्रिंग में बाकी प्रोग्राम का डुप्लिकेट होता है, iQ ²एक उद्धरण सम्मिलित करता है और पूरे प्रोग्राम का एक स्ट्रिंग प्रतिनिधित्व बनाने के लिए डुप्लिकेट करता है, और फिर ¯23खुद को और उसके बाद सब कुछ बंद कर देता है। परिणामी स्ट्रिंग एक प्रोग्राम है जो प्रोग्राम ए को आउटपुट करता है :

"iQ ²¯23
3õ@i'#+Xd"iQ ²

मैं इस स्ट्रिंग का उल्लेख करूंगा U

ए की अंतिम पंक्ति Uहर बार एक छोटे से बदलाव के साथ कई बार एक गुच्छा को दोहराती है। विशेष रूप से, Xरेंज में प्रत्येक संख्या के लिए [1...3]यह आउटपुट करता है कि चारकोड वाला चरित्र "#c" + Uकहां cहै X। जाप का डिफ़ॉल्ट व्यवहार उन तारों को बिना उद्धरण चिह्नों के साथ आउटपुट करना और अल्पविराम द्वारा अलग करना है, इसलिए यह हमारे सरलीकृत ए का आउटपुट है (ध्यान दें कि प्रत्येक के बीच एक अप्राप्य बाइट है #और "iQ:

#"iQ ²¯23
3õ@i'#+Xd"iQ ²,#"iQ ²¯23
3õ@i'#+Xd"iQ ²,#"iQ ²¯23
3õ@i'#+Xd"iQ ²

हम इसे सरलीकृत बी कहेंगे ।

सरलीकृत बी में एक सरल संरचना होती है, जिसके बीच बारी-बारी से #cऔर U। सौभाग्य से इस उत्तर के लिए, प्रत्येक #cऔर Uके रूप में एक अल्पविराम के द्वारा अलग व्यवहार किया जाता है, और इस स्थिति में उस के व्यवहार सब कुछ है, सिवाय इसके आखिरी Uउत्पादन पर कोई प्रभाव नहीं है। सरलीकृत बी का एकमात्र भाग जो उत्पादन को प्रभावित करता है वह है:

"iQ ²¯23
3õ@i'#+Xd"iQ ²

यह समान है Uकि हम पहले से ही आउटपुट ए को सरलता से जानते हैं।

सरलीकृत ए और प्रोग्राम ए के बीच एकमात्र अंतर यह है कि सीमा [1...3]के लिए प्रतियां पैदा करने के बजाय वास्तविक कार्यक्रम रेंज के लिए प्रतियां उत्पन्न करता है [1...256]। जिसके परिणाम में से #cप्रत्येक के 256 संस्करणों में एक अलग चरित्र है, हालांकि अंतिम संस्करण "a" एक बहु-बाइट चरित्र है, इसलिए यह किसी भी अद्वितीय बाइट्स को नहीं जोड़ता है, लेकिन अंतिम Uको छोड़कर सब कुछ अभी भी अनदेखा है।


बहुत अच्छा :) क्या यह 38 बाइट्स के लिए काम करेगा ?
झबरा

@ शैगी 27को जब भी बाइट्स से बचाया जाता है, तब इसे ट्विस्ट करना पड़ता है, लेकिन इसके अलावा ऐसा लगता है कि यह काम करता है।
कामिल दकरी

1
@ शागी स्कोरिंग बी में अद्वितीय बाइट्स की संख्या पर आधारित है, और केवल 256 संभव बाइट्स हैं। जहाँ तक मुझे जानकारी है, B के नए संस्करण में Null बाइट शामिल नहीं है।
कामिल दकरी

इसे शून्य बाइट के साथ काम करने के लिए कुछ चीजें करने की कोशिश की, लेकिन सभी विफल रहे।
झबरा

5

कार्यक्रम ए, गोल> <> , 256/20 बाइट्स = 12.8

"44XFL|r2ssl3%Q4s]|H

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

कार्यक्रम बी, गोल> <>

"44XFL|r2ssl3%Q4s]|H	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ

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

कार्यक्रम आउटपुट के बीच वैकल्पिक रूप से प्रत्येक बाइट द्वारा पीछा किया और केवल खुद को आउटपुट करता है।

स्पष्टीकरण:

"            Wrapping string literal pushes the first line to the stack backwards
 44X         Push 256
    FL|      Push the range from 0 to 255
       r                  Reverse the stack
        2ss               Push a quote
           l3%            If the stack length is divisible by 3
              Q4s]|       Only take the top 20 characters
                   H      And output the stack

1

कार्यक्रम A: 05AB1E , स्कोर: 256/41 256/31 बाइट्स = 8.258 ...

0"D34çý₅Ýç'q†22ǝ"D34çý₅Ýç'q†22ǝ

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

कार्यक्रम बी: 05AB1E

0"D34çý₅Ýç'q†22ǝ"D34çýq 

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoprstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿÝç'q†22ǝ

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

स्पष्टीकरण:

लिए सबसे छोटी यह एक है: 0"D34çý"D34çý( 14 बाइट्स ) @OliverNi द्वारा प्रदान की गई । मेरा उत्तर जोड़कर उस क्वीन के एक संशोधित संस्करण का उपयोग करता है ₅Ýç'q†vy27ǝD}J

0            # Push a 0 to the stack
             #  STACK: [0]
 "D34çý₅Ýç'q†vDy27ǝ}J"
             # Push the string "D34çý₅Ýç'q†vDy27ǝ}J" to the stack
             #  STACK: [0,"D34çý₅Ýç'q†vDy27ǝ}J"]
  D          # Duplicate the string
             #  STACK: [0,"D34çý₅Ýç'q†vDy27ǝ}J","D34çý₅Ýç'q†vDy27ǝ}J"]
   34çý      # Join the stack by '"'
             #  STACK: ['0"D34çý₅Ýç'q†vDy27ǝ}J"D34çý₅Ýç'q†vy27ǝD}J']
₅Ý           # Push a list in the range [0,255]
  ç          # Convert each integer to an ASCII character
   'q†      '# Filter the "q" to the front
      22ǝ    # Insert it at index 22 in the string (replacing the second '₅')
             # (and output the result implicitly)

कार्यक्रम B तक पहुँचते ही समाप्त हो जाएगा q, इसलिए वास्तविक कार्यक्रम B है:

0"D34çý₅Ýç'q†22ǝ"D34çýq

उसके बाद की सभी चीजों को नजरअंदाज कर दिया जाता है, और स्टैक के शीर्ष ( 0"D34çý₅Ýç'q†22ǝ"D34çý₅Ýç'q†22ǝ) का आउटपुट अनुमानित रूप से होता है।

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