Last active
September 23, 2022 21:00
-
-
Save adamgomespinto/2c4c13dc980502c433ccfe1bf302ba37 to your computer and use it in GitHub Desktop.
This file contains 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 aula4.exercicio | |
(:require [aula4.data :as data])) | |
;; retornar o vetor de clientes a chave `:full-name` adicionada nos mapas de clientes. | |
;; (full-name deve ser a concatenacao do `:first-name` com o `:last-name`). | |
(defn retorna-vetor-de-nomes | |
[clientes] | |
(map (fn [cliente] (assoc cliente :full-name (str (:first-name cliente) " " (:last-name cliente)))) clientes)) | |
;; retornar clientes que tem `:age` maior que 35. Usar tanto `filter` quanto `remove`. | |
(defn retorna-clientes-mais-velhos-filter | |
[clientes idade] | |
(filter (fn [cliente] (> (:age cliente) idade)) clientes)) | |
(defn retorna-clientes-mais-velhos-remove | |
[clientes idade] | |
(remove (fn [cliente] (<= (:age cliente) idade)) clientes)) | |
;; retornar um mapa, tendo a chave do item como o id do produto e o valor sendo a quantidade total comprada desse item. | |
(defn retorna-mapa-item-quantidade-comprada | |
[compras] | |
(reduce (fn [acc compra] (update acc (:item-id compra) #(+ (:amount compra) (or % 0)))) {} compras)) | |
;; retornar um mapa de compras, onde a chave deve ser o id do cliente e o valor deve ser um | |
;; vetor que contendo todas as compras do cliente. | |
(defn retorna-mapa-compras-cliente | |
[compras] | |
(reduce (fn [acc compra] (update acc (:client-id compra) #(conj (or % []) compra))) {} compras)) | |
;; retornar o vetor de clientes com a chave `:purchases`. | |
;; O valor dessa chave sera um vetor contendo mapas com `:item-id` e `:amount`. | |
(defn retorna-mapa-clientes-com-compras | |
[clientes compras] | |
(let [mapa-compras (retorna-mapa-compras-cliente compras)] | |
(map (fn [cliente] (assoc cliente :purchases (map #(dissoc % :client-id) (get mapa-compras (:id cliente))))) clientes))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment