দুর্দান্ততম সাবস্ট্রিং


30

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

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

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

[Inputs] -> [Valid outputs (choose one)]

["hello", "'ello"] -> ["ello"]
["very", "much", "different"] -> [""]
["empty", "", "STRING"] -> [""]
["identical", "identical"] -> ["identical"]
["string", "stRIng"] -> ["st", "ng"]
["this one", "is a substring of this one"] -> ["this one"]
["just one"] -> ["just one"]
["", "", ""] -> [""]
["many outputs", "stuptuo ynam"] -> ["m", "a", "n", "y", " ", "o", "u", "t", "p", "s"]
["many inputs", "any inputs", "ny iii", "yanny"] -> ["ny"]
["%%not&", "ju&#st", "[&]alpha_numeric"] -> ["&"]


2
@ অ্যাডম এই প্রশ্নটি সাবস্ট্রিংয়ের চেয়ে দীর্ঘতম সাধারণ সাব সিকোয়েন্সের জন্য জিজ্ঞাসা করছে ।
ডুরকনব

1
স্ট্রিংগুলি কেবলমাত্র বর্ণমালা বা বর্ণমালা বা কেবল মুদ্রণযোগ্য-আসকি হবে?
অবজ্ঞানের

অ্যাম্বোডিমেন্টফ অজানা সমস্ত মুদ্রণযোগ্য ASCII অক্ষর ইনপুটটিতে উপস্থিত হতে পারে।
সারা জে

2
@ শেগি সাধারণত, না। যদি দুটি পার্থক্য করা undefinedযায় তবে বোঝায় যে কোনও বৈধ আউটপুট স্ট্রিং নেই। যদি খালি স্ট্রিং (বা অন্য কোনও স্ট্রিং) একটি বৈধ আউটপুট হয় তবে কোনও বৈধ আউটপুট নেই দাবি করা ভুল।
সারা জে

উত্তর:


8

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

f=lambda h,*t:h and max(h*all(h in s for s in t),f(h[1:],*t),f(h[:-1],*t),key=len)

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

ইনপুট স্প্ল্যাটেড লাগে। প্রথম স্ট্রিং দীর্ঘ যেখানে ইনপুট সময় শেষ হবে।

hবাকী সমস্ত স্ট্রিংয়ে প্রদর্শিত দীর্ঘতম সন্ধান করার জন্য প্রথম স্ট্রিংগুলির সাবস্ট্রিংগুলি গ্রহণ করা ধারণা t। এটি করার জন্য, আমরা এর প্রথম বা শেষ চরিত্রটি মুছে ফেলার জন্য পুনরাবৃত্তভাবে শাখা করি h


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

lambda l:max(set.intersection(*map(g,l)),key=len)
g=lambda s:s and{s}|g(s[1:])|g(s[:-1])or{''}

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

আরও একটি সরাসরি পদ্ধতি। সহায়ক ফাংশনটি gসমস্ত সাবস্ট্রিংগুলি সেট তৈরি করে sএবং প্রধান কার্যটি তাদের ছেদগুলির মধ্যে সবচেয়ে দীর্ঘতম লাগে takes


8

ব্র্যাচল্যাগ (ভি 2 ), 3 9 বাইট

{sᵛ}ᶠlᵒtw

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

পুরো প্রোগ্রাম। স্ট্যান্ডার্ড ইনপুট থেকে ইনপুট (স্ট্রিংগুলির JSON- স্টাইলের তালিকা হিসাবে), আউটপুট স্ট্যান্ডার্ড আউটপুট।

ব্যাখ্যা

{sᵛ}ᶠlᵒtw
 s         Find a substring
  ᵛ          of every element {of the input}; the same one for each
{  }ᶠ      Convert generator to list
     lᵒt   Take list element with maximum length
        w  Output it

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

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


