স্ট্রিং এক্স কি স্ট্রিং ওয়াইয়ের একটি অনুচ্ছেদ?


23

স্ট্রিং X এবং Y দেওয়া, তা নির্ধারণ এক্স একটি হল subsequence ওয়াই এর খালি স্ট্রিং যে স্ট্রিং এর একটি subsequence হিসেবে গণ্য করা হয়। (উদাহরণস্বরূপ, ''এবং 'anna'এর উপসর্গগুলি 'banana'))

ইনপুট

  • এক্স, সম্ভবত-খালি কেস-সংবেদনশীল আলফানিউমেরিক স্ট্রিং
  • Y, একটি সম্ভবত-খালি কেস-সংবেদনশীল আলফানিউমেরিক স্ট্রিং

আউটপুট

  • সত্য বা মিথ্যা (বা সমমান), সঠিকভাবে ইঙ্গিত করে যে এক্স, ওয়াইয়ের একটি অনুগামী whether

আই / ও উদাহরণ

X      Y        output

''     'z00'    True
'z00'  'z00'    True 
'z00'  '00z0'   False
'aa'   'anna'   True
'anna' 'banana' True
'Anna' 'banana' False

নির্ণায়ক

  • উত্স কোডের বাইট সংখ্যা দ্বারা নির্ধারিত হিসাবে সংক্ষিপ্ততম প্রোগ্রামটি জয়লাভ করে।

উদাহরণ প্রোগ্রাম


1
কেন 'কলা' এর 'আনা' সাবস্ট্রিট?
কাওড

4
@ কেওডি - anna একটি হল subsequence (কিন্তু না একটি সাবস্ট্রিং) এর banana। স্ট্রিং এক্স স্ট্রিং ওয়াইয়ের একটি অনুচ্ছেদে ঠিক যদি এক্স এর ওয়াই থেকে শূন্য বা আরও বেশি উপাদান মুছে ফেলে প্রাপ্ত করা যায়; যেমন, মুছে ফেলার bএবং দ্বিতীয় aথেকে bananaদেয় anna
মাঝামাঝি

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

উত্তর:


18

পার্ল 5 , 17 বাইট (+1?), সম্পূর্ণ প্রোগ্রাম

s//.*/g;$_=<>=~$_

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

সঙ্গে ডাকা pPerl অনুবাদক করার পতাকা, হিসাবে perl -pe 's//.*/g;$_=<>=~$_'। প্রতি প্রতিষ্ঠিত সংগ্রহের নিয়মাবলী এই চ্যালেঞ্জ মূলত পোস্ট করা হয়েছে , এই পতাকা এক অতিরিক্ত বাইট খরচ। আরও সাম্প্রতিক নিয়মের অধীনে , এএএএফআইটি, এটি নিখরচায় থাকতে পারে।

যেভাবেই হোক, স্টিডিনে পৃথক নিউলাইন-টার্মিনেটেড লাইনে ইনপুট স্ট্রিং সরবরাহ করা উচিত। 1প্রথম ইনপুট স্ট্রিংটি যদি দ্বিতীয়টির একটি স্ট্রিং থাকে তবে এটি না হলে আউটপুট (স্টাডাউট থেকে) হবে nothing

নোট করুন যে উভয় ইনপুট লাইনের শেষে একটি নতুন লাইন থাকতে হবে, বা প্রোগ্রামটি সঠিকভাবে কাজ করবে না। বিকল্পভাবে, আপনি lপার্ল স্ট্রিপকে নতুন লাইনের জন্য অনুরোধে কমান্ড লাইন পতাকা যুক্ত করতে পারেন ; কার্যকরভাবে স্কোরিংয়ের নিয়মগুলির উপর নির্ভর করে, এটির অতিরিক্ত বাড়তি বাইট লাগতে পারে বা নাও পারে। নোট করুন যে এই পতাকাটি ব্যবহার করে আউটপুটটিতে একটি নতুন লাইনও যুক্ত হবে।

আসল সংস্করণ (স্নিপেট, 18 বাইট / অক্ষর)

$x=~s//.*/g,$y=~$x

