Airliner सीटें असाइन करें


16

पिछले सप्ताह के एपीएल पाठ से प्रेरित ।

अपरकेस 2 डी सीट मैप और ग्राहकों की 1 डी सूची को देखते हुए, सीट का नक्शा और ग्राहक सूची लौटाएं लेकिन निम्नानुसार संशोधित (कब्जे वाली सीटों और बैठे ग्राहकों को इंगित करने के लिए):

इनपुट यात्री सूची में प्रत्येक अनूठे पत्र के लिए, सीट मैप में उस पत्र के कई (या सभी, यदि पर्याप्त नहीं हैं) लेफ्ट-टू-राइट, टॉप-बॉटम पर जाएं।

सीट के नक्शे में प्रत्येक अनूठे पत्र के लिए, यात्री सूची में उस पत्र के कई (या सभी, यदि पर्याप्त नहीं हैं) बाईं ओर दाईं ओर जाएं।

  1. इनपुट सीट के नक्शे केवल सेट {से रिक्त स्थान और बड़े अक्षरों में शामिल है F, B, P, E}, और हो सकता है:
    1. लाइन ब्रेक द्वारा पंक्तियों में अलग हो गए
    2. तार की एक सूची
    3. अपरकेस वर्णों का एक मैट्रिक्स
    4. किसी भी अन्य तुलनीय प्रारूप में
  2. इनपुट ग्राहकों की सूची केवल सेट से बड़े अक्षरों में { F, B, P, E} और हो सकता है:
    1. एक स्ट्रिंग
    2. पात्रों की एक सूची
    3. किसी भी अन्य तुलनीय प्रारूप में
  3. दिए गए सीट का नक्शा इनपुट एक के समान होना चाहिए, सिवाय इसके कि शून्य या अधिक अक्षरों को लोअरकेस में बदल दिया गया है
  4. लौटाई गई ग्राहक सूची इनपुट एक के समान होनी चाहिए, सिवाय इसके कि शून्य या अधिक अक्षरों को लोअरकेस में बदल दिया गया है
  5. व्हाट्सएप पर लीड और ट्रेलिंग की अनुमति है

उदाहरण (संयुक्त विमान के लघु संस्करण)

ERJ145

सीट मानचित्र इनपुट:

P    
E    
E  PP
E  EE
E  EE
E  EE
E  EE

P  PP
E  EE
E  EE
E  EE

यात्री सूची इनपुट:

FFEEEEEEEEEEEEEEEE

सीट मैप आउटपुट:

P    
e    
e  PP
e  ee
e  ee
e  ee
e  ee

P  PP
e  eE
E  EE
E  EE

यात्री सूची उत्पादन:

FFeeeeeeeeeeeeeeee

CRJ700

सीट मानचित्र इनपुट:

F   FF
F   FF
PP  PP
PP  PP
PP  PP
EE  EE

PP  PP
EE  EE
EE  EE
EE  EE

ग्राहक सूची इनपुट:

FFFFFFFFPPEEEEEEEEEEEEEEEEEEEEE

सीट मैप आउटपुट:

f   ff
f   ff
pp  PP
PP  PP
PP  PP
ee  ee

PP  PP
ee  ee
ee  ee
ee  ee

ग्राहक सूची उत्पादन:

ffffffFFppeeeeeeeeeeeeeeeeEEEEE

B757

सीट मानचित्र इनपुट:

F F  F F
F F  F F
F F  F F

PPP     
PPP  PPP
PPP  PPP
PPP  PPP
EEE  EEE
EEE  EEE
PPP  PPP
EEE  EEE
EEE  EEE
     EEE

EEE  EEE
EEE  EEE
EEE  EEE
EEE     

यात्री सूची इनपुट:

FEEEEEEEEFEEEFEEEEEEEEFEEFFEEFEFFFEE

सीट मैप आउटपुट:

f f  f f
f f  f f
f f  F F

PPP     
PPP  PPP
PPP  PPP
PPP  PPP
eee  eee
eee  eee
PPP  PPP
eee  eee
eee  eee
     eeE

EEE  EEE
EEE  EEE
EEE  EEE
EEE     

यात्री सूची उत्पादन:

