মুদি দোকান মাইক্রো ম্যানেজমেন্ট


14

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

চ্যালেঞ্জ

আসুন একটি দ্বিমাত্রিক গ্রিডে মুদি দোকানটি কল্পনা করুন। বিচ্ছিন্ন করার জন্য এখানে একটি নমুনা গ্রিড রয়েছে:

                             e
                             s
                             s
                             s
                               Y

#           #                #s           #
#s          #                #s           #
#s          #                #s           #
#s          #s               #s           #
#3          #1               #4           #
 x           x                x            x

গ্রিডটি একটি দিয়ে শুরু হয় e, যা বাকী দোকানে একটি "আউটলেট" উপস্থাপন করে। প্রতিটি প্রজন্ম, গ্রিডের সমস্ত আউটলেটগুলি sসরাসরি নীচে একটি ক্রেতা ( ) তৈরি করে। আপনার কাছে পৌঁছে না দেওয়া পর্যন্ত ক্রেতারা প্রতিটি প্রজন্মকে নীচে নিয়ে যায় Y) যখন কোনও ক্রেতা আপনার মতো একই সারিতে পৌঁছে যায়, আপনাকে অবশ্যই ক্রেতাকে কমপক্ষে পরিমাণে ক্রেতার সাথে লাইনের শুরুতে টেলিপোর্ট করতে হবে। একজন ক্রেতা যখন ততক্ষণে লাইনে চলে যায় তখন তারা যখন সারিটিতে চলে যেত Y, এর মধ্যে কোনও প্রজন্ম নেই। লাইন #গুলি এস দ্বারা প্রতিনিধিত্ব করে - #s এর পরে কলামটি একটি লাইন। ক্রেতারা লাইন (একটি প্রস্থান দ্বারা প্রতিনিধিত্ব শেষে নামা x), এবং তারপর একটি র্যান্ডম সংখ্যা পরিণত মধ্যে 1এবং5। প্রতিটি প্রজন্মের, আপনার অবশ্যই নাম্বারযুক্ত ক্রেতাদের হ্রাস করতে হবে 1- যখন কোনও ক্রেতা পৌঁছে যাবে 0, তারা চেক আউট করে এবং তারা দোকানটি ছেড়ে যায়।

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

নমুনা

ইনপুট:

                e

                     Y


#           #                #            #
#           #                #            #
#           #                #            #
#           #                #            #
#           #                #            #
 x           x                x            x

আউটপুট:

                e
                s 
                     Y


#           #                #            #
#           #                #            #
#           #                #            #
#           #                #            #
#           #                #            #
 x           x                x            x

ইনপুট:

                e
                s 
                     Y


#           #                #            #
#           #                #            #
#           #                #            #
#           #                #            #
#           #                #            #
 x           x                x            x

আউটপুট

                e
                s 
                     Y


#s          #                #            #
#           #                #            #
#           #                #            #
#           #                #            #
#           #                #            #
 x           x                x            x

ইনপুট:

                e

                     Y


#           #                #            #
#           #                #            #
#           #                #            #
#s          #                #            #
#           #                #            #
 x           x                x            x

(সম্ভাব্য) আউটপুট:

                e
                s 
                     Y


#           #                #            #
#           #                #            #
#           #                #            #
#           #                #            #
#3          #                #            #
 x           x                x            x

ইনপুট:

                e
                s 
                     Y


#           #                #            #
#           #                #            #
#           #                #            #
#           #                #            #
#3          #                #            #
 x           x                x            x

আউটপুট:

                e
                s 
                     Y


#           #s               #            #
#           #                #            #
#           #                #            #
#           #                #            #
#2          #                #            #
 x           x                x            x

ইনপুট:

                e

                     Y


#           #                #            #
#           #                #            #
#           #                #            #
#           #                #            #
#1          #                #            #
 x           x                x            x

আউটপুট:

                e
                s 
                     Y


#           #                #            #
#           #                #            #
#           #                #            #
#           #                #            #
#           #                #            #
 x           x                x            x

এটি , তাই সংক্ষিপ্ততম কোড জিততে পারে।


1
আমি সত্যিই ইনপুট ফর্ম্যাটটি পাই না।
মনিকার লসুইট