ইনপুটটি ভেরিয়েবলগুলিতে দেওয়া হয় $xএবং $yফলাফলটি হ'ল অভিব্যক্তির মান (স্কেলারের প্রসঙ্গে)। $xপ্রক্রিয়ায় পরিবর্তিত হয়েছে নোট । (হ্যাঁ, আমি জানি এর $_পরিবর্তে ব্যবহার করা $xআমাকে চারটি অক্ষর বাঁচাতে দেবে, তবে এটি একটি স্নিপেটে করে যা আমার জন্য কিছুটা উদাসীন মনে হয়))

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

প্রথম অংশটি, প্রতিটি অক্ষরের মধ্যে $x=~s//.*/gস্ট্রিং সন্নিবেশ করায় । দ্বিতীয় অংশটি, একটি রেজিপ্লেক্স হিসাবে বিবেচনা করে এবং ম্যাচ করে.*$x$y=~$x$x$y । পার্ল রেজেক্সপসে .*শূন্য বা আরও বেশি নির্বিচার চরিত্রের সাথে মেলে, যখন সমস্ত বর্ণানুক্রমিক অক্ষর স্বাচ্ছন্দ্যে নিজেদের সাথে মেলে।


আউট (নতুন?) Sensকমত্য অনুসারে, জমাগুলি অবশ্যই প্রোগ্রাম বা ফাংশন হতে হবে, স্নিপেট নয়। যদি আপনার জমাটি এটি সন্তুষ্ট না করে তবে এটি সম্পাদনা বিবেচনা করুন।
ব্যবহারকারী 202729