feeeeeeeefeeefeeeeeeeefeeffeefefffee

B767

सीट मानचित्र इनपुट:

 F   F   F           
 F   F   F           
BB  B B  BB          
BB  B B  BB          
BB  B B  BB          
PP       BB          
PP                   

PP  PPP  PP          
PP  PPP  PP          
PP  PPP  PP          
PP  PPP  PP          
PP  EEE  PP          
EE  EEE  EE          
EE  EEE  EE          
EE  EEE  EE          
EE  EEE  EE          
EE  EEE  EE          

यात्री सूची इनपुट:

PPFEFEEEEEEEBBEEFFPEBPEBBEEFEEEFEEEEEEFPEEEPB

सीट मैप आउटपुट:

 f   f   f           
 f   f   f           
bb  b b  bb          
BB  B B  BB          
BB  B B  BB          
pp       BB          
pp                   

pp  PPP  PP          
PP  PPP  PP          
PP  PPP  PP          
PP  PPP  PP          
PP  eee  PP          
ee  eee  ee          
ee  eee  ee          
ee  eee  ee          
ee  EEE  EE          
EE  EEE  EE          

यात्री सूची उत्पादन:

ppfefeeeeeeebbeeffpebpebbeefeeefeeeeeeFpeeepb

3
उन लोगों के लिए, जो मुझे पसंद करते हैं, आश्चर्य करते हैं कि अक्षरों का क्या मतलब है, यहां चैट के प्रासंगिक भाग का लिंक दिया गया है
JayCe

जवाबों:


5

05AB1E , 22 16 15 बाइट्स

सीट बाइट को एक स्ट्रिंग के रूप में लिया जा सकता है, यह ध्यान देने योग्य है कि नित के लिए 6 बाइट्स सहेजे गए।

svDyå·Fyyl.;s]»

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

व्याख्या

s                     # setup stack as <passengerlist>,<seatmap>,<passengerlist>
 v                    # for each passenger y
  Dyå                 # does a corresponding seat exist?
     ·F               # multiplied by 2 times do:
       yyl.;          # replace the first y with a lowercase y
            s         # and swap the seatmap and passengerlist on the stack
             ]        # end loops
              »       # join seatmap and passengerlist on newline and output

1
सीटमैप लाइन ब्रेक के साथ एकल स्ट्रिंग के रूप में इनपुट हो सकता है, क्या यह आपको एक बाइट या दो को नहीं बचाएगा?
निट

@ निट: आह, यह वास्तव में मुझे कुछ बचाना चाहिए। धन्यवाद :)
एमिग्ना

5

पायथन 2 , 93 89 84 83 82 78 बाइट्स

l=input()
for c in l[1]:l=[x.replace(c,c.lower(),c in l[0])for x in l]
print l

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

इनपुट को दो स्ट्रिंग्स के रूप में लेता है। प्रिंट दो तार


बचाया

  • -5 बाइट्स, डेड पॉसम के लिए धन्यवाद
  • -4 बाइट्स, लिन का धन्यवाद

1
s,p=[x.replace(c,c.lower(),c in s)for x in[s,p]]84 बाइट्स के लिए
डेड पॉसम

1
एक पूरा कार्यक्रम थोड़ा छोटा है:l=input() for c in l[1]:l=[x.replace(c,c.lower(),c in l[0])for x in l] print l
लिन

5

सी (क्लैंग) , 75 68 बाइट्स

f(char*s,char*p){char*r;while(*s){if(r=strchr(p,*s))*r=*s+=32;s++;}}

दो char *(सीटें और यात्री) लेते हैं जिनकी सामग्री को जगह में संशोधित किया जाता है।

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

मैं पायथन में सी की तुलना में गोल्फ के लिए कम इस्तेमाल कर रहा हूं, लेकिन यह मजेदार भी है!

अगर किसी के पास *r+=32,*i+=32भाग को छोटा करने की एक तरकीब है, तो मैं आभारी रहूंगा। -> मुझे कुछ और बाइट्स गोल्फ में मदद करने के लिए @ धन्यवाद!