1
আমি "[অনেকগুলি ইনপুয়াব্যাটস", "কোনও ইনপুট", "এনআই আইবিআই", "ইয়ানাবি"] দিয়ে ইনপুট দিয়ে এটি ব্যবহার করে দেখেছি। আমি ফলাফল ab এবং ny আশা করেছিলাম । তবে কেবল ফলাফল পেলাম a । আমি কি ভুল কিছু করছি ?
t-clausen.dk

1
ওহ, মনে হচ্ছে আমি sভুলের জন্য টাইব্রেক অর্ডারটি মনে করেছি , এবং টাইব্রেক অর্ডারকে ওভাররাইড করা ব্যয়বহুল হিসাবে ব্যয়বহুল। যদিও এখনই তা করা, কারণ উত্তরটি সঠিক হওয়া জরুরী। কোনওভাবেই আমি পরীক্ষার কোনও মামলারই পার্থক্য লক্ষ্য করেছি না।
ais523

1
@ আইজ ৫২৩ অর্ডারটি sসাবস্ট্রিংগুলি তৈরি করে প্রথমে ইনপুটটির সমস্ত উপসর্গ (দীর্ঘতম প্রথম) দিয়ে, তারপরে প্রথমটি ফেলে এবং পুনরাবৃত্তি করে
ক্রপ্পেব ২

5

জেলি , 12 6 বাইট

Ẇ€f/ṫ0

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

6 জন বাইট সংরক্ষণের জন্য জনাথন অ্যালানকে ধন্যবাদ!


আমি বিশ্বাস Ẇ€œ&/Ṫḟ0করি যে কাজটি করবে এবং চারটি বাইট সংরক্ষণ করবে যেহেতু সাব-স্ট্রিংগুলি ইতিমধ্যে দৈর্ঘ্য অনুসারে অর্ডার করা হয়েছে, তাই ফিল্টার করা ফলাফল হবে; তারপরে যা কিছু অবশিষ্ট রয়েছে তা হ'ল যখন কোনও মিল নেই লেজ একটি শূন্য উত্পন্ন করে এবং যেহেতু আমাদের অক্ষরগুলির গ্যারান্টিযুক্ত তালিকা থাকে আমরা কেবল সেগুলি ফিল্টার করতে পারি।
জোনাথন অ্যালান

এছাড়াও আমি মনে করি এখানে অন্য একটি সংরক্ষণ করে œ&/প্রতিস্থাপন করা যেতে পারেf/
জোনাথন অ্যালান

আমি একটি টান অনুরোধ জমা দিয়েছি (আশা করি) খালি তালিকা হ্রাস করার ফলাফলকে একটি খালি তালিকা হতে হবে (কোনও টাইপরর বাড়ানোর চেয়ে)। যদি এটিতে একত্রী হয়ে যায় তবে আমি বিশ্বাস করি যে এই উত্তরটি তখন ছয়-বাইটারে পরিণত হতে পারে Ẇ€f/ṛ/
জোনাথন অ্যালান

@ জোনাথান অ্যালান ভাল লাগছে অন্যান্য টিপসের জন্য ধন্যবাদ - আশা করি আপনি সেগুলি অন্তর্ভুক্ত করে আমার জন্য খুশি হয়েছিলেন।
নিক কেনেডি

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

5

রুবি 2.6, 76 59 54 বাইট

->a{*w=a;w.find{|r|w<<r.chop<<r[1..];a.all?{|s|s[r]}}}

এটি অনলাইন চেষ্টা করুন! - রুবি 2.5 সংস্করণ (56 বাইট)

কিভাবে?

শুরুতে মূল অ্যারেতে সেট করে সম্ভাব্য মিলগুলির একটি তালিকা তৈরি করুন। তালিকায় আইট্রেট করুন এবং যদি কোনও স্ট্রিং মেলে না, তবে তালিকার লেজটিতে 2 টি নতুন স্ট্রিং যুক্ত করুন, প্রথম বা শেষ বর্ণটি কেটে ফেলুন। শেষে একটি ম্যাচ (শেষ পর্যন্ত একটি খালি স্ট্রিং) পাওয়া যাবে।

