どのようにしてスキーム/ Lispでシンボルの算術計算を実行しますか?

StackOverflow https://stackoverflow.com/questions/1126201

質問

私は記号で計算を実行する必要があります。私はHHのある時間に変換する必要があります。渡された分にミリメートルのフォームを

;; (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)))

他のヒント

あなたは意味を作るためにあなたの計算の数値に変換する必要があります。 (時間(はstring->番号(文字列(一回目))))と同じ分

scroll top