पोस्टमैन डिलीवरी


12

मुझे सिर्फ एक पोस्टमैन के रूप में नौकरी मिली और इसे बनाए रखने के लिए मुझे आपकी मदद चाहिए। मुझे उन्हें वितरित करने के लिए बाहर जाने से पहले बहुत सारे मेल ऑर्डर करने होंगे।

सड़कों को सख्ती से क्रमिक रूप से क्रमांकित किया जाता है, सड़क के शुरू में 1 से शुरू होता है, और अंत तक कोई संख्या नहीं छोड़ते हुए क्रम में जारी रहता है, बाईं ओर विषम संख्या के साथ और दाईं ओर विकसित होता है। साथ ही घरों को बाद में जोड़ा गया था, इसलिए हमारे पास नागरिक संख्या से संबंधित पत्र भी हो सकते हैं।

छाती में शहर का सभी मेल होता है इसलिए मुझे अपनी गली के केवल मेल का चयन करना है।

मुझे मेल्स को तेज़ी से ऑर्डर करने के लिए आपकी मदद चाहिए। जो मैं आपसे पूछता हूं वह एक फंक्शन या फुल प्रोग्राम लेने में है:
- एक सड़क का नाम।
- मेरे रास्ते का अनुसरण करने वाले नागरिक संख्याओं की एक सूची।
- पतों की एक सूची (मेल चेस्ट का प्रतिनिधित्व)।

और केवल मेरी गली के पते वाले पतों की एक सूची का उत्पादन, नागरिक संख्याओं की सूची का आदेश दिया।

एक पते का रूप है:

 Person Name/n   
 CivicN Street Name

जहाँ CivicN एक संख्या है जिसका अनुसरण '/' और UPPERCASE LETTER (10 10 / B) द्वारा किया जा सकता है। यदि आप पसंद करते हैं, तो लोअरकेस स्वीकार्य है।

यदि सड़कों के नामों को ओवरलैप किया जाता है तो उन्हें अलग-अलग सड़कों के रूप में माना जाता है:

Church Road  != Saint Lorenz Church Road 

हम सादगी के लिए बाकी के पते को छोड़ देते हैं (यह मानते हुए कि यह हर मेल के लिए समान है)

पत्र तेजी से वितरित किया जाना चाहिए ताकि सबसे कम उत्तर जीतें।

उदाहरण:

लेआउट:

 1 1/B     3 5 7      9 11 13     
 ==============================    
       2 4       4/B 6           

इनपुट:

"Tea Avenue"
["1","1/B","2","4","3","5","7","4/B","6","9","11","13"]
["Mrs. Pie O. Pinky\n6 Tea Avenue","Ms. Kita I. Omeeha\n6 Tea Avenue","Mr. Raile A. Lee\n26 Uea Grove","Odd O. Nic\n76 Mira Road","Mrs. Fuel Tee\n78 Uea Grove","Ny O. Ondip\n55 Uea Grove","Mrs. Black\n67 Uea Grove","Ollie E.\n11 Tea Avenue","Mr. Urna Li\n75 Mira Road","Ms. Polly\n2 Tea Avenue"]

आउटपुट:

Ms. Polly
2 Tea Avenue  

Mrs. Pie O. Pinky 
6 Tea Avenue 

Ms. Kita I. Omeeha
6 Tea Avenue 

Ollie E.
11 Tea Avenue

इनपुट:

"Church Road"
["1","3","5","5/B","2","4","7","7/B","6","9","9/B","11","11/B"]
["Billy Ray V.\n5 Church Roadside East","Ms. Mia\n5 Church Road","Mrs. Dadeos\n9/B Church Road","Dr. Ymin U.\n3 Church Road","Atty. Nerou\n3 Church Road","Ollie A. Chaim\n6 Saint Lorenz Church Road","Ms. Rose\n5 Church Road","Alf Taohy\n79 Berry Road","Ms. Ootr E.\n5 Saint Lorenz Church Road","Lol E.\n21 Berry Road","Ms. Norton\n2 Church Road"]

आउटपुट:

Dr. Ymin U.
3 Church Road

Atty. Nerou
3 Church Road

Ms. Mia
5 Church Road

Ms. Rose
5 Church Road

Ms. Norton 
2 Church Road" 

Mrs. Dadeos
9/B Church Road

परीक्षण जनरेटर: इसे ऑनलाइन आज़माएं! स्वरूपण को संशोधित करने के लिए string_wrapper_left / right और विभाजक बदलें।

