球拍作业的解决方案

时间:2015-03-24 03:13:28

标签: racket

我是球拍编程语言的新手。 我需要在球拍中提供一个解决方案但我无法写出有效的东西。

问题:

定义一个消耗五个整数的max-gap函数,并返回任意两个(按照它们出现的顺序)中的最大间隙(绝对值,即自然数)。例如,(max-gap 1 3 -1 1 1)将返回4.您可能希望使用Racket函数max,abs。

输出例如:

(test(max-gap 1 5 -1 6 22)=> 16)

1 个答案:

答案 0 :(得分:1)

#lang racket
(require datalog)

(define mg-theory (make-theory))
(datalog mg-theory
         (! (:- (max-gap-datalog A B C D E X)
                (max A B C D E :- MX)
                (min A B C D E :- MN)
                (- MX MN :- X))))
(define (max-gap a b c d e)
  (hash-ref (first
             (datalog mg-theory
                      (? (max-gap-datalog a b c d e X)))) 'X))

示例:

> (max-gap 1 3 -1 1 1)
4
> (max-gap 1 5 -1 6 22)
23

如果您发布了一些您已经做过的尝试,我会帮助您找到一个比这个更惯用的解决方案。