2

記号を使って計算する必要があります。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)))
4

2 に答える 2

1

計算を意味のあるものにするには、数値に変換する必要があります。(hour (string->number (string (first a-time)))) 分も同じ

于 2009-07-14T15:40:03.210 に答える