1
चूँकि मैं और r एक ही होंगे, आप * r = * i + = 32 का उपयोग कर सकते हैं। तुम भी कुछ छुटकारा पाने के लिए मैं से छुटकारा पा सकते हैं, और strchr कॉल में पोस्ट-इंक्रीमेंटिंग एस।
दवे

धन्यवाद, मैं अपडेट करूँगा जब एल कर सकते हैं! मैंने सीधे s का उपयोग करने के बारे में सोचा, लेकिन यह किसी कारण से काम नहीं आया, मैं इसे वापस ले लूंगा।
एथेन


4

सी (जीसीसी) , 63 बाइट्स

f(x,y,z)char*x,*y,*z;{for(;*y;++y)if(z=strchr(x,*y))*z=*y+=32;}

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

मूल अवधारणा के लिए ऋण का बहुत सा हिस्सा। बस अपने जवाब की रणनीति के लिए भारी गोल्फ लगाया।


index()इसके बजाय सुझावstrchr()
सीलिंगकैट

अच्छा सुधार। मैं इसे यहां शामिल नहीं करूंगा क्योंकि यह POSIX में पूरी तरह से पदावनत है और मेरे अनुभव में कंपाइलरों द्वारा कम समर्थित है। साथ ही इसका केवल 1 बाइट बदल जाता है। (पुनश्च: हाल ही में सभी सुझावों के लिए धन्यवाद :) <xkcd.com/541>)
लैम्बडाटा

क्रेडिट के लिए धन्यवाद! इस तरह की आउट-गोल्फिंग, गोल्फ को बेहतर तरीके से सीखने का मेरा पसंदीदा तरीका है।
एटेने

वही, मैं हाल ही में सीलिंग और अन्य के द्वारा मेरे पोस्ट पर की गई कुछ टिप्पणियों की जाँच करने की सलाह दूंगा। मुझे प्यार है जब हम सभी एक दूसरे से सीखते हैं।
लाम्बेबेटा

3

सी (जीसीसी) , 64 बाइट्स

@ एटेने के उत्तर से दुखी होकर, मैंने तृतीयक ऑपरेटर ifको हटा दिया ?:और यात्री सूचक को अपने सूचकांक के रूप में पुन: उपयोग किया।

f(s,p,j)char*s,*p,*j;{for(;*p;p++)(j=strchr(s,*p))?*j=*p|=32:0;}

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



2

स्काला , 104 बाइट्स

def f(l:Array[Char]*)=(l(0).map(? =>{val i=l(1)indexOf?;if(i>=0){l(1)(i)= ?toLower;l(1)(i)}else?}),l(1))

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

इनपुट में 2 seq चार्ट लेता है और 2 seq का char देता है।

स्पष्टीकरण:

def f(l: Array[Char]*) =          // input are varargs of Array[Char]; in our case 2 arrays. Arrays are chosen since mutable (the seatmap will be updated while the passenger list is mapped)
  (                               // we return a tuple with the 2 arrays of Chars
    l(0).map(                     // l(0) is the passenger list. We map (transform) each element of this list to lowercase or not and this is what's returned as 1st part of the tuple
      ? => {                      // ? is the current element of the passenger list being mapped (it's ? and not let's say m in order to be able to stick it next to functions)
        val i = l(1) indexOf ?   // i is the index (or -1) of the letter ? in the seat map
        if (i >= 0) {             // if index found
          l(1)(i) = ? toLower     // then we update the seatmap with the lower case version of this seat
          l(1)(i)                 // and the passenger list elmt is mapped to its lower case version (same as ?.toLower)
        }                         //
        else ?                    // if not found, the seatmap is not updated and the passenger list elmt stays in upper case
      }                           //
    ),                            // 
    l(1)                          // the updated seat map
  )

1
PPCG में आपका स्वागत है!
ग्यूसेप

1

रेटिना , 36 बाइट्स

+`(([A-Z])(.*¶)+.*?)(\2.*$)
$l$1$l$4

इसे ऑनलाइन आज़माएं! मान लें कि ग्राहक सूची इनपुट की अंतिम पंक्ति है। व्याख्या: अपरकेस वर्णों के मेल के जोड़े को खोजता है और $lइस प्रकार मध्यवर्ती वर्णों से बचने के लिए उनका उपयोग कम करता है ।



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