Kurzusok
/
Clojure
Clojure
/
Feladatok
/
Lucian ínycsiklandó lasagnéja
Lucian ínycsiklandó lasagnéja

Lucian ínycsiklandó lasagnéja

Tanulófeladat

Bevezetés

A Clojure-ben azt, hogy egy értéket egy névhez kötünk, var-nak nevezik. A legfelső szintű (globális) varok más nyelvek konstansaihoz hasonlítanak.

A legfelső szintű varokat a def segítségével definiáljuk:

(def fingers 10)

fingers
;;=> 10

A defn segítségével definiálhatsz egy függvényt, amely nulla vagy több argumentumot fogad. Ez egy olyan függvény, amely összead két számot:

(defn add [x y]
  (+ x y))

Ez a függvény két argumentumot fogad, amelyek a [x y] vektorban kapnak helyet, ezt követi a függvény törzse, amely tetszőleges számú kifejezést tartalmazhat. A visszatérési érték mindig a törzs utolsó kifejezésének, a (+ x y)-nak a kiértékelési eredménye. Ez a kifejezés egy lista, amely egy függvényhívást képvisel. A lista első eleme a + függvény, amely a mögötte álló x és y elemeket argumentumként használva értékelődik ki.

A fent definiált add függvényt ugyanígy hívjuk meg:

(add 2 3)
;;=> 5

A Clojure-ben a függvényeket és az értékeket csak azután lehet használni, hogy definiáltuk őket, azaz a formokat mindig a megjelenési sorrendjükben értékeljük ki.

A Clojure-ben a szóközöknek a formázáson kívül nincs jelentőségük.

A Clojure-ben a függvények és a varok namespace-ekbe rendeződnek. Egy namespace összefogja a kapcsolódó funkcionalitást, és a ns makróval definiáljuk:

(ns calculator)

(def pi 3.14)

(defn add [x y]
  (+ x y))

A Clojure kétféle megjegyzést támogat. Az egysoros megjegyzések előtt ; áll, a comment forma pedig arra szolgál, hogy megakadályozza a (comment és a ) közötti minden kifejezés kiértékelését.

Utasítások

Ebben a feladatban kódot írsz majd, hogy segíts egy ragyogó lasagnét elkészíteni a kedvenc szakácskönyvedből.

Négy részfeladat vár rád, és mindegyik a lasagne elkészítésével töltött időhöz kapcsolódik.

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

Definiáld az expected-time változót, amely megmondja, hány percig kell a lasagnének a sütőben lennie. A szakácskönyv szerint a várható sütési idő 40 perc:

expected-time
;;=> 40

2. Számítsd ki a hátralévő sütési időt percben

Definiáld a remaining-time függvényt, amely argumentumként megkapja, hogy a lasagne hány perce van a sütőben, és visszaadja, hány percig kell még a sütőben maradnia, az előző részfeladatban megadott várható sütési idő alapján.

(remaining-time 30)
;;=> 10

3. Számítsd ki az előkészítési időt percben

Definiáld a prep-time függvényt, amely argumentumként megkapja a lasagnére rakott rétegek számát, és visszaadja, hány percet töltöttél a lasagne előkészítésével, feltéve, hogy egy réteg előkészítése 2 percet vesz igénybe.

(prep-time 2)
;;=> 4

4. Számítsd ki a teljes munkával töltött időt percben

Definiáld a total-time függvényt, amely két argumentumot kap: az első argumentum a lasagnére rakott rétegek száma, a második argumentum pedig az, hogy a lasagne hány perce van a sütőben. A függvény adja vissza, hogy összesen hány percet dolgoztál a lasagne elkészítésén, ami az előkészítési idő és a lasagne által a sütőben eddig eltöltött idő összege.

(total-time 3 20)
;;=> 26
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Clojure Exercism

Készen állsz elkezdeni a(z) Lucian ínycsiklandó lasagnéja feladatot?

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