ফাঁকা কমপোজ করা


18

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

I went to the ____ store and bought ____ today.

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

I went to the cheese store and bought cheese today.

আমরা এই ফাংশনগুলি স্ট্রিংয়ের খালি-খালি তালিকা হিসাবে প্রতিনিধিত্ব করতে পারি, যেখানে ফাঁকাগুলি কেবল স্ট্রিংয়ের মধ্যে ফাঁক হয়। উদাহরণস্বরূপ আমাদের উপরের ফাংশনটি হ'ল:

["I went to the ", " store and bought ", " today."]

এই প্রতিনিধিত্বের সাথে এই ধরণের প্রতিটি ফাংশনের জন্য কেবল একটি প্রতিনিধিত্ব এবং প্রতিটি প্রতিনিধির জন্য কেবল একটি ফাংশন রয়েছে।

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

["blue ", ""]

(ফাংশন যা ইনপুটটিতে প্রিপেন্ড blueকরে) আমরা ফাংশনটি পাই:

["I went to the blue ", " store and bought blue ", " today."]

এগুলি যদিও আরও কিছুটা জটিল হয়ে উঠতে পারে। উদাহরণস্বরূপ যদি আমরা প্রথম ফাংশনটি রচনা করি

["big ", " and ", ""]

ফলাফল হলো

["I went to the big ", " and ", " store and bought big ", "and", " today."]

কার্য

আপনার কাজটি হল স্ট্রিংয়ের খালি খালি তালিকা হিসাবে বর্ণিত দুটি ফাংশন নেওয়া এবং তার রচনাটি খালি-খালি স্ট্রিংয়ের তালিকা হিসাবে আউটপুট করা।

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

এটি উত্তরগুলি কম বাইটের সাথে আরও ভাল হওয়ার সাথে বাইটে স্কোর করা হবে।

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

["","xy"] ["ab",""] -> ["ab","xy"]
["x","y","z"] ["a","b"] -> ["xa","bya","bz"]
["xy"] ["ab"] -> ["xy"]
["","",""] ["a",""] -> ["a","a",""]
["x",""] ["","",""] -> ["x","",""]
["x","y","z"] ["a","b","c"] -> ["xa","b","cya","b","cz"]
["x","x","x"] ["a"] -> ["xaxax"]
["w","x","y","z"] ["ab","cd","e"] -> ["wab","cd","exab","cd","eyab","cd","ez"]

1
সমস্ত 3 টি বিদ্যমান উত্তর বর্তমানে ব্যর্থ হয় যদি কিছু ইন-প্রিন্টেবল এএসসিআইআই অক্ষর ইনপুটটিতে ব্যবহৃত হয় (উত্তরের উপর নির্ভর করে এসওএইচ, টিএবি বা এলএফ)। সুতরাং আমি মনে করি আপনার ইনপুটটি প্রিন্টযোগ্য এএসসিআইআইয়ের মধ্যে সীমাবদ্ধ কিনা তা সত্যই সিদ্ধান্ত নেওয়া উচিত।
আর্নৌল্ড

@ আর্নল্ড ঠিক আছে এখনকার মতো এটি নিষিদ্ধ এবং এটি পরিবর্তন করার কোনও কারণ আমি এখনও দেখিনি।
গম উইজার্ড

2
@ কেভিন ক্রুজসেন খনিটি বৈধ যেহেতু শূন্য একটি চরিত্র নয়। ভাগ্যবান ভাষা বৈশিষ্ট্য সাহায্য করে।
জোনাথন অ্যালান

1
@ শ্রুতচিলিজম ও'জাইক আমার 05 এবি 1 ই নিউলাইনগুলি দ্বারা যোগদান / বিভক্ত হয়েছিলেন। জাভাস্ক্রিপ্ট এবং হাস্কেল উত্তরগুলি ট্যাবগুলি দ্বারা যোগ / বিভক্ত হয়ে যাচ্ছে, অপ্রিন্টযোগ্য অক্ষর S `(এসওএইচ) দ্বারা সি # উত্তর, সুতরাং সেগুলিও সমস্ত অবৈধ। যদিও পার্ল 5 আমি যথেষ্ট জানি না। যাতে একটি বৈধ হতে পারে।
কেভিন ক্রুইজসেন

