আবর্জনা জড়ো করুন


9

আপনি একটি এভিনিউতে খুঁজছেন, এবং কেউ আবর্জনা ফেলে রেখেছেন! ট্র্যাশ ট্র্যাশে ট্র্যাশগুলিতে ফেলে সমস্যাটি সমাধানের জন্য আপনাকে একটি প্রোগ্রাম লিখতে হবে।

কাজটি

অ্যাভিনিউটি মুদ্রণযোগ্য ASCII অক্ষরের একটি স্ট্রিং দিয়ে তৈরি, যেমন:

[[](dust)[]] car ((paper)vomit) (broken(glass)) [[] (rotten) fence (dirty)

এখানে কিছু বন্ধনী মিলছে না; সেগুলি কেবল ডিকয়েস। আমরা যা যত্ন করি তা হ'ল বন্ধনীগুলির মেলা সেট।

একটি ট্র্যাশ করতে পারেন একটি স্ট্রিং দিয়ে শুরু হয় [এবং দিয়ে শেষ ], এবং অভ্যন্তরীণভাবে মিলেছে বন্ধনী এবং বন্ধনী দিয়ে। উদাহরণস্বরূপ, []এবং [[](dust)[]]উপরের স্ট্রিংয়ের মধ্যে ট্র্যাশ ক্যান।

একটি ট্র্যাশ ব্যাগ এমন একটি স্ট্রিং যা শুরু হয় (এবং শেষ হয় )এবং অভ্যন্তরীণভাবে ম্যাচ করা বন্ধনী এবং বন্ধনীর সাথে থাকে। উদাহরণস্বরূপ, (dust)উপরের স্ট্রিংয়ের একটি ট্র্যাশ ব্যাগ।

এটি সম্ভব যে কয়েকটি ট্র্যাস ব্যাগ ইতিমধ্যে ট্র্যাশ ক্যানগুলিতে রয়েছে। তবে, কমপক্ষে একটি বাদ পড়ে যাবে এবং আমাদের ট্র্যাশ ব্যাগগুলি সরিয়ে নেওয়া দরকার যাতে সেগুলি সমস্ত আবর্জনার ক্যানের ভিতরে থাকে। বিশেষত, প্রতিটি ট্র্যাস ব্যাগের জন্য যা বর্তমানে ট্র্যাশ ক্যানের অভ্যন্তরে নেই (যেমন সেই ট্র্যাশের ক্যানের একটি স্ট্রিং), আমাদের এটি স্ট্রিংয়ের বর্তমান অবস্থান থেকে সরিয়ে ফেলতে হবে এবং এর পরিবর্তে এটি কোনও আবর্জনার অভ্যন্তরে প্রবেশ করতে হবে to ।

এখানে একটি অতিরিক্ত নিয়ম আছে। যেহেতু আমরা আবর্জনা সংগ্রহকারীদের জন্য খুব বেশি অর্থ ব্যয় করতে চাই না এবং তাদের রুটগুলি এভিনিউটি ধরে ডান থেকে বামে নিয়ে যায়, আমরা প্রতিটি ট্র্যাশ ব্যাগকে বাম দিকে সরিয়ে নিতে চাই (অতি গুরুত্বপূর্ণ মাপদণ্ড, ধরে নিই যে আমাদের এটি স্থানান্তরিত করতে হবে) সমস্ত) এবং স্বল্পতম দূরত্ব সম্ভব (যতক্ষণ না এটি বাম দিকে সরানো হয়)। সুতরাং উদাহরণস্বরূপ, শুধুমাত্র সঠিক আউটপুট

[can1](bag)[can2]

হয়

[can1(bag)][can2]

(ব্যাগটি কেবল একটি অক্ষরকে বাম দিকে সরানো)। অতিরিক্তভাবে, ব্যাগগুলি একই আপেক্ষিক ক্রমে থাকা দরকার:

[can](bag1)(bag2)

হতে হবে

[can(bag1)(bag2)]

