如果没有偶数,则从3个参数或最大不均匀数返回最小偶数

时间:2014-11-21 11:26:37

标签: haskell

我在这里有一个半自愿的Haskell作业,需要一些帮助才能解决它。 任务:

编写Haskell函数

evenmin a b c

如果参数中没有偶数,则返回参数中最小的偶数或最大的不均匀数。

我知道我可以用很多警卫来做到这一点,但我相信有更好的方法!请不要写出解决方案,但如果可以的话,请向我推动正确的方向。谢谢!

2 个答案:

答案 0 :(得分:4)

提示:假设您的输入是一个非空的整数列表,而不是3个参数,即

evenmin' :: [Int] -> Int

假设你有一个函数phi 分区输入,如下所示:

phi [1, 2, 3, 4, 5, 6] == ([1,3,5],[2,4,6])

evenmin'的定义是什么?然后,定义evenmin a b c = evenmin' [a, b, c]

答案 1 :(得分:2)

以这种方式排序整数:

  • 甚至整数按<=
  • 排序
  • 奇数整数按>=
  • 排序
  • 甚至整数总是小于奇数。

定义myCompare :: Int -> Int -> Ordering

根据上述顺序实现您想要的最小值。

如何计算两个对象的最小值w.r.t。通用排序?

如何将其扩展为三个对象?

奖金:如何将其扩展到列表?