সাল ২৫২৫, আর আপনি এইমাত্র সৌরজগতের সব গ্রহ (বুধ, শুক্র, পৃথিবী, মঙ্গল, বৃহস্পতি, শনি, ইউরেনাস ও নেপচুন) ঘুরে দেখার একটি যাত্রা শুরু করেছেন। প্রথম গন্তব্য বুধ, যেখানে কাস্টমসের নিয়মে আপনাকে একটি ফর্ম পূরণ করতে হয় (দেখা যাচ্ছে, আমলাতন্ত্র শুধু পৃথিবীর একচেটিয়া নয়)। আপনি কাস্টমস অফিসারের হাতে ফর্মটি তুলে দিতেই তিনি তা খুঁটিয়ে দেখে ভুরু কুঁচকে ফেলেন। "আপনার বয়স মাত্র ৫০ বছর, এটা বিশ্বাস করতে আপনি সত্যিই আমার কাছে আশা করছেন? আপনার বয়স তো ২০০ বছরের কাছাকাছি হওয়ার কথা!"
মজা লাগলেও আপনি অপেক্ষা করলেন, কাস্টমস অফিসার হেসে উঠবেন কি না, কিন্তু তিনি যে একেবারে গম্ভীর। আপনি বুঝতে পারেন, আপনি আপনার বয়স লিখেছেন পৃথিবীর বছরে, কিন্তু অফিসার তা চেয়েছিলেন বুধের বছরে! সূর্যের চারপাশে বুধের প্রদক্ষিণের সময় পৃথিবীর চেয়ে অনেক কম, তাই বুধের বছরে গুনলে আপনি আসলে অনেক বেশি বয়সী। দ্রুত কিছু হিসাব করে আপনি বুধের বছরে আপনার বয়স বলে দিতে পারেন। কাস্টমস অফিসার সন্তুষ্ট হয়ে হাসেন আর আপনাকে হাত নেড়ে যেতে দেন। মনে মনে ঠিক করে নিলেন, ভবিষ্যতে কাস্টমস চেকের আগেই গ্রহভেদে আপনার বয়স আগে থেকে হিসাব করে রাখবেন, যাতে এমন গোলমাল আর না হয়।
প্লুটো কেন বাদ পড়ল, ভাবছেন? তাহলে এই YouTube ভিডিওটি দেখুন।
সেকেন্ডে একটি বয়স দেওয়া থাকলে, হিসাব করুন আমাদের সৌরজগতের কোনো গ্রহে কারও বয়স কত হবে।
পৃথিবীর এক বছর সমান 365.25 পৃথিবীর দিন, অর্থাৎ 31,557,600 সেকেন্ড। যদি আপনাকে বলা হয় কারও বয়স 1,000,000,000 সেকেন্ড, তাহলে তার বয়স হবে 31.69 পৃথিবীর বছর।
অন্য গ্রহগুলোর ক্ষেত্রে আপনাকে পৃথিবীর বছরে তাদের কক্ষীয় পর্যায়কাল হিসাবে ধরতে হবে:
| গ্রহ | পৃথিবীর বছরে কক্ষীয় পর্যায়কাল |
|---|---|
| বুধ | 0.2408467 |
| শুক্র | 0.61519726 |
| পৃথিবী | 1.0 |
| মঙ্গল | 1.8808158 |
| বৃহস্পতি | 11.862615 |
| শনি | 29.447498 |
| ইউরেনাস | 84.016846 |
| নেপচুন | 164.79132 |
সূর্যের চারপাশে পৃথিবীর একবার সম্পূর্ণ প্রদক্ষিণের প্রকৃত দৈর্ঘ্য 365.256 দিনের (১ সিডারিয়াল বছর) কাছাকাছি। গ্রেগরিয়ান ক্যালেন্ডারে গড়ে 365.2425 দিন থাকে। সম্পূর্ণ নির্ভুল না হলেও, এই অনুশীলনীতে 365.25 মানটিই ব্যবহার করা হয়েছে। একটি বছর মাপার আরও উপায় জানতে উইকিপিডিয়ায় Year দেখুন।
Cairo-তে ফ্লোটিং-পয়েন্ট সংখ্যার জন্য কোনো নেটিভ সাপোর্ট নেই, তাই সেখানে আমরা ইন্টিজার দিয়ে ভগ্নাংশ মান প্রকাশ করি।
গণনায় নির্ভুলতা বজায় রাখতে ব্লকচেইন ডেভেলপমেন্টে এই পদ্ধতিটি অপরিহার্য।
এই অনুশীলনীতে আমরা কক্ষপথের পর্যায়কাল মাইক্রোসেকেন্ডে রূপান্তর করে ফিক্সড-পয়েন্ট অ্যারিথমেটিক ব্যবহার করি।
উদাহরণস্বরূপ, বুধের 0.2408467 পৃথিবী বছরের কক্ষপথের পর্যায়কাল, 1,000,000 দিয়ে গুণ করলে 240,846,700 মাইক্রোসেকেন্ড হয়ে যায়।
ডেসিমাল নির্ভুলতার কথা মাথায় রেখে টেস্ট কেসগুলো ধরে নেয় যে প্রাপ্ত বয়সের দুই দশমিক স্থান থাকে, যা ইন্টিজার হিসেবে প্রকাশ করা হয়।
এর মানে হলো, কোডে 31.69 বছরের একটি বয়স 3169 হিসেবে সংরক্ষণ করা হয়।
এটা অর্জন করতে আমরা ভাগ করার আগে ১০০ দিয়ে গুণ করি।
এখানে একটি উদাহরণ:
let mercury_orbital_period = 240_846_700; // in microseconds
let age_microseconds = age_seconds * 1_000_000;
// multiplying with 100 to retain 2 decimal places
age_microseconds * 100 / mercury_orbital_period
এই পদ্ধতি ব্যবহার করলে আপনি নিশ্চিত করতে পারেন যে ভগ্নাংশ মানগুলো সঠিকভাবে ইন্টিজার হিসেবে প্রকাশিত হয় এবং প্রয়োজনীয় দুই-দশমিক নির্ভুলতাও বজায় থাকে, যা টেস্ট পাস হওয়ার জন্য অত্যন্ত জরুরি।
Exercism-এ সাইন আপ করুন, Cairo ট্র্যাকের 25টি কনসেপ্ট68টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।