Kurzusok
/
Common Lisp
Common Lisp
/
Feladatok
/
Lilly lasagnája
Lilly lasagnája

Lilly lasagnája

Tanulófeladat

Bevezetés

Függvények

Common Lispben egy globális függvényt a defun kifejezéssel definiálsz. Ez a kifejezés első argumentumaként a paraméterek listáját kapja (az üres lista azt jelenti, hogy a függvénynek nincs paramétere). Ezt egy opcionális dokumentációs string követi (lásd lentebb), majd nulla vagy több kifejezés, amelyek a függvény „törzsét” alkotják.

A függvényeknek nulla vagy több paramétere lehet.

(defun no-args () (+ 1 1))

(defun add-one (x) (1+ x))

(defun add-nums (x y) (+ x y))

Egy függvényt úgy hívsz meg, hogy kiértékelsz egy kifejezést, amelynek első eleme a függvényt jelölő szimbólum, a többi eleme pedig a függvény argumentumai (ha vannak).

A függvény értéke a függvény törzsében kiértékelt utolsó kifejezés értéke. Minden függvény kiértékelődik valamilyen értékre.

(add-nums 2 2) ;; => 4

A függvényeknek opcionálisan lehet dokumentációs stringjük (más néven „docstring”). Ha megadod, az argumentumlista után, de a függvény törzse előtt áll. A dokumentációs stringhez a documentation segítségével férhetsz hozzá.

(defun add-nums (x y) "Add X and Y together" (+ x y))

(documentation 'add-nums 'function) ;; => "Add X and Y together"

;; Note that if one provides a docstring but fails to provide a body
;; then the docstring is interpreted by Common Lisp as the body, not
;; the docstring
(defun no-body ())
(no-body) ;; => NIL

(defun mistake () "This is not a docstring")
(mistake) ;; => "This is not a docstring"
(documentation 'mistake 'function) ;; => NIL

Utasítások

Lilly, a Lisp-űrlény visszatért, és megint főz! Ezúttal Lisp-űrlény-lasagne-t készít, amely nem is különbözik annyira az emberi lasagne-tól.

Lillynek néhány függvényt kell írnunk, amelyek segítenek kiszámolni a lasagne elkészítésének időzítését. Ráadásul mindegyikhez jó dokumentációra van szükség, hogy Lilly ne felejtse el, mit csinál.

Segítesz Lillynek megírni a függvényeket, amelyek segítenek időzíteni a lasagne elkészítését?

1. Határozd meg a várható sütési időt percekben

Definiáld az expected-time-in-oven függvényt, amely nem vesz át egyetlen paramétert sem, és visszaadja, hogy hány percet kell a lasagne-nak a sütőben töltenie. A Lisp-űrlény hagyomány szerint (éppúgy, ahogy Lilly szülőegysége szokott főzni), a várható sütési idő 337 perc:

(expected-time-in-oven) ;; => 337

2. Számold ki a sütőben maradt időt percekben

Definiáld a remaining-minutes-in-oven függvényt, amely paraméterként megkapja, hány percet volt eddig a lasagne a sütőben, és visszaadja, hogy hány percet kell még a sütőben töltenie, az előző feladatban megadott várható sütési idő alapján.

(remaining-minutes-in-oven 100) ;; => 237

3. Számold ki az előkészítési időt percekben

Definiáld a preparation-time-in-minutes függvényt, amely paraméterként megkapja, hány réteget tett Lilly a lasagne-ba, és visszaadja, hogy hány percet töltött Lilly a lasagne előkészítésével, feltéve, hogy egy réteg elkészítése 19 percet vesz igénybe.

(preparation-time-in-minutes 3) ;; => 57

4. Számold ki az eltelt időt percekben

Definiáld az elapsed-time-in-minutes függvényt, amely két paramétert kap: az első paraméter a Lilly által a lasagne-ba tett rétegek száma, a második pedig az, hogy hány perce van a lasagne a sütőben. A függvény adja vissza, hogy hány percet dolgozott Lilly a lasagne elkészítésén, ami az előkészítési idő és a lasagne által eddig a sütőben töltött idő összege.

(elapsed-time-in-minutes 3 100) ;; => 157
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Common Lisp Exercism

Készen állsz elkezdeni a(z) Lilly lasagnája feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Common Lisp nyelvet 27 fogalom92 feladat segítségével, valódi emberi mentorálással, mindez ingyen.