একটি নতুন পাতা চালু


19

আপনি একটি গাছ, যা কম্পিউটার বিজ্ঞান পরম্পরা অনুযায়ী, হয়েছে দেওয়া করছি রুট উপরে এবং এ পাতার নীচের অংশে অবস্থিত। পাতার নোডগুলি সংখ্যার সাথে লেবেলযুক্ত। আপনার লক্ষ্যটি হ'ল বিশেষ পাতা চিহ্নিত করা -1এবং এটিকে নতুন মূল হিসাবে নিয়ে যাওয়া।

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

এখানে চিত্র বর্ণনা লিখুন

আপনি বিশেষ পাতাটি শীর্ষে ঘোরানো এবং গাছের বাকী অংশটি ঝুলিয়ে দেওয়ার কল্পনা করতে পারেন। সমস্ত শাখার সঠিক বাম থেকে ডান ক্রম পেতে গাছটিকে আবর্তন করার সময় বিমানটিতে রেখে দেওয়া Keep

নতুন গাছের বাদে মূল গাছের সমস্ত পাতা রয়েছে -1

ইনপুট:

একটি গাছ যার পাতা পৃথক ধনাত্মক পূর্ণসংখ্যার এক পাতা বাদে -1। গাছের গোড়াতে কমপক্ষে দুটি শাখা নামবে।

ইনপুটটি নেস্টেড তালিকার মতো [3, [[16], -1], [[4]]]বা তার স্ট্রিং প্রতিনিধিত্ব হিসাবে দেওয়া হয় । ডিলিমিটারগুলি alচ্ছিক এবং আপনার পক্ষে, তবে সংলগ্ন সংখ্যাগুলি পৃথক করা দরকার।

আউটপুট:

আপনার ইনপুট হিসাবে একই ফর্ম্যাটে উল্টানো গাছ আউটপুট বা মুদ্রণ করুন। তালিকার এন্ট্রিগুলির ক্রম অবশ্যই সঠিক হবে। জায়গায় জায়গায় পরিবর্তন ঠিক আছে।

যদি আপনার ইনপুট / আউটপুট কোনও ডেটা টাইপ হয় তবে এটি অবশ্যই ডিফল্টরূপে প্রয়োজনীয় ফর্ম্যাটে মুদ্রণ করে। বিল্ট-ইনগুলি যা মূলত আপনার জন্য কাজটি করার অনুমতি দেয় না।

পরীক্ষার কেস:

>> [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

সিজেএম, 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
@ ডেনিস ধন্যবাদ তবে এটি যদি কোনও ফাংশন হয় তবে আমার ধারণা অতিরিক্ত পরিমাণে দরকার [
জিমি 23013

6

পাইথ, 26 25 24 23 বাইট

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

প্রদর্শন. পরীক্ষার জোতা।

এটি একটি ফাংশন সংজ্ঞায়িত করে y, যা নেস্টেড পাইথ তালিকাটিকে ইনপুট হিসাবে গ্রহণ করে।

এই পুনরাবৃত্ত ফাংশনে অন্বেষণ করার জন্য তিনটি কেস রয়েছে, ত্রিবারীর কারণে ?, এবং চেষ্টা করুন - ফাংশন ব্যতীত .x,। ফাংশন ইনপুট হয় b

সত্য ঘটনা যখন প্রথম ঘটনা ঘটে }\-`Jtb। "লেজ" এর -স্ট্রিং উপস্থাপনায় একটি রয়েছে কিনা এটি পরীক্ষা করে , যা এর প্রথম উপাদানটি বাদে সমস্ত কিছুই।tbbbtbএছাড়াও সংরক্ষণ করা হয় J। যেহেতু সমস্ত লেবেল ব্যতীত ইতিবাচক , তাই তালিকার প্রথম উপাদানটিতে না -1থাকলেই কেবল এটি সত্য হবে -1

এই ক্ষেত্রে, আমরা চক্রীয়ভাবে ডান স্থানান্তর b 1 দিয়ে 1 দিয়ে.>b1 এবং তারপরে পুনরাবৃত্তভাবে ফাংশনটি কল করি। এটি নিশ্চিত করে যে -1তালিকার শীর্ষস্থানীয় (প্রথম উপাদান) উপাদান হিসাবে আমরা পরবর্তী পদক্ষেপে অগ্রগতি করব ।

পরের দুটি ক্ষেত্রে উপরেরটি মিথ্যা, তাই তালিকার শীর্ষেও রয়েছে -1

দ্বিতীয় ক্ষেত্রে, ahbJএকটি ত্রুটি ছুঁড়ে না। hbপূর্ণসংখ্যা হলে এবং একটি ত্রুটি নিক্ষিপ্ত হবে । যদি এটি না হয়, তবে hbএটি একটি তালিকা এবং আমাদের গাছটি ঘোরানো দরকার যাতে -1পাতাটি মূলের নিকটবর্তী হয়। ahbJশেষে Jএকটি একক উপাদান হিসাবে যুক্ত করে এটি সম্পাদন করে hb, যা কার্যকরভাবে গাছের গোড়াটি থেকে সরায়b কাছে hb

তৃতীয় এবং চূড়ান্ত ক্ষেত্রে, একটি ত্রুটি নিক্ষেপ করা হয়। সুতরাং, hbএকটি একক উপাদান। প্রথম ক্ষেত্রে পরীক্ষার কারণ হতে hbহবে -1। সুতরাং, আমরা বাকীটি নামকরণে, একটি তালিকায় মোড়ানো b, ফিরে আসতে পারি ।J]J

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.