(যেমন আপনি (bag2)বাম দিকে রাখতে পারবেন না (bag1)))

ব্যাখ্যা

  • বাম দিকের ট্র্যাশ ক্যানের বামে কোনও ট্র্যাস ব্যাগ থাকবে না; বাম দিকে সরানোর মাধ্যমে সমস্ত ট্র্যাসটি করা সর্বদা সম্ভব হবে।
  • সর্বদা সরানোর জন্য কমপক্ষে একটি ব্যাগ থাকবে। একের বেশি থাকতে পারে।
  • কোনও আবর্জনা ব্যাগের ভিতরে কোনও আবর্জনা ক্যান থাকতে পারে না (ক্যানগুলি কেবল ফেলে দেওয়ার জন্য খুব মূল্যবান)।
  • যদি একটি ব্যাগ ইতিমধ্যে একটি ক্যানের ভিতরে থাকে তবে কেবল এটি একা রেখে যান।
  • ইনপুট এবং আউটপুটটির পিছনে হোয়াইটস্পেসের (নিউলাইনগুলি সহ) পৃথক হওয়া ঠিক।

উদাহরণ:

  • ইনপুট: [[](dust)[]] car ((paper)vomit) (broken(glass)) [[] (rotten) fence (dirty)

    আউটপুট: [[](dust)[]((paper)vomit)(broken(glass))] car [[(rotten)(dirty)] fence

  • ইনপুট: []] (unusable) door (filthy) car

    আউটপুট: [(unusable)(filthy)]] door car


5
ভোটারদের বন্ধ করুন, আপনি কি অস্পষ্ট বলে মনে করছেন? পোস্টটির এতে কী সমস্যা হয়েছে তার সুস্পষ্ট গাইড ব্যতীত সমাধান করা শক্ত হতে চলেছে।

@ ais523 টাস্কটি কী তা আমি বুঝতে পারি না। মঞ্জুর হয়ে থাকতে পারে কারণ আমি ক্লান্ত হয়ে পড়েছি কিন্তু বর্তমানের শব্দগুচ্ছটি তেমন অর্থ দেয় না
ব্লু

1
মূলত, প্রতিটি স্তরের জন্য যা বন্ধনীগুলির মধ্যে থাকে তবে বন্ধনীগুলির অভ্যন্তরে নয়, বন্ধনীগুলির মধ্যে না হওয়া পর্যন্ত এটিকে বাম দিকে সরান।

যেহেতু এই সমস্যাটি বারবার বন্ধ হয়ে গেছে এবং আবার খোলা হচ্ছে, আমি সমস্যাটি বোঝার সাথে এটি সম্পাদনা করেছি। আশা করি প্রক্রিয়াটিতে আমি সমস্যাটি পরিবর্তন করিনি।

@ ais523 এটি আমার দ্বারা ঠিক আছে। আপনার সমস্ত সম্পাদনার জন্য আপনাকে অনেক ধন্যবাদ।
ইয়ান ডেলানয়

উত্তর:


3

জাভাস্ক্রিপ্ট (ES6), 263 228 209 205 184 177 173 162 বাইট

কোড / নিয়মিত প্রকাশের সাথে যে কোনও সহায়তা প্রশংসিত হয়।

f=s=>s.match(t=/\[\[][\w()]*\[]]|\[]/g,g=/\([\w()]*\)/g,i=0,u=s.split(t).filter(e=>e)).map(e=>e.substr(0,e.length-1)+u[i].match(g).join``+`]`+u[i++].replace(g,``)).join``

একটি বেনামী ফাংশন; একটি Stringপ্যারামিটার নেয় s, এবং আউটপুট দেয়।

/\[\[][\w()]*\[]]|\[]/g নেস্টেড ট্র্যাশ ব্যাগের সাথে ট্র্যাশ ক্যানের সাথে মেলে, তবে আমি মনে করি না যে এটি প্রয়োজনে ট্র্যাশ ব্যাগের মধ্যে ভারসাম্য বন্ধনী পরীক্ষা করতে পারে।

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