ট্র্যাক
/
JavaScript
JavaScript
/
অনুশীলনী
/
এলিসের মন্ত্র
এলিসের মন্ত্র

এলিসের মন্ত্র

লার্নিং অনুশীলনী

ভূমিকা

JavaScript-এ অ্যারে হলো তালিকার মতো একটি গঠন, যার কোনো নির্দিষ্ট দৈর্ঘ্য নেই এবং যা যেকোনো ধরনের প্রিমিটিভ বা অবজেক্ট ধারণ করতে পারে, এমনকি মিশ্র টাইপও।

একটি অ্যারে তৈরি করতে, তৃতীয় বন্ধনী []-এর মধ্যে এলিমেন্ট যোগ করুন। অ্যারে থেকে পড়তে, আইডেন্টিফায়ারের পরে তৃতীয় বন্ধনী []-এর মধ্যে ইনডেক্স বসান। অ্যারের ইনডেক্স শুরু হয় শূন্য থেকে।

যেমন:

const numbers = [1, 'two', 3, 'four'];
numbers[2];
// => 3

অ্যারেতে কতগুলো এলিমেন্ট আছে তা জানতে, length প্রোপার্টি ব্যবহার করুন:

const numbers = [1, 'two', 3, 'four'];
numbers.length;
// => 4

অ্যারের একটি এলিমেন্ট পরিবর্তন করতে, ইনডেক্সে একটি মান অ্যাসাইন করুন:

const numbers = [1, 'two', 3, 'four'];
numbers[0] = 'one';
numbers;
// => ['one', 'two', 3, 'four']

মেথড

প্রতিটি Array অবজেক্টে উপলব্ধ কিছু মেথড দিয়ে অ্যারেতে যোগ করা বা অ্যারে থেকে সরানো যায়। এই অনুশীলনীতে কাজ করার সময় বিবেচনা করার জন্য কয়েকটি এখানে দেওয়া হলো:

push

.push(value) ব্যবহার করে অ্যারের শেষে একটি value যোগ করা যায়। মেথডটি অ্যারের নতুন দৈর্ঘ্য রিটার্ন করে।

const numbers = [1, 'two', 3, 'four'];
numbers.push(5); // => 5
numbers;
// => [1, 'two', 3, 'four', 5]

pop

.pop() ব্যবহার করে অ্যারে থেকে শেষ valueটি সরিয়ে ফেলা যায়। মেথডটি সরানো মানটি রিটার্ন করে। এই পরিবর্তনের ফলে অ্যারের দৈর্ঘ্য কমে যাবে।

const numbers = [1, 'two', 3, 'four'];
numbers.pop(); // => four
numbers;
// => [1, 'two', 3]

shift

.shift() ব্যবহার করে অ্যারে থেকে প্রথম valueটি সরিয়ে ফেলা যায়। মেথডটি সরানো মানটি রিটার্ন করে। এই পরিবর্তনের ফলে অ্যারের দৈর্ঘ্য কমে যাবে।

const numbers = [1, 'two', 3, 'four'];
numbers.shift(); // => 1
numbers;
// => ['two', 3, 'four']

unshift

.unshift(value) ব্যবহার করে অ্যারের শুরুতে একটি value যোগ করা যায়। মেথডটি অ্যারের নতুন দৈর্ঘ্য রিটার্ন করে।

const numbers = [1, 'two', 3, 'four'];
numbers.unshift('one'); // => 5
numbers;
// => ['one', 1, 'two', 3, 'four']

splice

.splice(index, 1) ব্যবহার করে অ্যারে থেকে নির্দিষ্ট index-এ থাকা একটি value সরিয়ে ফেলা যায়। মেথডটি সরানো এলিমেন্টটি (বা এলিমেন্টগুলো) রিটার্ন করে।

const numbers = [1, 'two', 3, 'four'];
numbers.splice(2, 1, 'one'); // => [3]
numbers;
// => [1, 'two', 'one', 'four']
Advanced

এই মেথডগুলো বর্ণনার চেয়ে আরও শক্তিশালী:

  • push এবং unshift দুটোই একবারে একাধিক মান পুশ বা আনশিফট করার সুযোগ দেয়, আরও আর্গুমেন্ট যোগ করে। এই অনুশীলনী সম্পূর্ণ করতে এটি প্রয়োজন নেই।
  • স্প্লাইস দ্বিতীয় আর্গুমেন্ট বাড়িয়ে একাধিক মান সরাতে পারে। এই অনুশীলনী সম্পূর্ণ করতে এটি প্রয়োজন নেই।
  • স্প্লাইস deleteCount-এর পরে সেগুলো আর্গুমেন্ট হিসেবে যোগ করে একাধিক মান যোগও করতে পারে। এটি মান প্রতিস্থাপন করতে, বা অ্যারের মাঝখানে মান ঢোকাতে ব্যবহার করা যায় (যেমন ০টি এলিমেন্ট সরিয়ে)। এই অনুশীলনী সম্পূর্ণ করতে এটি প্রয়োজন নেই।

