প্রসঙ্গ সহ কনটিকেট স্ট্রিংস


13

প্রসঙ্গ সহ স্ট্রিংস

এই চ্যালেঞ্জের উদ্দেশ্যে, প্রসঙ্গের সাথে একটি স্ট্রিং হ'ল তিনটি স্ট্রিং, ডাকে বাম প্রসঙ্গ , ডেটা অংশ এবং ডান প্রসঙ্গে । এটি একটি দীর্ঘ স্ট্রিংয়ের একটি স্তরকে প্রতিনিধিত্ব করে। আমরা |বিভাজক হিসাবে উল্লম্ব পাইপ ব্যবহার করি , সুতরাং প্রসঙ্গের সাথে স্ট্রিংয়ের একটি উদাহরণ cod|e-go|lf, যেখানে বাম প্রসঙ্গটি রয়েছে cod, ডেটা রয়েছে e-goএবং ডান প্রসঙ্গে lf। এই উদাহরণটিতে সাবস্ট্রিং প্রতিনিধিত্ব করে e-goএর code-golf

এখন, প্রসঙ্গের সাথে দুটি স্ট্রিং সংমিশ্রিত করতে, আমরা উদাহরণ হিসাবে ব্যবহার করে aa|bcc|deeএবং cc|de|eeeহিসাবে নিম্নলিখিত হিসাবে এগিয়ে চলি । আমরা ডায়াগ্রামের মতো স্ট্রিংগুলি সারিবদ্ধ করি

a a|b c c|d e e
      c c|d e|e e e

যাতে তাদের ডেটা অংশ সংলগ্ন হয়। এক্ষেত্রে উপাত্তের ডেটা অংশটি হ'ল ডেটা অংশগুলির সংমিশ্রণ bccde। এই ক্ষেত্রে, বাম প্রসঙ্গটি সেই অংশ যা প্রথম ডেটা অংশের বামদিকে আরও প্রসারিত করে aa। একইভাবে, সঠিক প্রসঙ্গটি eee, সুতরাং কনটেক্সটেশনটি প্রসঙ্গের সাথে স্ট্রিং aa|bccde|eee। দ্বিতীয় উদাহরণের জন্য, বিবেচনা করুন a|bb|cdএবং aabb|cd|যেখানে দ্বিতীয় শব্দের ফাঁকা ডান প্রসঙ্গ রয়েছে। প্রান্তিককরণ ডায়াগ্রাম হয়

  a|b b|c d
a a b b|c d|

যেখানে দ্বিতীয় শব্দের বাম প্রসঙ্গটি প্রথমটির চেয়ে আরও প্রসারিত হয়। সম্মিলন হয় aa|bbcd|

তবে অপেক্ষা করুন, একটি গ্যাচা আছে: যদি সারিবদ্ধ চিত্রের অক্ষরগুলি মেলে না, তবে কনকেন্টেশনটি বিদ্যমান নেই! উদাহরণ হিসাবে, এর ডায়াগ্রাম aa|bb|ccএবং c|c|cহয়

a a|b b|c c
      c|c|c

যেখানে bএবং cচতুর্থ কলামে দ্বিমত পোষণ করে, তাই এগুলি সম্মিলিত করা যায় না।

কাজটি

আপনার কাজটি এমন একটি প্রোগ্রাম লিখতে হবে যা প্রসঙ্গের সাথে দুটি স্ট্রিং নেবে যার অংশগুলি |উপরের মত পৃথক করা হয়েছে, এবং যদি উপস্থিত থাকে তবে তাদের উপবৃত্তিটি আউটপুট দেয় এবং না থাকলে অন্য কিছু। "অন্য কিছু" হ'ল কোনও আউটপুট সহ কোনও মান হতে পারে, যতক্ষণ না এটি প্রসঙ্গের সাথে বৈধ স্ট্রিং না হয় এবং সমস্ত ক্ষেত্রে এটি একই। তবে ত্রুটি নিক্ষেপ গ্রহণযোগ্য নয় acceptable আপনি হয় একটি STDIN-to-STDOUT প্রোগ্রাম বা একটি ফাংশন দিতে পারেন, এবং বেনামে ফাংশনগুলিও স্বীকৃত হয়। সবচেয়ে ছোট বাইট গণনা জয় এবং মানক লুফোলগুলি অনুমোদিত নয়।

পরীক্ষার কেস

aa|bcc|dee cc|de|eee -> aa|bccde|eee
a|bb|cd    aabb|cd|  -> aa|bbcd|
a|b|cccd   aab|cc|c  -> aa|bcc|cd
a|b|c      b||cd     -> a|b|cd
aa|bb|cc   c|c|c     -> None
aaa|b|c    abb|cd|d  -> None
|bb|cd     abb|c|ed  -> None
a|b|c      a||cd     -> None

উত্তর:


4

হাস্কেল, 184 182 201 199 155

