ট্র্যাক
/
Java
Java
/
অনুশীলনী
/
পাখি পর্যবেক্ষক
পাখি পর্যবেক্ষক

পাখি পর্যবেক্ষক

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

ভূমিকা

অ্যারে

জাভাতে অ্যারে হলো একই টাইপের একাধিক মান একটি কাঠামোয় জমা রাখার একটি উপায়। অন্য ডেটা স্ট্রাকচারের মতো নয়, অ্যারে একবার তৈরি হলে তার আকার আর পরিবর্তন করা যায় না। ইনডেক্স ব্যবহার করে অ্যারেতে এলিমেন্ট অ্যাসাইন করা যায় বা অ্যারে থেকে সেগুলো বের করা যায়। জাভার অ্যারেতে জিরো-বেজড ইনডেক্সিং ব্যবহৃত হয়: প্রথম এলিমেন্টের ইনডেক্স 0, দ্বিতীয় এলিমেন্টের ইনডেক্স 1, ইত্যাদি।

অ্যারে ইনিশিয়ালাইজ করার স্ট্যান্ডার্ড সিনট্যাক্স হলো:

type[] variableName = new type[size];

এখানে type হলো অ্যারেতে থাকা এলিমেন্টগুলোর টাইপ, যা একটি প্রিমিটিভ টাইপ (যেমন int) বা একটি ক্লাস (যেমন String) হতে পারে।

size হলো এই অ্যারেটি যতগুলো এলিমেন্ট ধারণ করবে তার সংখ্যা (যা পরে আর পরিবর্তন করা যাবে না)। অ্যারে তৈরি হওয়ার পর এলিমেন্টগুলো তাদের ডিফল্ট মানে ইনিশিয়ালাইজ হয় (সাধারণত 0, false বা null)।

// Declare array with explicit size (size is 2)
int[] twoInts = new int[2];

শর্টকাট নোটেশন ব্যবহার করেও অ্যারে ডিফাইন করা যায়, যার মাধ্যমে আপনি একইসাথে অ্যারে তৈরি করতে এবং তার মান সেট করতে পারেন:

// Two equivalent ways to declare and initialize an array (size is 3)
int[] threeIntsV1 = new int[] { 4, 9, 7 };
int[] threeIntsV2 = { 4, 9, 7 };

যেহেতু এখন কম্পাইলার বুঝতে পারে অ্যারেতে কতগুলো এলিমেন্ট থাকবে, তাই দৈর্ঘ্য বাদ দেওয়া যায়।

বন্ধনীর মধ্যে ইনডেক্স লেখার নোটেশন ব্যবহার করে অ্যারের এলিমেন্ট অ্যাসাইন ও অ্যাক্সেস করা যায়:

// Assign second element by index
twoInts[1] = 8;

// Retrieve the second element by index and assign to the int element
int secondElement = twoInts[1];

অ্যারের বৈধ ইনডেক্সের বাইরের কোনো ইনডেক্স অ্যাক্সেস করলে IndexOutOfBoundsException হয়।

অ্যারে ম্যানিপুলেট করা যায় হয় কোনো অ্যারে ইনস্ট্যান্সের মেথড বা প্রপার্টি কল করে, নয়তো Arrays ক্লাসে ডিফাইন করা স্ট্যাটিক মেথড ব্যবহার করে (সাধারণত শুধু জেনেরিক কোডে ব্যবহৃত হয়)। length প্রপার্টিতে একটি অ্যারের দৈর্ঘ্য থাকে। এটা এভাবে অ্যাক্সেস করা যায়:

int arrayLength = someArray.length;

জাভা এছাড়াও একটি দরকারি ইউটিলিটি ক্লাস java.util.Arrays দেয়, যেখানে অ্যারে সংক্রান্ত অনেক কাজের মেথড আছে (যেমন Arrays.equals)।

জাভা মাল্টি-ডাইমেনশনাল অ্যারে-ও সাপোর্ট করে, যেমন int[][] arr = new int[3][4];, যা খুবই কাজের হতে পারে।