নির্দেশনা

জাদুকর হতে চলা এলিসের কিছু বেসিক বিষয় অনুশীলন করা দরকার। তার কাছে কার্ডের একটি স্ট্যাক আছে, যা সে নাড়াচাড়া করতে চায়।

বিষয়টি একটু সহজ করতে সে শুধু ১ থেকে ১০ নম্বরের কার্ডগুলো ব্যবহার করে, তাই তার কার্ডের স্ট্যাকটিকে সংখ্যার একটি অ্যারে দিয়ে প্রকাশ করা যায়। কোনো একটি কার্ডের পজিশন অ্যারের ইনডেক্সের সঙ্গে মিলে যায়। অর্থাৎ পজিশন ০ মানে প্রথম কার্ড, পজিশন ১ মানে দ্বিতীয় কার্ড, ইত্যাদি।

Note

দুটি ছাড়া বাকি সব ফাংশনের উচিত কার্ডের অ্যারেটি আপডেট করা এবং এরপর পরিবর্তিত অ্যারেটি রিটার্ন করা। এটি কাজ করার একটি কমন ধরন, যা বিল্ডার প্যাটার্ন নামে পরিচিত এবং যা দিয়ে আপনি সুন্দরভাবে একটার পর একটা ফাংশন জুড়ে দিতে পারেন।

দুটি ব্যতিক্রম হলো getItem, যার উচিত প্রদত্ত পজিশনের কার্ডটি রিটার্ন করা, এবং checkSizeOfStack, যার উচিত প্রদত্ত সাইজ মিলে গেলে true রিটার্ন করা।

1. স্ট্যাক থেকে একটি কার্ড বের করা

একটি কার্ড তুলতে হলে প্রদত্ত স্ট্যাক থেকে ইনডেক্স position-এর কার্ডটি রিটার্ন করুন।

const position = 2;
getItem([1, 2, 4, 1], position);
// => 4

2. স্ট্যাকের একটি কার্ড বদল করা

হাতের কিছু কৌশল দেখিয়ে ইনডেক্স position-এর কার্ডটি প্রদত্ত বদলি কার্ড দিয়ে বদলে ফেলুন। পরিবর্তিত স্ট্যাকটি রিটার্ন করুন।

const position = 2;
const replacementCard = 6;
setItem([1, 2, 4, 1], position, replacementCard);
// => [1, 2, 6, 1]

3. স্ট্যাকের উপরে একটি কার্ড যোগ করা

স্ট্যাকের উপরে একটি নতুন কার্ড যোগ করে একটি কার্ড হাজির করুন। পরিবর্তিত স্ট্যাকটি রিটার্ন করুন।

const newCard = 8;
insertItemAtTop([5, 9, 7, 1], newCard);
// => [5, 9, 7, 1, 8]

4. স্ট্যাক থেকে একটি কার্ড সরানো

স্ট্যাক থেকে প্রদত্ত position-এর কার্ডটি সরিয়ে একটি কার্ড উধাও করে দিন। পরিবর্তিত স্ট্যাকটি রিটার্ন করুন।

const position = 2;
removeItem([3, 2, 6, 4, 8], position);
// => [3, 2, 4, 8]

5. স্ট্যাক থেকে উপরের কার্ডটি সরানো

স্ট্যাকের উপরের কার্ডটি সরিয়ে একটি কার্ড উধাও করে দিন। পরিবর্তিত স্ট্যাকটি রিটার্ন করুন।

removeItemFromTop([3, 2, 6, 4, 8]);
// => [3, 2, 6, 4]

6. স্ট্যাকের নিচে একটি কার্ড যোগ করা

স্ট্যাকের নিচে একটি নতুন কার্ড যোগ করে একটি কার্ড হাজির করুন। পরিবর্তিত স্ট্যাকটি রিটার্ন করুন।

const newCard = 8;
insertItemAtBottom([5, 9, 7, 1], newCard);
// => [8, 5, 9, 7, 1]

7. স্ট্যাকের নিচ থেকে একটি কার্ড সরানো

স্ট্যাকের নিচের কার্ডটি সরিয়ে একটি কার্ড উধাও করে দিন। পরিবর্তিত স্ট্যাকটি রিটার্ন করুন।

removeItemAtBottom([8, 5, 9, 7, 1]);
// => [5, 9, 7, 1]

8. স্ট্যাকের সাইজ যাচাই করা

স্ট্যাকের সাইজ stackSize-এর সমান কি না তা যাচাই করুন।

const stackSize = 4;
checkSizeOfStack([3, 2, 6, 4, 8], stackSize);
// => false
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
JavaScript Exercism

এলিসের মন্ত্র শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, JavaScript ট্র্যাকের 37টি কনসেপ্ট159টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।