প্রতি মাসে আপনার সঙ্গী তাঁর প্রিয় বন্ধুর সাথে দেখা করেন। দুজনেই খুব ব্যস্ত থাকেন, তাই উপযুক্ত একটি তারিখ খুঁজে পাওয়া বেশ কঠিন হয়ে পড়ে! আপনি নিজেও ব্যস্ত, তাই সম্ভাব্য কোন তারিখে দেখা করা যাবে তা আপনার সঙ্গী সবসময় আপনার সাথে মিলিয়ে নেন:
এই মাসের কলটিতে আপনার সঙ্গী আপনাকে এই প্রশ্নটি করলেন:
বিভ্রান্ত হয়ে আপনি জিজ্ঞেস করলেন, "টিন্থ" ডে বলতে আসলে কী বোঝায়। আপনার সঙ্গী ব্যাখ্যা করলেন যে টিন্থ ডে, অর্থাৎ তাঁর নিজের বানানো একটি ধারণা, বলতে মাসের সেই তারিখগুলোকে বোঝায় যেগুলো '-teenth' দিয়ে শেষ হয়:
যেহেতু সপ্তাহে সাতটি বারও আছে, তাই নিশ্চিতভাবেই প্রতি মাসে সপ্তাহের প্রতিটি বারের জন্য ঠিক একটি টিন্থ ডে থাকে।
এখন যেহেতু টিন্থ ডে-র ধারণাটি আপনি বুঝে গেছেন, আপনি নিজের ক্যালেন্ডার দেখে নিলেন। টিন্থ বৃহস্পতিবারে আপনার কোনো পরিকল্পনা নেই, তাই খুশি মনে আপনি সঙ্গীর সাথে তারিখটি নিশ্চিত করে নিলেন।
আপনার কাজ হলো মাস, বছর, সপ্তাহের বার ও সপ্তাহ দেওয়া থাকলে একটি মিটআপের সঠিক তারিখ খুঁজে বের করা।
বিবেচনার জন্য সপ্তাহের ছয়টি মান আছে: first, second, third, fourth, last, teenth।
উদাহরণস্বরূপ, আপনাকে ২০১৮ সালের জানুয়ারি মাসের প্রথম সোমবারের মিটআপের তারিখ খুঁজতে বলা হতে পারে (১ জানুয়ারি, ২০১৮)।
একইভাবে, আপনাকে খুঁজতে বলা হতে পারে:
টিনথ সপ্তাহ বলতে একটি মাসের সেই সাত দিনকে বোঝায় যেগুলো '-teenth' দিয়ে শেষ হয় (13th, 14th, 15th, 16th, 17th, 18th এবং 19th)।
১৯৫৩ সালের আগস্ট মাসের টিনথ শনিবার খুঁজতে বলা হলে, আমরা সেই মাসের ক্যালেন্ডারটি দেখি:
August 1953
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
এ থেকে দেখা যায়, টিনথ শনিবারটি হলো ১৫ আগস্ট, ১৯৫৩।
তারিখ নিয়ে কাজ করার জন্য Prolog-এর বিল্ট-ইন সাপোর্ট বেশ প্রাথমিক ধরনের। তারিখ নিয়ে কাজ করার অনেক সুবিধাজনক উপায় হলো [date_time প্যাকেজ][date_time-package] ব্যবহার করা।
আপনার ইনস্টল করা Swipl ভার্সন যদি বেশ নতুন হয়, তাহলে নিচের কমান্ডটি চালিয়ে প্যাকেজটি ইনস্টল করতে পারেন:
swipl pack install date_time
এটা যদি কাজ না করে, তাহলে চালাতে পারেন:
swipl -g 'pack_install(date_time)'
আপনি যদি অনলাইন এডিটর ব্যবহার করেন, তাহলে নিজে হাতে কিছু ইনস্টল করার দরকার নেই।
date_time প্যাকেজ ব্যবহার করতে আপনার সলিউশন ফাইলের শুরুতে নিচের কোডটি যোগ করুন:
:- use_module(library(date_time)).
টিপ: [date_time প্যাকেজের সোর্স][https://www.swi-prolog.org/pack/file_details/date_time/prolog/date_time.pl?show=src] ভালোভাবে ডকুমেন্ট করা আছে এবং আপনার অনেক উপকারে আসবে!
Exercism-এ সাইন আপ করুন, Prolog ট্র্যাকের 109টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।