नियम:
- मानक कमियां निषिद्ध हैं।
- मानक इनपुट / आउटपुट तरीके।
- बाइट्स जीत में सबसे छोटा जवाब।


5
मुझे डर था कि आप यात्रा विक्रेता समस्या को हल करने के लिए हमसे पूछेंगे।
11

3
@AZTECCO धन्यवाद! यह बहुत ही परीक्षण के मामलों की सिफारिश की है अपनी पोस्ट में, न केवल डेमो कोड में एम्बेडेड है।
१२:१६ बजे

2
क्या आपको इसका मतलब नहीं है " हाँ वे ओवरलैप कर सकते हैं, वे अलग-अलग सड़कें हैं " या " नहीं, वे ओवरलैप नहीं कर सकते हैं, आपको इस तरह के मामले नहीं मिलेंगे "? आपका वाक्य अभी स्वयं विरोधाभासी है। ;) लेकिन मुझे कोई आपत्ति नहीं है अगर आप इसे चुनौती में निर्दिष्ट करते हैं। यदि आप इसका मतलब है कि इस तरह के परीक्षण के मामले संभव हैं, तो मैं इसके लिए जवाब देने के लिए मेरे 05AB1E उत्तर को संपादित करूंगा। और @ जीत को अपने पायथन जवाब को उस मामले में भी बदलना होगा।
केविन क्रूज़सेन

2
ओह .. मेरा मतलब था "हाँ वे ओवरलैप कर सकते हैं, उन्हें अलग-अलग सड़कों पर माना जाता है"
AZTECCO

2
पुष्टि कर सकते हैं। मैं कई साल पहले शनिवार के पोस्टमैन के रूप में काम करता था। :) यद्यपि मेरे वितरण जिलों की लगभग सभी गलियों में सड़क के किनारे पर अपनी बाइक खड़ी करने में अधिक समय लगता है, एक तरह से चलना और सभी विषम संख्याओं को वितरित करना, और फिर दूसरी तरफ चलते हुए सभी संख्याओं को समाप्त करना। मेरी बाइक पर फिर से। फिर, बड़ी सड़कों के साथ, क्रिसमस की तरह व्यस्त अवधि, या वाणिज्यिक फ़ोल्डरों का भार, मुझे आमतौर पर कुछ समय के बीच अपनी बाइक पर वापस जाना पड़ा क्योंकि मैं पूरी सड़क के सभी पोस्ट को एक बार में नहीं ले जा सका ..> ।>
केविन क्रूज़सेन

जवाबों:


4

जेली , 13 बाइट्स

,⁵KỴṪ⁼ɗƇ@ɗ€ẎY

तीन तर्कों को स्वीकार करने वाला एक पूरा कार्यक्रम - आपकी नामित सड़क पर नागरिक संख्याओं की एक सूची, मेल चेस्ट में पतों की एक सूची, और आपकी गली का नाम - जो उन पते को प्रिंट करता है जिन्हें आपको दिए गए नागरिक नंबरों के क्रम में वितरित करने की आवश्यकता है ।

इसे ऑनलाइन आज़माएं!

कैसे?

,⁵KỴṪ⁼ɗƇ@ɗ€ẎY - Main link: civic numbers, addresses
          €   - for each (civic number):
         ɗ    -   last three links as a dyad - i.e. f(civic number, addresses):
,⁵            -     pair (the civic number) with 3rd program input (the street name)
  K           -     join (that) with a space -- i.e. X=civic number+' '+street name
        @     -     with swapped arguments i.e. f(addresses, X):
       Ƈ      -       filter (the addresses) keeping those for which:
      ɗ       -         last three links as a dyad - i.e. f(address, X):
   Ỵ          -           split (address) at newlines
    Ṫ         -           tail (get the second line)
     ⁼        -           equals (X)?
           Ẏ  - tighten (the list of lists to a single list)
            Y - join with newlines

4

05AB1E , 15 13 12 बाइट्स

ε²ðýUʒ¶¡Xk]˜

@ जोनाथनअल्लन के जेली उत्तर को पोर्ट करके -2 बाइट्स , ताकि उसे अपवोट करना सुनिश्चित करें!
-1 बाइट @ ग्रीम को धन्यवाद ।

इनपुट क्रम में हैं: [नागरिक संख्या की सूची], सड़क का नाम, [पते की सूची]।

