المسارات
/
Elm
Elm
/
التمارين
/
لازانيا Mario الرائعة
لازانيا Mario الرائعة

لازانيا Mario الرائعة

تمرين تعلّمي

مقدمة

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) التي تأخذ عدد طبقات اللازانيا كمعامل وتُرجع عدد الدقائق اللازمة لتحضير اللازانيا، بافتراض أن كل طبقة تستغرق دقيقتين للتحضير.

preparationTimeInMinutes 3
    --> 6

أرجِع عدد الدقائق المتبقية حتى تكتمل اللازانيا (في جزء in من تعبير let)، وهو مجموع preparationTimeInMinutes وexpectedMinutesInOven بعد طرح عدد الدقائق منذ أن بدأت الطهي.

remainingTimeInMinutes 3 10
    --> 6 + 40 - 10 = 36
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Elm Exercism

مستعد لبدء لازانيا Mario الرائعة؟

سجّل في Exercism لتتعلّم وتتقن Elm عبر 28 مفهومًا110 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.