我创建了一个算法,该算法采用非负的Int值,表示总分钟数,并返回给出(天,小时,分钟)对应的三元组.
这是我的代码:
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)
Run Code Online (Sandbox Code Playgroud)
仅使用基本的Haskell操作(守卫,div,mod等),是否有更简单的方法来编程此功能?
编辑:
我使用下面的建议使这段代码更简单,虽然不像qoutRem解决方案那么简单,我想我可能会发布它:
calcdays :: Int -> Int
calcdays x = x `div` (24*60)
calchours :: Int -> Int
calchours x = (x `mod` …Run Code Online (Sandbox Code Playgroud) 我刚刚被介绍给Haskell,所以我对如何使用该语言进行编码并不是很熟练,因此,如果这是重复的话,对不起,但是我不理解用该语言编写的其他代码.
我正在尝试编写一个算法,该算法将采用不超过给定值的正整数甚至整数的总和.我试图编写代码但是我一直在收到C堆栈溢出错误.
这是我的代码:
sumint :: Int -> Int
sumint x
| x==0 = 0
| x==1 = 1
| (x `mod` 2 == 0) && (x >= 2) = x + (sumint x-2)
| (x `mod` 2 /= 0) && (x >= 1) = x + (sumint x-1)
Run Code Online (Sandbox Code Playgroud)
我错在哪里得到这个错误?
我被告知不要在我的课程中使用推送,因为我们只能使用我们教过的代码,我觉得这很荒谬。
我已经多次编写了 200 多行包含推送功能的代码。是否有一个简单的代码替代我可以为它实现的推送功能?
我试图创建一个函数,它将采取两个整数值,对应于1s矩形的宽度和高度,输出如下:
Main> rectangle 3 4
1111
1111
1111
Run Code Online (Sandbox Code Playgroud)
我是Haskell的初学者并且没有经验,所以任何指针都会受到赞赏,因此只应该使用基本的Haskell操作.谢谢.