एक नए रुप में पत्र


19

आपको एक पेड़ दिया जाता है, जिसे कंप्यूटर विज्ञान की परंपरा में सबसे ऊपर जड़ और सबसे नीचे पत्तियां होती हैं । पत्ती नोड्स को संख्याओं के साथ लेबल किया जाता है। आपका लक्ष्य चिह्नित किए गए विशेष पत्ते को लेना है -1और इसे नई जड़ तक ले जाना है।

[3, [[16], -1], [4]] --> [[[[4], 3], [16]]]

यहाँ छवि विवरण दर्ज करें

आप शीर्ष पर विशेष पत्ती को घुमाने और बाकी के पेड़ को इससे लटकने देने की कल्पना कर सकते हैं। सभी शाखाओं के दाएं बाएं से दाएं क्रम को प्राप्त करने के लिए इसे घुमाते समय पेड़ को विमान में रखें।

नए पेड़ में मूल पेड़ के सभी पत्ते हैं सिवाय इसके -1

इनपुट:

एक वृक्ष जिसकी पत्तियाँ अलग-अलग धनात्मक पूर्णांक होती हैं, एक पत्ते को छोड़कर -1। पेड़ की जड़ में कम से कम दो शाखाएँ होंगी।

इनपुट को एक नेस्टेड सूची की तरह [3, [[16], -1], [[4]]]या उसके स्ट्रिंग प्रतिनिधित्व के रूप में दिया गया है । परिसीमन वैकल्पिक और आपके ऊपर है, लेकिन आसन्न संख्याओं को अलग करने की आवश्यकता है।

आउटपुट:

आउटपुट या फ़्लिप ट्री को उसी प्रारूप में प्रिंट करें जैसा आपके इनपुट में है। सूची प्रविष्टियों का क्रम सही होना चाहिए। इन-प्लेस संशोधन ठीक है।

यदि आपका इनपुट / आउटपुट एक डेटा प्रकार है, तो यह एक होना चाहिए जो डिफ़ॉल्ट रूप से आवश्यक प्रारूप में प्रिंट करता है। बिल्ट-इन जो मूल रूप से आपके लिए कार्य करने की अनुमति नहीं है।

परीक्षण के मामलों:

>> [3, [[16], -1], [4]]
[[[[4], 3], [16]]]

>> [2, -1]
[[2]]

>> [44, -1, 12]
[[12, 44]]

>> [[[[-1]]], [[[[4]]]]]
[[[[[[[[[4]]]]]]]]]

>> [[1, 2, 3], [4, -1, 6], [7, 8, 9]]
[[6, [[7, 8, 9], [1, 2, 3]], 4]]

>> [9, [8, [7, [6, -1, 4], 3], 2], 1]
[[4, [3, [2, [1, 9], 8], 7], 6]]

1
उदाहरण आरेख के साथ लाइन अप करने के लिए प्रतीत नहीं होता है। इसके 4चारों ओर दो और कोष्ठक हैं 3, लेकिन केवल 1 परत को अधिक गहरा आरेखित किया गया है।
isaacg

जवाबों:


7

CJam, 24 24 22 बाइट्स

l~{):T]{s$}$(+T1+}gW<p

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

2 बाइट्स निकालने के लिए धन्यवाद डेनिस।

व्याख्या

l~          e# Read the input.
{           e# Do:
    ):T     e# Save the last item to T.
    ]       e# Wrap everything else (as an array) and the last item into an array,
    {s$}$   e#   where the one with -1 (having "-" if stringified) is the first item.
    (+      e# Insert the second array into the first array as the first item,
            e#   or just move the -1 to the end if the first item is already -1.
    T1+     e# Check if the array before this iteration ended with -1.
}g          e# Continue the loop if it did't.
W<p         e# Remove the -1 and print.

आप का उपयोग कर सकते हैं {s$}$, क्रम के साथ उलट। इसके अलावा, एक अनाम फ़ंक्शन एक पूर्ण प्रोग्राम पर एक बाइट को बचाएगा।
डेनिस

1
@ डेनिस धन्यवाद। लेकिन अगर यह एक समारोह है, मुझे लगता है कि मुझे एक अतिरिक्त की आवश्यकता होगी [
jimmy23013

6

पायथ, 26 25 24 23 बाइट्स

L?y.>b1}\-`Jtb.xyahbJ]J

प्रदर्शन। दोहन ​​परीक्षण।

यह एक फ़ंक्शन को परिभाषित करता है y, जो इनपुट के रूप में नेस्टेड पायथ सूची लेता है।

इस पुनरावर्ती कार्य में पता लगाने के लिए तीन मामले हैं, टर्नरी के कारण ?, और कोशिश - फ़ंक्शन को छोड़कर .x,। फ़ंक्शन में, इनपुट है b

पहला मामला तब होता है जब }\-`Jtbसच्चाई होती है। यह परीक्षण करता है कि क्या "पूंछ" के -स्ट्रिंग प्रतिनिधित्व में tbहैb , जो bइसके पहले तत्व को छोड़कर सभी है । tbमें भी संग्रहित है J। चूंकि सभी लेबल सकारात्मक को छोड़कर हैं -1, यह सही होगा अगर और केवल -1सूची के पहले तत्व में नहीं है।

इस मामले में, हम b1 के साथ चक्रीय रूप से सही बदलाव करते हैं .>b1, और फिर फ़ंक्शन को पुनरावर्ती कहते हैं। यह सुनिश्चित करता है कि हम -1सूची के प्रमुख (प्रथम तत्व) वाले तत्व के साथ अगले चरण में प्रगति करेंगे ।

अगले दो मामलों में, उपरोक्त गलत है, इसलिए -1सूची के प्रमुख में है।

दूसरे मामले में, ahbJएक त्रुटि नहीं है। यदि hbकोई पूर्णांक है, तो केवल एक त्रुटि डाली जाएगी । यदि यह मामला नहीं है, तो hbएक सूची है, और हमें पेड़ को घुमाने की जरूरत है ताकि -1पत्ती जड़ के करीब हो। के अंत में एकल तत्व के रूप में ahbJजोड़कर इसे पूरा Jकरता हैhb , जो प्रभावी रूप से पेड़ की जड़ को अंदर से bस्थानांतरित करता है hb

तीसरे और अंतिम मामले में, एक त्रुटि फेंक दी जाती है। इस प्रकार, hbएक एकल तत्व है। क्योंकि पहले मामले में परीक्षण, hbहोना चाहिए -1। इस प्रकार, हम बाकी को b, अर्थात् J, एक सूची में लिपटे हुए , अर्थात् वापस कर सकते हैं ]J

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