مسیرها
/
Elm
Elm
/
تمرین‌ها
/
لازانیای شگفت‌انگیز ماریو
لازانیای شگفت‌انگیز ماریو

لازانیای شگفت‌انگیز ماریو

تمرین یادگیری

مقدمه

let

عبارت let برای ساختن یک «دامنه‌ی محلی» به کار می‌رود و در چند موقعیت کاربرد دارد:

  • برای ساده‌کردن عبارت‌ها
  • برای اسم‌گذاری نتیجه‌ی عبارت‌های میانی
  • برای شکستن یک عبارت به بخش‌های کوچک‌تر، اگر دارد بزرگ می‌شود

می‌توانید بیشتر کارها را داخل یک عبارت let انجام دهید، از جمله «تجزیه‌ی ساختاری» (جزئیات بیشتر در تمرین‌های بعدی)، اما تعریف یک «نوع سفارشی» یا «اسم مستعار نوع» جدید ممکن نیست.

let
  cube x = x * x * x
in
  cube a + cube b + cube c
beginWithPattern : Size -> Padding -> Pattern -> GameOfLife
beginWithPattern minimumSize padding pattern =
    let
        size = calculateSize minimumSize padding pattern

        center = Size.center size

        centeredPattern = Pattern.centerAt center pattern

        dimensions = { width = size, height = size }

        deadCells = Matrix.create dimensions Dead
    in
    GameOfLife (bringPatternToLife deadCells centeredPattern)

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

برای تولدتان یک کتاب آشپزی جدید هدیه گرفته‌اید و می‌خواهید بفهمید که آیا دستور پخت لازانیا در آن بهتر از کتاب آشپزی مورد علاقه‌ی فعلی‌تان است یا نه. در این تمرین می‌خواهید کدی بنویسید که به شما در پخت لازانیا از کتاب آشپزی جدید کمک کند.

همخانه‌ی‌تان هنوز در اداره مشغول است و می‌خواهد بداند لازانیا چه ساعتی آماده می‌شود تا مطمئن شود که به موقع برمی‌گردد.

1. محاسبه کنید که لازانیا چه زمانی آماده می‌شود

برای محاسبه‌ی زمانی که لازانیا آماده می‌شود، یک «تابع» ایجاد کنید. برای ساده و گویا شدن کد، باید از یک «عبارت let» استفاده کنید.

تابع remainingTimeInMinutes را تعریف کنید که دو «پارامتر» می‌گیرد و بدنه‌ی آن یک عبارت let است. پارامتر اول تعداد لایه‌های لازانیا است و پارامتر دوم تعداد دقیقه‌هایی است که از شروع پخت گذشته است.

مقدار expectedMinutesInOven را (در بخش let عبارت let) تعریف کنید تا بررسی کنید لازانیا چند دقیقه باید در فر بماند. طبق کتاب آشپزی، زمان مورد انتظار در فر بر حسب دقیقه 40 است:

expectedMinutesInOven
    --> 40

مقدار preparationTimeInMinutes را (در بخش let عبارت let) تعریف کنید که تعداد لایه‌های لازانیا را به عنوان پارامتر می‌گیرد و تعداد دقیقه‌هایی که برای آماده‌سازی لازانیا لازم است را برمی‌گرداند. با فرض اینکه آماده‌سازی هر لایه 2 دقیقه طول می‌کشد.

preparationTimeInMinutes 3
    --> 6

تعداد دقیقه‌های باقی‌مانده تا آماده شدن لازانیا را برگردانید (در بخش in عبارت let). این مقدار برابر است با مجموع preparationTimeInMinutes و expectedMinutesInOven منهای تعداد دقیقه‌هایی که از شروع پخت گذشته است.

remainingTimeInMinutes 3 10
    --> 6 + 40 - 10 = 36
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Elm Exercism

آماده‌اید لازانیای شگفت‌انگیز ماریو را شروع کنید؟

در Exercism ثبت‌نام کنید تا Elm را همراه با 28 مفهوم110 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.