-২ বাইটের জন্য কিরিল এল এবং অন্য -২ এর জন্য হিস্টোক্র্যাটকে ধন্যবাদ


4

আর , 119 116 108 106 বাইট

function(S,`?`=nchar,K=max(?S),s=Reduce(intersect,lapply(S,substring,0:K,rep(0:K,e=K+1))))s[which.max(?s)]

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

প্রতিটি স্ট্রিংয়ের সমস্ত সাবস্ট্রিংগুলি সন্ধান করুন, সাবস্ট্রিংগুলির প্রতিটি তালিকার ছেদটি সন্ধান করুন এবং শেষ পর্যন্ত দীর্ঘতম (একটির) প্রত্যাবর্তন করুন।

-৩ বাইট ধন্যবাদ কিরিল এলকে।

এর পরিবর্তে -8 বাইট ব্যবহার lapply করুন Map

-২ বাইটগুলি আবার ক্যারিল এলকে ধন্যবাদ, বন্ধনীগুলি সরিয়ে


আমার কাছে যাচাই করার সময় নেই, তবে আমি যদি ভুল না হয়ে থাকি তবে অ্যানারি অপারেটর হিসাবে ncharঘোষণা করে কিছু সংরক্ষণের জন্য 2 টির পরিমাণ যথেষ্ট nchar
ক্যারিল এল

@KirillL। হ্যাঁ, এটি 2 বাইট দ্বারা সংক্ষিপ্ত ধন্যবাদ! এলিয়াসিং listএকইভাবে আমাদের -3 বাইট দেয়।
জিউসেপ্পে


@KirillL। ধন্যবাদ! আমি কিছুটা উদ্বিগ্ন আমি প্রডাকশন কোড দিয়ে এটি শুরু করতে যাচ্ছি ...
জিউসেপ্পে

আপনি প্রতিদিন যে ভাষাটি ব্যবহার করেন তাতে গল্ফ করার সমস্যাটি
হ'ল

4

05 এ বি 1 ই , 14 9 8 বাইট

€Œ.«ÃéθJ

-6 ধন্যবাদ বাইট @Adnan

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

€Œ       # Get the substring of each string in the (implicit) input-list
       # Right-reduce this list of list of strings by:
    Ã    #  Only keep all the strings that are present in both list of strings
     é   # Sort by length
      θ  # And pop and push its last item
         # The substrings exclude empty items, so if after the reduce an empty list remains,
         # the last item will also be an empty list,
       J # which will become an empty string after a join
         # (after which the result is output implicitly)

1
আমার মনে হয় €Œ.«Ãõªéθ9 বাইটের জন্য কাজ করা উচিত।
আদনান

@ আদনান অপেক্ষা করুন, আমাদের একটি হ্রাস আছে .. আমি কীভাবে এটি মিস করেছি। : এসআই চেষ্টা করেছিল Å«Ã, তবে বুঝতে পারিনি যে এর .«Ãপরিবর্তে আমার ব্যবহার করা উচিত ছিল .. ধন্যবাদ!
কেভিন ক্রুইজসেন 25:25

1
আসলে, আমি মনে করি €Œ.«ÃéθJ8 এর জন্য কাজ করা উচিত
আদনান

4

Zsh , 126 ... 96 বাইট

-৩ বাইটস জন্য গাণিতিক থেকে, -6 অন্তর্নির্মিত থেকে বাইট "$@"(ধন্যবাদ রোব্লোগিক), -নাইটেড অপসারণ থেকে 5 বাইট { }, -1 বাইট এর শর্ট ফর্ম থেকে for, -1 বাইট ব্যবহার করে repeat, -1 বাইট for s ($b)তার শরীরের সাথে মিলিয়ে, -13 বাইট কিছু alশাল জাঙ্কের জন্য পুনরাবৃত্তি লুপ আউট পরিবর্তন করে।