অ্যারে আসলে একটি _কালেকশন_ও, তাই ইনডেক্স দিয়ে মান অ্যাক্সেস করার পাশাপাশি for-each লুপ ব্যবহার করে তার সব মানের উপর ইটারেশন করা যায়:

char[] vowels = { 'a', 'e', 'i', 'o', 'u' };

for(char vowel: vowels) {
    // Output the vowel
    System.out.print(vowel);
}

// => aeiou

কোন মানগুলোর উপর ইটারেশন করবেন সে বিষয়ে আরও নিয়ন্ত্রণ চাইলে for লুপ ব্যবহার করা যায়:

char[] vowels = { 'a', 'e', 'i', 'o', 'u' };

for (int i = 0; i < 3; i++) {
    // Output the vowel
    System.out.print(vowels[i]);
}

// => aei

নির্দেশনা

আপনি একজন উৎসাহী পাখি-পর্যবেক্ষক, যিনি গত সাত দিনে আপনার বাগানে কতগুলো পাখি এসেছে তার হিসাব রাখেন।

আপনার ছয়টি কাজ আছে, সবগুলোই আপনার বাগানে আসা পাখির সংখ্যা নিয়ে।

1. গত সপ্তাহের সংখ্যাগুলো কী ছিল তা দেখুন

তুলনার প্রয়োজনে আপনি সবসময় গত সপ্তাহের সংখ্যাগুলোর একটি কপি কাছে রাখেন, যেগুলো ছিল: 0, 2, 5, 3, 7, 8 আর 4। BirdWatcher.getLastWeek() মেথডটি বাস্তবায়ন করুন, যা গত সপ্তাহের সংখ্যাগুলো রিটার্ন করে:

BirdWatcher.getLastWeek();
// => [0, 2, 5, 3, 7, 8, 4]

2. আজ কত পাখি এসেছে তা দেখুন

BirdWatcher.getToday() মেথডটি বাস্তবায়ন করুন, যা রিটার্ন করে আজ আপনার বাগানে কত পাখি এসেছে। পাখির সংখ্যাগুলো দিন অনুযায়ী সাজানো, যেখানে প্রথম এলিমেন্টটি সবচেয়ে পুরনো দিনের সংখ্যা আর শেষ এলিমেন্টটি আজকের সংখ্যা।

int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getToday();
// => 1

3. আজকের সংখ্যা বাড়ান

BirdWatcher.incrementTodaysCount() মেথডটি বাস্তবায়ন করুন, যা আজকের সংখ্যা বাড়ায়:

int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.incrementTodaysCount();
birdCount.getToday();
// => 2

4. কোনো দিন পাখি না আসার ঘটনা ছিল কি না দেখুন

BirdWatcher.hasDayWithoutBirds() মেথডটি বাস্তবায়ন করুন, যা true রিটার্ন করে যদি এমন কোনো দিন থাকে যেদিন বাগানে শূন্য পাখি এসেছে; অন্যথায় false রিটার্ন করে:

int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.hasDayWithoutBirds();
// => true

5. প্রথম কয়েক দিনে আসা পাখির সংখ্যা হিসাব করুন

BirdWatcher.getCountForFirstDays() মেথডটি বাস্তবায়ন করুন, যা সপ্তাহের শুরু থেকে আপনার বাগানে আসা পাখির সংখ্যা রিটার্ন করে, তবে হিসাবটি সপ্তাহের শুরুর নির্দিষ্ট সংখ্যক দিনের মধ্যে সীমাবদ্ধ রাখুন।

int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getCountForFirstDays(4);
// => 14

6. ব্যস্ত দিনের সংখ্যা হিসাব করুন

কিছু দিন অন্যদিনের চেয়ে ব্যস্ত থাকে। ব্যস্ত দিন হলো সেদিন, যেদিন পাঁচটি বা তার বেশি পাখি আপনার বাগানে এসেছে। BirdWatcher.getBusyDays() মেথডটি বাস্তবায়ন করুন, যা ব্যস্ত দিনের সংখ্যা রিটার্ন করে:

int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getBusyDays();
// => 2
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Java Exercism

পাখি পর্যবেক্ষক শুরু করতে প্রস্তুত?

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