একই নাম, খোঁড়া!


11

একটি ফাংশন বা প্রোগ্রাম লিখুন যা যখন নাম, আউটপুটগুলির একটি তালিকা দেওয়া হয় বা একটি তালিকা প্রদান করে যেখানে প্রদত্ত নামের নকলগুলিতে তাদের উপাধির স্বতন্ত্র সংক্ষিপ্ত সংস্করণ থাকে।

ইনপুট:

নামের তালিকা, যেখানে কোনও নাম একটি প্রদত্ত নাম এবং একটি স্থান দ্বারা পৃথক করা একটি শেষ নাম দ্বারা সংজ্ঞায়িত করা হয়। নামগুলি খালি খালি স্ট্রিং যা কেবলমাত্র বড় হাতের এবং ছোট হাতের অক্ষরযুক্ত থাকে। তালিকাটি স্ট্রিংগুলির একটি অ্যারে বা ধ্রুবক অ-আলফা, অ-স্থানের অক্ষর দ্বারা পৃথক করা নামগুলি হতে পারে, তবে আউটপুট অবশ্যই ইনপুট হিসাবে একই ফর্ম্যাটে থাকতে হবে।

আউটপুট:

এই নিয়মগুলি দ্বারা সংশোধিত ইনপুট হিসাবে একই ক্রম এবং বিন্যাসে ইনপুট করা নামেরগুলির একটি তালিকা:

  • অনন্য প্রদত্ত নামের জন্য, কেবলমাত্র প্রদত্ত নাম আউটপুট করুন
  • একই প্রদত্ত নাম ভাগ করে নেওয়ার জন্য:
    • পাশাপাশি তাদের প্রদত্ত নাম, তাদের উপাধির সংক্ষিপ্ততম অনন্য সংস্করণ যুক্ত করুন যা অন্য কোনও নাম দ্বারা ভাগ করা হয় না, তার পরে একটি পিরিয়ড। উদাহরণস্বরূপ, John Clancy, John Smithহয়ে John C.,John S.এবং James Brown, James Bratteহয়েJames Bro.,James Bra.
    • যদি একটি উপাধি অন্যটির উপসেট হয়, যেমন Julian King,Julian Kingsley, পিরিয়ড ছাড়াই ছোটটির সম্পূর্ণ উপাধিটি ফেরত দেয়। উদাহরণ হয়ে যাবেJulian King,Julian King.
  • মূলত একটি পিরিজড রেজেক্সকে উপস্থাপন করে .+, যেখানে কেবল একটির সাথে এটির মিল পাওয়া উচিত।
  • আপনি ধরে নিতে পারেন যে কেউ একই প্রদত্ত নাম এবং একই নাম দুটিই ভাগ করে নেবে না
  • নামগুলি কেস-সংবেদনশীল

পরীক্ষার কেস:

  • John Clancy,Julie Walker,John Walker,Julie Clancy -> John C.,Julie W.,John W.,Julie C.
  • Julian King,Jack Johnson,Julian Kingsley > Julian King,Jack,Julian King.
  • Jack Brown,Jack Black,Jack Blue > Jack Br.,Jack Bla.,Jack Blu.
  • John Storm,Jon Snow,Johnny Storm > John,Jon,Johnny
  • Jill DeSoma,Jill Desmond > Jill DeS.,Jill Des.
  • XxXnO sCOppeXxX,XxXNO MERCYXxX > XxXnO,XxXNO

এটি , তাই প্রতিটি ভাষার জন্য সর্বনিম্ন বাইট গণনা।



1
কোথায় Angela C.পরীক্ষা ক্ষেত্রে থেকে এসেছে?
13 শে

Julieউফ হওয়ার অর্থ , ধন্যবাদ। স্থির
জো কিং

উত্তর:


3

জেলি ,  34 33 32  30 বাইট

;\ċÐf⁶t€⁶;€JṖḊ$$¦”.µ€ċ@ÐṂ€Ẏ$Ḣ€

