球拍家庭作业的解决方案

solution for a homework in racket

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

问题:

定义一个 max-gap 函数,它消耗五个整数和 returns 任意两个整数(按它们出现的顺序)内的最大间隙(绝对值,即自然数)。例如,(max-gap 1 3 -1 1 1) 会 return 4. 你可能想使用 Racket 函数 max, abs.

输出例如:

(测试 (最大间隙 1 5 -1 6 22) => 16)

#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

如果您 post 进行了一些尝试,我会帮助您找到比这个更惯用的解决方案。