2010-09-17 80 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))