सेलुलर ऑटोमेटा वास्तव में आकर्षक हैं। आमतौर पर जिन लोगों के बारे में बात की जाती है, वे द्विआधारी होते हैं, यानी, एक संख्या द्वारा प्रतिनिधित्व करने योग्य। हालांकि, मेरी राय में उन लोगों को मौत के घाट उतार दिया गया है। टर्नेरी सीए अधिक दिलचस्प हैं, लेकिन हमारे पास सभी ASCII पर विचार करने के लिए है! क्या मज़ा हो सकता है!
प्रत्येक चरित्र के लिए एक नियम तय करने के बजाय, मैं एक साधारण निर्णायक नियम का उपयोग करूंगा, जिसके बारे में मैं जल्द ही बात करूंगा। अगली पीढ़ी को तय करने के लिए, हम तीन "शीर्ष" कोशिकाओं को देखते हैं, एक सेलुलर ऑटोमेटा की तरह। एक उदाहरण देखें:
QWERTY
X Y Z
"ऊपर" Y
है WER
, ऊपर-दाएं, ऊपर, और ऊपर-और बाईं ओर कोशिकाएं हैं। Y उस फ़ंक्शन का परिणाम होगा जो मैं परिभाषित करने वाला हूं, जो तीन-चार तारों पर एक फ़ंक्शन है। "शीर्ष" X
है QW
, या गैर-मौजूद / अनुपस्थित सेल में भरने वाला स्थान है ।
अब, मज़ा समारोह के लिए! मैं इस अनुक्रम को एक कारण के लिए XOROR अनुक्रम कहता हूं। चलो A
शीर्ष-बाएं सेल चारकोड B
हो, उपरोक्त सेल चारकोड हो, और C
शीर्ष-दाएं सेल चारकोड हो। फिर, जिसके परिणामस्वरूप सेल चरित्र जिसका charcode है (A XOR B) OR C
, यह है कि (A^B)|C
। (यदि परिणामी मान 126 से अधिक है, तो यह निर्धारित है (CHARCODE % 127) + 32
। यदि मान 32 से कम है तो कुछ भी नहीं किया जाता है।) यहाँ बीज का एक उदाहरण है Hello, World!
:
S: Hello, World!
0: mmmo/c_ z}~)e
m = ( )^(H)|(e) = (32^72)|101 = 104|101 = 109 (m)
m = (H)^(e)|(l) = (72^101)|108 = 45|108 = 109 (m)
etc.
1: mmo/c_< +wl
2: mo/c_<c< + |;
3: o/c_<c ?+ g
4: oc_<c c??4+gg
5: 0_<c c 4+ o
6: _<c ccc4??ooo
7: c ccc4 ?o o
8: ccccc4w? pooo
9: cccc4w h o
A: ccc4wc hh ooo
B: cc4wc4kh ooo
C: c4wc4 #ooo o
D: wwc4w4#ooo oo
E: wc4wwc oo oo
F: w4wwc4oo oo o
G: wwwc4 oo oo
H: wwc4w4 oo oo
I: w4wwc4oooo oo
J: wwwc4 oo oo
K: wwc4w4oo oo o
L: wc4wwo oo oo
M: w4wwo8ooo oo
N: wwwo8 o oo o
O: wwo8w8oooo oo
और हम इसके बाद कुछ समय के लिए आगे बढ़ सकते हैं। स्ट्रिंग के इस संशोधन को XOROR अनुक्रम कहा जाता है।
उद्देश्य आप एक प्रोग्राम या फ़ंक्शन लिखना चाहते हैं जो निम्नलिखित कार्यों में से एक है:
- एक स्ट्रिंग
s
और एक संख्या को देखते हुएn >= 0
,n
स्ट्रिंग के पहले परिवर्तन होने केs
साथ, बीज के साथ XOROR अनुक्रम पर वें स्ट्रिंग को आउटपुट करेंn = 0
। - एक स्ट्रिंग
s
, आउटपुट (कार्यक्रमों के लिए) या उत्पन्न (कार्यों / जनरेटर के लिए) बीज के साथ XOROR अनुक्रम की एक अनंत धारा को देखते हुएs
। यदि अनुक्रम दोहराता है तो आप रोकना चुन सकते हैं, लेकिन यह आवश्यक नहीं है।
s
हमेशा प्रिंट करने योग्य ASCII वर्णों से मिलकर बनेगा, अंतरिक्ष से लेकर टिल्ड प्लस टैब (कोई नया अंक नहीं)।
यह एक कोड-गोल्फ है , इसलिए बाइट्स में सबसे छोटा कार्यक्रम जीत जाता है।
o
एस इसे एक ज़गुर रश की तरह बनाते हैं ।
127%127+32==32
।
n=0
मूल स्ट्रिंग क्यों नहीं है?
(d^!)|(space)
। जैसा कि आप दूसरे प्रश्न के लिए, आप XOROR के प्रदर्शन के (CHAR%127)+32
बाद करते हैं।