মান লোয়া একটি তারিখ (দিন, মাস এবং বছর)। এই তারিখ থেকে সপ্তাহের দিন বের করতে হবে। এটি সমাধানের জন্য আমরা জেলারের অ্যালগরিদম (Zeller’s Algorithm) ব্যবহার করব। জেলারের অ্যালগরিদম দিয়ে সপ্তাহের দিন বের করার সূত্র নিচে দেওয়া হলো
𝑤=$$\lgroup d+\lfloor \frac{13(m+1)}{5} \rfloor+y+\lfloor\frac{y}{4} \rfloor+\lfloor\frac{c}{4} \rfloor+5c \rgroup mod 7$$
সূত্রটি কিছু ভেরিয়েবল ধারণ করে; সেগুলো হলো −
d − তারিখের দিন।
m − এটি মাস কোড। মার্চ থেকে ডিসেম্বরের জন্য এটি 3 থেকে 12, জানুয়ারির জন্য 13, এবং ফেব্রুয়ারির জন্য 14। যখন জানুয়ারি বা ফেব্রুয়ারি বিবেচনা করা হয়, তবে দেওয়া বছরে ১ কমাতে হবে।
y − বছরের শেষ দুটি অঙ্ক
c − বছরের প্রথম দুটি অঙ্ক
w − সপ্তাহের দিন। যখন এটি ০, তবে শনিবার, যখন ৬, তবে শুক্রবার।
উদাহরণস্বরূপ, যদি ৪ জানুয়ারি ১৯৯৭-এর সপ্তাহের দিন বের করতে চাই, তবে আউটপুট হবে “Saturday”
অ্যালগরিদমটি নিচের \−
অ্যালগরিদম
zellersAlgorithm(day, month, year)
ইনপুট − দিনের তারিখ।
আউটপুট − কোন দিন ছিল, (রবিবার থেকে শনিবার)।
Begin if month > 2, then mon := month else mon := 12 + month decrease year by 1 y := last two digit of the year c := first two digit of the year w := day + floor((13*(mon+1))/5) + y + floor(y/4) + floor(c/4) + 5*c w := w mod 7 return weekday[w] //weekday will hold days from Saturday to Friday End
উদাহরণ (C++)
#include <iostream> #include <cmath> using namespace std; string weekday[7] = {"Saturday","Sunday","Monday","Tuesday", "Wednesday","Thursday","Friday"}; string zellersAlgorithm(int day, int month, int year){ int mon; if(month > 2) mon = month; //মার্চ থেকে ডিসেম্বরের জন্য মাস কোড মাসের সমান else{ mon = (12+month); //জানুয়ারি এবং ফেব্রুয়ারির জন্য মাস কোড 13 এবং 14 year--; //জানুয়ারি এবং ফেব্রুয়ারির জন্য বছর ১ কমান } int y = year % 100; //শেষ দুটি অঙ্ক int c = year / 100; //প্রথম দুটি অঙ্ক int w = (day + floor((13*(mon+1))/5) + y + floor(y/4) + floor(c/4) + (5*c)); w = w % 7; return weekday[w]; } int main(){ int day, month, year; cout << "Enter Day: "; cin >>day; cout << "Enter Month: "; cin >>month; cout << "Enter Year: "; cin >>year; cout << "It was: " <<zellersAlgorithm(day, month, year); }ইনপুট
(4, 1, 1997)
আউটপুট
Enter Day: 4 Enter Month: 1 Enter Year: 1997 It was: Saturday