@ ইউজার ২২২২:: এই চ্যালেঞ্জটি এই sensকমত্যের চেয়ে অনেক বেশি পুরানো, সুতরাং যদি প্রত্যাহার করে প্রয়োগ করা অনুমান না করা হয় তবে এই থ্রেডের উত্তরগুলি সম্ভবত "পিতামহ" হওয়া উচিত That যা বলেছিল, আমি কেবল একটি সংস্করণ যুক্ত করেছি যা বর্তমান নিয়মের সাথে মেনে চলে, এবং এমনকি আপনি কীভাবে কমান্ড-লাইন স্যুইচগুলি গণনা করছেন তার উপর নির্ভর করে একটি বাইট / চর সংক্ষিপ্তও হতে পারে (নোট করুন যে বাইট-ভিত্তিক গণনাও এই চ্যালেঞ্জের চেয়ে নতুন is
ইলমারি করোনেন

9

রুবি, 32 অক্ষর

s=->x,y{y=~/#{[*x.chars]*".*"}/}

এই সমাধানটি nilযদি xএকটি অনুচ্ছেদে yএবং অন্য কোনও সংখ্যার (যেমন রুবি সমতুল্য falseএবং এর true) না হয় তবে ফিরে আসে । উদাহরণ:

p s['','z00']        # => 0   (i.e. true)
p s['z00','z00']     # => 0   (i.e. true)
p s['z00','00z0']    # => nil (i.e. false)
p s['anna','banana'] # => 1   (i.e. true)
p s['Anna','banana'] # => nil (i.e. false)

1
আমি মূলত একই জিনিসটি করেছি, তবে এটির মতোই তাই আমি এটি পোস্ট করব না। আমি মনে করি ল্যাম্বডাটি ছেড়ে দেওয়া গ্রহণযোগ্য, যা আপনাকে y=~/#{[*x.chars]*".*"}/(২৩ অক্ষর) রেখে দেয়। চিয়ার্স!
প্যাট্রিক অসিটি

1
বা এমনকি y=~/#{x.split("")*".*"}/(21 টি অক্ষর) :)
প্যাট্রিক অসিটি

@ প্যাডে বিভক্তটি আসলে ২৪ টি চর।
হাওয়ার্ড

1
দুঃখিত, আমি অনুমান করি যে আমি দুর্ঘটনাক্রমে y=~এই
ঘটনাটি বিস্মৃত

আমার সংস্করণটি 2 চর সংক্ষিপ্ত।
হাউলেথ

7

Haskell,, 51 37

h@(f:l)%(g:m)=f==g&&l%m||h%m;x%y=x<=y

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

প্রদর্শন:

GHCi> :{
GHCi| zipWith (%) [""   , "z00", "z00" , "anna"  , "Anna"]
GHCi|             ["z00", "z00", "00z0", "banana", "banana"]
GHCi| :}
[True,True,False,True,False]

যেহেতু খালি তালিকা অন্য যে কোনও তালিকার তুলনায় ছোট, আপনি বেস কেসগুলিকে সহজ করতে পারেন s x y=x<=y। এছাড়াও, আপনি এটিকে অপারেটর তৈরি করে এবং এর @পরিবর্তে একটি- প্যাটার্ন ব্যবহার করে আরও কয়েকটি সঞ্চয় করতে পারেন (f:l)। এটি এটিকে 37 টি অক্ষরে h@(f:l)%(g:m)=f==g&&l%m||h%m;x%y=x<=y
নামিয়েছে

6

পাইথন (৪৮ টি চর)

import re;s=lambda x,y:re.search('.*'.join(x),y)

হাওয়ার্ডের রুবির উত্তর হিসাবে একই পন্থা। রেজেক্স প্যাকেজ এবং এর "ভার্বোস" আমদানি করার জন্য পাইথনের প্রয়োজনীয়তা সম্পর্কে খুব খারাপ lambda। :-)


1
আমি সম্মত, ল্যাম্বডা ভার্ভোজ ose
ক্যালকুলেটরফলাইন

4

পাইথন, 59 টি অক্ষর

def s(x,y):
 for c in y:
  if x:x=x[c==x[0]:]
 return x==""

আমি অনুভব করেছি যে আমার উত্তরটি পাইথনে আরও ভালভাবে প্রকাশ করা হবে।

সম্পাদনা করুন: পুনরায় প্রস্তাবনা যুক্ত করা হয়েছে।


অবশ্যই দেওয়া হয়েছে x="a"এবং y="ab"আপনি লুপটি দিয়ে প্রস্থান করবেন y=="b"এবং ফিরে আসবেন false?
পিটার টেলর

@ পিটারটেলর হ্যাঁ, আমি লক্ষ্য করেছি যে আমি মিশ্রিত হয়েছি xএবং পোস্ট করার পরে পরীক্ষার হিসাবে উদাহরণগুলি যখন চালাচ্ছিলাম y। আমার ফাংশনগুলিতে yএকটি অনুচ্ছেদে হওয়া দরকার x। আমি মনে করি যে কোনও বিভ্রান্তি এড়াতে আমি এগুলি আরও ভাল করে ফেলতাম।
গ্যারেথ

আপনি 59 অক্ষর এই নিচে পেতে পারেন: def s(x,y): for c in y: if x:x=x[c==x[0]:] return x==""। এটি কোনও মন্তব্যে সঠিকভাবে প্রদর্শিত হয় না, তবে আমি মনে করি আপনি কী বলতে চাইছেন তা দেখতে পারেন। (এছাড়াও, একটিকে জুড়েছেন স্থান ইন্ডেন্ট স্তর বৃদ্ধি যথেষ্ট।)
মাঝামাঝি

@res ধন্যবাদ, পাইথন এমন একটি ভাষা নয় যা আমি সম্ভবত আপনি বলতে পারেন তেমন ব্যবহার করি না। দুর্দান্ত গল্ফিং (কোডগল্ফের ব্যবহারকারী স্ক্রিপ্ট অনুসারে 63 characters টি অক্ষর - এটি অবশ্যই নতুন লাইনের গণনা করা উচিত)।
গ্যারেথ

1
এক্স সত্তার বিরুদ্ধে সুরক্ষার জন্য আপনি প্রসারিত স্লাইসিং ব্যবহার করতে পারেন ''এবং লিখে বিভিন্ন অক্ষর সংরক্ষণ করতে পারেনx=x[c==x[0:1]:]
নোলেন রয়্যালটি

4

গল্ফস্ক্রিপ্ট (22 ​​টি অক্ষর)

X[0]+Y{1$(@={\}*;}/0=!

ধরে নেওয়া হয় যে ইনপুট দুটি পূর্বনির্ধারিত ভেরিয়েবল হিসাবে নেওয়া হয় Xএবং Yএটি গল্ফস্ক্রিপ্টের চেয়ে বরং অস্বাভাবিক। স্ট্যাকের উপর 1সত্য বা 0মিথ্যা জন্য পাতা ।



4

বার্লেস্ক (6 টি অক্ষর)

বারলেস্কে 6 টি অক্ষর: R@\/~[ (ধরে নেওয়া x এবং y স্ট্যাকের মধ্যে রয়েছে action কার্যত এখানে দেখুন ))



3

পিএইচপি, 90 টি অক্ষর

<?function s($x,$y){while($a<strlen($y))if($y[$a++]==$x[0])$x=substr($x,1);return $x=="";}

আপনি ifবিবৃতিটি সরাতে এবং এটিকে সরল করতে পারেন $x=substr($x,$y[$a++]==$x[0]): আদর্শ one.com/Ch9vK
মেল্লামোকব

পুনরাবৃত্তিটি ব্যবহার করে এখানে একটি সামান্য খাটো character২-চরিত্রের সমাধান দেওয়া হয়েছে: ideone.com/IeBns
মেল্লামোকব


3

কফিস্ক্রিপ্ট 112 100 95 89

কোড গল্ফে আমার প্রথম প্রচেষ্টা ... আশা করি আমি আমার পরিবারকে লজ্জা দেব না!

z=(x,y)->a=x.length;return 1if!a;b=y.indexOf x[0];return 0if!++b;z x[1..a],y[b..y.length]

সম্পাদনা : দেখা যাচ্ছে কফিস্ক্রিপ্টটি হোয়াইটস্পেসের চেয়ে বেশি ক্ষমাশীল।

এটিকে কিছুটা সুন্দর করে তোলার জন্য কিছু পরামর্শের জন্য রেস এবং পিটার টেলরকে ধন্যবাদ


আরো কয়েকটি অক্ষর নিম্নরূপ কাটানো যেতে পারে (এটি ডান একটি মন্তব্যে প্রদর্শন করবে না, কিন্তু আমি মনে করি আপনি দেখতে পাবেনা আমি কি বলতে চাচ্ছি): z=(x,y)-> a=x.length return 1if a==0 b=y.indexOf x[0] return 0if b<0 z x[1..a],y[b+1..y.length]। (কিছু কিছু ব্রাউজারে যেমন ক্রোম, আপনি সঠিকভাবে ডান ক্লিক করে প্রদর্শিত মন্তব্য কোড দেখতে পারেন, তারপর উপাদান পরিদর্শন।)
মাঝামাঝি

a.lengthনা, নেতিবাচক হতে যাচ্ছে যাতে আপনি প্রতিস্থাপন একটি অক্ষর আরো সঞ্চয় করতে পারেন if a==0সঙ্গে if a<1। কফিস্ক্রিপ্টের টোকেনাইজেশন কীভাবে কাজ করে তা আমি জানি না, তবে এটি যদি if0দুটি টোকেন হিসাবে লেস হয় তবে আপনি উভয় শর্ত (অর্থাৎ if1>a) বিপরীত করে আরও দুটি সঞ্চয় করতে পারবেন ।
পিটার টেলর

ভাল দিক. if1>aবৈধ নয়, তবে if!aএটি একটি চরিত্র খাটো! আমি আরও বুঝতে পেরেছিলাম যে আমি একটি অতিরিক্ত চরিত্রটি রূপান্তর b+1করতে bএবং পূর্ববর্তী লাইনে এটি বাড়িয়ে তুলতে পারি, একই ifকৌশলটি সম্ভব করে তোলে কারণ এটি 0 / নন-0 পরিস্থিতি নিয়ে কাজ করে।
জনো

3

সি #, 70 113 107 90 টি অক্ষর

static bool S(string x,string y){return y.Any(c=>x==""||(x=x.Remove(0,c==x[0]?1:0))=="");}

6
এটি কি পরেরটির চেয়ে সাবস্ট্রিংয়ের সন্ধান করে না?
গ্যারেথ

হ্যাঁ, আমি ভুল লিখছি এখনই ঠিক করা উচিত।
মাইজার

1
লিনক হিসাবে মজাদার, আমি মনে করি পরিবর্তে পুনরাবৃত্তি ব্যবহার করে আপনি 10% সংরক্ষণ করতে পারেন।
পিটার টেলর

এখানে আমার সেরা চেষ্টা। এখনও লম্বা। static bool S(string x,string y){if(x!=""&&y=="")return false;return x==""||S(y[0]==x[0]?x.Remove(0,1):x,y.Remove(0,1));}
মাইজার

আপনি পুনরাবৃত্তিকে একটিকে হ্রাস করতে পারেন x==""||y!=""&&S(...)তবে এটি আপডেট হওয়া লিনক সংস্করণের চেয়ে দীর্ঘ। ভাল ব্যবহার Any!
পিটার টেলর

3

গণিত 19 17 27

LongestCommonSequenceদুটি স্ট্রিংয়ের দীর্ঘতম অব্যাহত অনুচ্ছেদটি প্রদান করে। (বিভ্রান্ত হতে হবে নাLongestCommonSubsequence , যা দীর্ঘতম সংলগ্ন অনুচ্ছেদটি প্রদান করে।

দুটি স্ট্রিংয়ের মধ্যে দীর্ঘতম সুসংগত অনুষঙ্গটি প্রথম কিনা তা নীচে পরীক্ষা করে। (সুতরাং আপনাকে অবশ্যই বৃহত্তর স্ট্রিংয়ের পরে সংক্ষিপ্ত স্ট্রিং লিখতে হবে))

LongestCommonSequence@##==#& 

উদাহরণ

LongestCommonSequence@## == # &["", "z00"]
LongestCommonSequence@## == # &["z00", "z00"]
LongestCommonSequence@## == # &["anna", "banana"]
LongestCommonSequence@## == # &["Anna", "banana"]

সত্য সত্য সত্য মিথ্যা

সমালোচনামূলক পরীক্ষাটি তৃতীয়, কারণ "আনা" "কলা" তে স্বতন্ত্রভাবে অন্তর্ভুক্ত রয়েছে।


3

পাইথন 3.8 (প্রাক রিলিজ) , 42 বাইট

lambda a,b:''in[a:=a[a[:1]==c:]for c in b]

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

পাইথন 3.8 (প্রাক রিলিজ) , 48 বাইট

lambda a,b,j=0:all((j:=1+b.find(c,j))for c in a)

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

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

lambda a,b:re.search('.*'.join(a),b)>0
import re

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

লিনের এই উত্তরটি থেকে অনুলিপি করা হয়েছে । >0যদি শুধু truthy / falsey আউটপুট ঠিক আছে বাদ দেওয়া যেতে পারে।

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

f=lambda a,b:b and f(a[a[:1]==b[0]:],b[1:])or''==a

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

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

lambda a,b:reduce(lambda s,c:s[c==s[:1]:],b,a)==''

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


ওয়ালারসের দুর্দান্ত ব্যবহার।
জোনাথন অ্যালান

2

সি - 74 71 64

এটি পিটার টেলরের সমাধানটিকে পরাভূত করে না, তবে আমি মনে করি এটি মজাদার (

main(int c,char**v){for(;*v[1]!=0;++v[1])v[2]+=*v[1]==*v[2];return*v[2];}

main(int c,char**v){for(;*v[1];++v[1])v[2]+=*v[1]==*v[2];return*v[2];}


main(c,v)char**v;{while(*v[1])v[2]+=*v[1]++==*v[2];return*v[2];}

এবং অবরুদ্ধ:

main(int argc, char** argv){
   char * input = argv[1];
   char * test  = argv[2];

   // advance through the input string. Each time the current input
   // character is equal to the current test character, increment
   // the position in the test string.

   for(; *input!='\0'; ++input) test += *input == *test;

   // return the character that we got to in the test string.
   // if it is '\0' then we got to the end of the test string which
   // means that it is a subsequence, and the 0 (EXIT_SUCCESS) value is returned
   // otherwise something non-zero is returned, indicating failure.
   return *test;
}

এটি পরীক্ষা করার জন্য আপনি এর মতো কিছু করতে পারেন:

./is_subsequence banana anna && echo "yes" || echo "nope"    
# yes
./is_subsequence banana foobar && echo "yes" || echo "nope"    
# nope

!=0একটি অবস্থায় কিছুটা ভার্বোজ হয় ... প্রোগ্রাম বনাম ফাংশন এমন একটি বিষয় যা প্রশ্নের স্পষ্টভাবে উল্লেখ করা দরকার, এবং এখানে এটি হয় না, সুতরাং উত্তরগুলি বিভিন্ন বিকল্প গ্রহণ করে।
পিটার টেলর

লম্পট, !='\0'নন-গল্ফ কোড লেখার এটি খারাপ (ভাল?) অভ্যাস, আমি এই শেষটিকে দুটি শেষ গল্ফের মধ্যে ফেলে দিয়েছি, ভবিষ্যতে আমাকে আরও যত্নবান হতে হবে। প্রোগ্রাম বনাম ফাংশন হিসাবে, হ্যাঁ, আপনি একেবারে ঠিক বলেছেন।
গর্ডন বেইলি

@ গর্ডনবাইলি এই দ্বন্দ্বের জন্য দুঃখিত, তবে আমি একটি সংক্ষিপ্ত সংস্করণে কয়েকটি পরিবর্তন করেছি।
Oldrinb


2

রুবি 32 30 28

f=->a,b{b.match a.tr'','.*'}

এটি MatchDataউদাহরণস্বরূপ ফিরে আসবে যদি অন্যথায় aঅনুমান হয় bবা nilহয়।

পুরাতন সংস্করণ যা অনুচ্ছেদের পরিবর্তে সাবস্ট্রিং সন্ধান করে

রুবি 15

f=->a,b{!!b[a]}

ব্যবহার String#[](str)পদ্ধতি যা আয় strযদি strএকটি সাবস্ট্রিং selfএবং !!ফিরে যাওয়ার Booleanযদি ফিরে মান বুলিয়ান হিসাবে ব্যবহারযোগ্য হতে পারে (এবং হতে প্রয়োজন হবে না trueবা false) তাহলে এটি শুধুমাত্র 13 অক্ষর হতে পারে:

f=->a,b{b[a]}

সাবস্ট্রিং না nilহলে aএটি ফিরে আসবে b


2
দুর্দান্ত, তবে প্রশ্নটি সাবস্ট্রিংয়ের পরিবর্তে উপসর্গের জন্য জিজ্ঞাসা করে।
গ্যারেথ

2

এসডাব্লুআই-প্রোলগ, এসআইসিস্টাস

অন্তর্নির্মিত পূর্বাভাস এসআইসিস্টাসের প্রিকেট সাবলিস্ট / 2 পরীক্ষা করে দেখায় যে প্রথম তালিকার সমস্ত আইটেমও দ্বিতীয় তালিকায় উপস্থিত রয়েছে কিনা। এই প্রাকটিকটি সামঞ্জস্য লাইব্রেরির মাধ্যমে এসডাব্লুআই-প্রোলগেও উপলব্ধ, যা ক্যোয়ারী দ্বারা লোড করা যায় [library(dialect/sicstus/lists)].

নমুনা রান:

25 ?- sublist("","z00").
true.

26 ?- sublist("z00","z00").
true .

27 ?- sublist("z00","00z0").
false.

28 ?- sublist("aa","anna").
true .

29 ?- sublist("anna","banana").
true .

30 ?- sublist("Anna","banana").
false.

বাইট গণনাটি প্রযুক্তিগতভাবে 0 হতে পারে, যেহেতু আমরা এখানে যা করছি তা সবই অনুসন্ধান করা হচ্ছে, যেমন আমরা কীভাবে একটি প্রোগ্রাম পরিচালনা করি এবং এতে ইনপুট সরবরাহ করি like


2

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

সত্যের জন্য 1 মুদ্রণ করে এবং মিথ্যের জন্য কিছুই না

<?=!levenshtein($argv[1],$argv[2],0,1,1);

শব্দ 1 থেকে 2 শব্দটি সন্নিবেশ করলে সত্যিকারের ক্ষেত্রে গণনা শূন্য হয়

levenshtein

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

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

সত্যের জন্য 1 এবং মিথ্যাটির জন্য 0 প্রিন্ট করে

একটি রেজেক্স তৈরি করে

<?=preg_match(_.chunk_split($argv[1],1,".*")._,$argv[2]);

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


1
-২ বাইট: নেতৃত্ব .*অপ্রয়োজনীয়। -2 বাইট: বরাদ্দ $argvকরবেন না $a। +২৪ বাইট: array_map(preg_quote())বিশেষ অক্ষরের জন্য প্রয়োজন (দ্বিতীয় preg_quoteপ্যারামিটার এড়াতে ডেলিমেটার হিসাবে প্রথম বন্ধনী ব্যবহার করুন
তিতাস

2
@ টিটাস শীর্ষস্থানীয় * বিশেষ চরিত্রগুলি থাকলে আপনার উদ্ধৃতিটি ঠিক আছে। অ্যাসাইন গণনা করার জন্য আপনাকে ধন্যবাদ। পূর্বের সমাধান দ্বারা অনুলিপি করুন এবং পেস্ট করুন এবং এটি সম্পর্কে চিন্তা করবেন না
জার্গ হ্যালসারম্যান

1
preg_matchযতক্ষণ না ডিলিমিটর থাকে ততক্ষণ খালি রেজেক্স সম্পর্কে অভিযোগ করবে না। এটি ঠিক কিছু মিলবে। তবে প্রিগ_কোটাটি কেবলমাত্র +22 বাইট, +২৪: নয় array_map(preg_quote,str_split(...))
তিতাস

1
তবে তারপরে, ইনপুটটিকে আলফানিউমেরিক হওয়ার নিশ্চয়তা দেওয়া হয়েছে :) তবে আপনার এখনও নেতৃত্বের দরকার নেই .*
তিতাস

2

ব্র্যাচল্যাগ , 2 বাইট

⊆ᵈ

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

সঙ্গে এই উত্তর, একটি বিল্ট-ইন সম্পৃক্ত যে ইনপুট এবং আউটপুট ভেরিয়েবল মধ্যে একটি সম্পর্ক বর্ণনা করেন এবং একটি মেটা-সম্পৃক্ত যে এটি পরিবর্তন পরিবর্তে ইনপুট পরিবর্তনশীল প্রথম ও দ্বিতীয় উপাদানের মধ্যে যে একই সম্পর্ক ডিক্লেয়ার (এবং সমন্বয়সাধন করা দ্বিতীয় উপাদানটির সাথে আউটপুট ভেরিয়েবল তবে এটি যেহেতু সিদ্ধান্তগত সমস্যা যা এখানে গুরুত্বপূর্ণ নয়) X⊆Yএক্স একটি ওয়াইয়ের একটি অনুচ্ছেদে যে দাবি, তাই তাই হয় [X,Y]⊆ᵈ

এই ভবিষ্যদ্বাণী (অবশ্যই কোনটি সাফল্য বা ব্যর্থতার মধ্য দিয়ে আউটপুট দেয় যা মুদ্রণ করে true.বা false.এটি প্রোগ্রাম হিসাবে চালিত হয়) দুটি স্ট্রিংয়ের তালিকা হিসাবে ইনপুট নেয়। ইনপুট যদি কিছুটা নমনীয় হয় ...

Brachylog , 1 বাইট

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

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


1

কফিস্ক্রিপ্ট 73

পুনরাবৃত্তির পরিবর্তে রেজিেক্সগুলি ব্যবহার করে এখানে একটি বিকল্প কফিস্ক্রিপ্ট উত্তর দেওয়া হয়েছে:

z=(x,y)->a='.*';a+=c+'.*'for c in x;b=eval('/'+a+'/');(y.replace b,'')<y

খড়ের খড়ি যদি সূঁচ থেকে নির্মিত খুব লোভী রেজেক্সের সাথে মিলে যায় তবে এটি একটি খালি স্ট্রিংয়ের সাথে প্রতিস্থাপিত হবে। খড়ের খালি যদি এটি শুরু করার চেয়ে কম হয় তবে সুইটি একটি অনুচ্ছেদ ছিল।

রিটার্নস মিথ্যা যখন xএবং yউভয় খালি স্ট্রিং হয়। মনে করুন আমাদের কোনও দার্শনিক দরকার যাতে খালি স্ট্রিং নিজেই একটি অনুচ্ছেদ হয়!

(আমার আগের থেকে পৃথক উত্তর হিসাবে পোস্ট করা হয়েছে কারণ এটি ন্যায়সঙ্গত করার পক্ষে এটি যথেষ্ট আলাদা বলে মনে হয়)।


1

পাওয়ারশেল, 38

$args[1]-clike($args[0]-replace'','*')

অবশ্যই, এই জাতীয় কোনও রেজেক্স- বা প্যাটার্ন-ম্যাচিং-ভিত্তিক সমাধানটির দীর্ঘতর স্ট্রিংগুলির সাথে মারাত্মক পারফরম্যান্স সমস্যা রয়েছে। তবে যেহেতু স্বল্পতা মাপদণ্ড ...


1

এক ধরণের অ্যান্টি-সলিউশন Y এর সমস্ত অনুচ্ছেদ উত্পাদন করে:

পাইথন 93

l=len(y)
print x in[''.join(c for i,c in zip(bin(n)[2:].rjust(l,'0'),y)if i=='1')for n in range(2**l)]

1

এপিএল (31)

স্ট্রিং হ্যান্ডলিং এপিএলে কিছুটা ঘাটতি।

{(⊂'')∊N←⍵↓⍨¨1,⍨=/⊃¨⍵:~×⍴⊃N⋄∇N}

ব্যবহার:

      {(⊂ '') ∊N ← ⍵ ↓ ⍨¨1, ⍨ = / ⊃¨⍵: ~ × ⋄∇N⋄∇N} 'আনা' 'কলা'
1
      {(⊂ '') ∊N ← ⍵ ↓ ⍨¨1, ⍨ = / ⊃¨⍵: ~ × ⋄∇N⋄∇N Anna 'আনা' 'কলা'
0
      {(⊂ '') ∊N ← ⍵ ↓ ⍨¨1, ⍨ = / ⊃¨⍵: ~ × ⋄∇N⋄∇N} '' 'কলা'
1

1

পাইথন 132

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

def f(i):
    s=x;j=0
    while j<len(s):t=~i%2;s=[s[:j]+s[j+1:],s][t];j+=t;i>>=1
    return s==y
print True in map(f,range(1,2**len(x)))


1

পাইথন ( 75 52)

s=lambda a,b:a==''or b>''and s(a[a[0]==b[0]:],b[1:])

সহজ পুনরাবৃত্তি সমাধান। প্রথমবারের মতো গল্ফিং, সুতরাং এটি হুইটল করার কোনও পরামর্শ খুব প্রশংসা করা হয়েছে :)

নিম্নলিখিত সঙ্গে পরীক্ষিত:

assert s('anna', 'banana') == True
assert s('oo0', 'oFopp0') == True
assert s 'this', 'this is a string') == True
assert s('that', 'this hat is large') == True
assert s('cba', 'abcdefg') == False

কিছু চালাক বুলিয়ান ট্রিক্সের জন্য @ লিরিটোসিস্টকে ধন্যবাদ।


1
আপনি এটিকে 52 টি অক্ষরে নামিয়ে আনতে পারেন:s=lambda a,b:a==''or b>''and s(a[a[0]==b[0]:],b[1:])
lirtosiast

ধন্যবাদ, এই বুদ্ধিমান, বুলিয়ানটি
বিভাজনে

1

পিএইচপি, 75 65 64 বাইট

for(;$p=@strpos(_.$argv[2],$c=$argv[1][$i++],$p+1););echo""==$c;

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়; 1সত্যের জন্য প্রিন্ট করে , মিথ্যা জন্য খালি স্ট্রিং। সাথে চালাও -r

ব্যাখ্যা:

  • strposfalseসুই $cখড়ের খালি $argv[2](অবস্থানের পরে $p) এ না থাকলে ফিরে আসে ,
    যার ফলে লুপটি ভেঙে যায়।
  • strposfalseশেষে ফাঁকা লুপটি ভেঙে খালি সুইয়ের জন্যও ফিরে আসে $argv[1]
  • যদি $argv[1]একটি subsequence হয় $argv[2], $cখালি যখন লুপ বিরতি থাকবে।
  • strposসতর্কতা @দমন করা প্রয়োজন Empty needle

+$pতার পরিবর্তে $p+1আন্ডারস্কোরের প্রয়োজন নেই
জার্গ হালসারম্যান

খড়খড়ের +1স্ট্রিংয়ে এগিয়ে যাওয়ার জন্য @ জার্গএলসারম্যান প্রয়োজন; এবং আন্ডারস্কোর সূচনাটি এড়িয়ে চলে $p=-1। কিন্তু ... আমি এড়াতে পারেন false!==
তিতাস

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