रोलिंग क्विन पासा


19

एक प्रोग्राम बनाएं जो स्वयं आउटपुट करता है।

हालाँकि, यदि स्रोत कोड को n n ( बार n-1 बार स्रोत कोड की प्रतिलिपि को बदलने का अर्थ) दोहराया जाता है , तो मूल स्रोत कोड को आउटपुट करने की 1 / n संभावना होनी चाहिए, आउटपुट का 1 / n प्रायिकता स्रोत कोड को दो बार दोहराया गया, स्रोत कोड को आउटपुट करने की 1 / n संभावना तीन बार दोहराया गया, ..., और स्रोत कोड n बार आउटपुट करने की 1 / n संभावना।

उदाहरण के लिए, यदि आपका प्रोग्राम है foobar, तो यह हमेशा बिल्कुल आउटपुट होना चाहिए foobar। हालांकि, अगर आप चलाने foobarfoobarfoobarfoobar, तो outputting से प्रत्येक एक ¼ मौका होना चाहिए foobar, foobarfoobar, foobarfoobarfoobarऔर foobarfoobarfoobarfoobar

  • प्रत्येक संभव आउटपुट का वितरण बराबर होना चाहिए
  • मानक I / O विधियों को लागू करने और मानक खामियों के अलावा निषिद्ध, मानक quine नियम लागू होते हैं (अपने स्वयं के स्रोत तक नहीं पहुंच सकते, आदि)
  • यह कोड गोल्फ है इसलिए बाइट्स जीत में सबसे छोटा जवाब है

क्या छद्म आयामी काफी अच्छा है?
wastl

1
@wastl हां, यह ठीक है
JMigst

2
आपकी परिभाषा थोड़ी हटकर है। यदि आप इसे 1 बार (यानी foobarfoobar) दोहराते हैं तो यह केवल प्रिंट होगाfoobar
Veskah

1
@Veskah दो बार दोहराया foobarfoobarजाता है foobar, एक बार नहीं।
निट

@ आप स्रोत से शुरू करें। यदि आप इसे फिर से उपयोग करते हैं, तो आपने इसे केवल एक बार दोहराया है लेकिन दो उदाहरण हैं।
विस्काह २३'१

जवाबों:



9

जेली , 22 22 बाइट्स

“Ṿ;ẋŻɼLX¤¤µ”Ṿ;ẋŻɼLX¤¤µ

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

यह x4 की कोशिश करो!

“Ṿ;ẋŻɼLX¤¤µ”Ṿ;ẋŻɼLX¤¤µ
“Ṿ;ẋŻɼLX¤¤µ”              String literal: Ṿ;ẋŻɼLX¤¤µ
            Ṿ             Uneval. Return “Ṿ;ẋŻɼLX¤¤µ” (with quotes)
             ;            Append the initial string. Yields the source code. 
                ɼ         Apply the preceding link to the register and store the 
                          result in the register.
               Ż          Prepend 0. 
                          Each time Żɼ is used when the source code is repeated
                          the register's length increases by one. 
                          We can't use ‘ because it closes string literals.
                 L        Length. Returns the number of times the source code has
                          been repeated up till now.
                  X       Random element. If ɼ results in n, X returns a random 
                          integer between 1 and n.
                   ¤      Combines ŻɼLX as a nilad. 
              ẋ           Repeat the source code a random number of times between
                          1 and n.
                    ¤     Close everything from the initial string literal as a
                          nilad. 
                     µ    Start a new monadic chain. The register gets updated
                          once for time the code is repeated but only the final
                          repetition will result in output.

5

05AB1E , 32 बाइट्स

"34çìDJ¼32ôн¾L×Ω"34çìDJ¼32ôн¾L×Ω

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

व्याख्या

"34çìDJ¼32ôн¾L×Ω"                   # push this string
                 34ç                # push a "-character
                    ì               # prepend it to the string
                     DJ             # duplicate and join the copy to the string
                       ¼            # increment the counter
                        32ô         # split the string into pieces of size 32
                           н        # take the first one
                            ¾L×     # repeat it for each in [1 ... counter]
                               Ω    # pick one at random

जब आपके पास मौका हो तो क्या आप स्पष्टीकरण जोड़ सकते हैं?
झबरा

@ शागी: मुझे याद दिलाने के लिए धन्यवाद :)
एमिग्ना

2

गोल> <> , 21 बाइट्स

:QoaonC|P\Sx*F2ssS"
0

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

स्पष्टीकरण:

:Q     |     If the top of stack is 0, skip to next |
             Top of stack is implicitly 0
        P    Increment top of stack
         \   Redirect pointer down]
