एक ट्रेन को लेट करने के लिए उसे लेट कर चलाएं [बंद]


15

"मैं जिस व्यक्ति के साथ प्यार में पड़ गया हूं, उसके लिए एक उपहार खरीदने के लिए अर्बी बाजार में जाना चाहता हूं। हालांकि, अगर मैं बहुत देर से पहुंचता हूं तो सभी स्टोर बंद हो जाएंगे और मैं कुछ भी खरीदने में सक्षम नहीं हो सकता। मुझे? "

लक्ष्य: सभी दुकानों को बंद करने से पहले उत्तर रिचमंड स्ट्रीट से आरबी को लड़के को प्राप्त करें।
वास्तविक लक्ष्य: सुनिश्चित करें कि दुकानों के बंद होने से पहले लड़का अर्बी में नहीं आता है।

आपका कार्यक्रम निम्नलिखित प्रारूप में इनपुट में ले जाएगा:

<time> <map>

कहाँ पे

  • <time>अधिकतम समय है जब लड़का यात्रा कर सकता है, मिनटों में। यह एक सकारात्मक पूर्णांक है।
  • <map> उन मार्गों का एक ग्राफ है जो ट्रेन ले सकती है।

यहां बताया गया है कि ग्राफ़ के लिए प्रारूप कैसे काम करता है:

  • प्रत्येक कथन एक अर्धविराम के साथ समाप्त होता है।
  • नक्शे में नोड्स (जो स्विचेस का प्रतिनिधित्व करते हैं) सिंगल लोअर केस लेटर्स का उपयोग करके दर्शाए जाते हैं।
  • नोड्स के बीच एक पथ को सिंटैक्स के साथ दर्शाया गया है a,X,b, जहां Xएक पूर्णांक पथ के वजन का प्रतिनिधित्व करता है। पथ का वजन समय है, मिनटों में, ट्रेन उन दो नोड्स से गुजरने के लिए ले जाती है।
  • अरबी के साथ प्रतिनिधित्व किया है a, और उत्तर रिचमंड स्ट्रीट के साथ प्रतिनिधित्व किया है n
  • सभी रास्ते द्विदिश हैं।

उदाहरण के लिए, यह ग्राफ़ (पथ का पूर्वाग्रह द्विदिश है):

ग्राफ
विकिमीडिया कॉमन्स के माध्यम से आर्टीम कालिनिन द्वारा छविCC BY-SA 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-> ले aजाता है, तो वह 20 मिनट में वहां पहुंच जाता है, जो समय पर होता है। हम उस मार्ग को नोड की पृथक अल्पविराम सूची के रूप में प्रस्तुत कर सकते हैं:

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;

एक दृश्य प्रतिनिधित्व (यह दृश्य प्रतिनिधित्व केवल स्पष्टता के लिए है और चुनौती का हिस्सा नहीं है):

इनपुट 1

एक संभावित उत्पादन:

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 हाँ। मैं यदि संभव हो तो एक कार्यक्रम पसंद करते हैं, लेकिन अगर गुप्त हिस्सा यह पर निर्भर करता है एक समारोह किया जा रहा है तो एक समारोह अनुमति दी है।
चिरायता

मैं पूछ रहा हूं क्योंकि मैं जावास्क्रिप्ट में ऐसा करने की योजना बना रहा हूं।
गोल्फर

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]))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.