Tracks
/
Elm
Elm
/
Übungen
/
Marios wunderbare Lasagne
Marios wunderbare Lasagne

Marios wunderbare Lasagne

Lernübung

Einführung

Let

Der let-Ausdruck erzeugt einen lokalen Gültigkeitsbereich und ist in einigen Situationen nützlich:

  • Zum Vereinfachen von Ausdrücken
  • Zum Benennen der Ergebnisse von Zwischenausdrücken
  • Zum Aufteilen eines Ausdrucks in kleinere Teile, wenn er zu groß wird

In einem let-Ausdruck kannst du fast alles tun, auch Destrukturierung (mehr dazu in späteren Übungen). Es ist aber nicht möglich, einen neuen Custom Type oder Type Alias zu definieren.

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)

Anleitung

Du hast zum Geburtstag ein neues Kochbuch geschenkt bekommen und willst herausfinden, ob das Lasagne-Rezept darin besser ist als das in deinem aktuellen Lieblingskochbuch. In dieser Übung schreibst du etwas Code, der dir hilft, die Lasagne aus dem neuen Kochbuch zu kochen.

Deine Mitbewohnerin ist noch im Büro beschäftigt und möchte wissen, wann die Lasagne fertig sein wird, damit sie rechtzeitig zurück sein kann.

1. Finde heraus, wann die Lasagne fertig sein wird

Schreibe eine Funktion, die herausfindet, wann die Lasagne fertig sein wird. Damit der Code einfach und ausdrucksstark bleibt, solltest du einen let-Ausdruck verwenden.

Definiere die Funktion remainingTimeInMinutes, die zwei Parameter entgegennimmt und als Körper einen let-Ausdruck hat. Der erste Parameter ist die Anzahl der Schichten in der Lasagne, und der zweite Parameter ist die Anzahl der Minuten, die seit dem Start des Kochens vergangen sind.

Definiere expectedMinutesInOven (im let-Teil des let-Ausdrucks), um zu prüfen, wie viele Minuten die Lasagne im Ofen bleiben soll. Laut dem Kochbuch beträgt die erwartete Backzeit in Minuten 40:

expectedMinutesInOven
    --> 40

Definiere preparationTimeInMinutes (im let-Teil des let-Ausdrucks), die die Anzahl der Schichten in der Lasagne als Parameter entgegennimmt und zurückgibt, wie viele Minuten die Vorbereitung der Lasagne dauert, wenn man davon ausgeht, dass jede Schicht 2 Minuten zum Vorbereiten braucht.

preparationTimeInMinutes 3
    --> 6

Gib zurück, wie viele Minuten noch bleiben, bis die Lasagne fertig ist (im in-Teil des let-Ausdrucks). Das ist die Summe aus preparationTimeInMinutes und expectedMinutesInOven, abzüglich der Anzahl der Minuten, die seit dem Start des Kochens vergangen sind.

remainingTimeInMinutes 3 10
    --> 6 + 40 - 10 = 36
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Elm Exercism

Bereit, mit Marios wunderbare Lasagne zu starten?

Melde dich bei Exercism an, um Elm mit 28 Konzepte110 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.