Created
July 25, 2022 19:48
-
-
Save jgomo3/7989f5d22e7ab1fb4fae5d75c1853c4b to your computer and use it in GitHub Desktop.
Solución al ejercicio 1 de Blackbox
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns jgomo3.playground.blackbox.bb1 | |
(:require [java-time :as jt])) | |
(def bb-date-format "y-M-d") | |
(defn en-año | |
"Determina si `fecha` está en el año `año`." | |
[año fecha] | |
(= (jt/as fecha :year) año)) | |
(defn fechas-del-año | |
"Devuelve todas las `fechas` que sean del año `año`." | |
[año fechas] | |
(filter (partial en-año año) fechas)) | |
(defn filtro-por-año | |
"`secuencia` es una colección de cadenas que representan fechas según | |
el formato `bb-date-format` y la función devolverá otra collección | |
con todas las fechas que sean del año que representa la cadena | |
`año`." | |
[secuencia año] | |
(let [decode-input-item (partial jt/local-date bb-date-format) | |
decode-input-seq (partial map decode-input-item) | |
encode-output-item (partial jt/format bb-date-format) | |
encode-output-seq (partial map encode-output-item) | |
año_ (Integer/parseInt año) | |
proc-seq (partial fechas-del-año año_)] | |
(->> secuencia | |
decode-input-seq | |
proc-seq | |
encode-output-seq))) | |
(comment | |
(en-año 2020 (jt/local-date 2020 9 20));; => true | |
(en-año 2021 (jt/local-date 2020 9 20)) ;; => false | |
(fechas-del-año 2020 (map (partial apply jt/local-date) [[2020 1 4] [2019 5 7] [2021 12 11] [2020 8 9]])) | |
;; => (#object[java.time.LocalDate 0x5df741bf "2020-01-04"] | |
;; #object[java.time.LocalDate 0x70bf87c2 "2020-08-09"]) | |
(map (partial jt/local-date bb-date-format) ["2020-1-4", "2019-4-7", "2021-12-11", "2020-8-9"]) | |
;; => (#object[java.time.LocalDate 0x1ddbe51e "2020-01-04"] | |
;; #object[java.time.LocalDate 0x3062435c "2019-04-07"] | |
;; #object[java.time.LocalDate 0xaebe50 "2021-12-11"] | |
;; #object[java.time.LocalDate 0x394e9042 "2020-08-09"]) | |
(filtro-por-año ["2020-1-4", "2019-4-7", "2021-12-11", "2020-8-9"] "2020") | |
;; => ("2020-1-4" "2020-8-9") | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment