Toplam dakika sayısını temsil eden negatif olmayan bir Int değeri alan ve bunun karşılık geldiği (gün, saat, dakika) bir üçlü döndüren bir algoritma oluşturdum. programlamanın daha basit bir yolu bu fonksiyon yoktur, sadece temel Haskell işlemleri (vb korumalar, div'ler, modlar) kullanarakHaskell - Algoritmayı tamamlamak için daha etkili bir yol?
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)
: Burada
benim kodudur?
DÜZENLEME:
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)
gibi somethink ama algoritma normalde böyle gider: 'girdi almak 60 bölerek, geri kalan dakika parçasıdır, sonuç daha sonra 24'e bölünmüş, kalan kısım saat kısmıdır, sonuç günlerin parçasıdır. Bu yüzden, hesaplamaları yalıtımda yürütmek yerine zincirlemeniz gerekir. – biziclop
Evet, ancak Haskell'de değişkenleri ayarlayamazsınız, dolayısıyla bunu nasıl başaracağımı bilmiyorum. –
Değişkenleri ayarlamanıza gerek yok, sadece sonucu bir sonraki adıma hemen verin. Yine de sözdizimi konusunda emin değilim. – biziclop