3
@ রোমান আপনি ধরে নিতে পারবেন না যে কোনও অক্ষর ইনপুটটিতে উপস্থিত হবে না যাতে আপনি এটি পৃথককারী হিসাবে ব্যবহার করতে পারেন। আপনাকে অবশ্যই চ্যালেঞ্জটি সমাধান করতে হবে।
গম উইজার্ড

উত্তর:


11

জেলি , 6 বাইট

j0j@ṣ0

একটি ডায়াডিক লিংক ডানদিকে প্রথম ফাংশন প্রতিনিধিত্ব এবং বামদিকে দ্বিতীয় ফাংশন প্রতিনিধিত্ব স্বীকার করে যা ফলস্বরূপ ফাংশন প্রতিনিধিত্ব করে। প্রতিটি ফাংশন উপস্থাপনা হ'ল অক্ষরের তালিকাগুলির একটি তালিকা (জেলির অন্য কোনও স্ট্রিং নেই)।

এটি অনলাইন চেষ্টা করুন! (পূর্ণ-প্রোগ্রাম আর্গুমেন্ট পাইথন স্বরলিপিতে দেওয়া হয়; স্ট্রিংগুলি তালিকায় পরিণত হয় The ফুটারটি লিঙ্কের আউটপুটটির একটি পাইথনের উপস্থাপনা দেখায়))

এখানে একটি টেস্ট-স্যুট রয়েছে যা লিংকের আউটপুটকে ইনপুটগুলির মতো পুনরায় ফর্ম্যাট করে।

কিভাবে?

জেলির মিশ্রিত প্রকারের তালিকাটি স্থানধারক হিসাবে পূর্ণসংখ্যা শূন্যটি ব্যবহার করে উপস্থাপনের পুরো ডোমেনটিকে (অক্ষরের তালিকার কোনও তালিকা) মঞ্জুরি দেওয়ার জন্য গ্রহণ করে:

j0j@ṣ0 - Link: b, a        e.g.    b = [['a','b'],['c','d'],['e']]
       -                   ...and  a = [['w'],['x'],['y'],['z']]
                             (i.e. test-case ["w","x","y","z"] ["ab","cd","e"])
