2017-09-07 2 views
0

Écrire une fonction N pour un donné le nombre naturel r (2 dans l'exemple), une liste de nombres naturels x1..xn, et une liste de nombres naturels q1..qm (n, m ≥ 0), retourne une liste de longueur n dont l'élément i-ième est une liste des nombres naturels dans l'intervalle [xi - r, r + xi] qui ne sont pas divisibles par l'un des nombres en q1..qm.SML Créer une fonction qui trouve des nombres non divisibles à partir de la liste

- N 2 [25, 50, 90, 11] [2,3,7]; val it = [[23,25] , [] , [89] , [11, 13]] : int list list

+1

StackOverflow n'est pas un marché pour résoudre les affectations de classe. Vous devez mettre du travail dans votre problème pour obtenir de l'aide. Copier/coller l'énoncé du problème ici ne vous aidera pas du tout. Personne n'aime faire le travail d'un autre gratuitement, sans le moindre respect. –

+5

En bref, montrez-nous ce que vous avez essayé. –

Répondre

0

Vous pouvez définir la fonction comme suit:

fun divisible (q::qs, x) = if (x mod q = 0) then true else divisible(qs, x) 
    | divisible (nil, x) = false; 


fun N r xs qs = let 
    val cs = map(fn x => List.tabulate(1+2*r, fn y => x + y - r))(xs); 
in 
    map(fn bs => List.filter(fn x => not (divisible(qs,x))) (bs))(cs) 
end; 

Pour l'exemple donné donne:

- N 2 [25, 50, 90, 11] [2,3,7]; 
val it = [[23,25],[],[89],[11,13]] : int list list