روزی روزگاری، خدمتکار دانایی بود که جانِ شاهزادهای را نجات داد. پادشاه وعده داد هر آنچه خدمتکار به ذهنش برسد، بپردازد. خدمتکار که میدانست پادشاه عاشق شطرنج است، به پادشاه گفت که دانههای گندم میخواهد. یک دانه روی خانهی اول صفحهی شطرنج و در هر خانهی بعدی، تعداد دانهها دو برابر میشود.
تعداد دانههای گندم روی یک صفحهی شطرنج را محاسبه کنید.
یک صفحهی شطرنج ۶۴ خانه دارد. خانهی ۱ یک دانه دارد، خانهی ۲ دو دانه دارد، خانهی ۳ چهار دانه دارد و به همین ترتیب، هر بار دو برابر میشود.
کدی بنویسید که این موارد را محاسبه کند:
در Euphoria، یک atom میتواند هر نوع عددی را در خود نگه دارد و زیرگونهای به نام integer برای اعداد صحیح در نظر گرفته شده است.
در زبانهای شبیه C میتوان این تمرین را با برگرداندن یک عدد صحیح ۶۴ بیتی بدون علامت حل کرد.
اما اعداد صحیح در Euphoria علامتدار هستند و یک بیت کوچکتر از کلمهی ماشیناند، از این رو برای این تمرین بیش از حد کوچکاند، در حالی که atomها میتوانند اعداد صحیح بزرگتری را با دقت ۶۴ بیتی لازم نگه دارند.
نسخهی ۳۲ بیتی Euphoria هم وجود دارد که هنوز باقی مانده است تا برنامههای قدیمی بتوانند در صورت نبود نسخهی ۶۴ بیتی از dll/soهای ۳۲ بیتی از پیش ساختهشده استفاده کنند، یا در حالتی که «wrapper» مربوط به آن پر از آفستهای ۳۲ بیتی سختکدشده باشد.
این نسخه برای حل این کار کاملاً ناکافی است، چون آن atomها فقط ۵۳ بیت دقت دارند.
اگر در حل این تمرین بهصورت محلی مشکل دارید، مطمئن شوید که از نسخهی ۶۴ بیتی Euphoria استفاده میکنید.