Duodyadic टाइल्स एक प्रकार के स्क्वायर फंक्शन ब्लॉक होते हैं जो दो इनपुट लेते हैं, एक उनके टॉप साइड से और एक उनके लेफ्ट साइड से, और दो आउटपुट होते हैं, एक उनके राइट साइड और दूसरा उनके बॉटम साइड पर। उनका प्रत्येक आउटपुट उनके दोनों इनपुट का एक अलग कार्य है।
उदाहरण के लिए, यदि #
एक सामान्य टाइल का प्रतिनिधित्व करता है, तो सही आउटपुट इनपुट R
का एक कार्य f
है T
और L
, और नीचे का आउटपुट B
एक और कार्य g
है : T
औरL
T
L#R R = f(T, L)
B B = g(T, L)
(टाइल्स को "डुओ" कहा जाता है क्योंकि दो कार्य हैं, और "रंगादिक" चूंकि दोनों कार्यों में दो तर्क हैं ।)
टाइलें एक ग्रिड पर एक साथ बनाई जा सकती हैं, एक टाइल के आउटपुट सीधे पड़ोसियों की टाइल के इनपुट में जा सकते हैं। उदाहरण के लिए, बाएं का दायां आउटपुट दाएं #
के बाएं इनपुट में जाता है #
:
AB D = f(f(A, C), B)
C##D E = g(A, C)
EF F = g(f(A, C), B)
आप कल्पना कर सकते हैं कि ग्रहणी टाइलों का एक सेट दिया गया है, प्रत्येक को विशिष्ट कार्यक्षमता, जटिल (और संभवतः उपयोगी) रचनाओं के साथ बनाया जा सकता है।
इस चुनौती में, हम केवल दस तर्क आधारित ग्रहणी टाइलों के पारंपरिक सेट से चिंतित होंगे , जहां सभी इनपुट और आउटपुट एकल-बिट बाइनरी नंबर (शून्य या वाले) हैं। हम प्रत्येक प्रकार की टाइल को निरूपित करने के लिए एक अलग ASCII वर्ण का उपयोग करेंगे।
टाइल वर्ण और उनके इनपुट-आउटपुट संबंध निम्नानुसार हैं:
( T
शीर्ष इनपुट के लिए, L
बाएं इनपुट के लिए, R
दाएं आउटपुट के लिए, B
नीचे आउटपुट के लिए है।)
- शून्य:
0
या(स्थान) →
R = 0
,B = 0
- एक:
1
→R = 1
,B = 1
- क्रॉस:
+
→R = L
,B = T
- दर्पण:
\
→R = T
,B = L
- केवल शीर्ष:
U
→R = T
,B = T
- केवल वाम:
)
→R = L
,B = L
- नहीं:
!
→R = not L
,B = not T
- और:
&
→R = L and T
,B = L and T
- या:
|
→R = L or T
,B = L or T
- Xor:
^
→R = L xor T
,B = L xor T
चुनौती
0 1+\U)!&|^
दस लॉजिक आधारित ग्रहणी टाइलों का उपयोग करके बनाए गए "सर्किट" का प्रतिनिधित्व करने वाले पात्रों के आयताकार ग्रिड में होने वाले एक प्रोग्राम या फ़ंक्शन को लिखें । आपको 0
's 1
' और 's ' के दो तार भी लेने होंगे ; एक बाएं इनपुट कॉलम होगा और एक शीर्ष इनपुट पंक्ति होगी। आपके कार्यक्रम / फ़ंक्शन को नीचे आउटपुट पंक्ति और सही आउटपुट कॉलम ( 0
's और 1
' s में भी) प्रिंट / वापस करने की आवश्यकता है ।
उदाहरण के लिए, इस ग्रिड में
+++
+++
सभी निविष्टियाँ सीधे ग्रिड से आउटपुट तक प्रवाहित होती हैं
ABC
D+++D
E+++E
ABC
इसलिए की एक इनपुट 010
/ 01
आउटपुट के लिए होता है 010
/ 01
:
010
0+++0
1+++1
010
आपके कार्यक्रम का सटीक आउटपुट [bottom output row]\n[right output column]
या होगा [bottom output row]/[right output column]
:
010
01
या
010/01
यदि आपने एक फ़ंक्शन लिखा है, तो आप दो तारों को एक ट्यूपल या सूची में वापस कर सकते हैं (या अभी भी उन्हें प्रिंट कर सकते हैं)।
विवरण
- किसी भी उचित तरीके से स्ट्रिंग के रूप में तीन इनपुट लें (अधिमानतः आदेश ग्रिड, शीर्ष पंक्ति, बाएं कॉलम में): कमांड लाइन, पाठ फ़ाइल, एसडीटीआईएन, फ़ंक्शन आर्ग।
- आप मान सकते हैं कि इनपुट पंक्ति और कॉलम की लंबाई ग्रिड आयामों से मेल खाएगी और इसमें केवल
0
's1
' और 's' शामिल होंगे । - आपके ग्रिड को उचित वर्ण (
0 1+\U)!&|^
) का उपयोग करना चाहिए । उसी को याद करो0
औरउसी का मतलब रखो ।
परीक्षण के मामलों
(पढ़ें / ओ के रूप में top
/ left
→ bottom
/ right
)
नंद:
&!
00
/ 0
→ 01
/ 1
00
/ 1
→ 01
/ 1
10
/ 0
→ 01
/ 1
10
/ 1
→ 11
/0
सभी:
1111
1\+\
1+\+
1\+\
किसी भी इनपुट में परिणाम होना चाहिए 1111
/ 1111
।
नंद से एक्सोर: (ट्रेलिंग स्पेस के कॉलम पर ध्यान दें)
\)+\
U&!&
+! !
\&!&
!
00000
/ 00000
→ 00000
/ 00000
00000
/ 10000
→ 00010
/ 00000
10000
/ 00000
→ 00010
/ 00000
10000
/ 10000
→ 00000
/00000
ज़िग ज़ैग:
+++\00000000
000\!!!!\000
00000000\+++
बाएं इनपुट का पहला बिट दाएं आउटपुट का अंतिम बिट बन जाता है। बाकी सब कुछ है 0
।
000000000000
/ 000
→ 000000000000
/ 000
000000000000
/ 100
→ 000000000000
/001
प्रचार:
)))
UUU
U+U
U+U
UUU
बाएं इनपुट का पहला बिट सभी आउटपुट पर जाता है।
000
/ 00000
→ 000
/ 00000
000
/ 10000
→ 111
/11111
यहां सभी 1 × 1 ग्रिड परीक्षण मामलों का एक पेस्टबिन है।
स्कोरिंग
बाइट्स में सबसे कम सबमिशन जीतता है।
बोनस: आप क्या शांत "सर्किट" बना सकते हैं?
PS गूग्लिंग "ग्रहणी टाइल" को परेशान न करें। मैंने उन्हें कल बनाया; डी
यदि आप इस विचार को एक पूर्ण प्रोग्रामिंग भाषा में विस्तारित करने पर चर्चा करना चाहते हैं, तो इस चैट रूम में आएं ।