【问题标题】:SML Create a function that finds numbers not divisible from listSML 创建一个从列表中查找不可整除的数字的函数
【发布时间】:2017-09-10 04:41:06
【问题描述】:

写一个函数 N 给定自然数 r(示例中为 2),自然数列表 x1..xn, 和一个自然数列表 q1..qm (n, m ≥ 0),返回一个 长度为 n 的列表,其第 i 个元素是自然的列表 区间 [xi − r, xi + r] 中的数不是 可以被 q1..qm 中的任何数字整除。

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

【问题讨论】:

  • StackOverflow 不是解决课堂作业的市场。你必须在你的问题上做一些工作才能得到一些帮助。在此处复制/粘贴问题陈述对您毫无帮助。没有人愿意无偿地做别人的工作,而他们却没有表现出丝毫的尊重。
  • 简而言之,向我们展示您的尝试。

标签: sml


【解决方案1】:

你可以这样定义函数:

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;

对于给出的示例:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多