fork(1) download
  1. (def sample (list "1101;+79119989911;122" "+49231114563;1102;347" "1101;+420023334521;134" "1102;+49023334521;811" "ERR01:1234;;;0;0" "1101;+390145211212;93" "1101;+49023334521;756"))
  2.  
  3. (require '[clojure.string :as str]) ;'
  4.  
  5. (defn task [data codes]
  6. (let [prefixes (map #(str "+" %) codes)]
  7. (->> data
  8. (map #(str/split % #";"))
  9. (filter (fn [[_ phone _]] (some #(str/starts-with? phone %) prefixes)))
  10. (group-by (fn [[id _ _]] id))
  11. seq
  12. (map (fn [[k v]] [k (reduce (fn [acc [_ _ sec]] (+ acc (Integer/parseInt sec))) 0 v)]))
  13. (reduce (fn [[k1 v1] [k2 v2]] (if (> v1 v2) [k1 v1] [k2 v2])) [0 0])
  14. ((fn [[k v]] k))
  15. )))
  16.  
  17. (println (task sample [49 39]))
  18.  
Success #stdin #stdout 1.03s 4386816KB
stdin
Standard input is empty
stdout
1101