@ কিপ্যসট্যাক্স ইনপুটটি একাধিক লাইন ইনপুট নেওয়ার জন্য আমাদের ডিফল্ট অনুযায়ী একাধিক লাইন স্ট্রিং বা একক লাইন স্ট্রিংগুলির একটি অ্যারে হতে পারে।
একটি স্প্যাগেটো

না, আমি বোঝাতে চাইছি যে আমি আসলেই চ্যালেঞ্জটি পাই না।
মনিকার লসুইট

উদাহরণগুলির উপর নির্ভর করার পরিবর্তে এটি স্পষ্ট করে বলে রাখা উপযুক্ত যে ক্রেতা কখনও ওয়াইয়ের মতো একই সারিতে থাকতে পারে না, ওয়াই সারিটিতে নামা এবং প্রাসঙ্গিক সারির শীর্ষে টেলিফোর্ড করা যেমন একক পদক্ষেপে ঘটে।
ট্রাইকোপলাক্স

উদাহরণস্বরূপ একটি পরীক্ষার কেস সহ একটি সারি কীভাবে স্থানান্তরিত হয় তার বিবরণ রাখতেও এটি সহায়তা করবে। যদি 3 জন ক্রেতা লম্বালম্বিভাবে একটি সারিতে সংলগ্ন থাকে এবং সর্বনিম্ন নীচে সরতে পারে তবে কি 3 টি একক পদক্ষেপে একসাথে নেমে যায় বা প্রতিটি ক্রেতারা এতে প্রবেশ করার সাথে সাথে উপলব্ধ স্থানটি একবারে এক সারি উপরে উঠে যায়?
ট্রাইকোপলাক্স

উত্তর:


4

পাইথন 2 , 477 463 453 449 423 402 397 396 393 বাইট

t=input()
e=enumerate
q,r=" s"
for i,L in list(e(t))[:0:-1]:
 for j,c in e(L):
	a=t[i-1][j]
	if"0"<c<"6":L[j]="0 1234"[int(c)]
	if(r==a)*q==L[j]:t[i-1][j],L[j]=q+r
	if"e"==a:L[j]=r
	if r==L[j]and"x"==t[i+1][j]:L[j]="5"
 if"Y"in L:x=L.count(r);t[i]=[p.replace(r,q)for p in L]
for i,l in list(e(t))[::-1]:
 for j,c in e(l):
	if"#"==c and(q==l[j+1])*x:x-=1;l[j+1]=r
print"\n".join(map("".join,t))

এটি অনলাইন চেষ্টা করুন!

এখনও এটি গল্ফ করে কাজ করছে তবে এটি আপাতত সমস্যা সমাধান করে


আপনি অতিরিক্ত ইনডেন্টেশন এবং লাইন ব্রেকগুলি সরিয়ে ফেলতে পারেন (একক লাইন ব্লকগুলি ব্লকের শুরুতে একই লাইনে যেতে পারে)
সলোমন উকো

@ সলোমনউকো আপনি কোথায় কথা বলছেন?
পোস্ট রক গার্ফ হান্টার

1. ট্যাবগুলি কি অজগরের জন্য 8 টি স্পেস রয়েছে? 2. আমি মনে করি লুপগুলির জন্য আপনি শেষ 2 এর পরে লাইন ব্রেকগুলি সরাতে পারেন।
সলোমন উকো

1
1. পাইথনে ট্যাবগুলি তাদের নিজস্ব জিনিস। ২. আপনি লাইন ব্রেকটি সরাতে পারবেন না।
পোস্ট রক গারফ হান্টার

১. অজগর কি কোনও ব্লকের প্রথম ইন্ডেন্টেশন স্তরটিকে সেই ব্লকের ইন্ডেন্টেশন স্তর হিসাবে গণনা করে? 2. আপনি জানেন না কেন ? আমি এটি পরীক্ষা করেছি এবং এটি কাজ করে না।
সলোমন উকো

4

সি ++, 898 896 885 841 বাইট

কোড করতে খুব দীর্ঘ ... তবে এটি আছে

-2 বাইটস কনর ও'ব্রায়েন
-45 বাইট ধন্যবাদ জ্যাকারিকে ধন্যবাদ ý

