2010-09-17 4 views
1

J'essaie de soustraire 2 listes et de retourner le produit comparé.SML Comment soustraire 2 listes et comparer le produit?

Donc, si la liste a = [2,3,2] b = [1,1,1] puis ab = [1,2,1] et le produit retourné (c) devrait être 1.

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

modulo (mod) 10 est pour les cas où les deux nombres soustraits donnent un résultat impair, par ex. 2-8 = ~ 6 mod 10 = 4.

Je suis bloqué à la soustraction, car List.map ne me permet pas de faire la soustraction parce qu'elle attend une valeur int et non une liste int (au moins . pas la façon dont je l'ai codé il :()

Je suis aussi en blanc sur la comparaison

+0

Que voulez-vous dire par le produit par rapport? – sepp2k

+0

Je devrais l'exprimer différemment, ce que je voulais dire était la valeur la plus fréquente dans la liste c et revenons juste cela. – TBK

+0

Je veux comparer la liste c avec elle-même, pour vérifier si tous les éléments ont la même valeur, et si les sont ensuite retourner cette valeur. Un bonus serait de vérifier en plus si elles ne le sont pas, alors quelle valeur est la plus fréquemment représentée + déterminer quels éléments ne rentrent pas et retourner leur valeur et leur emplacement. – TBK

Répondre

3

Vous pouvez utiliser ListPair.map itérer sur 2 listes à la fois, comme ceci:

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

vous ne voulez pas soustraire b -. vous voulez soustraire la valeur correspondante Une façon pratique. Pour ce faire, vous devez zipper les listes ensemble:

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