0:QoaonC|P\Sx*F2ssS"  Increment for each copy of the source code
0:QoaonC|P\Sx*F2ssS"


         \   Redirect back to the right
          Sx*  Multiply the number of copies of the source code by a random number between 0 and 1
             F      Repeat that many times
              2ss   Push a double quote
                 S" Print the source code minus the quote, newline and 0
 :Q       If top of stack is not 0
   oaonC  Print the quote, a newline and a 0 to complete the source code and continue the loop
        \Sx*   Error on the * for some reason

1

एलिस , 35 बाइट्स

"d3a*h-&;adddd12h&}Uh*t&w.odt,k@
 !

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

व्याख्या

"

जैसे कि 2 डी भाषाओं में कई क्वीन के साथ शुरू होता है, "जो अपने आप को लपेटता है और खुद को छोड़कर पूरी पहली पंक्ति को धक्का देता "है।

d3a*h-&;

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

addd

एक न्यूलाइन पुश करें, फिर स्टैक की ऊंचाई तीन बार। स्टैक ऊँचाई के रूप में धकेल दिए गए मान 32 (दूसरी पंक्ति में स्थान), 33 ( !दूसरी पंक्ति में), और 34 (प्रारंभिक ") हैं।

d

स्टैक की ऊँचाई को फिर से धक्का दें, इस बार मूल स्रोत कोड (35) की लंबाई के रूप में।

1

1 पर एक काउंटर शुरू। यह स्रोत कोड दोहराया जाता है की संख्या की गणना करेगा।

2h&}

तीन बार दाईं ओर मुड़ें (यानी, बाएं मुड़ें)। स्रोत कोड का प्रत्येक अतिरिक्त पुनरावृत्ति hइस }प्रकार एक ही कॉलम में योगदान देगा , इस प्रकार काउंटर को बढ़ाता है। जब आईपी वापस आ जाता है }, तो उसी दिशा में जारी रखने के लिए फिर से मुड़ें।

Uh

0 से n-1 तक एक समान यादृच्छिक संख्या लें, फिर मूल स्रोत को आउटपुट करने के लिए समय की संख्या प्राप्त करने के लिए 1 जोड़ें।

*t&w

पहले से पुश किए गए स्टैक की ऊँचाई (कोड लंबाई) से गुणा करें, फिर कई बार एक वापसी पते को धक्का देकर दोहराएं जो कई बार माइनस एक होता है।

.o

इसे नष्ट किए बिना स्टैक के शीर्ष पर आउटपुट करें।

dt,

नीचे स्टैक प्रविष्टि को ऊपर ले जाएं।

k@

दोहराएँ, फिर लूप समाप्त होने के बाद समाप्त करें।


1

जावास्क्रिप्ट (Node.js) , 62 बाइट्स

(f=a=>b=>b?f(a+.5):`(f=${f})(1)`.repeat(1+Math.random()*a))(1)

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


1
या तो मैं बहुत बदकिस्मत हूं, या यह मूल स्रोत कोड की दो से अधिक प्रतियां नहीं छाप सकता।
नाइट्रोडॉन

@Nitrodon धन्यवाद, नियत
l4m2

1

चारकोल , 58 बाइट्स

≔´θ´⎚´×´⊕´‽´L´⊞´O´υ´ω´⁺´⪫´⁺´´´≔´θ´´´´´θθ⎚×⊕‽L⊞Oυω⁺⪫⁺´≔θ´´θ

इसे ऑनलाइन आज़माएं! कोई वर्बोज़ संस्करण नहीं है क्योंकि डेवर्बोसिफायर वर्तमान में चोक है "´"। ज्यादातर गोल्फ से चारकोल की रानी पर आधारित है, आप बहुत अच्छे के लिए एक रानी हैं! । स्पष्टीकरण:

≔´θ´⎚´×´⊕´‽´L´⊞´O´υ´ω´⁺´⪫´⁺´´´≔´θ´´´´´θθ

शाब्दिक स्ट्रिंग θ⎚×⊕‽L⊞Oυω⁺⪫⁺´≔θ´´θको असाइन करें θ

किसी भी पिछले आउटपुट को साफ़ करें, ताकि केवल अंतिम आउटपुट ही प्रभावी हो।

×⊕‽L⊞Oυω

पूर्वनिर्धारित सरणी में खाली स्ट्रिंग पुश करें। यह अब तक संसाधित किए गए पुनरावृत्तियों की संख्या के बराबर सरणी लंबाई बनाता है, इसलिए इसकी लंबाई लें, एक यादृच्छिक संख्या को निहित अनन्य सीमा लें, 1 जोड़ें, और निम्न स्ट्रिंग को कई बार दोहराएं।

⁺⪫⁺´≔θ´´θ

शाब्दिक स्ट्रिंग के लिए आगे बढ़ें θ, फिर ´प्रत्येक वर्ण के बीच शाब्दिक एस डालें , फिर दूसरी प्रति का प्रत्यय लगाएं θ

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