বিমান সিট বরাদ্দ করুন


16

গত সপ্তাহের এপিএল পাঠ দ্বারা অনুপ্রাণিত ।

একটি বড় 2D আসনের মানচিত্র এবং গ্রাহকদের 1D তালিকা দেওয়া, আসনের মানচিত্র এবং গ্রাহকের তালিকাটি ফেরত দিন তবে নিম্নলিখিত হিসাবে সংশোধিত হয়েছে (দখলকৃত আসন এবং আসনযুক্ত গ্রাহকদের ইঙ্গিত করতে):

ইনপুট যাত্রী তালিকার প্রতিটি অনন্য চিঠির জন্য, সিটের মানচিত্রে সেই চিঠির অনেক (বা সমস্ত, যদি যথেষ্ট না থাকে) ছোট হাতের বাম থেকে ডানে, উপর থেকে নীচে চলে যায়।

সিটের মানচিত্রে প্রতিটি অনন্য চিঠির জন্য, যাত্রীর তালিকায় সেই চিঠির অনেকগুলি (বা সমস্ত, যদি যথেষ্ট না থাকে) বাম থেকে ডানদিকে যান lower

  1. ইনপুট আসন মানচিত্র শুধুমাত্র সেট {থেকে স্পেস এবং বড় হরফের অক্ষর ব্যবহার F, B, P, E}, এবং হতে পারে:
    1. লাইন ব্রেক দ্বারা সারি বিভক্ত
    2. স্ট্রিংগুলির একটি তালিকা
    3. বড় হাতের অক্ষরের একটি ম্যাট্রিক্স
    4. অন্য যে কোনও তুলনামূলক বিন্যাসে
  2. ইনপুট গ্রাহক তালিকা শুধুমাত্র সেট থেকে বড় হরফের অক্ষর ব্যবহার { F, B, P, E} এবং হতে পারে:
    1. একটি স্ট্রিং
    2. অক্ষরের একটি তালিকা
    3. অন্য যে কোনও তুলনামূলক বিন্যাসে
  3. ফিরে আসা আসনের মানচিত্র অবশ্যই শূণ্য বা আরও বেশি অক্ষরগুলি ছোট হাতের ক্ষেত্রে ভাজ করা থাকে except
  4. প্রত্যাশিত গ্রাহক তালিকা অবশ্যই ইনপুটটির অনুরূপ হওয়া উচিত, শূন্য বা আরও বেশি অক্ষর লোয়ারকেসে ভাঁজ করা ছাড়া
  5. শীর্ষস্থানীয় এবং পিছনে সাদা স্থান অনুমোদিত ites

উদাহরণ (ইউনাইটেড এর বিমানের সংক্ষিপ্ত সংস্করণ)

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
আমার মতো যারা চিঠিগুলির অর্থ কী তা অবাক করে তাদের জন্য এখানে চ্যাটের প্রাসঙ্গিক অংশের লিঙ্ক
জেসি

উত্তর:


5

05 এ বি 1 , 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 ব্যবহার করতে পারেন। আপনি আই এবং পরোয়ানা পোস্টের মাধ্যমে মুক্তি পেতে আরও কিছু অক্ষর শেভ করতে পারেন।
ডেভ

আপনাকে ধন্যবাদ, আমি যখন আপডেট করতে পারি! আমি সরাসরি ব্যবহার করার কথা ভেবেছিলাম কিন্তু এটি কোনও কারণে কার্যকর হয়নি, আমি এটিতে ফিরে আসব।
ইটেন


4

সি (জিসিসি) , 63 বাইট

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

এটি অনলাইন চেষ্টা করুন!

মৌলিক ধারণার জন্য ইটেনে প্রচুর creditণ। তার উত্তরের কৌশলটিতে সবেমাত্র ভারী গল্ফিং প্রয়োগ করা হয়েছে।


সুপারিশ index()পরিবর্তেstrchr()
ceilingcat

সুন্দর উন্নতি আমি এটিকে এখানে অন্তর্ভুক্ত করব না কারণ এটি পসিক্সে সম্পূর্ণরূপে হ্রাস পেয়েছে এবং আমার অভিজ্ঞতায় সংকলকরা কম সমর্থন করেছেন। প্লাস এটির কেবল 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 বর্গ নেয় এবং 2 বর্গক্ষেত্র অক্ষর দেয়

ব্যাখ্যা:

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
পিপিসিজিতে আপনাকে স্বাগতম!
জিউসেপ

1

রেটিনা , 36 বাইট

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

এটি অনলাইন চেষ্টা করুন! গ্রাহক তালিকাটি ইনপুটটির শেষ লাইন বলে ধরে নেওয়া হয়। ব্যাখ্যা: মিলে বড় অক্ষরগুলির মিলের সন্ধান করে এবং $lএভাবে মধ্যবর্তী অক্ষরগুলি এড়ানো ব্যবহার করে সেগুলি ছোট করে তোলে।



আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.