একটি অ্যারে সংক্ষেপে


26

গোল:

স্ট্রিংগুলির একটি অ্যারে দেওয়া, প্রতিটি স্ট্রিংয়ের সংক্ষিপ্ত সংস্করণ তৈরি করুন।

স্পেসিফিকেশন:

এই চ্যালেঞ্জের জন্য, একটি সংক্ষিপ্তকরণটি কোনও স্ট্রিংয়ের প্রথম এন অক্ষর। STRING এর জন্য abc: a, ab, এবং abcসকল বৈধ বর্ণমালা তৈরী করছেন, bcএবং acহয় না।

স্ট্রিংগুলির একটি অ্যারে দেওয়া, আমরা সংক্ষিপ্তসারগুলির সংক্ষিপ্ততম সেটটি খুঁজতে চাই, যেমন ইনপুট এবং কোনও সংক্ষিপ্ত বিবরণ দেওয়া হয়েছিল, আপনি ইনপুটটির কোন আইটেমটি সংক্ষেপণটি উল্লেখ করছেন তা নির্ধারণ করতে পারেন।

উদাহরণ:

ইনপুট: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]

আমরা প্রথমটি দিয়ে শুরু করে স্ট্রিংগুলির মাধ্যমে আমাদের পথে কাজ করি।

  • সোমবার হ'ল একটি আইটেমের স্ট্রিং M, সুতরাং সংক্ষিপ্ততম সংক্ষিপ্তসারটি M

  • মঙ্গলবার দিয়ে শুরু T, তবে বৃহস্পতিবার থেকে। এর অর্থ হল আমরা স্ট্রিংটি ব্যবহার করে দেখি TU। যেহেতু অন্য কোনও স্ট্রিং শুরু হয় না, তাই আমরা ব্যবহার করি TU

  • বুধবার W, বৃহস্পতিবার Th, এবং শুক্রবার F

আরও উদাহরণ:

Input: "one,two,three,four,five,six,seven"
Output: "o,tw,th,fo,fi,si,se"

Input: "red,orange,yellow,green,blue,purple"
Output: "r,o,y,g,b,p"

Input: "a,ab,abc"
Output: Not valid! No abbreviation for `a` that doesn't apply to the other items.

নোট:

  • আপনি কোনও যুক্তিসঙ্গত উপায়ে ইনপুট এবং আউটপুট তৈরি করেন।

  • আপনি ধরে নিতে পারেন যে ইনপুট সর্বদা স্ট্রিংগুলির একটি বৈধ অ্যারে হবে।

  • আপনি ধরে নিতে পারেন যে সর্বদা একটি সমাধান থাকবে, শেষ পরীক্ষার ক্ষেত্রে এর বিপরীতে।

  • স্ট্রিংগুলিতে কেবল প্রিন্টযোগ্য এএসসিআইআই (বা আপনার এনকোডিংয়ের মুদ্রণযোগ্য অক্ষর) থাকবে

  • এটি কোড গল্ফ, এত কম বাইট জয়!


সম্পর্কিত: 1 , 2 , 3
Sp3000


2
আমি মনে করি না এটি এগুলির কোনওটিরই সদৃশ (যদিও তারা সবাই মোটামুটি একই রকম)। আসলে, আমি মনে করি এটি সম্ভবত চারজনের মধ্যে সেরা চ্যালেঞ্জ; অন্য সকলের বিভিন্ন রূপ রয়েছে যা এগুলি অযথা জটিল করে তোলে।

2
মামলা কি গুরুত্বপূর্ণ? বিশেষত, আপনার সপ্তাহের উদাহরণটি Uমঙ্গলবারের জন্য একটি মূলধন ব্যবহার করে তবে hবৃহস্পতিবারের জন্য একটি ছোট হাতের অক্ষর ।
ব্রায়ান জে

1
@ মেগো আমার পোস্টটি সম্পাদনা করবেন না যদি না কোনও মডারেটর এটি নকল হিসাবে চিহ্নিত না করে
জুলিয়ান ল্যাচনিট

উত্তর:


10

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