इसे ऑनलाइन आज़माएं।

स्पष्टीकरण:

ε       # Map over the (implicit) input-list of civic numbers
 ²      #  Push the second street-input
  ðý    #  And join the two values by a space
    U   #  Pop and store this street + num string in variable `X`
 ʒ      #  Filter the (implicit) input-list of addresses by:
  ¶¡    #   Split on newlines
    Xk  #   Get the index of string `X` (street + num) in this list,
        #   which will be either -1 (not found), 0 (first address-line), or 
        #   1 (second address-line), and only 1 is truthy in 05AB1E
]       # After both the inner filter and outer map:
 ˜      # Flatten the array to remove any empty inner lists
        # (after which the result is output implicitly)

संपादित करने के लिए प्रतीक्षा कर रहा है, मदद के लिए बहुत बहुत धन्यवाद!
AZTECCO

मैंने "बेली रे वी। \ N5 चर्च रोडसाइड ईस्ट" को जोड़कर ओवरलैप टेस्ट केस के साथ एक टेस्ट केस संपादित किया है, वह आउटपुट में नहीं दिखना चाहिए, कृपया अपना उत्तर ठीक करें। असुविधा के लिए खेद है, मैं भविष्य में अपनी चुनौतियों पर अधिक ध्यान दूंगा।
AZTECCO

@AZTECCO को अब ग्रिम के पहले गोल्फ सुझाव का उपयोग करके तय किया जाना चाहिए ।
केविन क्रूज़सेन

आपके समय के लिए धन्यवाद!
AZTECCO

2

जावास्क्रिप्ट (Node.js) , 58 बाइट्स

(s,n,a)=>n.flatMap(n=>a.filter(x=>x.split`
`[1]==n+' '+s))

इसे ऑनलाइन आज़माएं!

टिप्पणी की गई

(s, n, a) =>          // s = street name, n[] = civic numbers, a[] = addresses
  n.flatMap(n =>      // for each civic number n in n[]:
    a.filter(x =>     //   for each address x in a[]:
      x.split`\n`[1]  //     keep it if the 2nd part is equal to
      == n + ' ' + s  //     n + space + expected street name
    )                 //   end of filter()
  )                   // end of flatMap() (empty entries are discarded)

पहले जवाब! तुमने मेरी नौकरी बचा ली! सुधार के लिए धन्यवाद btw
AZTECCO


2

पर्ल 5 , 51 बाइट्स

sub{my($r,$a,@B)=@_;map{$n=$_;grep/
$n $r$/,@B}@$a}

इसे ऑनलाइन आज़माएं!


मैंने "बेली रे वी। \ N5 चर्च रोडसाइड ईस्ट" को जोड़कर ओवरलैप टेस्ट केस के साथ एक टेस्ट केस संपादित किया है, वह आउटपुट में नहीं दिखना चाहिए, कृपया अपना उत्तर ठीक करें। असुविधा के लिए खेद है, मैं भविष्य में अपनी चुनौतियों पर अधिक ध्यान दूंगा।
AZTECCO

फिक्स्ड + $
बाईट

अपने समय के लिए धन्यवाद
AZTECCO


1

पायथन 3, 79 85 बाइट्स ( स्क्वीड के लिए धन्यवाद )

d=lambda s,n,a:n and[k for k in a if k.split('\n')[1]==n[0]+' '+s]+d(s,n[1:],a)

पुराना:

d=lambda s,n,a:[k for k in a if k.split('\n')[1]==n[0]+' '+s]+d(s,n[1:],a)if n else[]

1
79 बाइट्स जब तक यह इसे किसी तरह से नहीं तोड़ता है
स्क्वीड

शांत, मुझे नहीं पता था कि आप 'और' का उपयोग कर सकते हैं जैसे कि आउटपुट
लेगरहिन

1

पायथन 3 , 65 बाइट्स

lambda s,n,m:[a for i in n for a in m if a.endswith('\n%s '%i+s)]

इसे ऑनलाइन आज़माएं!

पायथन 2 में भी काम करता है।

iनागरिक संख्याओं की सूची में प्रत्येक संख्या के लिए n, फ़ंक्शन मेल की सूची में सभी पतों पर पुनरावृत्ति करेगा और उन लोगों को रखेगा जहां नागरिक संख्या और सड़क के नाम का संयोजन मेल खाता है । यह एक क्रमबद्ध और फ़िल्टर्ड सूची में होता है।amisa


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