Имам две структури от данни:
(def epics {"ARP-37" 8.0, "ARP-24" 5.0, "ARP-22" 13.0, "ARP-6" 21.0, "ARP-1" 8.0})
(def releases '(["Release one" '("ARP-37" "ARP-22" "ARP-6")]))
; gets the sum of a list of epics (maps epic keys to its corresponding story points)
(defn get-max-sp [epic-list] (reduce + (map #(get epics %) epic-list)))
(def initial-sp (get-max-sp '("ARP-37" "ARP-22" "ARP-6")))
Някои може да разпознаят това като данни на JIRA. Искам обаче да комбинирам тези две структури, за да изглежда така:
; where (now) is a function from clj-time returning the current date
(def result [{x: (now), y: initial-sp }
{x: (+ now (get epics "ARP-37")), y: (- initial-sp (get epics "ARP-37))}
{x: (+ now (get epics "ARP-37") (get epics "ARP-22")),
y: (- initial-sp (get epics "ARP-37") (get epics "ARP-22"))}
{x: (+ now (get epics "ARP-37") (get epics "ARP-22")
(get epics "ARP-6")),
y: (- initial-sp (get epics "ARP-37") (get epics "ARP-22")
(get epics "ARP-6") )}
])
И така, след изпълнение на функциите искам резултатът да изглежда така:
[{x: 2014-02-18, y: 42}
{x: 2014-02-26, y: 34}
{x: 2014-03-11, y: 21}
{x: 2014-04-01, y: 0}
]
Имам проблем с комбинирането и картографирането на двете структури, за да получа резултата си, и бих искал да получа някои съвети как да подходя към този проблем в clojure :-)
Благодаря, Свен
Актуализация: Тъй като изглежда не е ясно какво трябва да бъдат x и y, ще се опитам да ги обясня малко повече. Предполага се, че x е дата с начална стойност днешна дата и на всяка стъпка от итерация сюжетната точка на епос ще бъде добавена към нея „ARP-37“ е епосът и 8.0 неговата сюжетна точка. y е нещо подобно, тъй като започва с някои от всички точки от историята на епичния списък и след това слиза надолу на всяка стъпка на итерация броя на точките от историята на своя еп. Итерацията ще бъде над списъка с епоси.