for l
eval a=\( \$l\[{1..$#l},{1..$#l}\] \)&&b=(${${b-$a}:*a})
for s ($b)(($#x<$#s))&&x=$s
<<<$x

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

আমরা অ্যারেতে সমস্ত সম্ভাব্য সাবস্ট্রিংগুলি পড়েছি aএবং তারপরে bঅ্যারে aএবং ছেদ করার স্থানে সেট করি b। কনস্ট্রাক্টটি কেবল প্রথম পুনরাবৃত্তির ${b-$a}পরিবর্তে স্থান পরিবর্তন করবে $a: এর সহোদর সম্প্রসারণের বিপরীতে ${b:-$a}, bসেট করা থাকলেও খালি খালি এটি বিকল্প হবে না ।

for l;                              # implicit "$@"

# === OLD ===
{
    a= i=                           # empty a and i
    repeat $[$#l**2]                # compound double loop using div/mod
        a+=($l[++i/$#l+1,i%$#l+1])  # append to a all possible substrings of the given line
#               1+i/$#l             # 1,1,1...,  1,1,2,2,2,... ...,  n,n
#                       1+i%$#l     # 1,2,3...,n-1,n,1,2,3,... ...,n-1,n
#       a+=( $l[       ,     ] )    # append that substring to the array
# === NEW ===
    eval a=\( \
        \$l\[{1..$#l},{1..$#l}\] \  # The {bracket..expansions} are not escaped
    \) &&
# ===     ===
    b=( ${${b-$a}:*a} )
#         ${b-$a}                   # if b is unset substitute $a
#       ${       :*a}               # take common elements of ${b-$a} and $a
#   b=(               )             # set b to those elements
}
for s ($b)                          # for every common substring
    (( $#x < $#s )) && x=$s         # if the current word is longer, use it
<<<$x                               # print to stdout

এই বিট কিভাবে কাজ করে? a+=( $l[1+i/$#l,1+i%$#l] )
রোব্লোগিক

1
@ অরব্লোগিক আমি মনে করি আমি এখন এটি আরও ভালভাবে ব্যাখ্যা করেছি, সম্পাদনাটি দেখুন check ধারণাটি হ'ল n ^ 2 এ লুপ করতে হবে এবং 2 টি নেস্টেড forলুপ ব্যবহার করার পরিবর্তে / এবং% ব্যবহার করতে হবে
গামা ফাংশন

1
আপনি for l in "$@"কেবল for l;এটিকে কাটাতে সক্ষম হতে পারেন - এটি একটি বাশ ট্রিক
রোব্লোগিক

আমি বলতে চাই, zsh বাশ চেয়ে অনেক বেশি মার্জিত। এই চমৎকার অ্যারে তুলনা AFAIK এর সাথে সদৃশ কিছুই নেইb=(${${b-$a}:*a})}
রোব্লগিক

1
এটির সাথে আপনি করতে পারেন এমন কিছু ঝরঝরে জিনিস রয়েছে এবং এটি এত জনপ্রিয় নয়। এটি আমার মধ্যে অনুবাদ হওয়া বেশিরভাগ প্রশ্নের zsh উত্তর যুক্ত করে আমার মধ্যে অনুবাদ করে। : পি আপনি zsh শিখতে চান, আমি সুপারিশ man zshexpnএবং man zshparamবিশেষত। উত্তর লেখার সময় আমি সেগুলি সর্বদা খোলা রাখি।
গামা ফাংশন

3

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

import Data.List
f(x:r)=last$sortOn(0<$)[s|s<-inits=<<tails x,all(isInfixOf s)r]

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

সব প্রত্যয় (পান tailsপ্রথম শব্দ এর) xতালিকায় এবং সব উপসর্গ নিতে ( inits) আর প্রত্যয় সব সাবস্ট্রিং পেতে sএর x। প্রতিটি রাখুন sযে isInfixOf allঅবশিষ্ট তালিকায় স্ট্রিং r। সেই সাবস্ট্রিংগুলি দৈর্ঘ্য অনুসারে বাছাই করুন ( কৌশলটি ব্যবহার করে(0<$) ) এবং শেষটি ফিরিয়ে দিন।


3

রেটিনা 0.8.2 , 48 বাইট

M&!`(?<=^.*)(.+)(?=(.*\n.*\1)*.*$)
O#$^`
$.&
1G`

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

M&!`(?<=^.*)(.+)(?=(.*\n.*\1)*.*$)

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

O#$^`
$.&

দৈর্ঘ্যের বিপরীত ক্রমে সাবস্ট্রিংগুলি বাছাই করুন।

1G`

শুধুমাত্র প্রথম, অর্থাৎ দীর্ঘতম স্ট্রস্ট্রিং রাখুন।


আসুন nআর্গুমেন্ট স্ট্রিংয়ের সংখ্যা। তাহলে (?=(.*\n.*\1)*.*$)হওয়া উচিত (?=(.*\n.*\1){n-1}.*$), তাই না? পরীক্ষার কেস:["very", "different", "much"] -> [""]
ম্যাজি

1
@ মমজি আমি সমস্যাটি দেখতে পাচ্ছি না: অনলাইনে চেষ্টা করে দেখুন!
নীল

এইটা সমস্যা না. আপনার সাথে {n}শুরু এবং শেষ নিদর্শনগুলি সরিয়ে ফেলতে পারে এবং (.+)(?=(.*\n.*\1){n}রেটিনা তার nচেয়ে ছোট লিখতে দেয়(?<=^.*).*$
মার্জি ২z

@ মমজি আমি রেটিনা ০.৮.২ এ পারি না এবং রেটিনা ১ এ আমাকে ইওল নিয়ে ঘৃণা করতে হবে যা সম্ভবত আর দীর্ঘ হবে।
নীল

3

টিএসকিউএল কোয়েরি, 154 বাইট

USE master
DECLARE @ table(a varchar(999)collate Latin1_General_CS_AI,i int identity)
INSERT @ values('string'),('stRIng');

SELECT top 1x FROM(SELECT
distinct substring(a,f.number,g.number)x,i
FROM spt_values f,spt_values g,@ WHERE'L'=g.type)D
GROUP BY x ORDER BY-sum(i),-len(x)

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

সিএস (কেস সেনসিটিভ )যুক্ত কোলেশন সহ কলামটি 'এ' ঘোষণা করে কেসকে সংবেদনশীল করে তুলেছে।

2540 শুরু অবস্থান থেকে সমস্ত স্ট্রিং বিভক্ত করা (অনেকগুলি অভিন্ন) তবে দরকারী মান 1 এবং 2070 এর মধ্যে থাকে এবং অবস্থান শুরু হওয়ার পরে 0 থেকে 22 অক্ষর সমাপ্ত হয়, প্রান্তটি 'এল' এর পরিবর্তে 'পি' টাইপ পরিবর্তন করে দীর্ঘ হতে পারে, কিন্তু কর্মক্ষমতা পঙ্গু করতে হবে।

প্রতিটি রোভনবারের মধ্যে এই স্বতন্ত্র স্ট্রিংগুলি গণনা করা হয়। সর্বোচ্চ গণনা সর্বদা সারণী ভেরিয়েবল '@' এর সারি সংখ্যার সমান হবে। একই গণনায় ক্রমের বিপরীতকরণের ফলে ফলাফলের শীর্ষে বেশিরভাগ ম্যাচগুলির সাথে স্ট্রিংগুলি ছেড়ে যাবে এবং তারপরে বিপরীত দৈর্ঘ্যের সাথে তালিকার বিপরীত দৈর্ঘ্যটি সর্বাধিক ম্যাচগুলির সাথে দীর্ঘতম ম্যাচ ছেড়ে যাবে। কোয়েরিটি কেবল শীর্ষ 1 সারিটি নির্বাচন করে।

সমস্ত উত্তর পেতে, প্রশ্নের প্রথম অংশ পরিবর্তন করুন

এক্স 1 থেকে বন্ধুত্বের সাথে শীর্ষগুলি নির্বাচন করুন


3

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক), 320 257 বাইট

l=>(string.Join(",",l.Select(s=>new int[s.Length*s.Length*2].Select((i,j)=>string.Concat(s.Skip(j/-~s.Length).Take(j%-~s.Length))))
.Aggregate((a,b)=>a.Intersect(b)).GroupBy(x=>x.Length).OrderBy(x =>x.Key).LastOrDefault()?.Select(y=>y)??new List<string>()));

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

@ এক্সপায়ার্ড ডেটা এবং @ ডানাতে প্রপস


আপনি কেবল কোনও ফাংশন থেকে স্ট্রিংটি ফিরিয়ে দিতে পারেন। ইন্টারেক্টিভ সংকলকটিতে এটি দেখতে এরকম কিছু হতে পারে: 294 বাইট
ডেটা মেয়াদ শেষ হয়েছে

1
সমাধানটি কিছু বাইট 215 বাইটে
মেয়াদোত্তীর্ণ ডেটা

@ এক্সপায়ার্ডডাটা হ্যাঁ এই নিখুঁত উদাহরণটি আমার প্রয়োজন :)
ইনাত 3



3

পার্ল 6 , 62 60 বাইট

{~sort(-*.comb,keys [∩] .map(*.comb[^*X.. ^*]>>.join))[0]}

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

আমি কিছুটা বিরক্ত হয়ে পার্ল 6 তালিকার তালিকায় অপারেশন সেট করতে পারি না, এ কারণেই এখানে একটি অতিরিক্ত .combএবং রয়েছে>> সেখানে রয়েছে।

আরেকটি বিরক্তিকর বিষয় হ'ল maxআইটেমগুলির তুলনা কীভাবে করা যায় তার জন্য কোনও ফাংশন নিতে পারছে না, এর sortপরিবর্তে আমাকে ব্যবহার করতে হবে। হিসাবে মন্তব্যের নির্দিষ্ট, max করতে একটি আর্গুমেন্ট গ্রহণ করা অবশ্য এটা এখন আর শেষ পর্যন্ত যেহেতু আমি একাউন্টে নিতে হবে maxনেতিবাচক অনন্ত যখন সাধারণ সাবস্ট্রিং হয় ফিরে ( এটি অনলাইন ব্যবহার করে দেখুন! )।


3
maxওও মোডে ডাকলে অবস্থানের দ্বারা বা :byপদ্ধতিগত মোডে একটি নামযুক্ত যুক্তি দ্বারা এই জাতীয় ফাংশন (আধ্যাত্মিক 1 যদিও) নিতে পারে ।
ভেন

2

জাপট v2.0a0 -hF, 8 বাইট

Îã f@eøX

3 বাইট সংরক্ষণের জন্য শেগিকে ধন্যবাদ

চেষ্টা করে দেখুন

Îã              //Generate all substrings of the first string
 f@             //Filter; keep the substrings that satisfy the following predicate:
   e            //    If all strings of the input...
    øX          //    Contain this substring, then keep it
-h              //Take last element
-F              //If last element is undefined, default to empty string

আপনার শেষে 3 বাইট সংরক্ষণ করে দৈর্ঘ্য অনুসারে বাছাই করা উচিত নয়। এছাড়াও, -Fখালি স্ট্রিংয়ের ডিফল্ট।
শেগি

2

জাপট -h , 8 বাইট

(আমি সর্বশেষ 3 বাইট ছোঁড়াতে এবং এর -Fhপরিবর্তে পতাকাটি ব্যবহার করতে পারি তবে আমি ব্যবহারের অনুরাগী নই -F)

mã rf iP

চেষ্টা করে দেখুন বা সমস্ত পরীক্ষার কেস চালান

mã rf iP     :Implicit input of array
m            :Map
 ã           :  Substrings
   r         :Reduce by
    f        :  Filter, keeping only elements that appear in both arrays
      i      :Prepend
       P     :  An empty string
             :Implicit output of last element

1

পাইথন 3 , 137 বাইট

def a(b):c=[[d[f:e]for e in range(len(d)+1)for f in range(e+1)]for d in b];return max([i for i in c[0]if all(i in j for j in c)],key=len)

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


আপনি 4 এর পরিবর্তে একক স্পেস ব্যবহার করতে চাইতে পারেন যা 100 বাইটের চেয়ে বেশি শেভ করে more
শিয়ারু আসাকোটো



1

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

lambda b:max(reduce(set.__and__,[{d[f:e]for e in range(len(d)+2)for f in range(e)}for d in b]),key=len)

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

এটি একটি বেনাম ল্যাম্বডা যা প্রতিটি উপাদানকে সমস্ত সাবস্ট্রিংয়ের সেটে রূপান্তর করে, তারপর reduceসেট ছেদ দ্বারা সেট করে ( set.__and__) এবং তারপরে gth maxদ্বারা উপাদানটি ফেরত দেয় len


1 বাইট খাটো সঙ্গে set.intersection
ovs


1

পার্ল 5 (-aln0777F/\n/ -M5.01 -MList::util=max ), 99 বাইট

আরো অবশ্যই গল্ফ করা যেতে পারে

map/(.+)(?!.*\1)(?{$h{$&}++})(?!)/,@F;say for grep{y///c==max map y///c,@b}@b=grep@F==$h{$_},keys%h

Tio



1

কাঠকয়লা , 30 বাইট

≔⊟θη≔⁰ζFLη«≔✂ηζ⊕ι¹ε¿⬤θ№κεPε≦⊕ζ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। এই অ্যালগরিদম সমস্ত সাবস্ট্রিংগুলি উত্পাদন করার চেয়ে আরও দক্ষ এবং খাটো। ব্যাখ্যা:

≔⊟θη

ইনপুট তালিকা থেকে শেষ স্ট্রিংটি একটি ভেরিয়েবলের মধ্যে পপ করুন।

≔⁰ζ

স্ট্রিং সূচনা সূচকটি জিরো।

FLη«

সমস্ত সম্ভাব্য স্ট্রেরিং শেষ সূচকগুলি লুপ করুন। (প্রকৃতপক্ষে দৈর্ঘ্যটি বাদ দিয়ে 0 থেকে লুপ হয়, সুতরাং মানটি পরে সমন্বিত হয়))

≔✂ηζ⊕ι¹ε

বর্তমান সাবস্ট্রিং প্রাপ্ত করুন।

¿⬤θ№κε

এই স্ট্রিংগুলি অন্যান্য সমস্ত ইনপুট স্ট্রিংয়ে রয়েছে কিনা তা পরীক্ষা করুন।

Pε

যদি তা হয় তবে আগের কোনও আউটপুট স্ট্রিংকে ওভারপ্রিন্ট করুন।

≦⊕ζ

অন্যথায় সাবস্ট্রিং শুরুর সূচকে বাড়ানোর চেষ্টা করুন।


1

বাশ , 295 .. 175 বাইট

সুন্দর নয় তবে কমপক্ষে এটি কাজ করে। এটি অনলাইনে চেষ্টা করুন

-37 সাধারণ পরিষ্কার দ্বারা ; জেডএস উত্তর থেকে চুরি করে -52 ; -26 একটি লুপ দিয়ে অ্যারে প্রতিস্থাপন করে ; -2 গামা ফাংশনকে ধন্যবাদ ; -3 লুপ থেকে সরানো হয়েছে i=0for

for l;{ d=${#l}
for((;i<d**2;i++)){ a="${l:i/d:1+i%d}" k=
for n;{ [[ $n =~ $a ]]&&((k++));}
((k-$#))||b+=("$a");};}
for e in "${b[@]}";do((${#e}>${#f}))&&f="$e";done
echo "$f"

এখানে মন্তব্য সহ মূল বর্ণহীন স্ক্রিপ্ট


1
আরও 2 টি সংরক্ষণ করুন: আপনি এর ((k==$#))&&সাথে প্রতিস্থাপন করতে পারেন ((k-$#))||। এটাও আপনি ব্যবহার করতে দেয় k=0. এটা সেটিংয়ের পরিবর্তে
GammaFunction

1
আমি মনে করি "সুন্দর নয় তবে কমপক্ষে এটি কাজ করে" বাশ স্ক্রিপ্টগুলির এমও :)
জোয়েটউইল

0

লাল , 266 174 বাইট

func[b][l: length? s: b/1 n: 1 until[i: 1 loop n[t: copy/part at s i l r: on foreach u
next b[r: r and(none <> find/case u t)]if r[return t]i: i + 1]n: n + 1 1 > l: l - 1]""]

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

পুনরাবৃত্তিকে পুনরাবৃত্তিতে পরিবর্তন করেছে এবং বাছাই থেকে মুক্তি পেয়েছে।



0

জাভাস্ক্রিপ্ট (নোড.জেএস) , 106 বাইট

a=>(F=(l,n,w=a[0].substr(n,l))=>l?n<0?F(--l,L-l):a.some(y=>y.indexOf(w)<0)?F(l,n-1):w:"")(L=a[0].length,0)

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

a=>(                      // Main function
 F=(                      //  Helper function to run through all substrings in a[0]
  l,                      //   Length
  n,                      //   Start position
  w=a[0].substr(n,l)      //   The substring
 )=>
 l?                       //   If l > 0:
  n<0?                    //    If n < 0:
   F(--l,L-l)             //     Check another length
  :a.some(                //    If n >= 0: 
   y=>y.indexOf(w)<0      //     Check whether there is any string not containing the substring
                          //     (indexOf used because of presence of regex special characters)
  )?                      //     If so:
   F(l,n-1)               //      Check another substring
  :w                      //     If not, return this substring and terminate
                          //     (This function checks from the longest substring possible, so
                          //      it is safe to return right here)
 :""                      //   If l <= 0: Return empty string (no common substring)
)(
 L=a[0].length,           //  Starts from length = the whole length of a[0]
 0                        //  And start position = 0
)


0

পাওয়ারশেল , 165 163 87 বাইট

-76 by বাইটস দুর্দান্ত পেরেকের জন্য পেরেক ধন্যবাদ ।

"$($args-join'
'|sls "(?<=^.*)(.+)(?=(.*\n.*\1)*.*$)"-a -ca|% m*|sort Le*|select -l 1)"

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

কম গল্ফড:

$multilineArgs = $args-join"`n"
$matches = $multilineArgs|sls "(?<=^.*)(.+)(?=(.*\n.*\1)*.*$)" -AllMatches -CaseSensitive|% matches
$longestOrNull = $matches|sort Length|select -Last 1
"$longestOrNull"


0

জাভা (জেডিকে) , 158 বাইট

a->{for(int l=a.get(0).length(),i=l,j;i>=0;i--)for(j=0;j<l-i;){var s=a.get(0).substring(j++,j+i);if(a.stream().allMatch(x->x.contains(s)))return s;}return"";}

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

ক্রেডিট


1
159 বাইট (একটি মন্তব্যে টিআইও লিঙ্কটি ফিট করার জন্য পরীক্ষার কেসগুলি সরানো হয়েছে)
সারা জে


0

পাইথ , 16 বাইট

eolN.U@bZm{s./dQ

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

       m     Q    # Map Q (parsed input) over the following function (lambda d:
          ./d     # Partitions of d (all substrings)
         s        # Reduce on + (make one list)
        {         # deduplicate
    .U            # reduce the result on the following lambda, with starting value result[0]
      @bZ         # lambda b,Z: Intersection between b and Z
                  # Result so far: all common substrings in random order
 o                # sort the resulting sets by the following lambda function:
  lN              # lambda N: len(N)
e                 # last element of that list
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.