Clojure - Seqüència Estrictament Creixent T53479


Statement
 

pdf   zip

thehtml

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)))

Observacions

  • 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
Public test cases
  • 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
    
  • Information
    Author
    Jordi Delgado
    Language
    Catalan
    Official solutions
    Clojure
    User solutions
    Clojure