j0     - join b with zeros         ['a','b',0,'c','d',0,'e']    
  j@   - join a with that          ['w','a','b',0,'c','d',0,'e','x','a','b',0,'c','d',0,'e','y','a','b',0,'c','d',0,'e','z']
    ṣ0 - split at zeros            [['w','a','b'],['c','d'],['e','x','a','b'],['c','d'],['e','y','a','b'],['c','d'],['e','z']
                             (i.e.: ["wab","cd","exab","cd","eyab","cd","ez"])

আমাদের যদি জেলির যে কোনও মিশ্র তালিকার (যে কোনও গভীরতা বা আকারের অন্তর্ভুক্ত) সাথে মোকাবিলা করার প্রয়োজন হয় তবে আমরা এই আটটি বাইটার ব্যবহার করতে পারি: j,©⁹jœṣ®যা স্থানধারক হিসাবে যুক্তযুক্ত যুক্তি ব্যবহার করে।



5

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

lambda a,b:(v:='&'.join(a+b)+'$').join(b).join(a).split(v)

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

এটি অনলাইন চেষ্টা করুন! অথবা পরীক্ষা-স্যুটটি দেখুন

কিভাবে?

প্রথমে একটি বিভাজক স্ট্রিং গঠন করে v, যা ভিতরে aবা খুঁজে পাওয়া যায় না b। তারপরে bঅনুলিপিগুলিতে স্ট্রিংগুলিকে যুক্ত করে একটি স্ট্রিং তৈরি করে v। তারপরে তার aঅনুলিপিগুলিতে স্ট্রিংগুলিকে যুক্ত করে একটি স্ট্রিং তৈরি করে । পরিশেষে vস্ট্রিংগুলির তালিকা দেওয়ার জন্য উদাহরণস্বরূপ স্ট্রিংটি বিভক্ত হয় ।

যদিও নিশ্চিতকরণটি অন্তর্ভুক্ত vনয় aবা bআমাদের অবশ্যই এটিও নিশ্চিত করতে হবে যে vআমাদের ক্ষেত্রে সমস্ত স্ট্রিং সমান aএবং একইরকম তাড়াতাড়ি আমাদের বিভক্ত করে তোলে b। এটি করার জন্য আমরা vউভয় তালিকায় সমস্ত স্ট্রিংগুলিতে একটি স্ট্রিংয়ের উদাহরণ দিয়ে এখানে গঠন করে (এখানে '&') এবং একটি অতিরিক্ত, আলাদা অক্ষর (এখানে '$') যুক্ত করি। নোট করুন যে কোনওভাবে বিচ্ছিন্নভাবে করা যথেষ্ট নয় কারণ ইনপুটগুলির সমস্ত স্ট্রিং নির্বাচিত চরিত্রের সমান হতে পারে।


যেখানে আপনি &প্রয়োজন একটি উদাহরণ ইনপুট দিতে পারেন ? এবং ব্যবহার ''.join(a+b)+'$'করা যথেষ্ট নয়?
গম উইজার্ড 14

আমার কিছুটা সময় লেগেছিল তবে ['$','$'] ['$','$']এক হবে।
গম উইজার্ড

হ্যাঁ, যদি সমস্ত স্ট্রিং নির্বাচিত '$'চরিত্রের সমান হয় এবং ফলাফল একাধিক স্ট্রিং হয়ে যায় তবে তাড়াতাড়ি বিভাজন এড়াতে আমাদের সেখানে আলাদা চরিত্রের প্রয়োজন।
জোনাথন অ্যালান

2

05 এ বি 1 , 4 15 19 9 11 বাইট

«TýR©ý¹sý®¡

জেলি উত্তরের বিপরীতে, 05AB1E এর স্ট্রিং "0", পূর্ণসংখ্যার 0এবং ভাসমানগুলি 0.0সমস্ত (কিছুটা) সমান, তাই আমি কোনও পূর্ণসংখ্যার দ্বারা বিভক্ত / যোগদান করতে পারি না। এই কারণেই আমাদের +15 বাইটগুলি কর্মক্ষেত্র হিসাবে পেয়েছিল, যদিও আমি এখন এটি 9 বাইটে গল্ফ করেছি। 2 টি বাগ খুঁজে পাওয়ার জন্য @ জোনাথন অ্যালানকে ধন্যবাদ ।

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

ব্যাখ্যা:

«            # Merge the two (implicit) input-lists together
 Tý          # Then using a "10" delimiter join all strings together
   R         # Reverse this string
    ©        # Store this string in variable `®` (without popping)
     ý       # Use this string as delimiter to join the second (implicit) input-list
      ¹sý    # Then join the first input-list by this entire string
         ®¡  # And split it back on variable `®` so it's the expected list of strings
             # (after which this result is output implicitly)

2
ইনপুটটিতে নতুন লাইন থাকলে এটি ব্যর্থ হয় (ওপি বলেছে যে ইনপুটটি বর্তমানে সীমিত নয়)।
এরিক আউটগল্ফার


@ এরিকথ আউটগল্ফার অবশ্যই আরও কিছু গল্ফ করা যেতে পারে তবে আপাতত দ্রুত এবং নোংরা ফিক্স তৈরি করেছেন।
কেভিন ক্রুইজসেন

1
আহ, এই সম্পর্কে দুঃখিত ... ইনপুট তালিকাগুলিতে কেবল নিউলাইনগুলি যুক্ত স্ট্রিং থাকলে এটি কাজ করবে না :( (তাড়াতাড়ি বিভক্ত হয়ে যাবে))
জোনাথন অ্যালান

1
@ জোনাথান অ্যালান লোল .. আহা ভাল, আমি মনে করি আমি এই বাগগুলি সন্ধানের জন্য আপনাকে কেবল ধন্যবাদ জানাতে পারি .. আশা করি এটি এখনই ঠিক হয়ে গেছে এবং আপনি আর কিছু পাবেন না .. যদিও আপনার অনুভূতি আমার হতে পারে ..
কেভিন ক্রুইজসেন

2

ওল্ফ্রাম ভাষা (গণিত) , 62 61 বাইট

""<>#&/@Flatten[#~(R=Riffle)~I/.I->#2~R~I]~SequenceSplit~{I}&

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

-১ রোমানকে ধন্যবাদ


এটি বৈধ আউটপুট না হলেও, এটি এমন একটি ফাংশন দেয় যা আসলে কাজ করে .. (34 বাইট)

(g=a""<>a~Riffle~#&)[#]@*g[#2]&

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


1
রিসাইক্লিং দ্বারা 61 বাইটRiffle
রোমান

2

জাপট , 8 বাইট

আত্তীকরণ জনাথন এর পদক্ষেপ

qVqN²)qN

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

qVqN²)qN     :Implicit input of arrays U & V (N=[U,V])
q            :Join U with
 Vq          :  V joined with
   N²        :    Push 2 to N (modifying the original), which gets coerced to a string
             >     e.g., N=[["a","b"],["c","d"]] -> N=[["a","b"],["c","d"],2] -> "a,b,c,d,2"
     )       :End join
      qN     :Split on the modified N, which, again, gets coerced to a string
             > e.g., N=[["a","b"],["c","d"],2] -> "a,b,c,d,2"