#include<vector>
#include<string>
#include<algorithm>
#include<ctime>
#define B begin()
#define L length()
#define C(e)if(i[j].find(e)!=string::npos&&!
#define S's'
#define T size()
#define U i[x][a]
using namespace std;auto g=[](auto&i){int e=i[0].find('e'),n=0,y=0,h=0,o,j,c,x,t=0;for(auto&a:i)t=a.L>t?a.L:t;for_each(i.B,i.end(),[&i,t](string&s){s.resize(t);});srand(time(0));vector<int>s,l;for(j=0;j<i.T;++j){C(S)y)++n;C(89)0)y=j;C(35)h){h=j;for(int d=0;d<i[j].T;++d)if(i[j][d]==35)l.push_back(d+1);s.resize(l.T);}if(h)for(c=0;c<l.T;c++)if(i[j][l[c]]!=32)++s[c];C('x')0)x=j;}--x;for_each(l.B,l.end(),[&i,&x,h](int&a){if(U!=32)--U;if(U==10)U=32;for(int b=x;b>h;--b){if(i[b][a]==32&&i[b-1][a]==S){i[b][a]=S;i[b-1][a]=32;}}if(U==S)U=49+rand()%5;});if(i[y-1][e]==S)i[h][l[min_element(s.B,s.end())-s.B]]=S;for(j=1;j<n+2;++j)if(j<y)i[j][e]=S;};

সুতরাং ... কিছু বিশদ:

  • আপনাকে একটি পাস std::vector<std::string>করতে হবে (দীর্ঘতম স্ট্রিংয়ের দৈর্ঘ্যের একই আকারে তাদের পুনরায় আকার দেওয়া হবে)

  • #একই y (উল্লম্ব) স্থানাঙ্কে শুরু হওয়া সমস্ত রেখা একই দৈর্ঘ্য এবং একই y (উল্লম্ব) স্থানাঙ্কে শেষ হয়

  • ধরে নিন যে গ্রিডে কমপক্ষে 1 #লাইন বা তার বেশি রয়েছে, eশীর্ষে একটি বর্ণ (একটি আউটলেট) থাকবে, একটি চিঠি থাকবেY

  • অনুমান করুন যে ইনপুটটি একটি বৈধ আউটপুট তাই পুনর্নির্দেশের জন্য অপেক্ষা করা ক্রেতারা সর্বদা একের পর এক থাকবে

সম্পাদনা করুন: হুইট উইজার্ডের উত্তরের মন্তব্যে সবেমাত্র দেখেছি যে এটি একাধিক প্রবেশপথকে সমর্থন করে, আমি সেটিতে কাজ চালিয়ে যাব


হতে পারে আপনি যে সি ম্যাক্রো হতে পারে #define C(e)i[j].find(e)!=string::npos?
কনর ও'ব্রায়েন

আমার উত্তরটি একাধিক প্রবেশদ্বারকে পার্শ্ব প্রতিক্রিয়া হিসাবে সমর্থন করে, এর গোলাপী। কোয়ার্তাটা বলেছিল এটি প্রয়োজন হবে, তবে আমি প্রশ্নটিতে এটি দেখতে পাচ্ছি না, যতদূর আমি উদ্বিগ্ন আপনি কেবলমাত্র একটি প্রবেশদ্বার সমর্থন করতে পারেন নি free
পোস্ট রক গারফ হান্টার

@ ওয়েট উইজার্ড ওয়েল, আমি যদি প্রশ্নটি পড়ে থাকি তবে এটি বলে: "গ্রিডটি একটি ই দিয়ে শুরু হবে যা একটি আউটলেটকে উপস্থাপন করে" এবং "সমস্ত আউটলেটগুলি", যাতে এটির বেশ কয়েকটি প্রবেশদ্বার থাকতে পারে তার পরামর্শ দেয়
হাটসুপয়েন্টারকুন

আপনি এর সংজ্ঞা পরিবর্তন করতে পারেন C(e)হতে #define C(e)if(i[j].find(e)!=string::nposএবং কলের তদনুসারে পরিবর্তন করুন।
জাকারি

এবং যেহেতু length()কেবলমাত্র প্রয়োগ করা আছে a, আপনি সেই অনুযায়ী কল পরিবর্তন করে Lহিসাবে সংজ্ঞায়িত হিসাবে পরিবর্তন করতে পারেন a.length()। এছাড়াও, আপনি using namespace std;নীচের দিকে যেতে পারেন , নতুন
লাইনটি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.