Skip to content

Instantly share code, notes, and snippets.

@BrunoBog
Created May 14, 2021 01:03
Show Gist options
  • Select an option

  • Save BrunoBog/fd2b372b09e7694e3c0f7996bfeae7b0 to your computer and use it in GitHub Desktop.

Select an option

Save BrunoBog/fd2b372b09e7694e3c0f7996bfeae7b0 to your computer and use it in GitHub Desktop.
Closure maps
(ns loja.nuzitcho)
(def purchases [{:date "2020-12-01" :value 10.7 :place "lojaumDoJaum" :category "bugigangas"}
{:date "2021-01-05" :value 101.7 :place "RestorantDoJaquin" :category "Tomperro"}
{:date "2021-01-05" :value 100.7 :place "RestorantDoJaquin" :category "Tomperro"}
{:date "2021-03-15" :value 81.2 :place "SupermarketDoJézaum" :category "Comida"}
{:date "2021-03-16" :value 21 :place "LoRistorant" :category "Comida"}
{:date "2021-03-16" :value 11.7 :place "Marmitex" :category "Comida"}
{:date "2021-03-17" :value 11.6 :place "Supermarket" :category "Comida"}])
(def card {:number 87632527683 :cvv 666 :valid "06/29" :limit 15000 :moviments purchases})
(def client {:nome "Tuei" :cpf "111111111111" :email "clientaum@boladão.com" :card card})
(println "valor dos gastos agrupados por uma categoria:" (group-by :category purchases))
(defn summary
[[category value]]
{:category category
:total (reduce + (map :value value))})
(defn search-place
[[category value]])
(->> purchases
(group-by :category)
(map summary)
(println "Valor dos gastos agrupados por categoria"))
(defn spended-in-place
[place spends]
(filter #(= place (% :place)) spends)
)
(->> purchases
(spended-in-place "Marmitex")
(println "Busca de compras pelo estabelecimento : "))
(defn spend-with-value
[value spends]
(filter #(= value (% :value)) spends))
(->> purchases
(spend-with-value 100.7)
(println "Busca de compras pelo valor : "))
(defn filter-spends-by-date
[month year spend]
(filter
#(let [x (% :date)]
(and
(> (compare x (str year "-" month "-01")) 0)
(< (compare x (str year "-" month "-31")) 0)))
spend))
(defn sumarize-spends
[spends]
(reduce + (map :value spends))
)
(->> purchases
(filter-spends-by-date "01" "2021")
(sumarize-spends)
(println "Fatura do mês : ")
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment