clojure - CLOJURE:如何在几天内找到日期差异以及在 Clojure 中进行嵌套循环的优化方式
问题描述
我是 Clojure 的新手,并试图做一些简单的验证来验证学生完成的课程在几天内有差距,如果有,那么有多少天。
想要遍历课程并找到课程 1 和课程 2 之间的差异超过 20 天的课程,这将通过找到(课程 2 的开始日期 - 课程 1 的结束日期)之间的差异来完成
这是我的测试数据集,advanced-science-102 和 datascience-science-101 课程之间有超过 20 天的差距。
[{:course-type "basic-science-101"
:start-date "2020-01-01"
:end-date "2020-05-01"}
{:course-type "advanced-science-102"
:start-date "2020-05-15"
:end-date "2020-10-01"}
{:course-type "datascience-science-101"
:start-date "2020-12-01"
:end-date "2021-03-20"}
]
到目前为止,我有这段代码,我正在迭代课程并试图找出两门课程的开始日期和结束日期之间的差异,以确定它们之间是否存在任何差距。
(ns student-course-ruleset.courses-test
(:require [java-time :as jt]))
(def mycourses [{:course-type "basic-science-101"
:start-date "2020-01-01"
:end-date "2020-05-01"}
{:course-type "advanced-science-102"
:start-date "2020-05-20"
:end-date "2020-10-01"}
{:course-type "datascience-science-101"
:start-date "2020-11-15"
:end-date "2021-01-20"}])
(defn select-values [map ks]
(remove nil? (reduce #(conj %1 (map %2)) [] ks)))
(defn find-gap-in-course [mycourses]
(loop [[course1 & mycourses] mycourses]
(loop [[course2 & mycourses] mycourses]
(when (and (not-empty course1) (not-empty course2))
(println "Finding gap of courses : " course1 course2)
(println "Current courses in comparison are : " (select-values course1 [:course-type])
(select-values course2 [:course-type]))
(println "Finding Gap in courses: ")
;; (jt/gap (select-values course2 [:start-date]) (select-values course1 [:end-date]))
)
)
(if course1 (recur mycourses))
))
(find-gap-in-course mycourses)
解决方案
您可以使用 clj-time 中的 (t/interval) 进行测试
推荐阅读
- django-rest-framework - Django Rest Framework AttributeError:模块'coreapi'没有属性'Client'
- excel - 使用赛普拉斯使用 SheetJS 编辑/修改 excel 文件
- javascript - 如何在另一个数组中每隔一个元素插入每个数组元素?
- next.js - Next 加载 SWC 二进制文件失败
- flutter - 视频结束时,Youtube 应用程序未关闭 Amazon firetv
- json - JSON嵌套数组/对象到SOAP XML正文-我在将以下JSON请求转换为Dataweave中的soap请求时遇到了困难
- swift - 如何在 SwiftUI 中增加网格中的填充?
- javascript - Spotify API 只获得了一些设备,但我的手机获得了所有设备
- python-3.x - VS 代码中的 Python
- reactjs - 在 ASP.NET Core 应用程序中配置 React Dev Server