s&t|(a,'|':b)<-f t,(x,'|':y)<-f$r s,x#b,a#y=r(y!r a)++b!r x|0<1=""
r=reverse
a!b=a++drop(length a-1)b
(#)a=and.zipWith(==)(r a).filter h
f=span h
h=(/='|')

উদাহরণ রান:

"|a|"&"|b|" -- returns "|ab|"
"|a|x"&"|b|" -- returns ""

কোনও মিল না থাকলে একটি খালি স্ট্রিং ফিরে আসবে। অন্যথায় ফলাফল ফিরে আসবে।

আংশিক ব্যাখ্যা:

# এটি এমন একটি ফাংশন যা দুটি স্ট্রিং পায় এবং তারা মেলে কিনা তা ফেরত দেয়।

! দুটি স্ট্রিং পায় এবং প্রথমটি দ্বিতীয় থেকে অতিরিক্ত চরিত্রের সাথে সম্মিলিতভাবে ফিরে আসে (যদি কোনও থাকে)।

প্রধান ফাংশন &ব্যবহার span (/='|')দুটি ইনপুট বিভক্ত করতে, a|b|cকরতে a, b|c, চেক যদি প্রেক্ষিতে মেলে, এবং তারপর ব্যবহার !দুইবার আউটপুট জড় করা।

সম্পাদনা করুন: ম্যাজ-লেট রিগল্ফিং বেশ কার্যকর বলে মনে হচ্ছে।


হুম, আমি আশঙ্কা করছি যে ত্রুটি নিক্ষেপ করা কোনও গ্রহণযোগ্য আউটপুট পদ্ধতি নয়, বিশেষত কোনও কাজের জন্য। |1<2=""সংজ্ঞা সংযোজন &যে সমাধান করা উচিত। আমি দুঃখিত আমি
চশমাগুলিতে

@ জগারব আসলে, এটি এটি ঠিক করবে না। স্ট্রিং '|'ঠিকঠাক না মিলে যখন খুব বেশি লক্ষণ নিয়ে একটি স্ট্রিং ফিরিয়ে দেওয়া হচ্ছে ?
গর্বিত হাসেলেলার

অবশ্যই, যতক্ষণ না এটি সমস্ত মিল না-করা ইনপুটগুলির জন্য একই স্ট্রিং।
Zgarb

3

পাইথন (242 বাইট)

import itertools as i
s='|'
j=''.join
r=reversed
m=lambda a,b:j(j(*set(p+q))for p,q in i.izip_longest(a,b,fillvalue=''))
def c(A,B):
 u,v,w,x,y,z=(A+s+B).split(s)
 try:return j(r(m(r(u+v),r(x))))[:-len(v)]+s+v+y+s+m(w,y+z)[len(y):]
 except:0

ব্যাখ্যা

ল্যাম্বডা ফাংশনটি mদুটি সাধারণ স্ট্রাক্স যতক্ষণ না ভাগ করে ততক্ষণ দুটি স্ট্রিংয়ের দীর্ঘতর দেয়। এটা তোলে খালি স্ট্রিং concatenating মাধ্যমে এই কাজটি করে ''কোন অনুপস্থিত মানের স্থানে, তারপর ফলাফলের বাঁক (যা ফর্ম নিতে পারে aa, ab, a, অথবা bম্যাচ / মেলেনি / অসম লেন্থ ক্ষেত্রে) প্রতিটি অবস্থানে অনন্য অক্ষরের একটি সেট মধ্যে। joinএকক যুক্তি প্রত্যাশা করে, তাই একাধিক উপাদান সহ একটি সেট আনপ্যাক করা এটিকে বাড়িয়ে তুলবে TypeError

মূল ফাংশন তখন

  • দ্বিতীয় শব্দটির বাম প্রসঙ্গের সাথে প্রথম শব্দটি বাম প্রসঙ্গ এবং ডেটা অংশকেm একত্রিত করতে ব্যবহার করে (বিপরীত স্ট্রিংয়ের উপরে ডান থেকে বামে)
  • তথ্য অংশ ভাগ করে,
  • এবং আবার ব্যবহার mএকত্রিত প্রথম শব্দ ডান প্রসঙ্গ সঙ্গে ডেটা অংশ এবং ডান প্রসঙ্গ সেকেন্ডের

দুটি মূল শব্দটির ডেটা অংশগুলি নতুন প্রসঙ্গে ডান এবং বাম দিক থেকে ছাঁটা হয়েছে।

যেহেতু আমরা জানি যে বিভ্রান্তিগুলির কারণে mএকটি উত্থিত হয় TypeError, এই ক্ষেত্রে আমরা ব্যতিক্রমটি ধরা এবং স্পষ্টতই ফিরে আসি None

পরীক্ষামূলক

TESTCASES = [
    ('aa|bcc|dee', 'cc|de|eee', 'aa|bccde|eee'),
    ('a|bb|cd', 'aabb|cd|', 'aa|bbcd|'),
    ('a|b|cccd', 'aab|cc|c', 'aa|bcc|cd'),
    ('a|b|c', 'b||cd', 'a|b|cd'),
    ('aa|bb|cc', 'c|c|c', None),
    ('aaa|b|c', 'abb|cd|d', None),
    ('|bb|cd', 'abb|c|ed', None),
    ('a|b|c', 'a||cd', None),
]

for A, B, R in TESTCASES:
    print '{:<10} {:<9} -> {}'.format(A, B, c(A, B))

আউটপুট

aa|bcc|dee cc|de|eee -> aa|bccde|eee
a|bb|cd    aabb|cd|  -> aa|bbcd|  
a|b|cccd   aab|cc|c  -> aa|bcc|cd 
a|b|c      b||cd     -> a|b|cd    
aa|bb|cc   c|c|c     -> None      
aaa|b|c    abb|cd|d  -> None      
|bb|cd     abb|c|ed  -> None      
a|b|c      a||cd     -> None  
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.