!ms`^(.+?)(?!.+^\1)(?<!^\1.+)

ইনপুট এবং আউটপুট হল স্ট্রিংগুলির লাইনফিড-বিচ্ছিন্ন তালিকা।

এটি অনলাইন চেষ্টা করুন! (সুবিধার জন্য কমা-বিচ্ছেদ সহ টেস্ট স্যুট)

ব্যাখ্যা

এটি কেবলমাত্র একক রেজেক্সের সাথে সমস্ত উপসর্গের সাথে মেলে এবং তাদের মুদ্রণ করে ( !)। mএবং ম্যাচের লাইনের সূচনা এবং ম্যাচ লাইনফিডগুলি sতৈরি করার জন্য সাধারণ রেইগেক্স সংশোধক ।^.

^(.+?)      # Match the shortest possible prefix of a line and capture
            # it in group 1.
(?!.+^\1)   # Make sure that this prefix does not show up in a line after
            # the current one.
(?<!^\1.+)  # Make sure that this prefix does not show up in a line before
            # the current one.

10

পাইথন 2 , 87 86 বাইট

lambda a:[b[:min(i for i in range(len(b))if sum(s[:i]==b[:i]for s in a)<2)]for b in a]

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


lambda a:[[b[:i]for i in range(len(b))if sum(s[:i]==b[:i]for s in a)<2][0]for b in a]85 বাইটের জন্য
কার্টিস বেচটেল

আরও 2 টি বাইট সংরক্ষণের len(b)সাথে প্রতিস্থাপন করা 4**8, ধরে নেওয়া যে স্ট্রিংগুলি 65536 টির চেয়ে বেশি অক্ষরের বেশি হবে না
কার্টিস বেকটেল

8

জাভাস্ক্রিপ্ট (ES6), 81 78 74 70 বাইট

স্ট্রিংগুলির অ্যারে হিসাবে ইনপুট নেয়।

a=>a.map(s=>[...s].reduce((y,c)=>a.some(x=>x!=s&!x.indexOf(y))?y+c:y))

ফর্ম্যাট এবং মন্তব্য

a =>                          // given an array of strings 'a'
  a.map(s =>                  // for each string 's' in 'a':
    [...s].reduce((y, c) =>   //   starting with 'y' = first character of 's',
                              //   for each subsequent character 'c' of 's':
      a.some(x =>             //     if we find a string 'x' in 'a' such that:
        x != s &              //       - 'x' is different from 's'
        !x.indexOf(y)         //       - and 'y' appears at the beginning of 'x'
      ) ?                     //     then:
        y + c                 //       append 'c' to 'y'
      :                       //     else:
        y                     //       keep 'y' unchanged
    )                         //   end of reduce(): returns the correct prefix
  )                           // end of map()

পরীক্ষার মামলা


1
70 খুব, তবে একেবারে অন্য: কোডগল্ফ.স্ট্যাকেক্সেঞ্জিং.com
113270

+1 এর জন্য reduce
নীল

6

জেলি , 14 বাইট

;\w@þ=1Si1⁸ḣð€

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

কিভাবে এটা কাজ করে

;\w@þ=1Si1⁸ḣð€  Monadic link. Argument: A (string array)

            ð   Collect all links to the left into a chain (arity unknown) and
                begin a dyadic chain.
             €  Map the previous chain over A. The current chain is dyadic and the
                mapped one inherits its arity. Thus, the right will be A for all
                invocations, while the left argument will iterate over A.
                For each string s in A, the following happens.
;\                Cumulative reduce by concatenation; yield all prefixes of s.
  w@þ             Window index swapped table; for each string t in A and each
                  prefix p of s, find the index of the substring t in p.
                  The first index is 1; 0 means not found.
     =1           Compare the indices with 1, returning 1 iff t begins with p.
       S          Sum the Booleans across columns, counting the number of strings
                  in A that begin with a given prefix.
        i1        Find the first index of 1, the shortest prefix that is unique
                  across all strings in A.
          ⁸       Head; truncate s to the computed length.

6

হাস্কেল , 48 বাইট

[_]#x=""
a#(c:y)=c:[z|d:z<-a,c==d]#y
f=map=<<(#)

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

  • fপ্রধান ফাংশন, এর একটি তালিকা গ্রহণ Stringএবং একটি ফিরে String। এর সংজ্ঞা একটি পরমাণুসদৃশ্য শর্টকাট f a=map (a#) a
  • a#xস্ট্রিং এ দেখায় xএবং তালিকা aএবং চেষ্টা সবচেয়ে কম উপসর্গ এটি xযে অদ্বিতীয় a। যদি aএকটি একক উপাদান থাকে তবে খালি স্ট্রিংটি ব্যবহার করুন। যদি aইতিমধ্যে কোনও একক উপাদান না হয় তবে এর প্রথম অক্ষরটি xকেটে ফেলুন, ফিল্টার করুন এবং aএকই অক্ষর দিয়ে শুরু করার উপাদানগুলি কেটে ফেলুন, তারপরে পুনরাবৃত্তি করুন।


3

জেলি , 14 12 বাইট

ḣ€JṙLḶ$ḟ/€Ḣ€

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

কিভাবে এটা কাজ করে

ḣ€JṙLḶ$ḟ/€Ḣ€  Main link. Argument: A (string array)

  J           Yield the 1-based indices of A, i.e., [1, ..., len(A)].
ḣ€            Head each; for each string s in A, take the first 1, ..., and len(A) 
              characters. This builds the 2D array of prefixes of all strings in A.
    LḶ$       Length-unlength; yield [0, ..., len(A)-1].
   ṙ          Rotate the 2D array 0, ..., and len(A)-1 units to the left.
       ḟ/€    Reduce filterfalse each; for each rotation, remove all prefixes from
              the first set that also occur in later sets.
          Ḣ€  Head each; for each rotation, keep only the shortest unique prefix.

শুধু ভাবছি, আপনার এখানে 2 টি উত্তর কেন? আমি তাদের উভয়ই পছন্দ করি তবে আমি কেন ভাবছি কেন আপনার এখানে দুটি জেলি উত্তর রয়েছে। :)
হাইপারনিউটারিনো

আমার যদি দুটি অনুরূপ প্রতিযোগিতামূলক পদ্ধতির থাকে তবে পর্যাপ্ত ভিন্ন পদ্ধতির থাকে তবে আমি সাধারণত এগুলি পৃথক উত্তরে পোস্ট করি।
ডেনিস

ভাল যুক্তি. হ্যাঁ, আমি কেবল ভাবছিলাম। :) এটি দারুণ ভাবনা; আমার সাধারণত একাধিক পন্থা থাকে না: পি
হাইপারনিট্রিনো

2

সি ++ 11 (MinGW), 198 বাইট

#import<list>
#import<iostream>
f(std::list<std::string>l){int i,m;for(auto s:l){for(i=0,m=1;++i<s.length();)for(auto t:l)if(t!=s&&t.substr(0,i)==s.substr(0,i))m=i+1;std::cout<<s.substr(0,m)<<" ";}}

সাথে কল করুন:

int main()
{
    f({"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"});
}

voidফাংশনটির আগে সনাক্তকারী যুক্ত করা এটি অন্যান্য সংকলকগুলিতেও সংকলন করে তোলে, যার ফলে দৈর্ঘ্যে 5 বাইট যোগ করা হয়।


void f...দুর্ভাগ্যক্রমে এটি হওয়া উচিত , এটি অন্যথায় কাজ করে না ... + 5 বাইট। ফাংশনগুলি, যতদূর আমি জানি, সি ++ তে টাইপ স্পেসিফায়ার দরকার
মিঃ এক্সকোডার

তার বাইরেও, অসামান্য পদ্ধতির! সি / সি ++ এ গল্ফিং বেদনাদায়ক হতে পারে
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার এটি যদিও আমি ব্যবহার করছি মিনজিডব্লিউ সংকলকটি সংকলন করে। সুতরাং এটি হয় একটি সংকলক এক্সটেনশন বা অপরিবর্তিত আচরণ।
স্টেডিবক্স

আমি মনে করি এটি সংকলক সম্প্রসারণ সম্পর্কে,
জিসিসিতে

1
কোডটি যে পরিবেশে কাজ করে এতক্ষণ, এটি বৈধ
আন্ডারগ্রাউন্ডোমোনাইল

2

জাভাস্ক্রিপ্ট ES6, 70 টি অক্ষর

s=>(s+'#'+s).replace(/(\w+?)(\w*)(?=(\W(?!\1(?!\2))\w+)+$)|#.+/g,"$1")

f=s=>(s+'#'+s).replace(/(\w+?)(\w*)(?=(\W(?!\1(?!\2))\w+)+$)|#.+/g,"$1")

console.log(f("one,two,three,four,five,six,seven")==="o,tw,th,fo,fi,si,se")
console.log(f("red,orange,yellow,green,blue,purple")==="r,o,y,g,b,p")
console.log(f("one,two,three,four,five,six,seven".split`,`)==="o,tw,th,fo,fi,si,se")
console.log(f("red,orange,yellow,green,blue,purple".split`,`)==="r,o,y,g,b,p")


2

পিএইচপি, 131 120 119 118 বাইট

ধন্যবাদ @ জর্জ এর জন্য preg_grep

for(;a&$s=$argv[++$k];$i=+$t=!print"$t
")for(;a&$s[$i]&&1<count(preg_grep("(^".preg_quote($t.=$s[$i++]).")",$argv)););

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়; মুদ্রণ ফলাফল প্রতিটি এক লাইন। এটি
দিয়ে চালান -nrবা অনলাইনে চেষ্টা করুন

  • ইনপুটটিতে শুরু হওয়া কিছু থাকলে ব্যর্থ হতে পারে -
    +15 বাইটগুলি ঠিক করতে: এর $argvসাথে দ্বিতীয়টি প্রতিস্থাপন করুন array_slice($argv,1)
  • পিএইচপি 7.1 এ সতর্কতা দেয়; ঠিক করতে (+1 বাইট) a&দিয়ে প্রতিস্থাপন করুন ""<
  • -12 বাইট যদি ইনপুট কোন Regex বিশেষ অক্ষর রয়েছে:
    সন্নিবেশ &($t.=$c)সামনে &&এবং প্রতিস্থাপন ". preg_quote($t.=$c)."সঙ্গে $t

ভাঙ্গন

for(;a&$s=$argv[++$k];      # loop $s through arguments
    $i=+$t=!                # 3. reset $i and $t to empty
    print"$t\n")            # 2. print abbreviation
    for(;a&($c=$s[$i++])    # 1. loop $c through characters
        &&1<count(              # 3. if count==1, break loop
            preg_grep("(^"      # 2. find matching arguments
                . preg_quote(
                $t.=$c          # 1. append $c to abbreviation
            ).")",$argv)
        );
    );

নন-রেজেক্স সংস্করণ, 131 130 বাইট

for($a=$argv;a&$s=$a[++$k];$i=+$t=!print"$t
")for($n=1;$n&&a&$c=$s[$i++];)for($n=$m=1,$t.=$c;a&$u=$a[$m++];)$n-=0===strpos($u,$t);

পিএইচপি 7.1 এর জন্য স্থির করতে প্রথম এবং শেষটিকে (+2 বাইট) a&দিয়ে প্রতিস্থাপন করুন ""<

ভাঙ্গন

for($a=$argv;a&$s=$a[++$k];     # loop through arguments
    $i=+$t=!print"$t\n")            # 2. print abbreviation, reset $i and $t to empty
    for($n=1;$n&&a&$c=$s[$i++];)    # 1. loop through characters while $n<>0
        for($n=$m=1,                    # reset $n and $m to 1
            $t.=$c;                     # append current character to prefix
            a&$u=$a[$m++];              # loop through arguments:
        )$n-=0===strpos($u,$t);         # -$n = number of matching strings -1

সম্পূর্ণ উদাসীন নোট:
strstr($u,$t)==$uএবং 0===strpos($u,$t)একই দৈর্ঘ্য এবং একই ফলাফল রয়েছে।


এর 0x0Aপরিবর্তে একটি আসল নিউলাইন অক্ষর ( ) ব্যবহার করুন \n, এটি একটি বাইট সংরক্ষণ করবে;)।
ব্ল্যাকহোল

@ ব্ল্যাকহোল ধন্যবাদ; আমি এই সময় সম্পর্কে ভুলে গিয়েছিলাম।
তিতাস

1

পিএইচপি, 127 বাইট

অবৈধ অ্যারে দিয়ে কাজ করে না

<?foreach($a=$_GET as$k=>$v)for($i=0,$c=2,$s="";$c>1;$r[$k]=$s)$c=count(preg_grep("_^".($s.=$v[$i++])._,$a));echo join(",",$r);

পিএইচপি, 132 বাইট

<?foreach($a=$_GET as$v)for($i=0,$s="";a&$v[$i];)if(count(preg_grep("_^".($s.=$v[$i++])._,$a))==1){$r[]=$s;break;}echo join(",",$r);

অনলাইন সংস্করণ

151 বাইটস বিশেষ অক্ষরকে সমর্থন করে

<?foreach($a=$_GET as$v)for($i=0,$s="";a&$v[$i];)if(count(preg_grep("_^".preg_quote($s=substr($v,0,++$i),_)._,$a))==1){$r[]=$s;break;}echo join(",",$r);

পিএইচপি, 140 বাইট

<?foreach($a=$_GET as$k=>$v)for($i=0;a&$v[$i];)if(count(preg_grep("#^".($s=substr($v,0,++$i))."#",$a))==1){$r[]=$s;break;}echo join(",",$r);

যদি ইনপুটটিতে রেজেক্স বিশেষ অক্ষর থাকে তবে এটি ব্যর্থ হবে। আইডির না থাকলে 131 এর পরিবর্তে 113 বাইট রয়েছে।
তিতাস

@ টিটাস এই ক্ষেত্রে আমি preg_quoteকেবলমাত্র 10 টি বাইট তৈরি করতে পারব
জার্গ হালসারম্যান

এছাড়া ব্যর্থ হয়ে যাবে ইনপুট রয়েছে 0। তবে আপনি এটি দিয়ে একটি বাইট সংরক্ষণ করতে পারেন $i=+$s=""
তিতাস

এবং আপনি count()-count()স্টাফ সরাতে পারেন: ইনপুটটি বৈধ (-21 বাইট) হওয়ার গ্যারান্টিযুক্ত। আমি মনে করি আমি এটি 120 বাইটে ঠিক করতে এবং গল্ফ করতে পারি। $_GETএকটি ভাল ধারণা ছিল!
তিতাস

টাইটাস আমি বুঝতে পারি নি যে কেবলমাত্র বৈধ অ্যারে অনুমোদিত। হ্যাঁ এটি ব্যর্থ হবে যদি স্ট্রিংটিতে একটি শূন্য থাকে তবে এটি একটি ধারণা জন্মেছিল
Jörg Hülsermann

0

ক্লোজার, 118 বাইট

#(reduce(partial map(fn[a b](or a b)))(for[i(range 1e2)S[(for[c %](take i c))]](for[s S](if(=((frequencies S)s)1)s))))

এটি দৈর্ঘ্যের উপসর্গগুলিতে কাজ করে 1e2তবে একই বাইট গণনা আপ-টু সমর্থন করতে পারে 1e9iউপসর্গের লুপ দৈর্ঘ্য S, দৈর্ঘ্যের সাবস্ট্রিংগুলির ক্রম i। সর্বশেষে forসেই সাবস্ট্রিংগুলি প্রতিস্থাপন করে nilযা একবারে আরও ঘন ঘন ঘটে। হ্রাস প্রতিটি স্ট্রিংয়ের জন্য প্রথম অ-শূন্য মান রাখে, খুব খারাপ orকোনও ফাংশন নয় তাই আমাকে এটি মুড়ে ফেলতে হয়েছিল।

এটি প্রকৃতপক্ষে অক্ষরের তালিকাগুলির তালিকাগুলি ফিরিয়ে দেয় ((\M) (\T \u) (\W) (\T \h) (\F))তবে আমার ধারণা এটি গ্রহণযোগ্য। ক্লোজওর স্ট্রিংগুলির সাথে বেশ ভার্জোজ, এবং বিপরীতে subsনিক্ষেপ করবে ।StringIndexOutOfBoundsExceptiontake

সম্পূর্ণ উদাহরণ:

(def f #(reduce(partial map(fn[a b](or a b)))(for[i(range 1e2)S[(for[c %](take i c))]](for[s S](if(=((frequencies S)s)1)s)))))

(f ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"])
(f (re-seq #"[^,]+" "one,two,three,four,five,six,seven"))
(f (re-seq #"[^,]+" "red,orange,yellow,green,blue,purple"))

0

এসকিউএল (পোস্টগ্রেএসকিউএল 9.4 স্বাদ), 219 বাইট

এখন দীর্ঘতম উত্তরের জন্য :) আমি মনে করি না এটি জাভাটিকেও পরাজিত করতে পারে। আমি এ থেকে আরও কয়েকজন শেভ করার চেষ্টা করব। নেস্টেড প্রশ্নের মধ্যে একটি থেকে মুক্তি পাওয়ার আশা, তবে আমার সম্ভাবনাগুলি পছন্দ করবেন না।
এটি ধরে নিয়েছে যে এখানে একটি টেবিল রয়েছে যাতে কাজ করার জন্য স্ট্রিং রয়েছে। এটি এসকিউএল হওয়ায় রিটার্নের ক্রমটি টেবিলের অর্ডারের সমান হবে এবং এই ক্ষেত্রে সম্ভাবনা নেই। এটি যদি সমস্যা হয় তবে আমি মুছে ফেলব।

SELECT R FROM(SELECT*,RANK()OVER(PARTITION BY A ORDER BY C,N)Z FROM(SELECT*,SUM(1)OVER(PARTITION BY R)C FROM(SELECT*FROM A JOIN LATERAL(select left(A,n)R,N FROM generate_series(1,length(A))S(n))L ON 1=1)X)Y)Z WHERE Z=1

এসকিউএল ফিডল
ব্যাখ্যা

  SELECT *
  FROM A 
    JOIN LATERAL(SELECT LEFT(A,n)R,N 
    FROM generate_series(1,length(A))S(n))L ON 1=1

অভ্যন্তরীণতম কোয়েরিটি ব্যবহার করে generate_seriesএবং LATERALস্ট্রিংকে ক্রমবর্ধমান দৈর্ঘ্যে বিভক্ত করার জন্য সারি তৈরি করতে একটি জোড় ব্যবহার করে, সুতরাং 'এক' 'ও', 'অন', 'এক' হয়ে যায়। রিটার্নে অক্ষরের সংখ্যাও রাখা হয়।

SELECT 
  *,
  SUM(1)OVER(PARTITION BY R)C
FROM ( ... )X

তারপরে আমরা রেকর্ডগুলির সংখ্যা যুক্ত করব যা একই ফলাফল। উদাহরণস্বরূপ 'এফ' এর চার এবং পাঁচটিতে 2 রয়েছে, তবে 'ফো' এবং 'ফাই' এর প্রত্যেকটিতে একটি থাকে। OVERএসকিউএল- এর বিবৃতিটি বেশ শক্তিশালী হতে পারে। COUNT(*)স্বাভাবিক উপায় হতে পারে, কিন্তু SUM(1)একই ফলাফল দেয়।

SELECT 
  *,
  RANK()OVER(PARTITION BY A ORDER BY C,N)Z
FROM ( ... )Y

তারপরে আমরা প্রতিটি ইনপুটটির জন্য সর্বনিম্ন পুনরাবৃত্তি এবং অক্ষরের উপর ভিত্তি করে ফলাফলগুলি র‌্যাঙ্ক করি। ROW_NUMBERএখানে পাশাপাশি কাজ করবে, কিন্তু দীর্ঘ।

SELECT R FROM ( ... )Z WHERE Z=1;

শেষ পর্যন্ত আমরা প্রতিটি শব্দের জন্য সর্বনিম্ন র‌্যাঙ্ক নম্বরটি নির্বাচন করি।



0

এপিএল (ডায়ালগ) , 27 বাইট

{⍵↑¨⍨1⍳⍨¨↓+/(↑,⍵)∘.(⊃⍷)⍵}

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

{ একটি বেনামী ফাংশন, যেখানে the যুক্তি উপস্থাপন করে ...

∘.( একটি ফাংশন টেবিল যেখানে ফাংশন

   প্রথম উপাদান

   বুলিয়ান তালিকা "বাম যুক্তিটি এখানে সঠিক যুক্তিতে শুরু হয়?"

) যেখানে সঠিক যুক্তি রয়েছে

 তর্ক

( এবং বাম যুক্তি হয়

   সারি সমন্বয়ে একটি টেবিল

  ,/ উপসর্গ

  ¨ প্রতিটি

   যুক্তি

+/ জুড়ে যোগফল (এই উপসর্গটির সাথে যুক্ত কতগুলি আর্গুমেন্ট গণনা করে)

 সারিগুলির তালিকাতে টেবিল বিভক্ত করুন

⍳⍨¨ প্রত্যেকটির মধ্যে প্রথমটির অবস্থানটি সন্ধান করুন

1 একটি (অর্থাত্ প্রথম উপসর্গ যা কেবলমাত্র একটি যুক্তিকে প্রধান করে)

↑¨⍨ প্রতিটি অবস্থানের জন্য, সম্পর্কিত উপাদান থেকে অনেকগুলি অক্ষর নেয়

 যুক্তি

} বেনামে ফাংশন শেষ


0

পাওয়ারশেল, 151 139 বাইট

$x,$w=@(),$args[0];$w|%{$k=$_;$a='';foreach($l in [char[]]$k){$a+=$l;if($a-notin$x-and!($w|?{$_-ne$k-and$_-like"$a*"})){$x+=$a;break;}}};$x

এটি করার আরও ভাল উপায় যদি থাকে তবে আগ্রহী। লেবেল ছাড়াই নেস্টেড লুপটিতে একটি সম্পাদন করতে সক্ষম হতে একটি foreach(ওভার এ |%) ব্যবহার করতে হয়েছিল break

সম্পাদনা করুন: অ্যাডমবর্কবার্ক থেকে 2 গল্ফ


1
আমি কোডটি মাধ্যমে সরাসরি চলে না করেছি, কিন্তু নিশ্চয় ব্যবহার করতে পারে -notinপরিবর্তে -not$x.contains($a)এবং !($w...পরিবর্তে -not($w..., কিছু বাইট সংরক্ষণ করতে তাই না?
অ্যাডমবর্কবার্ক

0

এপিএল, 26 বাইট

{⍵↑¨⍨1+⌈/+/¨∘.(∧\=∧≢)⍨↓↑⍵}

ব্যাখ্যা:

  • ↓↑⍵: দীর্ঘতম স্ট্রিংয়ের দৈর্ঘ্যের সাথে মেলে প্রতিটি স্ট্রিংকে প্যাড করুন
  • ∘.(... )⍨: প্রতিটি সম্ভাব্য স্ট্রিংয়ের জন্য, ভাগ করা উপসর্গটি সন্ধান করুন:
    • : অ্যারে অসমতা
    • : এবং
    • =: আইটেমওয়ালা সমতা
    • ∧\: এবং স্ক্যান (শুধুমাত্র শীর্ষস্থানীয় ম্যাচ রাখুন)
  • +/¨: ভাগ করা উপসর্গগুলির দৈর্ঘ্য প্রদান করে সারণীতে প্রতিটি ভেক্টরকে যোগ করুন
  • ⌈/: প্রতিটি কলামে সর্বাধিক মান সন্ধান করুন
  • 1+: একটি যুক্ত করুন, প্রতিটি স্ট্রিংকে অনন্য রাখতে প্রয়োজনীয় পরিমাণের অক্ষর সরবরাহ করুন
  • ⍵↑¨⍨: প্রতিটি স্ট্রিং থেকে অনেকগুলি অক্ষর নিন

টেস্ট:

      {⍵↑¨⍨1+⌈/+/¨∘.(∧\=∧≢)⍨↓↑⍵}'Monday' 'Tuesday' 'Wednesday' 'Thursday' 'Friday'
┌─┬──┬─┬──┬─┐
│M│Tu│W│Th│F│
└─┴──┴─┴──┴─┘
      {⍵↑¨⍨1+⌈/+/¨∘.(∧\=∧≢)⍨↓↑⍵}'one' 'two' 'three' 'four' 'five' 'six' 'seven'
┌─┬──┬──┬──┬──┬──┬──┐
│o│tw│th│fo│fi│si│se│
└─┴──┴──┴──┴──┴──┴──┘
      {⍵↑¨⍨1+⌈/+/¨∘.(∧\=∧≢)⍨↓↑⍵}'red' 'orange' 'yellow' 'green' 'blue' 'purple'
┌─┬─┬─┬─┬─┬─┐
│r│o│y│g│b│p│
└─┴─┴─┴─┴─┴─┘

0

প্রশ্ন, 93 বাইট

{n:1;{$[any e:(,/)1<{(+/)i like x}each i:z#'x;[z+:1;y:?[e;z#'x;i];.z.s[x;y;z]];y]}[x;n#'x;n]}

পুনরাবৃত্তির সাথে সমাধান করা হয়, ইনপুট হিসাবে স্ট্রিং নেয়, প্রতিটি পুনরাবৃত্তির সাথে প্রতিটি স্ট্রিংয়ের প্রথম এন উপাদানগুলি পাওয়া যায়। যদি এই উপাদানগুলির মধ্যে কোনওটি অনন্য না হয় তবে এগুলিকে প্রথম এন + 1 উপাদানগুলির সাথে প্রতিস্থাপন করে।

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