گیگاثانیه

گیگاثانیه

آسان

مقدمه

روش ما برای اندازه‌گیری زمان کمی درهم‌وبرهم است. در یک دقیقه ۶۰ ثانیه داریم و در یک ساعت ۶۰ دقیقه. این از بابل باستان می‌آید، جایی که ۶۰ را مبنای دستگاه اعداد خود قرار می‌دادند. یک روز ۲۴ ساعت دارد، یک هفته ۷ روز. اما یک ماه چند روز دارد؟ خب، تعداد روزهای یک ماه نه تنها به این بستگی دارد که کدام ماه است، بلکه به این هم بستگی دارد که در کشور محل زندگی شما از چه نوع تقویمی استفاده می‌شود.

چه می‌شود اگر به‌جای این، برای بیان بازه‌های زمانی فقط از ثانیه استفاده کنیم؟ در آن صورت می‌توانیم برای نوشتن تعداد زیادی ثانیه به شکل کمیت‌هایی که فهمشان راحت‌تر است، از پیشوندهای دستگاه متریک استفاده کنیم.

  • یک دستور پخت ممکن است توضیح دهد که باید براونی را دو کیلوثانیه (یعنی دو هزار ثانیه) در فر بگذارید تا بپزد.
  • شاید شما و خانواده‌تان برای دو مگاثانیه (یعنی دو میلیون ثانیه) به جایی دوردست و عجیب سفر کنید.
  • و اگر هزار میلیون ثانیه از ازدواج شما و همسرتان گذشته بود، سالگرد یک‌گیگاثانیه‌ی خود را جشن می‌گرفتید.
Note

اگر روزی مریخ یا سیاره‌ی دیگری را مستعمره کنیم، اندازه‌گیری زمان حتی درهم‌وبرهم‌تر هم می‌شود. اگر کسی بگوید «سال»، منظورش سال روی زمین است یا سال روی مریخ؟

ایده‌ی این تمرین از رمان علمی‌تخیلی «A Deepness in the Sky» نوشته‌ی نویسنده ورنر وینج گرفته شده است. در آن، نویسنده از دستگاه متریک به عنوان مبنای اندازه‌گیری زمان استفاده می‌کند.

دستورالعمل‌ها

وظیفه‌ی شما تعیین تاریخ و زمانی است که یک «گیگاثانیه» پس از یک تاریخ مشخص رخ می‌دهد.

گیگاثانیه برابر است با هزار میلیون ثانیه. یعنی عدد ۱ و بعد از آن ۹ صفر.

اگر در ۲۴ ژانویه ۲۰۱۵، ساعت ۲۲:۰۰ (۱۰:۰۰:۰۰ شب) به دنیا آمده باشید، در ۲ اکتبر ۲۰۴۶، ساعت ۲۳:۴۶:۴۰ (۱۱:۴۶:۴۰ شب) یک گیگاثانیه سن خواهید داشت.

کار با تاریخ‌ها در Prolog

پشتیبانی توکار Prolog از تاریخ‌ها نسبتاً ابتدایی است. هرچند می‌توانید این تمرین را فقط با همان امکانات توکار Prolog حل کنید، روش بسیار بهتری برای کار با تاریخ‌ها استفاده از بسته‌ی date_time است.

نصب بسته‌ی date_time

اگر نسخه‌ی نصب‌شده‌ی Swipl شما به‌اندازه‌ی کافی به‌روز باشد، می‌توانید این بسته را با اجرای دستور زیر نصب کنید:

swipl pack install date_time

اگر این کار جواب نداد، می‌توانید این دستور را اجرا کنید:

swipl -g 'pack_install(date_time)'
Note

اگر از ویرایشگر آنلاین استفاده می‌کنید، نیازی نیست چیزی را به‌صورت دستی نصب کنید.

استفاده از بسته‌ی date_time

برای استفاده از بسته‌ی date_time، کد زیر را به ابتدای فایل راه‌حل خود اضافه کنید:

:- use_module(library(date_time)).
Note

نکته: کد منبع بسته‌ی date_time مستندسازی خوبی دارد و می‌تواند کمک بزرگی باشد!

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Prolog Exercism

آماده‌اید گیگاثانیه را شروع کنید؟

در Exercism ثبت‌نام کنید تا Prolog را همراه با 109 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.