কি Nএই ক্ষেত্রে? যদি আমি এটি সঠিকভাবে বুঝতে পারি (ট্রাইটি-লিঙ্কের অনুসন্ধান কার্যকারিতাটি ব্যবহার করে), এটি Nদুইবার পুনরাবৃত্তি করে ( )। এরপরে এটি দ্বিতীয় ইনপুট V( VqN²) এ যোগ দেওয়ার জন্য এটি ব্যবহার করে এবং তারপরে প্রথম (অন্তর্নিহিত) ইনপুট U( q...)) এ যোগ দেওয়ার জন্য পুরো স্ট্রিংটি ব্যবহার করে । এবং অবশেষে N( qN) এর ফলাফলের স্ট্রিংগুলিকে বিভক্ত করে । তবে Nএ ক্ষেত্রে কী?
কেভিন ক্রুইজসেন

আহ অপেক্ষা করুন, আমি মনে করি অনুসন্ধানে আমি ভুল p(...)পদ্ধতিটি দেখেছি । এটি 2উভয় ইনপুট সংযুক্ত করে একত্রিত হয় না। কেবলমাত্র এর ফলাফল আসে [["w","x","y","z"],["ab","cd","e"],2]এবং এতে যোগদানের জন্য এটি পুরো তালিকাটি ব্যবহার করে। চূড়ান্ত কেন সেই ক্ষেত্রে ফলাফল-তালিকায় qNছেড়ে দেয় না 2? বা আসলটি সংশোধন করে N?
কেভিন ক্রুইজসেন

1
কেভিন ক্রুজসেন, একটি ব্যাখ্যা যোগ করেছেন তবে আপনি এটির বেশিরভাগই আবিষ্কার করেছেন। এবং হ্যাঁ, pushজেএসের একটি অ্যারেতে উপাদানগুলিকে যুক্ত করে মূল অ্যারেটি সংশোধন করে।
শেগি


1

জে , 44 43 42 29 বাইট

_<;._1@,(;@}:@,@,.(,_&,)&.>/)

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

-13 বাইট মাইল ধন্যবাদ!

এই পদ্ধতির পূর্ণসংখ্যার ব্যবহার হয় এবং মাইলের কারণে হয়।

স্ট্রিং সঙ্গে মূল পদ্ধতির

g=.[:}.@,,.
f=.(<@0<@;;._1@,];@g<"0@[)<@0<@g]

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

দ্রষ্টব্য: আমি অ্যাকাউন্টে টিআইও -3 সামঞ্জস্য করেছি f=.

জনাথন অ্যালেনের পদ্ধতি ব্যবহার করে, জে।

এটি গল্ফের জন্য আশ্চর্যজনকভাবে কঠিন ছিল, যেহেতু জে "জয়েন" পদ্ধতিটি অন্তর্নির্মিত নেই, এবং আমি এটি আগ্রহী হয়ে উঠছি কিনা তা দেখার জন্য আগ্রহী।

g সাহায্যকারী ক্রিয়া যা আমাদের "যোগদান" দেয়


