লিপ ইয়ার (Leap Year) কী?
লিপ ইয়ার হলো এমন একটি বছর যাতে ৩৬৫ দিনের বদলে ৩৬৬ দিন থাকে। ফেব্রুয়ারি মাসে ২৮ দিনের বদলে ২৯ দিন থাকে। এটি পৃথিবীর সৌর বছরের সাথে ক্যালেন্ডারইয়ারকে সিঙ্ক্রোনাইজ রাখার জন্য করা হয়।
লিপ ইয়ার নির্ণয়ের নিয়ম
- যদি বছর ৪ দিয়ে বিভাজ্য হয় → লিপ ইয়ার (সাধারণ নিয়ম)
- কিন্তু যদি বছর ১০০ দিয়ে বিভাজ্য হয় → লিপ ইয়ার নয় (এক্সেপশন)
- যদি বছর ৪০০ দিয়ে বিভাজ্য হয় → লিপ ইয়ার (এক্সেপশনের এক্সেপশন)
উদাহরণ:
- ২০০০: ৪০০ দিয়ে বিভাজ্য → লিপ ইয়ার ✓
- ১৯০০: ১০০ দিয়ে বিভাজ্য কিন্তু ৪০০ দিয়ে নয় → লিপ ইয়ার নড় ✗
- ২০২৪: ৪ দিয়ে বিভাজ্য, ১০০ দিয়ে নয় → লিপ ইয়ার ✓
- ২০২৩: ৪ দিয়ে বিভাজ্য নয় → লিপ ইয়ার নয় ✗
ইনপুট ও আউটপুট উদাহরণ
ইনপুট:
Enter a year: 2000
আউটপুট:
2000 is a Leap year
অ্যালগরিদম
- প্রোগ্রাম শুরু করুন
- একটি ইন্টিজার এবং একটি বুলিয়ান ভেরিয়েবল ঘোষণা করুন: my_input, isLeap
- ব্যবহারকারী থেকে বছর ইনপুট নিন
- নেস্টেড ইফ-এলস দিয়ে লিপ ইয়ার চেক করুন:
- যদি ৪ দিয়ে বিভাজ্য হয়
- তবে যদি ১০০ দিয়ে বিভাজ্য হয়
- তবে যদি ৪০০ দিয়ে বিভাজ্য হয় → isLeap = true
- অন্যথায় isLeap = false
- অন্যথায় (১০০ দিয়ে বিভাজ্য নয়) → isLeap = true
- অন্যথায় (৪ দিয়ে বিভাজ্য নয়) → isLeap = false
- ফলাফল প্রদর্শন করুন
- প্রোগ্রাম শেষ করুন
উদাহরণ ১: ব্যবহারকারী ইনপুট নেওয়া
import java.util.Scanner;
public class LeapYear {
public static void main(String[] args) {
int my_input;
boolean isLeap = false;
System.out.println("Required packages have been imported");
Scanner my_scanner = new Scanner(System.in);
System.out.println("A reader object has been defined");
System.out.print("Enter the year : ");
my_input = my_scanner.nextInt();
if (my_input % 4 == 0) {
if (my_input % 100 == 0) {
if (my_input % 400 == 0)
isLeap = true;
else
isLeap = false;
} else
isLeap = true;
} else
isLeap = false;
if (isLeap)
System.out.println(my_input + " is a Leap year");
else
System.out.println(my_input + " is not a Leap year");
}
}
উদাহরণ ২: পূর্বনির্ধারিত মান ব্যবহার
public class LeapYear {
public static void main(String[] args) {
int my_input = 2000;
boolean isLeap = false;
System.out.println("The year is defined as " + my_input);
if (my_input % 4 == 0) {
if (my_input % 100 == 0) {
if (my_input % 400 == 0)
isLeap = true;
else
isLeap = false;
} else
isLeap = true;
} else
isLeap = false;
if (isLeap)
System.out.println(my_input + " is a Leap year");
else
System.out.println(my_input + " is not a Leap year");
}
}
সরলীকৃত লজিক (One-liner)
boolean isLeap = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
Java 8+ Time API ব্যবহার করে
import java.time.Year;
public class LeapYearModern {
public static void main(String[] args) {
int year = 2000;
boolean isLeap = Year.of(year).isLeap();
System.out.println(year + (isLeap ? " is a Leap year" : " is not a Leap year"));
}
}
লিপ ইয়ার কেন দরকার?
পৃথিবী সূর্যের চারদিকে ঘুরতে ৩৬৫.২৪২২ দিন নেয়। প্রতি বছর ০.২৪২২ দিন (≈ ৫ ঘণ্টা ৪৮ মিনিট) কম পড়ে। ৪ বছরে ≈ ১ দিন কম পড়ে, তাই ৪ বছরে একবার ১ দিন যোগ করা হয়। কিন্তু এটি একটু বেশি হয়, তাই শতাব্দী বছরে (১০০ দিয়ে বিভাজ্য) লিপ ইয়ার নয়। আবার ৪০০ বছরে একবার সংশোধন করা হয়।
টেস্ট কেস
| বছর | ৪ দিয়ে বিভাজ্য | ১০০ দিয়ে বিভাজ্য | ৪০০ দিয়ে বিভাজ্য | লিপ ইয়ার? |
|---|---|---|---|---|
| 2000 | হ্যাঁ | হ্যাঁ | হ্যাঁ | হ্যাঁ ✓ |
| 1900 | হ্যাঁ | হ্যাঁ | না | না ✗ |
| 2024 | হ্যাঁ | না | - | হ্যাঁ ✓ |
| 2023 | না | - | - | না ✗ |