2010-09-17 79 views
1

我想减去2个列表并返回比较产品。SML如何减去2个列表并比较产品?

因此,如果列表 A = [2,3,2] B = [1,1,1] 然后 AB = [1,2,1]和返回的产物(C)应为1。

val c = List.map (fn i => (i - b) mod 10) a 

modulo(mod)10用于两个相减的数字给出奇数结果的情况,例如2-8 =〜6 mod 10 = 4.

我被困在减法中,因为List.map不允许我进行减法,因为它需要一个int值而不是一个int列表(至少。不是我有编码是:()的方式

我还比较空白

+0

你什么意思通过比较产品做? – sepp2k 2010-09-17 01:32:19

+0

我应该有不同的表达方式,我的意思是c列表中最常见的值,然后返回。 – TBK 2010-09-17 01:44:19

+0

我想比较C列表与自身,检查是否所有的元素是相同的值,如果然后返回该值。奖励将额外检查它们是否不是,然后哪个值是最经常表示的+确定哪些元素不适合并返回它们的值和位置。 – TBK 2010-09-17 20:51:04

回答

3

您可以使用ListPair.map在一次迭代2所列出,像这样:

val c = ListPair.map (fn (i, j) => (i - j) mod 10) (a,b) 
1

你不想减去b - 要减去相应的值的便捷方式。要做到这一点是将列表压缩在一起:

val c = List.map (fn (i, j) => (i - j) mod 10) (ListPair.zip (a, b))