Voldríem fer una funció (creixent s) que, donada una
seqüència numèrica s, retorni true si la
seqüència s és estrictament creixent, i
false altrament.
a/ Completa aquesta funció per a que sigui correcte, segons el que es demana a l’enunciat:
(defn creixent [s]
(letfn [(auxiliar [sp]
(if (empty? sp)
true
(and (< (first (first sp)) (second (first sp)))
(auxiliar (rest sp)))))]
(let [ss ________ ]
(auxiliar ss))))
b/ Substitueix la funció local auxiliar
per un fold, fent servir la propietat universal del
fold
Ara, un cop has fet el que se’t demana als apartats anteriors, envia el resultat al Jutge (però fes cas del que se’t diu a les Observacions)
(defn creixent [s]
(let [ss ________ ]
(fold ____ ____ ss)))
Recorda que aquest problema pertany a un examen, i s’avaluarà manualment.
Recorda incloure en el fitxer que envies al Jutge la definició de
foldr i la definició de fold
Input
(creixent '()) (creixent '(56)) (creixent '(5 6)) (creixent '(6 6)) (creixent '(6 5)) (creixent (range 1000)) (creixent '(101 104 156 188 178 190)) (creixent '(101 104 156 156 178 190)) (creixent '(101 104 156 156.5 178 190))
Output
true true true false false true false false true