ভূমিকা
একটি বছরে (৩৬৫ বা ৩৬৬ দিন) সপ্তাহের প্রতিটি দিন (সোমবার, মঙ্গলবার, ইত্যাদি) কতবার আসে তা গণনা করা একটি সাধারণ প্রোগ্রামিং সমস্যা। সাধারণত একটি বছরে ৫২ সপ্তাহ + ১ দিন (লিপ ইয়ারের জন্য ২ দিন) থাকে। অতএব, বছরের প্রথম দিনটি কোন দিন তার ওপর নির্ভর করে কিছু দিন ৫৩ বার এবং বাকিগুলো ৫২ বার আসে। এই নিবন্ধে একটি পাইথন ফাংশন দেখানো হয়েছে যা বছরের মোট দিন সংখ্যা এবং বছরের প্রথম দিন গ্রহণ করে প্রতিটি দিনের ঘটনার সংখ্যা রিটার্ন করে।
উদাহরণ কোড
import math
def num_of_occurrence(n, firstday):
my_days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
my_count = [4 for i in range(0, 7)] # প্রাথমিকভাবে প্রতিটি দিন ৪ বার ধরে নেওয়া হয় (৫২ সপ্তাহ = ৩৬৪ দিন, তাই কমপক্ষে ৫২ বার)
my_position = -1
for i in range(0, 7):
if (firstday == my_days[i]):
my_position = i
break
inc = n - 28 # ২৮ দিন পাশে (৪ সপ্তাহ), বাকি দিনগুলো খাস দিনগুলোর計数 বাড়াবে
for i in range(my_position, my_position + inc):
if (i > 6):
my_count[i % 7] = 5
else:
my_count[i] = 5
for i in range(0, 7):
print(my_days[i], " ", my_count[i])
num = 31 # উদাহরণস্বরূপ ৩১ দিনের একটি মাস বা কাস্টম período
first_day = "Thursday"
num_of_occurrence(num, first_day)
আউটপুট
Monday 4 Tuesday 4 Wednesday 4 Thursday 5 Friday 5 Saturday 5 Sunday 4
ব্যাখ্যা
my_daysলিস্টে সপ্তাহের সাতটি দিনের নাম রাখা হয়েছে।my_countলিস্টে প্রতিটি দিনের প্রাথমিক কাউন্ট ৪ রেখে দেওয়া হয়েছে (যেহেতু ২৮ দিনে প্রতিটি দিন ৪ বার আসে)।firstdayপ্যারামিটার থেকে বছরের প্রথম দিনের ইনডেক্স (my_position) বের করা হয়েছে।inc = n - 28এর মাধ্যমে ২৮ দিনের বাইরে থাকা অতিরিক্ত দিনগুলো নির্ণয় করা হয়েছে। এই অতিরিক্ত দিনগুলো বছরের প্রথম দিন থেকে শুরু হয়ে ক্রমানুসারে সাতটি দিনের কাউন্ট ৫ করে দেবে।লুপের মাধ্যমে অতিরিক্ত দিনগুলো覆盖 করা হয়েছে এবং মডুলো অপারেটর (
%) ব্যবহার করে সপ্তাহের শেষে পৌঁছালে আবার শুরুর দিকে ফিরে আসা হয়েছে।শেষে প্রতিটি দিন এবং তার ঘটনার সংখ্যা প্রিন্ট করা হয়েছে।
দ্রষ্টব্য
মূল কোডে first_day ভেরিয়েবলটি ফাংশন কলের সময় পাস করা হয়েছে কিন্তু ফাংশন ডেফিনিশনে প্যারামিটার নাম firstday (নামের মধ্যে স্পেস নেই)। এছাড়া import math ব্যবহার করা হয়েছে কিন্তু কোডে math মডিউল ব্যবহার করা হয়নি। একটি বাস্তব বছরের জন্য n=365 বা n=366 ব্যবহার করা উচিত।