দেরীতে চালানোর জন্য একটি ট্রেন সাবোটেজ করুন [বন্ধ]


15

"আমি যার প্রেমে পড়েছি তার জন্য একটি উপহার কিনতে আমি আরবি বাজারে যেতে চাই। তবে, আমি খুব দেরীতে এলে সমস্ত স্টোর বন্ধ হয়ে যাবে এবং আমি কিছুই কিনতে পারব না। আপনি কি সহায়তা করতে পারবেন? আমি? "

লক্ষ্য: সমস্ত স্টোর বন্ধ হওয়ার আগে উত্তর রিচমন্ড স্ট্রিট থেকে ছেলেটিকে আরবিতে নিয়ে যান।
আসল লক্ষ্য: নিশ্চিত হয়ে নিন যে দোকানগুলি বন্ধ হওয়ার আগে ছেলে আরবে না আসে।

আপনার প্রোগ্রামটি নিম্নলিখিত বিন্যাসে ইনপুট নেবে:

<time> <map>

কোথায়

  • <time>কয়েক মিনিটের মধ্যে ছেলেটি ভ্রমণে ব্যয় করতে পারে এমন সর্বোচ্চ সময়। এটি একটি ইতিবাচক পূর্ণসংখ্যা।
  • <map> ট্রেনটি যে রুটগুলিতে নিতে পারে তার একটি গ্রাফ।

গ্রাফের ফর্ম্যাটটি কীভাবে কাজ করে তা এখানে:

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

উদাহরণস্বরূপ, এই গ্রাফ (পথগুলি দ্বি নির্দেশমূলক) ভান করুন:

চিত্রলেখ
উইকিমিডিয়া কমন্সের মাধ্যমে আর্টিয়াম ক্যালিনিনের ছবিসিসি বাই-এসএ 3.0 লাইসেন্সের আওতায় ব্যবহৃত ।

গ্রাফ স্বরলিপি হিসাবে রেকর্ড করা হবে:

a,4,b;a,2,c;b,5,c;b,10,d;c,3,e;e,4,d;d,11,f;

মনে রাখবেন যে এই ইনপুটটিতে একটি নেই n, সুতরাং এটি একটি অবৈধ ইনপুট। যদি কোনও অবৈধ ইনপুট দেওয়া হয় তবে আপনার প্রোগ্রামটি কিছু করতে পারে।

এখানে একটি উদাহরণ ইনপুট:

21 n,4,b;n,2,c;b,5,c;b,10,d;c,3,e;e,4,d;d,11,a;

(এটি aপ্রতিস্থাপন nএবং fপ্রতিস্থাপনের সাথে উপরের চিত্রের ঠিক ঠিক একই গ্রাফ a)।

ছেলে থেকে পেতে আবশ্যক nথেকে a21 মিনিটের মধ্যে। যদি তিনি n-> c-> e-> d-> রুটটি নেন তবে তিনি a20 মিনিটের মধ্যে সেখানে পৌঁছে যা সময় মতো। নোডের কমা দ্বারা পৃথক করা তালিকা হিসাবে আমরা সেই রুটটি উপস্থাপন করতে পারি:

n,c,e,d,a

অন্যদিকে, রুট n-> b-> c-> e-> d-> aছেলের 27 মিনিট সময় নিতে পারে, যা সময়মতো নয়। আমরা এই পথটির প্রতিনিধিত্ব করতে পারি:

n,b,c,e,d,a

আরেকটি সম্ভাব্য রুট যা ছেলেকে সময়মতো এটি তৈরি করতে না পারে তা হ'ল:

n,b,c,b,c,b,c,b,c,b,c,b,c,b,c,b,c,b,c,e,d,a

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

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

আপনার প্রোগ্রামটি পরীক্ষা করে দেখার জন্য এখানে কয়েকটি নমুনা গ্রাফ রয়েছে।

ইনপুট:

12 a,2,c;a,2,e;b,5,c;b,4,d;b,11,e;d,7,n;e,4,n;

একটি চাক্ষুষ প্রতিনিধিত্ব (এই ভিজ্যুয়াল উপস্থাপনাটি কেবল স্বচ্ছতার জন্য এবং চ্যালেঞ্জের অংশ হিসাবে গঠিত হয় না):

ইনপুট ঘ

একটি সম্ভাব্য আউটপুট:

n,d,b,e,a

ইনপুট:

10 a,8,b;a,12,d;b,1,n;d,11,n;a,1,n;

এখানে গ্রাফের একটি ভিজ্যুয়াল চিত্র রয়েছে:

ইনপুট 2

একটি সম্ভাব্য আউটপুট:

n,d,a

 


আমরা কি কোনও ফাংশন (একা একা প্রোগ্রামের পরিবর্তে) লিখতে পারি?
golfer9338

@ golfer9338 হ্যাঁ আমি সম্ভব হলে একটি প্রোগ্রাম পছন্দ, কিন্তু যদি underhanded অংশ এটা উপর নির্ভর করে একটি ফাংশন হচ্ছে তারপর একটি ফাংশন অনুমোদিত হয়।
সোমরস

আমি জিজ্ঞাসা করছি কারণ আমি জাভাস্ক্রিপ্টে এটি করার পরিকল্পনা করছি।
golfer9338

3
আসল প্রশ্নটি হচ্ছে, আমরা কেন এই প্রেমের আঘাতপ্রাপ্ত ছেলেটিকে ছাপিয়ে যাই? সে কি আমাদের পরিবারকে অপমান করেছে? আমরা কি তাঁর নিজের স্নেহের বিষয়টি নিয়ে ডিজাইন করেছি? আমাদের অবশ্যই জানা উচিত!
ক্লাদিউ

3
আমি এই প্রশ্নটিকে অফ-টপিক হিসাবে বন্ধ করতে ভোট দিচ্ছি কারণ আন্ডারহ্যান্ড চ্যালেঞ্জগুলি এই দৃষ্টিতে বিষয়বস্তু নয়
রোহান ঝুনঝুনওয়ালা

উত্তর:


2

পাইথন 3 (2 নয়)

সম্পাদনা: উফফফ, আমি সকালে এটিকে নাচিয়ে দেব।

এটি একেবারে সাধারণ এ-তারকা অনুসন্ধান। রাইট? Riiiiiiight? সমস্ত পরীক্ষার ক্ষেত্রে কাজ করার জন্য মনে হচ্ছে।

def a(b,c,d):
    e,f,g=[],{},{}
    f[c]=0
    while f:
        h=sorted(f.keys(),key=lambda z:-f[z],reverse=True)[-1]
        if h==d:break
        e.append(h)
        for z in b[h]:
            if z in e:continue
            if z in f and f[z]>f[h]+b[z][h]:continue
            g[z]=h
            f[z]=f[h]+b[z][h]
        del f[h]
    i=[]
    j=d
    q=0
    while j!=c:
        i.append(j)
        q+=b[j][g[j]]
        j=g[j]
    return q,(i+[c])[::-1]
t,q=input().split(" ")
t=int(t)
q=q[:-1]
q=[i.split(",")for i in q.split(";")]
g={a:{}for a in __import__("functools").reduce(lambda zz,zy:zz+zy,[[v[0],v[2]]for v in q])}
for l in q:g[l[0]][l[2]]=g[l[2]][l[0]]=int(l[1])

r=a(g,'n','a')
print("time-good: %d, time-ours: %d" % (t, r[0]))
print("path: %s" % " -> ".join(r[1]))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.