একমুখী ব্যবস্থার মধ্য দিয়ে সংক্ষিপ্ততম রুট


9

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

ইনপুট

ইনপুট চালু থাকবে STDIN, এবং শূন্য রেখার পরে শূন্যপথ অনুসরণ করবে এবং নীচের অনুসারে প্রশ্নের তালিকা হবে:

A B
B A
B C
C D
D C

A D
C A
B A

প্রতিটি রাস্তা কেবল প্রদত্ত দিক দিয়েই ভ্রমণ করা যায়, সুতরাং উপরের উদাহরণে রাস্তা A - B একটি দ্বিপথের রাস্তা যেখানে বি - সি বি থেকে সি পর্যন্ত একমুখী রাস্তা যা সি থেকে বি ভ্রমণ করে street নিষিদ্ধ.

প্রারম্ভ এবং শেষের পয়েন্টগুলি সমস্ত একক আপার-কেস চিঠি দ্বারা প্রতিনিধিত্ব করা হবে।

আউটপুট

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

উপরের উদাহরণের জন্য আউটপুটটি হবে:

A B C D

B A

স্ক্রিপ্ট পরীক্ষা করুন

আগের মতো আমি জো এবং ভেন্টোরোর লিখিত স্ক্রিপ্টগুলির উপর ভিত্তি করে এই কাজের জন্য পরীক্ষা দিচ্ছি : -

এবং উপরের স্ক্রিপ্টগুলি ব্যবহার করতে পারবেন না এমন প্রত্যেকের জন্য পরীক্ষা এবং প্রত্যাশিত আউটপুট

ব্যবহার: ./test [your program and its arguments]

পুরস্কার

সমস্ত উত্তর যা স্পষ্টতই গল্ফ করার জন্য কিছু চেষ্টা করেছিল যা অনুমানের সাথে মিলিত হয় এবং সমস্ত পরীক্ষাগুলি পাস করে তা আমার উত্সাহ পাবে। 26/01/2012 এর মধ্যে স্বল্পতম কাজের উত্তর গৃহীত হবে।


output the first when sorting all shortest routes lexicographically- সুতরাং A B Dএবং A C Dযদি উভয় বৈধ সমাধান হয়, A B Dপরিবর্তে আউটপুট ?
মিঃ ল্লামা

@ গিগা ওয়াট হ্যাঁ, এটা ঠিক
গ্যারেথ


1
@ পিটারটেলর প্রশ্নটি স্যান্ডবক্সে থাকাকালীন আপনি কেন এটি উত্থাপন করেননি? আপনি কি পরামর্শ দিচ্ছেন? আমি মনে করি এটির কোনও উত্তর না থাকলেও আমি এটি মুছতে পারি?
গ্যারেথ

@ গ্যারেথ, কারণ একবারে মেটাতে একই সাথে কয়েকটি থ্রেডে ক্রিয়াকলাপ ছিল এবং আমি খেয়াল করিনি যে প্রশ্ন স্যান্ডবক্সে নতুন উত্তর এসেছে। অপসারণ একটি সম্ভাবনা; অথবা আপনি এটি প্রান্তের ওজন বাড়িয়ে দিতে পারেন - আমাদের কাছে এখনও পরিচালনা নির্দেশক ডিজকস্ট্র প্রশ্ন হয়নি।
পিটার টেলর

উত্তর:


3

হাস্কেল, 223 207 টি অক্ষর

main=interact$unlines.f.break null.map words.lines
s%[f,t]=[[f]]#t where[]#_="";x#t|y@(_:_)<-[z|z<-x,last z==t]=unwords$minimum y|1<3=s&x#t
s&z=[x++[b]|x<-z,[a,b]<-s,last x==a,notElem b x];f(s,_:q)=map(s%)q

2

পাইথন (2.x), 382 369 358 338 323 318 টি অক্ষর

সমস্ত টিপস এবং মন্তব্য স্বাগতম!

import os;u=str.split;l=u(os.read(0,1e9),'\n')
p,g,c=l.index(''),{},map;o=g.setdefault
def f(g,s,e,q=[]):q=q+[s];y=([],[q])[s==e];[c(y.append,f(g,n,e,q))for n in set(o(s,[]))-set(q)];return y
for k,v in c(u,l[:p]):o(k,[]);g[k]+=v
for w,e in c(u,l[p+1:]):h=sorted(f(g,w,e));print''if not h else' '.join(min(h,key=len))

এই ফর্মটি পরীক্ষা পাস করা উচিত। স্টিডিনের মাধ্যমে ফিড ইনপুট, যেমন python shortestroute.py < test.txt


পরীক্ষার 2 ক্যোয়ারী 2 ব্যর্থ বলে মনে হচ্ছে A B I J Minstead পরিবর্তে প্রত্যাবর্তন A B G J M
গ্যারেথ

@ গ্যারেথ: একই ধরণের দৈর্ঘ্যের সমাধানের লিক্সোগ্রাফিকাল বিবেচনা করে একটি ছোট বাগ আসলেই ঠিক করা উচিত ...
ক্রিস্টোফেডি

1

সি: 450 , 437 , 404 , 390 টি অক্ষর

#include<stdio.h>
#include <string.h>
r[99][99],p[99],q[99],m[99],i,j,x,y,s;
char t[9],e[9999];
F(k)
{
    m[k]^s?r[p[k]=q[i]][k]?m[q[j++]=k]=s:0:0;
    if(++k<99)F(k);
}
f()
{
    F(0);
    if(++i^j)f();
}
P(o)
{
    if(p[o])P(p[o]);
    *t=m[o]^s?0:o;
    strcat(e,t);
}
w()
{
    gets(t);
    r[*t][t[2]]=*t?w():0;
}
W()
{
    gets(t);
    x=*t,x?y=t[j=2],s=x+y*99,m[q[t[2]=i=p[x]=0]=x]=s,f(),P(y),strcat(e,"\n"),W():0; 
}
main()
{
    w();
    W();
    puts(e);
}

puts("\n")দুটি নতুন লাইন প্রিন্ট করে। puts()এটি মুদ্রিত স্ট্রিংগুলিতে স্বয়ংক্রিয়ভাবে একটি শেষ-লাইন টার্মিনেটর যুক্ত করে। এই আচরণটি এড়াতে, ব্যবহার করুন fputs(str, stdout)বা সহজভাবে printf(str)
জেবি

নিয়মগুলি সামান্য বাঁকানো - একবারে সমস্ত ইনপুট নেওয়া উচিত এবং তারপরে সমস্ত প্রশ্নের উত্তর এক বারে আউটপুট করা উচিত। আমি এটি +1 করব কারণ এটি দুর্দান্ত কাজ করে (এবং পরীক্ষাগুলিতে ভুলগুলি খুঁজে পেয়েছিল) তবে আমি দীর্ঘতর প্রোগ্রামে এটি গ্রহণ করতে সক্ষম হবো না যা পুরোপুরি ইনপুট / আউটপুট প্রয়োজনীয়তা মেনে চলে।
গ্যারেথ

@ গ্যারেথ: স্থির। তবে, উত্তর আউটপুট 9999 টি অক্ষরের চেয়ে বেশি হওয়া উচিত নয়!
Ali1S232
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.