ইনপুট হিসাবে পূর্ণসংখ্যার তালিকার সাথে কাজ করে, আমি একটি 29 চর সমাধান পেয়েছি , কোথায় বিভক্ত হবে তা জানার জন্য সেন্ডিনেল মান হিসাবে _<;._1@,(;@}:@,@,.(,_&,)&.>/)অনন্ত ব্যবহার করে । যোগদান করে প্রথমে একটি বড় বাক্স তৈরি করতে হ্রাস ব্যবহার করে সম্পন্ন করা হয়, তারপরে এটির ঠিক অ্যারে শেপিং। _<;._1/
মাইল

ঐটা চিত্তাকর্ষক. ধন্যবাদ @ মাইলস। এইটি অবশ্যই স্পষ্টভাবে অনুভব করেছিল যে উন্নতি করার মতো জায়গা আছে কিন্তু আমি কীভাবে তা দেখতে পেলাম না।
জোনাহ

@ মাইলগুলি কি g&.:(a.&i.&.>)বাইটগুলির দিকে গণনা করা উচিত নয় বা আমি কিছু মিস করছি?
জোনাহ

ওপি উল্লেখ করেছে যে ইনপুট অক্ষরের একটি তালিকা বা পূর্ণসংখ্যার তালিকা হিসাবে হতে পারে, যাতে সাহায্যকারীের কাজটি সহজ দেখার জন্য চর অ্যারের বাক্সগুলি থেকে ইন্ট অ্যারেগুলির বাক্সে রূপান্তর করা
মাইল

আহ আমি তা ভুলে গেছি, ধন্যবাদ
জোনাহ



0

পার্ল 5 (-lp ), 20 বাইট

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

chop($n=<>);s/  /$n/g

Tio

ট্যাব এবং নিউলাইনটি বেছে নেওয়া হয়েছিল কারণ পরীক্ষার কেসগুলি পরীক্ষা করতে আরও সুবিধাজনক, অন্যথায় মুদ্রণযোগ্য অক্ষরে \1এবং be\2

( -02l012p)

chop($n=<>);s//$n/g

Tio

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

  • -02 : ইনপুট রেকর্ড বিভাজক সেট করতে \2
  • -l: ডিফল্ট আর্গুমেন্ট থেকে ইনপুট বিভাজক অপসারণ $_এবং ডিফল্ট আউটপুট আউটপুট রেকর্ড বিভাজক যোগ করতে
  • -012: \012( আউটপুট রেকর্ড পৃথককারী সেট করতে \n) যাতে আউটপুট চেক করা সহজ হয়
  • -p : ডিফল্ট যুক্তি মুদ্রণ করতে

  • $n=<>; : পরবর্তী রেকর্ড পড়তে এবং নির্ধারণ করতে $n

  • chop$n; : থেকে বিভাজক অপসারণ $n
  • s/\x1/$n/g: এর \1সাথে সমস্ত উপস্থিতি প্রতিস্থাপন$n

2
আমার পার্ল প্রায় অস্তিত্বহীন তবে আমি বিশ্বাস করি যে এটি একটি সম্পূর্ণ প্রোগ্রাম, আইও-র জন্য, তালিকা বিভাজক হিসাবে একটি ট্যাব এবং দুটি তালিকা পৃথক করার জন্য একটি নতুন লাইন। এই অক্ষরগুলির সাথে এটি কীভাবে ইনপুট গ্রহণ করতে পারে?
জনাথন অ্যালান

@ জোনাথান অ্যালান, আপনি ঠিক বলেছেন, সাবমিট করার সময় আমার কাছে ব্যাখ্যা যুক্ত করার সময় ছিল না আমি যা করার চেষ্টা করব
জোনাথান অ্যালান

0

জাভাস্ক্রিপ্ট (ES6),  62  59 বাইট

3 শে বাইট সংরক্ষিত হয়েছে @ শেগগিকে ধন্যবাদ

এটি সমস্ত চরিত্র সমর্থন করার জন্য লুইসের উত্তরের (এখন মুছে ফেলা) একটি স্থির সংস্করণ ।

a=>b=>a.map(e=escape).join(b.map(e)).split`,`.map(unescape)

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

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