Advertisement
Clojure

Vec

May 14th, 2017
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (ns csvdb.core
  2.   (:require [clojure-csv.core :as csv]))
  3.  
  4. (defn- parse-int [int-str]
  5.   (Integer/parseInt int-str))
  6.  
  7.  
  8. (def student-tbl (csv/parse-csv (slurp "student.csv")))
  9. (def subject-tbl (csv/parse-csv (slurp "subject.csv")))
  10. (def student-subject-tbl (csv/parse-csv (slurp "student_subject.csv")))
  11. ;; (table-keys student-tbl)
  12. ;; => [:id :surname :year :group_id]
  13. ;;
  14. ;; Hint: vec, map, keyword, first
  15. (defn table-keys [tbl]
  16.   (vec (map keyword (first tbl))))
  17.  
  18. ;; (key-value-pairs [:id :surname :year :group_id] ["1" "Ivanov" "1996"])
  19. ;; => (:id "1" :surname "Ivanov" :year "1996")
  20. ;;
  21. ;; Hint: flatten, map, list
  22. (defn key-value-pairs [tbl-keys tbl-record]
  23.   (flatten (map list tbl-keys tbl-record)))
  24.  
  25. ;; (data-record [:id :surname :year :group_id] ["1" "Ivanov" "1996"])
  26. ;; => {:surname "Ivanov", :year "1996", :id "1"}
  27. ;;
  28. ;; Hint: apply, hash-map, key-value-pairs
  29. (defn data-record [tbl-keys tbl-record]
  30.   (apply hash-map (key-value-pairs tbl-keys tbl-record)))
  31.  
  32. ;; (data-table student-tbl)
  33. ;; => ({:surname "Ivanov", :year "1996", :id "1"}
  34. ;;     {:surname "Petrov", :year "1996", :id "2"}
  35. ;;     {:surname "Sidorov", :year "1997", :id "3"})
  36. ;;
  37. ;; Hint: let, map, next, table-keys, data-record
  38. (defn data-table [tbl]
  39.   ????)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement