বেশিরভাগ historicalতিহাসিক কারণে, বাক্স সিনট্যাক্স এবং প্রোগ্রামিং প্যারাডিমগুলির বেশ একটি হজ পড - এটি এটিকে বিশ্রী এবং কখনও কখনও গল্ফকে হতাশ করতে পারে However তবে এটির কিছুটা কৌশল রয়েছে যা এটি অন্যান্য মূলধারার স্ক্রিপ্টের সাথে প্রায়শই প্রতিযোগিতামূলক করে তুলতে পারে slee ভাষা। এর মধ্যে একটি হ'ল বন্ধনী সম্প্রসারণ ।
দুটি ধনুর্বন্ধনী প্রসারণের প্রাথমিক ধরণ রয়েছে:
- তালিকার ধনুর্বন্ধনীগুলিতে স্বতন্ত্র স্ট্রিংগুলির অনুলিপি-বিচ্ছিন্ন তালিকা থাকতে পারে (নকল এবং খালি স্ট্রিং সহ)। উদাহরণস্বরূপ
{a,b,c,,pp,cg,pp,}
প্রসারিত হবেa b c pp cg pp
(ফাঁকা স্ট্রিংগুলির চারপাশের স্পেসগুলি নোট করুন)। - সিকোয়েন্স ব্রেসগুলিতে সিকোয়েন্স এন্ডপয়েন্টগুলি পৃথক করে থাকতে পারে
..
। Ptionচ্ছিকভাবে অন্য..
একটি অনুসরণ করতে পারে, তারপরে একটি ধাপের আকার। সিকোয়েন্স এন্ডপয়েন্টগুলি হয় পূর্ণসংখ্যা বা অক্ষর হতে পারে। ক্রমটি স্বয়ংক্রিয়ভাবে আরোহণ বা নীচে নেমে যাবে যা অনুযায়ী শেষের অবস্থানটি বেশি। উদাহরণ স্বরূপ:{0..15}
প্রসারিত হবে0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
{-10..-5}
প্রসারিত হবে-10 -9 -8 -7 -6 -5
{3..-6..2}
প্রসারিত হবে3 1 -1 -3 -5
{a..f}
প্রসারিত হবেa b c d e f
{Z..P..3}
প্রসারিত হবেZ W T Q
এর বাইরে, তালিকা ব্রেসগুলির সাথে ক্রম এবং তালিকার ধনুর্বন্ধনী উপস্থিত থাকতে পারে:
{a,b,{f..k},p}
প্রসারিত হবেa b f g h i j k p
{a,{b,c}}
প্রসারিত হবেa b c
ধনুর্বন্ধনী তার উভয় পাশের অ-হোয়াইটস্পেস স্ট্রিং দিয়ে প্রসারিত হয়। উদাহরণ স্বরূপ:
c{a,o,ha,}t
প্রসারিত হবেcat cot chat ct
এটি একত্রে একত্রিত একাধিক ধনুর্বন্ধনীগুলির জন্যও কাজ করে:
{ab,fg}{1..3}
প্রসারিত হবেab1 ab2 ab3 fg1 fg2 fg3
এটি বেশ জটিল হতে পারে। উদাহরণ স্বরূপ:
{A..C}{x,{ab,fg}{1..3},y,}
প্রসারিত হবেAx Aab1 Aab2 Aab3 Afg1 Afg2 Afg3 Ay A Bx Bab1 Bab2 Bab3 Bfg1 Bfg2 Bfg3 By B Cx Cab1 Cab2 Cab3 Cfg1 Cfg2 Cfg3 Cy C
যাইহোক, যদি বিস্তারের মধ্যে শ্বেত স্থান থাকে তবে এগুলি কেবল পৃথক বিস্তৃতি হিসাবে প্রসারিত হয়। উদাহরণ স্বরূপ:
{a..c} {1..5}
প্রসারিত হবেa b c 1 2 3 4 5
অর্ডার কীভাবে সর্বদা সংরক্ষিত থাকে তা নোট করুন।
এই চ্যালেঞ্জের জন্য এন্ট্রিগুলি উপরে বর্ণিত অনুসারে ব্যাশ বন্ধনী সম্প্রসারণ প্রসারণ করবে। নির্দিষ্টভাবে:
bash
(বা অন্যান্য শেল যে একই সম্প্রসারণ সম্পাদন করে) দ্বারা বিবর্তনের অনুমতি নেই- সিকোয়েন্স ব্রেসগুলি সর্বদা নম্বর-থেকে-সংখ্যা, লোয়ারকেস-থেকে-লোয়ারকেস বা বড় হাত থেকে বড় বড় কোনও মিশ্রণ ছাড়াই থাকবে। নম্বরগুলি 32-বিট স্বাক্ষরিত ব্যাপ্তিতে পূর্ণসংখ্যা হবে। যদি দেওয়া হয়, theচ্ছিক পদক্ষেপের আকারটি সর্বদা একটি ধনাত্মক পূর্ণসংখ্যার হবে। (নোট করুন যে ব্যাশ পাশাপাশি প্রসারিত হবে
{A..z}
, তবে এই চ্যালেঞ্জের জন্য এটি এড়ানো যেতে পারে) - তালিকার ধনুর্বন্ধনীতে পৃথক আইটেমগুলি সর্বদা কেবল উচ্চ - এবং নিম্ন-বর্ণের বর্ণমালা অক্ষর (ফাঁকা স্ট্রিং অন্তর্ভুক্ত) সমন্বিত থাকে
- তালিকার ধনুর্বন্ধনীগুলিতে অন্যান্য ধনুর্বন্ধনী প্রসারণের নির্বিচারে বাসা থাকতে পারে
- ধনুর্বন্ধনী সময় নির্বিচারে সংখ্যার হতে পারে। এটি আপনার ভাষার স্মৃতিশক্তি দ্বারা সীমাবদ্ধ থাকবে, সুতরাং প্রত্যাশাটি হ'ল আপনি তাত্ত্বিকভাবে নির্বিচার সংখ্যক কনটেন্টেশনগুলি করতে পারেন তবে যদি / আপনি যখন স্মৃতি থেকে বেরিয়ে যান যা আপনার বিরুদ্ধে গণনা করবে না।
উপরের পাঠ্যের উদাহরণগুলি টেস্টকেস হিসাবে পরিবেশন করে। সংক্ষিপ্ত আকারে, প্রতিটি আউটপুট একই লাইনের সাথে ইনপুট প্রতিটি লাইন, তারা হ'ল:
ইনপুট
{0..15}
{-10..-5}
{3..-6..2}
{a..f}
{Z..P..3}
{a,b,{f..k},p}
{a,{b,c}}
c{a,o,ha,}t
{ab,fg}{1..3}
{A..C}{x,{ab,fg}{1..3},y,}
{a..c} {1..5}
{a{0..100..10},200}r
আউটপুট
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
-10 -9 -8 -7 -6 -5
3 1 -1 -3 -5
a b c d e f
Z W T Q
a b f g h i j k p
a b c
cat cot chat ct
ab1 ab2 ab3 fg1 fg2 fg3
Ax Aab1 Aab2 Aab3 Afg1 Afg2 Afg3 Ay A Bx Bab1 Bab2 Bab3 Bfg1 Bfg2 Bfg3 By B Cx Cab1 Cab2 Cab3 Cfg1 Cfg2 Cfg3 Cy C
a b c 1 2 3 4 5
a0r a10r a20r a30r a40r a50r a60r a70r a80r a90r a100r 200r