合計の分数を表す負でないInt値をとり、これに対応する(日、時間、分)を与えるトリプルを返すアルゴリズムを作成しました。ここでハスケル - より効率的なアルゴリズムを完了する方法?
は私のコードです:
のみ基本的なHaskellの操作(警備員、divタグ、改造など)を使用してcalcdays :: Int -> Int
calcdays x = x `div` (24*60)
calchours :: Int -> Int
calchours x = (x - ((calcdays x)*24*60)) `div` 60
calcmins :: Int -> Int
calcmins x = (x - ((calcdays x)*24*60) - ((calchours x)*60))
dayshoursmins :: Int -> (Int,Int,Int)
dayshoursmins x = (calcdays x, calchours x, calcmins x)
、プログラミングのより簡単な方法は、この機能がありますか?
EDIT:
calcdays :: Int -> Int
calcdays x = x `div` (24*60)
calchours :: Int -> Int
calchours x = (x `mod` (24*60)) `div` 60
calcmins :: Int -> Int
calcmins x = (x `mod` (24*60)) `mod` 60
dayshoursmins :: Int -> (Int,Int,Int)
dayshoursmins x = (calcdays x, calchours x, calcmins x)
ようsomethink私はHaskellのを話すことはありませんが、アルゴリズムは、通常、このように書き思う: '、入力を取る60で割り、残りは分の部分で、その結果があります残りを24時間で割ったものが時間部分であり、結果は日部分である。だから、計算を孤立して実行するのではなく連鎖させる必要があります。 – biziclop
はい、しかし、Haskellでは、変数を設定することはできません。そのため、これを達成する方法がわかりません。 –
変数を設定する必要はありません。ただちに結果を次のステップに送ります。私は構文について確信しています。 – biziclop