অক্ষরগুলির তালিকার একটি তালিকা (যেমন "স্ট্রিংগুলির একটি তালিকা) গ্রহণ করে এবং একই বিন্যাসে এবং আপেক্ষিক ক্রমে সংক্ষিপ্ত বিবরণগুলি ফিরিয়ে আনতে একটি মোনাডিক লিঙ্ক।

এটি অনলাইন চেষ্টা করুন! (একটি সম্পূর্ণ প্রোগ্রাম পরীক্ষার স্যুট)

কিভাবে?

;\ċÐf⁶t€⁶;€JṖḊ$$¦”.µ€ċ@ÐṂ€Ẏ$Ḣ€ - Link: list of lists    e.g. ["Sam Ng","Sam Li","Sue Ng"]
                   µ€          - monadically for €ach:  e.g. "Sue Ng"
 \                             -   cumulative reduce with:
;                              -     concatenation           ["S","Su","Sue","Sue ","Sue N","Sue Ng"]
     ⁶                         -   literal space character   ' '
   Ðf                          -   filter keep if:
  ċ                            -     count (spaces)          ["Sue ","Sue N","Sue Ng"]
        ⁶                      -   literal space character   ' '
      t€                       -   trim from €ach            ["Sue","Sue N","Sue Ng"]
                 ”.            -   literal period character  '.'
                ¦              -   sparse application...
         ;€                    -   ...of: concatenate €ach (with a period)
                               -   ...only for these indexes:
               $               -     last two links as a monad:
           J                   -       range of length       [1,2,3]
              $                -       last two links as a monad:
            Ṗ                  -         pop                 [1,2]
             Ḋ                 -         dequeue             [2]  (i.e. 2,3,...,length-1)
                               -   ...i.e.:                  ["Sue","Sue N.","Sue Ng"]
                               -                   yielding: [["Sam","Sam N.","Sam Ng"],["Sam","Sam L.","Sam Li"],["Sue","Sue N.","Sue Ng"]]
                           $   - last two links as a monad:
                          Ẏ    -   tighten                   ["Sam","Sam N.","Sam Ng","Sam","Sam L.","Sam Li","Sue","Sue N.","Sue Ng"]
                       ÐṂ€     -   filter keep minimals for €ach: 
                     ċ@        -     count (sw@ping args)    [["Sam N.","Sam Ng"],["Sam L.","Sam Li"],["Sue","Sue N.","Sue Ng"]]
                            Ḣ€ - head €ach                   ["Sam N.","Sam L.","Sue"]

3

পাইথন 2 , 130 বাইট

def f(a):n=[[x[:i]+'.'*(' 'in x[:i]<x)for i in range(x.find(' '),len(x)+1)]for x in a];print[min(x,key=sum(n,[]).count)for x in n]

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

প্রথমে নীচে সমস্ত ডাকনাম তৈরি করা হয়েছে:

n == [
    ['John', 'John .', 'John C.', 'John Cl.', 'John Cla.', 'John Clan.', 'John Clanc.', 'John Clancy'],
    ['Julie', 'Julie .', 'Julie W.', 'Julie Wa.', 'Julie Wal.', 'Julie Walk.', 'Julie Walke.', 'Julie Walker'],
    ['John', 'John .', 'John W.', 'John Wa.', 'John Wal.', 'John Walk.', 'John Walke.', 'John Walker'],
    ['Julie', 'Julie .', 'Julie C.', 'Julie Cl.', 'Julie Cla.', 'Julie Clan.', 'Julie Clanc.', 'Julie Clancy'],
    ['Jill', 'Jill .', 'Jill D.', 'Jill De.', 'Jill Des.', 'Jill Desm.', 'Jill Desmo.', 'Jill Desmon.', 'Jill Desmond']
]

তারপরে প্রতিটি তালিকা থেকে প্রথম *টিকে বেছে নিন যা কমপক্ষে ঘন ঘন ঘন ঘন ঘন থাকে sum(n,[])। এটি সর্বদা প্রথম অনন্য ডাক নাম হবে।

নোট nএতে ভ্রান্ত ডাকনাম 'John .'ইত্যাদি অন্তর্ভুক্ত রয়েছে তবে সেগুলি কখনই বাছাই করা যাবে না।

(* সিপথন ২.7 এর minযাইহোক, এটি করে This এই কোডটি বহনযোগ্য হতে পারে না !)


2

রুবি 165 162 161 160 বাইট

কেবলমাত্র প্রদত্ত নামটি ফেরত দেওয়া হলে 1 টি পিছনে স্থান অন্তর্ভুক্ত eg "John "

->a,n=0,s=0{a.group_by{|i|i[n]}.values.flat_map{|i|j=i[0];k=j.index' ';i.size<2?j.size>n ?j[0,[n+1,k].max-(s>1?0:1)]+(n>k ??.:''):j:f[i,n+=1,i.count{|l|l[n]}]}}

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

আপনি যদি পিছনের স্থানটি না চান তবে 163 বাইট

->a,n=0,s=0{a.group_by{|i|i[n]}.values.flat_map{|i|j=i[0];k=j.index' ';i.size<2?j.size>n ?j[0..[n,k-1].max-(s>1?0:1)]+(n>k ??.: ''):j:f[i,n+1,i.count{|l|l[n+1]}]}}

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

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