RosettaCodeData/Task/Text-processing-Max-licenses-in-use/TXR/text-processing-max-licenses-in-use.txr
2023-07-01 13:44:08 -04:00

21 lines
755 B
Text

@(bind *times* #H((:eql-based) nil))
@(bind *licenses-out* 0)
@(bind *maximum-licenses-out* 0)
@(collect)
License @statuses @@ @dateTimes for job @jobNumbers
@(end)
@(do (each ((status statuses)
(dateTime dateTimes)
(jobNumber jobNumbers))
(set *licenses-out*
(if (equal status "OUT")
(progn
(when (>= (+ *licenses-out* 1) *maximum-licenses-out*)
(set *maximum-licenses-out* (+ *licenses-out* 1))
(pushhash *times* *maximum-licenses-out* dateTime))
(+ *licenses-out* 1))
(+ *licenses-out* -1)))))
@(output)
Maximum # of licenses out: @{*maximum-licenses-out*}
Peak time(s): @{(reverse (gethash *times* *maximum-licenses-out*))}
@(end)