यह चुनौती अप्रैल 2018 लोटम चैलेंज के हिस्से के रूप में पोस्ट की गई थी
ब्रेन-फ्लैक एक ट्यूरिंग-टार्पिट भाषा है, जिसने पीपीसीजी पर यहां काफी ख्याति प्राप्त की है। भाषा की स्मृति दो ढेर द्वारा रचित है, लेकिन एक "छिपा" तीसरी ढेर की खोज की थी द्वारा Wh ई जादूगर पर , यह सोच कर ब्रेन-आलोचना कार्यक्रमों में से कुछ दिलचस्प नए तरीके के लिए अग्रणी।
तो, उस गरीब छिपे हुए तीसरे स्टैक को अधिक दृश्यता देने के बारे में क्या? आइए एक भाषा बनाएं जहां तीसरे स्टैक की मान्यता है जो इसके योग्य है! यहाँ मैं आपको थर्ड-फ्लैक प्रस्तुत करता हूँ ।
भाषा
थर्ड-फ्लैक में केवल एक स्टैक होता है, जिसे तीसरा स्टैक कहा जाता है। ऑपरेटर्स उसी तरह वे ब्रेन-आलोचना में क्या में तीसरे ढेर पर काम करते हैं, लेकिन यहां कोई नहीं है []
, {}
, <>
nilads और कोई {...}
इकाई (ताकि किसी तृतीय-आलोचना कार्यक्रम में केवल स्वीकार्य चरित्र ()[]<>
)। यहां प्रत्येक ऑपरेटर करता है (उदाहरणों को एक सूची के साथ तीसरे स्टैक का प्रतिनिधित्व किया जाएगा जहां अंतिम तत्व स्टैक के शीर्ष है):
()
थर्ड-फ्लैक में केवल दो-वर्ण ऑपरेटर है। यह 1. स्टैक द्वारा तीसरे स्टैक के शीर्ष को बढ़ाता है:[1,2,3]
→[1,2,4]
(
,[
,<
: सभी उद्घाटन कोष्ठकों कि पिछले मामले में शामिल नहीं हैं एक धक्का0
तीसरे ढेर करने के लिए। उदाहरण:[1,2,3]
→[1,2,3,0]
)
तीसरे स्टैक से दो तत्वों को पॉप करता है और उनकी राशि को वापस धकेलता है। उदाहरण:[1,2,3]
→[1,5]
]
तीसरे स्टैक से दो तत्वों को पॉप करता है और पहले को दूसरे से घटाने का नतीजा पीछे धकेलता है। उदाहरण:[1,2,3]
→[1,-1]
>
तीसरे स्टैक से एक तत्व पॉप करता है। उदाहरण[1,2,3]
→[1,2]
और यहाँ भाषा के अन्य नियम हैं:
निष्पादन की शुरुआत में तीसरे स्टैक में केवल एक 0 होता है।
किसी प्रोग्राम के खाली होने
[]
या उसके<>
अंदर जाने की मनाही है (यदि वे फ़्लॉप-थ्रैक के शब्दार्थ का अनुसरण करते हैं, तो वैसे भी कोई फ़ोकस नहीं होगा, लेकिन उनका वास्तव में ब्रेन-फ़्लैक में एक अलग अर्थ है जो यहां फिर से बनाना संभव नहीं है)।कोष्ठक को हमेशा संतुलित करने की आवश्यकता होती है, इस तथ्य को छोड़कर कि कार्यक्रम के अंत में कोष्ठक को पीछे छोड़ना गायब हो सकता है। एक उदाहरण के रूप में,
[()<(()
एक मान्य थर्ड-फ्लैक प्रोग्राम है (और प्रोग्राम के अंत में तीसरा स्टैक होगा[1,0,1]
)।एक कार्यक्रम में केवल छह अनुमत वर्ण शामिल हो सकते हैं
()[]<>
। कार्यक्रम गैर-रिक्त होने की गारंटी है।
नोट: यह पिछले नियमों से निहित है कि आपको उन स्थितियों से नहीं निपटना होगा जहां आपको खाली स्टैक से पॉप करने की आवश्यकता होती है।
चुनौती
सरल, थर्ड-फ्लैक के लिए एक दुभाषिया लिखें। आपके प्रोग्राम को इनपुट को थर्ड-फ्लैक प्रोग्राम के रूप में लेना चाहिए और प्रोग्राम के अंत में तीसरे स्टैक की स्थिति को आउटपुट के रूप में वापस करना चाहिए।
आपका आउटपुट फॉर्मेट तब तक लचीला होता है जब तक कि उसे तीसरे स्टैक की स्थिति से स्पष्ट रूप से पढ़ना संभव न हो और एक ही नंबर हमेशा एक ही तरीके से एनकोड किया जाता है (यह सिर्फ कहने का एक तरीका है कि कोई भी आउटपुट फॉर्मेट एक ज़बरदस्त तरीका नहीं है धोखा देने की कोशिश करना ठीक है)।
आपकी आउटपुट पसंद उन संख्याओं की सीमा को सीमित कर सकती है जिन्हें आप प्रबंधित कर सकते हैं क्योंकि यह चुनौती को तुच्छ नहीं बनाता है (क्योंकि यह एक डिफ़ॉल्ट कमियां होगी )।
परीक्षण के मामलों
प्रत्येक परीक्षण मामले के लिए पहली पंक्ति इनपुट है, और दूसरी पंक्ति आउटपुट स्टैक को संख्याओं की एक अंतरिक्ष से अलग सूची के रूप में दर्शाया गया है जहां स्टैक के शीर्ष अंतिम तत्व है।
[()<(()
0 1 0 1
[((((()()()()()))
0 0 0 5
((([()][()][()])))
-3
[<<(((()()()())(((((
0 0 0 0 0 4 0 0 0 0 0
[()]<(([()])><[()]
-1 0 -1
(())(()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(())(()()())(())(()()()()())(())(())(())(())(()()()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(())(()()())(())(()()()()())(())(())(())(())(())(())(()())(())(())(())(()())(()()()())(())(()()()()())(()())(()())(()())(()()())(())(()())(())(()()()()())(()())(()()()()())(())(())(())(())(())(()())(())(())(())(()()()()())(())(())(()()()()())(())(())(()()()()())(())(())(()())(())(()())(())(()())(())(()())(())(()())(()())(()())(()())(()())(()())(()())(()())(())(()()()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(())(()()())(())(())(()()())(()())(())(()()()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(())(())(())(()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(()()())(())(()()())(())(())(())(()())(()()())(()())(())(()()()()())(()())(())(()()())(())(()()()()())(())(())(())(()()())(())(())(())(()())(())(()())(()()()())(())(())(()()()()())(()())(()())(())(()()())(())(())(())(())(()()())(()())(())(())(()()()()())(())(())(()()()()())(())(())(()()()()())(())(())(()())(())(()())(())(()())(())(()())(()())(()())(()())(())(()()()()())(()())(())(()()())(())(()()()()())(()()()()())(())(()()())(())(())(()())(())(()()()()())(())(()()()()())(())(())(())(()()()()())(())(())(()())(())(()())(())(()())(())(()())(())(()())(()())(()())(()())(())(()()()()())(()())(())(()()())(())(())(()())(())(()()()()())(()())(()()()()())(())(()()())(())(())(()()()()())(())(()()()()())(())(())(())(()())(())(()()()()())(())(())(()())(())(()())(())(()())(()())(()())(()())(())(()()()()())(()())(())(()()()()())(())(()()())(())(())(()())(())(()()()()())(()())(()()()()())(())(()()())(())(())(())(()())(()()()())(())(())(()())(())(()()()()())(())(())(()()()()())(())(())(()()()()())(())(())(()())(())(()())(())(()())(())(()())(())(()())(()())(()())(()())(()())(()())(())(()()())(())(())(()())(())(()()()()())(()())(()()()()())(()()())(())(())(()())(())(())(()()()()())(()()()())(()())(()())(()()())(())(()())(())(()()()()())(()())(()()()()())(())(())(())(()()()())(()()()())(()()
718 2
[()]
नियम है कि हम एक खाली ढेर से पॉपिंग के बारे में चिंता करने की जरूरत नहीं है