Skip to content

Commit

Permalink
Evaluaciones de recuperatorio y final
Browse files Browse the repository at this point in the history
  • Loading branch information
javierrweiss committed Jun 25, 2023
1 parent 6144342 commit e1a672b
Show file tree
Hide file tree
Showing 5 changed files with 212 additions and 3 deletions.
7 changes: 4 additions & 3 deletions deps.edn
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
{:deps {org.clojure/clojure {:mvn/version "1.11.1"}}
{:paths ["src"]
:deps {org.clojure/clojure {:mvn/version "1.11.1"}
midje/midje {:mvn/version "1.10.9"}}
:aliases
{:test ;; added by neil
{:extra-paths ["test"]
:extra-deps {org.clojure/test.check {:mvn/version "1.1.1"}
midje/midje {:mvn/version "1.10.9"}
:extra-deps {org.clojure/test.check {:mvn/version "1.1.1"}
io.github.cognitect-labs/test-runner
{:git/tag "v0.5.0" :git/sha "b3fd0d2"}}
:main-opts ["-m" "cognitect.test-runner"]
Expand Down
65 changes: 65 additions & 0 deletions src/final.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
(ns final)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ¡¡¡¡LEA CON ATENCIÓN!!! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; I. En esta evaluación se encontrará con un conjunto de funciones que deberá completar de acuerdo a su premisa respectiva. Así que tómese la
;; libertad de modificar el cuerpo de la función según lo considere apropiado.
;; De igual modo, siempre que lo estime conveniente puede crear otras funciones que sirvan de auxiliares. Eso sí, nunca modifique el nombre
;; ni la cantidad de argumentos de las funciones a completar.
;; Puede importar y requerir las librerías que juzgue convenientes (e.g. clojure.string ó clojure.set).

;; II. Al conectarse al REPL ¡NO! seleccione la opción :test, déjela sin marcar y presione OK en el cuadro de diálogo.

;; III. Cada función cuenta con un conjunto de tests que verifican que trabaje correctamente. Antes que nada asegúrese de evaluar los namespaces.
;; En primer lugar, evalúe este namespace (Ctrl + Alt + c y luego Enter) y posteriormente diríjase donde se encuentran los tests test/finaltest.clj
;; y evalúe ese namespace también. Para correr los tests, Para correr los tests, diríjase a test/finaltest.clj
;; Luego puede evaluar el namespace completo y ver los resultados ó diríjase a los comments y evalúe (use 'midje.repl) y
;; finalmente (check-facts *ns*).

;; Si pasaran todos los tests de las preguntas obligatorias, usted habrá aprobado la evaluación con la máxima calificación.

;; Puede correr los tests la cantidad de veces que necesite y, obviamente, cuando haya realizado una modificación en este archivo y quiera volver
;; a correr los tests debe guardar el archivo y evaluar la función que quiera probar.

;; Si surge algún error al correr los tests, guarde todo, evalúe primero este namespace, luego diríjase a la carpeta test y evalúe el archivo
;; parcial1test.clj.
;; Recuerde que para evaluar todo el namespace debe presionar Ctrl + Alt + c y luego Enter. O en su defecto presionar F1 y buscar la opción
;; "Load / Evaluate Current File..." en el menu de comandos de Calva.

;; No tiene permitido bajo ninguna circunstancia modificar el archivo de tests. Caso contrario quedará reprobado.

;; IV. Utilice la forma (comment ) para explorar las respuestas y deje allí las cosas que intentó. Se considerará en la evaluación.

;; V. No olvide guardar (Ctrl + k y luego s) sus progresos y cuando esté listo diríjase al ícono de Source Control/ Control de versiones, haga click
;; en el ícono al lado derecho de Commit y, finalmente, haga click sobre la opción Commit & Push para subir los cambios a su repositorio.

;; VI. Si tiene dudas o problemas no dude en presentar su consulta en el Foro del Aula Virtual.


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; COMPLETE LAS SIGUIENTES FUNCIONES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 1. Cree una función que devuelva true cuando la colección que se le pase como argumento esté compuesta por números sucesivos (e.g. 1,2,3,4...)
;; y false en caso contrario. (5 pts)

(defn sucesivos?
[coll]
nil)


;; 2. Estamos creando un juego palabras en línea. Se le pide que cree una función que reciba una palabra (un String), a) convierta cada uno de sus caracteres a código ASCII,
;; b) ordene la colección de números resultante de menor a mayor, c) que convierta de nuevo esos números a caracteres y, d) finalmente, que devuelva un String con la
;; palabra resultante. Por ejemplo, si recibe el String "Hola", sus caracteres son \H \o \l \a y los códigos ASCII correspondientes son 72 111 108 97. Al ordenalos tenemos
;; 72 111 108 97, llevados a caracteres es \H \a \l \o y, finalmente, como String quedaría "Halo".
;; Si el String que recibe como input contiene algún número, descártelo.
;; (5 pts)

(defn sacude-palabras
[palabra]
nil)



78 changes: 78 additions & 0 deletions src/recuperatorio.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
(ns recuperatorio)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ¡¡¡¡LEA CON ATENCIÓN!!! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; I. En esta evaluación se encontrará con un conjunto de funciones que deberá completar de acuerdo a su premisa respectiva. Así que tómese la
;; libertad de modificar el cuerpo de la función según lo considere apropiado.
;; De igual modo, siempre que lo estime conveniente puede crear otras funciones que sirvan de auxiliares. Eso sí, nunca modifique el nombre
;; ni la cantidad de argumentos de las funciones a completar.
;; Puede importar y requerir las librerías que juzgue convenientes (e.g. clojure.string ó clojure.set).

;; II. Al conectarse al REPL ¡NO! seleccione la opción :test, déjela sin marcar y presione OK en el cuadro de diálogo.

;; III. Cada función cuenta con un conjunto de tests que verifican que trabaje correctamente. Antes que nada asegúrese de evaluar los namespaces.
;; En primer lugar, evalúe este namespace (Ctrl + Alt + c y luego Enter) y posteriormente diríjase donde se encuentran los tests test/recuperatoriotest.clj
;; y evalúe ese namespace también. Para correr los tests, diríjase a test/recuperatoriotest.clj
;; Luego puede evaluar el namespace completo y ver los resultados ó diríjase a los comments y evalúe (use 'midje.repl) y
;; finalmente (check-facts *ns*).

;; Si pasaran todos los tests de las preguntas obligatorias, usted habrá aprobado la evaluación con la máxima calificación.

;; Puede correr los tests la cantidad de veces que necesite y, obviamente, cuando haya realizado una modificación en este archivo y quiera volver
;; a correr los tests debe guardar el archivo y evaluar la función que quiera probar.

;; Si surge algún error al correr los tests, guarde todo, evalúe primero este namespace, luego diríjase a la carpeta test y evalúe el archivo
;; correspondiente.
;; Recuerde que para evaluar todo el namespace debe presionar Ctrl + Alt + c y luego Enter. O en su defecto presionar F1 y buscar la opción
;; "Load / Evaluate Current File..." en el menu de comandos de Calva.

;; No tiene permitido bajo ninguna circunstancia modificar el archivo de tests. Caso contrario quedará reprobado.

;; IV. Utilice la forma (comment ) para explorar las respuestas y deje allí las cosas que intentó. Se considerará en la evaluación.

;; V. No olvide guardar (Ctrl + k y luego s) sus progresos y cuando esté listo diríjase al ícono de Source Control/ Control de versiones, haga click
;; en el ícono al lado derecho de Commit y, finalmente, haga click sobre la opción Commit & Push para subir los cambios a su repositorio.

;; VI. Si tiene dudas o problemas no dude en presentar su consulta en el Foro del Aula Virtual.


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; COMPLETE LAS SIGUIENTES FUNCIONES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 1. Un Sanatorio capitalino necesita un programa que indique adónde han sido derivados los pacientes. Para esto se manejan internamente con
;; un código.
;; Si el código es 1, el paciente se deriva "a su médico de la obra social".
;; 2, "a su médico particular".
;; 3, "a su médico de cabecera".
;; 4, "a Consultorios Externos del Sanatorio".
;; 5, "continúa tratamiento indicado previamente".
;; 6, "a Internación".
;; 7, "ha fallecido".
;; 8, "a otro Sanatorio".
;; 9, "al Geriátrico".
;; Si el código ingresado no corresponde con ninguno, devolver "Código de derivación incorrecto"
;; Complete la función de abajo para que realice correctamente esta tarea. (valor 5pts)
;; NOTA: Revise el texto de los tests para verificar cómo queda la respuesta completa en cada caso.

(defn deriva
[codigo]
"El paciente ")


;; 2. Ayudemos a un profesor de secundaria a pasar el acta final de notas. Recibirá un vector con las calificaciones.
;; Si la calificación es menor o igual a 4 deberá añadir "Reprobado". Y si se encuentra entre 5 y 10 "Aprobado".
;; Adicionalmente, si es mayor a 7 deberá añadir "Eximido" y si se encuentra entre 5 y 7 deberá añadir "Va a finales".
;; Separe los elementos con comas (,)
;; Debe devolver un vector de strings con las modificaciones indicadas, por ejemplo ["7, Aprobado, Va a finales"...]
;; Si alguna de las calificaciones es superior a 10 ó menor a 0, descártela.
;; Si recibe cualquier otro tipo de dato, un vector vacío o un vector no numérico, debe devolver:
;; "Datos incorrectos. Debe ingresar un vector numérico"
;; (5pts)

(defn calificar
[calificaciones]
[])

23 changes: 23 additions & 0 deletions test/finaltest.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
(ns finaltest
(:require [midje.sweet :as m]
[final :refer :all]))

(m/fact
(sucesivos? (range 1 11)) => true
(sucesivos? (range 0 10 2)) => false
(sucesivos? (range 1 10 2)) => false
(sucesivos? (range 50 101)) => true)

(m/fact
(sacude-palabras "Marmota") => "Maamort"
(sacude-palabras "corajudo") => "acdjooru"
(sacude-palabras "envejecido") => "cdeeeijnov"
(sacude-palabras "Altavista") => "Aaailsttv"
(sacude-palabras "enmienda") => "adeeimnn"
(sacude-palabras "ates0r4r") => "aerrst"
(sacude-palabras "3lev4r") => "elrv")

(comment
(use 'midje.repl)
(check-facts *ns*)
)
42 changes: 42 additions & 0 deletions test/recuperatoriotest.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
(ns recuperatoriotest
(:require [midje.sweet :as m]
[recuperatorio :refer :all]))

(m/fact
(deriva 0) => "Código de derivación incorrecto"
(deriva 1) => "El paciente fue derivado a su médico de la obra social"
(deriva 2) => "El paciente fue derivado a su médico particular"
(deriva 3) => "El paciente fue derivado a su médico de cabecera"
(deriva 4) => "El paciente fue derivado a Consultorios Externos del Sanatorio"
(deriva 5) => "El paciente continúa tratamiento indicado previamente"
(deriva 6) => "El paciente fue derivado a Internación"
(deriva 7) => "El paciente ha fallecido"
(deriva 8) => "El paciente fue derivado a otro Sanatorio"
(deriva 9) => "El paciente fue derivado al Geriátrico"
(deriva 10) => "Código de derivación incorrecto"
(deriva 11) => "Código de derivación incorrecto"
(deriva "deriva, derivando") => "Código de derivación incorrecto"
(deriva ##Inf) => "Código de derivación incorrecto")


(m/fact
(calificar []) => "Datos incorrectos. Debe ingresar un vector numérico"
(calificar [\a \e \i \o \u]) => "Datos incorrectos. Debe ingresar un vector numérico"
(calificar "1 2 4 3 4 3 4 3 2 3 3 4 3 3 2 4 3 5 3 2 3") => "Datos incorrectos. Debe ingresar un vector numérico"
(count (calificar [34 4 5 6 7 10 12 10 19 100 -12])) => 6
(calificar [3 10 9 8 10 3 4 2 0 5]) => ["3, Reprobado"
"10, Aprobado, Eximido"
"9, Aprobado, Eximido"
"8, Aprobado, Eximido"
"10, Aprobado, Eximido"
"3, Reprobado"
"4, Reprobado"
"2, Reprobado"
"0, Reprobado"
"5, Aprobado, Va a finales"])


(comment
(use 'midje.repl)
(check-facts *ns*)
)

0 comments on commit e1a672b

Please sign in to comment.