आपको एक प्रोग्राम लिखना है जो सोर्स कोड को आउटपुट करेगा
- मूल कार्यक्रम से बड़ा (चरित्र वार)
- दूसरे प्रोग्राम को चलाने पर खुद से बड़ा प्रिंट करेगा (यानी नया प्रोग्राम भी इस चुनौती का एक वैध जवाब है)
यह कोड-गोल्फ है, इसलिए सबसे कम उत्तर जीतता है।
:^)
आपको एक प्रोग्राम लिखना है जो सोर्स कोड को आउटपुट करेगा
यह कोड-गोल्फ है, इसलिए सबसे कम उत्तर जीतता है।
:^)
जवाबों:
यह एक सिंगल न्यूलाइन को प्रिंट करता है, जो दो न्यूलाइन को प्रिंट करता है, जो तीन न्यूलाइन को प्रिंट करता है, एट सेटेरा।
9
ये सही है। एक पात्र। बोल को 99 बोतल बीयर में आउटपुट करता है , जो एक वैध कार्यक्रम है। सभी बाहरी डेटा की गिनती नहीं है, लेकिन वहाँ बहुत सारे हैं 9
।
आउटपुट प्रोग्राम के आउटपुट में 59 बार बीयर की 99 बोतल के बोल हैं।
यदि आप प्रोग्राम n
टाइम चलाते हैं (यदि मेरा कैलकुलेशन सही है)
f(n) = 59n-1
2*59^n-2
"हैलो", "इन" के कारण "हैलो, दुनिया!" के उदाहरण भी होंगे ।
{.'.~'}.~
यह कोड आउटपुट:
{.'.~'}{.'.~'}.~
कौन से आउटपुट:
{.'.~'}{.'.~'}{.'.~'}.~
कौन से आउटपुट:
{.'.~'}{.'.~'}{.'.~'}{.'.~'}.~
और इसी तरह।
मेरा मानना है कि यह "वास्तविक" ट्यूरिंग-पूर्ण प्रोग्रामिंग भाषा में अब तक का सबसे छोटा उत्तर है।
मूल रूप से, ऊपर दिया गया मूल कोड एक "क्वीन-लेयर" है: यह सामान्य क्वीन का उत्पादन करता है और उसके बाद होता है।
GolfScript में, किसी भी कोड ब्लॉक शाब्दिक (जैसे {foo}
), यदि स्टैक पर undisturbed छोड़ दिया जाता है, तो वह एक क्वीन है। इस प्रकार, अपने दम पर, {.'.~'}
बस खुद को आउटपुट करता है, बस किसी भी अन्य कोड ब्लॉक की तरह।
.~
कोड के अंत में स्टैक पर पिछले कोड ब्लॉक लेता है, यह डुप्लिकेट, और प्रतिलिपि निष्पादित करता है। जब निष्पादित किया जाता है, तो कोड .'.~'
ब्लॉक के अंदर कोड स्टैक पर सबसे ऊपरी आइटम (यानी स्वयं की प्रतिलिपि) को डुप्लिकेट करता है और स्ट्रिंग को जोड़ता है .~
।
कार्यक्रम के अंत में, GolfScript दुभाषिया स्ट्रिंग पर सब कुछ स्ट्रिंग और आउटपुट करता है, जो इस मामले {.'.~'}
में, इनपुट की तुलना में एक से अधिक ब्लॉक होते हैं , साथ ही स्ट्रिंग .~
।
]
पहले से पहले जोड़ना .
(स्टैक पर सभी कोड ब्लॉक को एक डुप्लिकेट करने से पहले एक सरणी में इकट्ठा करना) यह तेजी से बढ़ता है:
{].'.~'}.~
आउटपुट:
{].'.~'}{].'.~'}.~
कौन से आउटपुट:
{].'.~'}{].'.~'}{].'.~'}{].'.~'}.~
कौन से आउटपुट:
{].'.~'}{].'.~'}{].'.~'}{].'.~'}{].'.~'}{].'.~'}{].'.~'}{].'.~'}.~
और इसी तरह।
{].'.~'}.~︵ ┻━┻
फ़ाइल के रूप में सहेजें Blank.java
। यदि आप इसे किसी अन्य फ़ाइल के रूप में सहेजते हैं, तो किसी भी उदाहरण Blank
को उपयुक्त फ़ाइल नाम से बदलें ।
फिर, पहले संकलन के माध्यम से कमांड लाइन में चलाएं, फिर चल रहा है। यदि संकलन विफल रहता है, तो रोकें।
मैं इसे जावा 7 के रूप में सूचीबद्ध करता हूं क्योंकि यह जावा के विभिन्न संस्करणों के लिए अलग-अलग उत्पादन कर सकता है।
पहले कुछ आउटपुट (stderr के लिए आउटपुट):
Error: Could not find or load main class Blank
Blank.java:1: error: class, interface, or enum expected
Error: Could not find or load main class Blank
^
Blank.java:1: error: reached end of file while parsing
Error: Could not find or load main class Blank
^
2 errors
Blank.java:1: error: class, interface, or enum expected
Blank.java:1: error: class, interface, or enum expected
^
Blank.java:1: error: expected
Blank.java:1: error: class, interface, or enum expected
^
Blank.java:1: error: expected
Blank.java:1: error: class, interface, or enum expected
^
Blank.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
Blank.java:1: error: class, interface, or enum expected
^
(use -source 1.4 or lower to use 'enum' as an identifier)
Blank.java:1: error: = expected
Blank.java:1: error: class, interface, or enum expected
^
Blank.java:2: error: expected
Error: Could not find or load main class Blank
^
Blank.java:2: error: ';' expected
Error: Could not find or load main class Blank
^
Blank.java:2: error: = expected
Error: Could not find or load main class Blank
^
Blank.java:2: error: = expected
Error: Could not find or load main class Blank
^
Blank.java:2: error: expected
Error: Could not find or load main class Blank
^
Blank.java:3: error: = expected
^
^
Blank.java:3: error: ';' expected
^
^
Blank.java:4: error: illegal start of type
Blank.java:1: error: reached end of file while parsing
^
Blank.java:4: error: = expected
Blank.java:1: error: reached end of file while parsing
^
Blank.java:4: error: illegal start of type
Blank.java:1: error: reached end of file while parsing
^
Blank.java:4: error: expected
Blank.java:1: error: reached end of file while parsing
^
Blank.java:4: error: = expected
Blank.java:1: error: reached end of file while parsing
^
Blank.java:4: error: illegal start of type
Blank.java:1: error: reached end of file while parsing
^
Blank.java:4: error: expected
Blank.java:1: error: reached end of file while parsing
^
Blank.java:4: error: = expected
Blank.java:1: error: reached end of file while parsing
^
Blank.java:4: error: ';' expected
Blank.java:1: error: reached end of file while parsing
^
Blank.java:4: error: = expected
Blank.java:1: error: reached end of file while parsing
^
Blank.java:4: error: expected
Blank.java:1: error: reached end of file while parsing
^
Blank.java:4: error: = expected
Blank.java:1: error: reached end of file while parsing
^
Blank.java:4: error: ';' expected
Blank.java:1: error: reached end of file while parsing
^
Blank.java:5: error: expected
Error: Could not find or load main class Blank
^
Blank.java:5: error: ';' expected
Error: Could not find or load main class Blank
^
Blank.java:5: error: = expected
Error: Could not find or load main class Blank
^
Blank.java:5: error: = expected
Error: Could not find or load main class Blank
^
Blank.java:5: error: expected
Error: Could not find or load main class Blank
^
Blank.java:6: error: = expected
^
^
Blank.java:6: error: ';' expected
^
^
Blank.java:7: error: reached end of file while parsing
2 errors
^
30 errors
stdout
) वास्तव में आउटपुट कुछ भी नहीं है।
QQ
यह आउटपुट है:
QQQQ
2^2^n
, जहां शुरुआती कार्यक्रम पीढ़ी 0. लंबाई की पुनरावृत्ति होती है m -> m^2
।
n
, आउटपुट बन जाता है n^n
। हालाँकि, यह गलत है; जब कोड-लंबाई होती है n
, तो आउटपुट की लंबाई होती हैn^2
इसका (इसके माध्यम से ) थोड़ा बहुत संशोधित संस्करण :
puts <<3*3,3
puts <<3*3,3
3
जितनी बार puts
प्रिंट होती है , उतनी बार तेजी से बढ़ती है।
$ ruby quine.rb | ruby | ruby
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
puts <<3*3,3
3
$ ruby quine.rb | ruby | ruby | ruby | ruby | ruby | ruby | ruby | wc -l
3283
एक साधारण लंबोदर शब्द
(λu.(u u)(u u))(λu.(u u)(u u))
एक बीटा कमी पैदावार द्वारा इस शब्द को कम करना
((λu.(u u)(u u))(λu.(u u)(u u)))((λu.(u u)(u u))(λu.(u u)(u u)))
और आगे और आगे। यह क्लासिक पर एक साधारण संस्करण है (λu.u u)(λu.u u)
जो लैम्ब्डा कैलकुलस में एक क्वीन है, यहां डबल सेल्फ एप्लिकेशन का मतलब है कि हम दो बार आउटपुट प्राप्त करते हैं।
cat $0 $0
घातीय दर से बढ़ता है।
या तो चलाने के रूप में sh whatever.sh
या इसे निष्पादन योग्य के रूप में सेट करें।
विंडोज संस्करण यहाँ है ।
काफी सरल:
6579792
dfP
पहली पंक्ति को एक बार हर पीढ़ी में दोहराया जाता है:
$ dc growing_quine.dc
6579792
6579792
dfP
$ dc growing_quine.dc | dc | dc
6579792
6579792
6579792
6579792
dfP
अंतिम पंक्ति में निम्नलिखित निर्देश होते हैं: d
स्टैक (6579792) पर लगाए गए अंतिम मान को डुप्लिकेट करता है (ताकि हम हर बार इसे चलाते समय एक और कॉपी प्राप्त करें), f
पूरे स्टैक को प्रिंट करता है (जो उसी संख्या का एक गुच्छा है) और P
संख्या (6579792) को बाइट स्ट्रीम के रूप में प्रिंट करता है, जो कि प्रदर्शित करता है dfP
।
यह रेडकोड में सबसे आसान योद्धा के योग्य कोड है , प्रसिद्ध छोटा सा भूत:
MOV 0, 1
जब निष्पादित किया जाता है, तो कोड स्मृति में अगले पते पर अपने एकल निर्देश की एक प्रति लिखता है; फिर इसे निष्पादित करता है, आदि।
print(open(__file__).read())
f=lambda:print('f()')
f()
इसे एकल वर्ण फ़ाइल नाम के साथ __ file__ को बदलकर और फ़ाइल को सहेजने के रूप में छोटा किया जा सकता है, लेकिन मुझे लगा कि यह उत्तर प्रश्न की भावना में अधिक था। एक पुनरावृत्ति के बाद यह आउटपुट:
print(open(__file__).read())
f=lambda:print('f()')
f()
f()
गोल्फ संस्करण लगभग अपठनीय दिखता है इसलिए मैं पहले समझाता हूं (और असली पहचानकर्ताओं का उपयोग करता हूं)।
यह "अजीब-से-से-उत्पादन-ए-स्टैक-ओवरफ्लो" आत्म संशोधन विधि का एक प्रकार है।
विधि एक हैलो संदेश और उसके वर्तमान स्रोत (केवल प्रदर्शन के लिए) को प्रिंट करती है। फिर, कोड को एक लंबी स्ट्रिंग और इंस्टॉल करने के लिए संशोधित किया गया है। अंत में, नए कोड को पुनरावर्ती कहा जाता है।
तत्काल भागने से खुद को बचाने के लिए, यह उपयोगकर्ता को प्रत्येक चक्र में पुष्टि करने देता है।
संकलन में वस्तु:
eatMe_alice
|msg mySource|
mySource := thisContext method source.
'**** Hello Alice' printCR.
' ---- my current code is:' printCR.
mySource printCR.
' ---------------' printCR.
(UserConfirmation confirm:'Again? ') ifTrue:[
Object compile:
(mySource
copyReplaceString:'Hello ','Alice'
withString:'Hello ','Alice !').
self eatMe_alice
]
किसी भी वस्तु को "eatMe_alice" भेजकर शो शुरू करें; शून्य करेगा:
nil eatMe_alice
एक अच्छा संस्करण नए कोड को पुनरावर्ती रूप से कॉल नहीं करना है, लेकिन इसके बजाय पुनरावृत्ति से, कॉल स्टैक को खोलना और नई विधि में पुन: दर्ज करना है। यह एक पुनरावृत्ति अपवाद के लिए अग्रणी नहीं होने का लाभ है। ऐसा करने के लिए, पुनरावर्ती कॉल ("सेल्फ ईमेम_लिस") को बदलें:
thisContext resend
गोल्फ:
जाहिर है, प्रिंटिंग और सेल्फ कॉलिंग के लिए नहीं कहा गया था, इसलिए सबसे छोटा (गोल्फ के लिए) केवल अपने स्वयं के स्रोत के लिए एक टिप्पणी संलग्न करना और उसे वापस करना है। साइड इफेक्ट के रूप में, यह अगले कॉल के लिए भी स्थापित हो जाता है ...
x|s|Object compile:(s:=thisContext method source,'""').^s
के साथ एक फ़ाइल स्टोर करें
sed p *
अपने स्वयं के, खाली निर्देशिका में और sh [file]
निष्पादन योग्य का उपयोग करके या सेट करके इस निर्देशिका से चलते हैं ।
8 वर्णों वाला पुराना विकल्प , लेकिन इसकी अपनी निर्देशिका की आवश्यकता नहीं है। के साथ एक फ़ाइल स्टोर करें
sed p $0
और sh [file]
निष्पादन योग्य सेट का उपयोग करके या चलाएं ।
12 अक्षरों वाला पुराना विकल्प :
sed -i- p $0
यह वास्तव में प्रोग्राम फ़ाइल में ही आउटपुट करेगा, लेकिन आउटपुट को निर्दिष्ट नहीं किया गया था। एक घातीय दर पर खुद को दोहराता है।
ed
, अपने आदमी पृष्ठ के माध्यम से देखना नहीं चाहता था ...
function f(){console.log(f+"f(f())")}f()
पहली बार जब आप इसे चलाते हैं तो यह ;f()
अंत में दूसरे के साथ आउटपुट करता है । बाद में दो बार छपे प्रत्येक "इनपुट" स्रोत में आउटपुट के परिणाम मिलते हैं।
alert
की तुलना में कम होगा, console.log
लेकिन मैं कई चेतावनी संवादों को आउटपुट के रूप में नहीं मानता हूं, जबकि कंसोल में कई लाइनों को आउटपुट के रूप में कॉल करना उचित लगता है।
"f(f())"
"f();f()"
'
खुली बोली, स्पष्ट रूप से, खुली बोली त्रुटि देती है:
|open quote
| '
| ^
|[-1] /home/runner/.code.tio
ध्यान दें कि, जे इंटरप्रेटर की प्रकृति से, त्रुटियों को STDOUT में मुद्रित किया जाता है , STDERR को नहीं।
जब ऊपर कोड के रूप में चलाया जाता है, तो यह प्रिंट करता है:
|open quote
| | '
| ^
|[-2] /home/runner/.code.tio
फिर
|open quote
| | | '
| ^
|[-2] /home/runner/.code.tio
और इसी तरह। जितनी बार कोड चलता है, दूसरी पंक्ति चार बाइट्स के साथ बाईं-पैडेड होती है |
, इस चुनौती की आवश्यकता को पूरा करती है।
echo,~'echo,:~(,quote)'''
आउटपुट
echo,:~(,quote)'echo,:~(,quote)'
और फिर यह खुद को दो बार अलग लाइनों पर आउटपुट करता है:
echo,:~(,quote)'echo,:~(,quote)'
echo,:~(,quote)'echo,:~(,quote)'
फिर
echo,:~(,quote)'echo,:~(,quote)'
echo,:~(,quote)'echo,:~(,quote)'
echo,:~(,quote)'echo,:~(,quote)'
echo,:~(,quote)'echo,:~(,quote)'
और इसी तरह।
पहला आउटपुट मानक J quine का एक सरल संस्करण है । जोड़ा ,:~
खुद को लंबवत रूप से जोड़ता है, जहां परिणामस्वरूप 2 डी सरणी एक ही स्ट्रिंग की दो पंक्तियों के रूप में मुद्रित होती है।
"'34'coo1o;
यह मानक क्वीन फ्रेमवर्क है, सिवाय इसके कि 1
प्रत्येक पुनरावृत्ति के बाद एक अतिरिक्त प्रिंट किया जाता है। इसे ऑनलाइन आज़माएं!
पहले कुछ आउटपुट:
"'34'coo1o;
"'34'coo1o;1
"'34'coo1o;11
"'34'coo1o;111
नॉनकोमपेटिंग, भाषा चुनौती को स्थगित कर देती है।
"qp"qp
पहला पुनरावृत्ति qp
अंत में एक अतिरिक्त जोड़ता है , और प्रत्येक क्रमिक पुनरावृत्ति शुरुआत में इस मूल कार्यक्रम की एक अतिरिक्त प्रतिलिपि जोड़ता है।
"'<S@>
यह एक अजीब था। जो मुझे करना था ~
, वह जो किंग द्वारा मिली मूल रानी से हटा दिया गया था ।
हर अतिरिक्त रन <
अंत में एक और जोड़ता है , जैसे:
"'<S@><<<<<<<<<
जिनमें से सभी कुछ नहीं करते हैं।
<?echo fgets(fopen(__FILE__,'r')).';';
यह प्रत्येक रन पर एक अर्धविराम जोड़ देगा।
';'
। तब आपको अधिक आउटपुट मिलेंगे।
<?=fgets(fopen(__FILE__,'r')).';';
?
;<?echo fgets(fopen(__FILE__,'r'));
ECMAScript 6 (38 वर्ण)
(f=_=>'(f='+f+')();(f='+f+')();')();
कौन से आउटपुट:
(f=_=>'(f='+f+')();(f='+f+')();')();(f=_=>'(f='+f+')();(f='+f+')();')();
संपादित करें
आप कर सकते हैं (28 अक्षर):
(f=_=>'(f='+f+')();'+f())();
हालाँकि यह असीम रूप से पुनर्जीवित होगा और कभी भी कुछ भी नहीं लौटाएगा ... लेकिन इसे कुछ इस तरह से किया जा सकता है (42 अक्षर):
(f=_=>_?'(f='+f+')('+_+');'+f(_-1):'')(3);
जो आउटपुट देगा:
(f=_=>_?'(f='+f+')('+_+');'+f(_-1):'')(3);(f=_=>_?'(f='+f+')('+_+');'+f(_-1):'')(2);(f=_=>_?'(f='+f+')('+_+');'+f(_-1):'')(1);
+_+ =_=
इमोटिकॉन्स के लिए +1
(print `(or ,-))
दी, यह इंटरेक्टिव-ओनली है, लेकिन मौजूदा टॉप-लेवल फॉर्म को रेफर करने में सक्षम होने के कारण यह संभव है कि स्पेसिफिकेशंस को पूरा करने वाले नॉन-ट्रिवियल प्रोग्राम को कम से कम किया जाए।
क्या वास्तव में दिलचस्प होगा जो सबसे तेजी से चल रहा है। शायद कुछ ऐसा
(print `(progn ,@(loop repeat (length -) collect -)))
`
और ,
?
or
, भी:(print -)
x="print(\"x=\$(repr(x))\\n\$x;\"^2)";print("x=$(repr(x))\n$x;"^2)
आउटपुट (134 वर्ण):
x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);
परिणाम निष्पादित करने का परिणाम (268 वर्ण):
x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);
अगला परिणाम (536 वर्ण):
x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);
अगला परिणाम (1072 वर्ण):
x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);x="print(\"x=\$(repr(x))\\n\$x;\"^2)"
print("x=$(repr(x))\n$x;"^2);
मुझे उम्मीद है कि यह नियमों के अनुसार होगा।
यह बड़े आउटपुट का उत्पादन करता है, और आउटपुट स्वयं मान्य स्रोत कोड है जो फिर से बड़े आउटपुट का उत्पादन करता है।
0"DÐ34çý"DÐ34çý
प्रिंटों 0"DÐ34çý"DÐ34çý"DÐ34çý"DÐ34çý
,
जो प्रिंट 0"DÐ34çý"DÐ34çý"DÐ34çý"DÐ34çý"DÐ34çý"DÐ34çý"DÐ34çý"DÐ34çý
,
आदि
DD
प्रतिस्थापित किया जा सकता है Ð
।
Evoloop सेलुलर automaton गोली के साथ शामिल पैटर्न जो अपने आपको "Quine की तरह" रास्ते में दोहराने का समर्थन करता है। विशेष रूप से, इन पैटर्नों में प्रत्येक में एक "प्रोग्राम" होता है; एक पैटर्न पहले कार्यक्रम को निष्पादित करके (जो बेटी का "शरीर" बनाता है) और फिर बेटी में कार्यक्रम की नकल करके खुद को पुन: पेश करता है।
उपरोक्त अधिक प्रसिद्ध "लैंग्टन लूप्स" सेलुलर ऑटोमोबोन के साथ-साथ इवोलोप पर भी लागू होता है, लेकिन एवोलोप में एक दिलचस्प अंतर है, जो यह है कि एक पैटर्न बनाना आसान है जो प्रत्येक क्रमिक पीढ़ी में बढ़ता है।
(बहुत अधिक दिलचस्प है, मेरी राय में, यह तथ्य यह है कि एवोलोप एक साधारण सेलुलर ऑटोमेटोन है जिसमें ऐसे पैटर्न होते हैं जो खुद को पुन: पेश करते हैं और बहुत ही जीवन की तरह से विकसित होते हैं! मुझे लगता है कि एकमात्र ज्ञात सेलुलर ऑटोमेटा है जो ऐसा करते हैं जो इवोलोप और इसके वंशज हैं। , हालांकि, इवोलोप की कमी यह है कि एक विशेष "सर्वश्रेष्ठ" जीनोम है; विकास हमेशा अंततः इस एक जीनोम में परिवर्तित होता है।)
अब, इस सबमिशन में दो कमियाँ हैं। एक यह है कि यह स्पष्ट नहीं है कि सेलुलर ऑटोमेटन का "आउटपुट" क्या है। लेकिन मुझे लगता है कि एक स्व-प्रजनन करने वाला ऑटोमेटन एक क्वीन होने के लिए "करीब करीब" है; यह निश्चित रूप से कम दिलचस्प नहीं है! दूसरी कमी यह है कि ये पैटर्न केवल खुद की एक प्रति नहीं बनाते हैं; मूल प्रति की प्रत्येक प्रति अनंत रूप से स्वयं की कई प्रतियां बनाने का प्रयास करती है, और ये प्रतियाँ एक दूसरे के साथ विनाशकारी तरीके से अंत होती हैं। इसलिए, मुझे लगता है कि मैंने इस चुनौती की आवश्यकताओं को आत्मा में पूरा किया है, लेकिन पत्र में नहीं।
आगे की हलचल के बिना, पैटर्न है:
022222220
270170172
212222202
202000212
272000272
212000202
202222212
271041032
022222250
यहाँ एक पैटर्न फिर से है, एक प्रारूप में जिसे कॉपी किया जा सकता है और उसे Golly में पेस्ट किया जा सकता है:
x = 9, y = 9, rule = Evoloop
.7B$BG.AG.AGB$BA5B.B$B.B3.BAB$BGB3.BGB$BAB3.B.B$B.5BAB$BGA.DA.CB$.6BE
!
ठीक है, लेकिन यह कैसा दिखता है? यह इस तरह दिख रहा है:
उपरोक्त एनीमेशन में, आप देख सकते हैं कि प्रारंभिक पैटर्न एक बड़ी बेटी का निर्माण करता है, जो एक बड़ी पोती बनाता है, फिर एक बड़ी पोती, और अंत में एक और भी बड़ी पर-पोती, जो अभी तक एक बड़ी तीसरी-महान का निर्माण करना शुरू करती है- पोती। यदि आप इस पैटर्न को लंबे समय तक चलाते हैं, तो यह हमेशा के लिए इस तरह चलता रहेगा (या शायद वे अंततः विकसित जीवों से आगे निकल जाएंगे, जो बहुत तेजी से पुन: पेश करने में सक्षम हैं; मुझे यकीन नहीं है)।
इस कोड को किसी भी .bat फ़ाइल में रखें और यह निष्पादित (अनंत लूप में) जारी रहेगा और फ़ाइल भी बढ़ेगी।
echo echo %0 ^>^> %0 >> %0
%0
क्या स्क्रिप्ट का उपयोग करने के लिए कमांड का उपयोग किया जाता है, जिसमें .BAT
विस्तार नहीं हो सकता है । आप %~nx0
बैच फ़ाइल का पूरा फ़ाइल नाम प्राप्त करने के लिए उपयोग कर सकते हैं ।
.bat
निष्पादित करने की आवश्यकता नहीं है । यदि फ़ाइल नाम है execute.bat
, तो आप execute
या तो दर्ज कर सकते हैं या execute.bat
। दोनों काम करेंगे।
.bat
निष्पादित करने के लिए विस्तार, लेकिन आप एक्सटेंशन बंद छोड़ सकते हैं जब आप इसे निष्पादित (जब आप कोई एक्सटेंशन के साथ एक आदेश लिखें, विंडोज की कोशिश करता है .com
, .exe
है, तो .bat
इसी क्रम में)। यदि फ़ाइल नाम है hello.bat
, तो >> %0
नाम की एक फ़ाइल लिखेंगे hello
, जो मूल नहीं है hello.bat
(और निष्पादित नहीं किया जा सकता है)।
P(Q,Q)
प्रिंट्स यह स्वयं का सोर्स कोड है, जिसे न्यूलाइन्स द्वारा अलग किया गया है। दूसरी पीढ़ी होगी
P(Q,Q)
P(Q,Q)
इत्यादि।
0
0
1
1
1
4
1
11
4
1
11
1
2
2
1
12
18
10
18
1
32
22
1
18
26
4
26
8
18
11
6
17
4
26
यह पहली बार एक शून्य के साथ दो पंक्तियों को प्रिंट करता है, और फिर प्रत्येक पंक्ति की रेखा 1 से तुलना करता है, यदि वे समान हैं (जो कि जब फ़ाइल समाप्त हो जाती है), तो हम सेल 26 में क्या प्रिंट करते हैं। परिणामी आउटपुट दिखेगा सिवाय, एक जोड़े के अलावा 33
, जो कुछ भी नहीं करता है। अगली बार, एक और लाइन जोड़ी जाएगी, और इसी तरह।
एच
प्रिंट करता है Hello, World!
।
एच के अलावा अन्य वर्ण वैध (और सुरक्षित) स्रोत कोड हैं (जो हैलो वर्ल्ड के अन्य वेरिएंट को प्रिंट करते हैं)।