gpt4 book ai didi

lisp - 如何在 Scheme/Lisp 中对符号进行算术计算?

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:33 26 4
gpt4 key购买 nike

我需要用符号进行计算。我需要将 hh:mm 形式的时间转换为经过的分钟数。

;; (get-minutes symbol)->number
;; convert the time in hh:mm to minutes
;; (get-minutes 6:19)-> 6* 60 + 19

(define (get-minutes time)
(let* ((a-time (string->list (symbol->string time)))
(hour (first a-time))
(minutes (third a-time)))
(+ (* hour 60) minutes)))

这是一个不正确的代码,在所有转换之后我得到了一个字符并且无法执行正确的计算。

你们有什么建议吗?我无法更改输入类型。
上下文:输入是航类时刻表,因此我无法更改数据结构。

;; ---------------------------------------------- ----------------------

编辑:想出了一个丑陋的解决方案。请提出更好的建议。

(define (get-minutes time)
(let* ((a-time (symbol->string time))
(hour (string->number (substring a-time 0 1)))
(minutes (string->number (substring a-time 2 4))))
(+ (* hour 60) minutes)))

最佳答案

您可以找到字符串拆分的定义 here .它将使您能够在您选择的分隔符处拆分字符串。然后你可以像这样定义 get-minutes:

(define (get-minutes time)
(let* ((fields (string-split (symbol->string time) '(#\:)))
(hour (string->number (first fields)))
(minutes (string->number (second fields))))
(+ (* hour 60) minutes)))

关于lisp - 如何在 Scheme/Lisp 中对符号进行算术计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1126201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com