Scheme 定义一个间隔的三元素列表?

Scheme 定义一个间隔的三元素列表?,scheme,Scheme,定义一个程序triscet,该程序采用两个元素的数字列表,表示数字行上的[a,b]间隔,其中a

定义一个程序triscet,该程序采用两个元素的数字列表,表示数字行上的[a,b]间隔,其中a
(trisect '(-4 8))
((-4 0) (0 4) (4 8))
关于编写程序的帮助

(define triscet
  (lambda '(a b)
   (if < a b)
    (cons (quotient a 3(cons (quotient b 3 ls))))))
(定义triscet
(λ)(a和b)
(如果

我走的方向对吗?还是我的逻辑完全错了?

到目前为止,您的解决方案没有走上正确的轨道。首先,从提供的输入中,您应该收到一个包含两个元素的列表的单个参数,而不是两个参数。而且,您不需要检查其中一个是否小于另一个(除非您希望接收不正确的输入,并且仅作为错误检查)

让我们考虑一下需要做些什么才能将间隔分成三部分。以下是解决方案的一般结构,以帮助您开始(假设输入正确),请自己填空:

(define (trisect interval)
  (let* ((start  <???>)  ; start of interval
         (end    <???>)  ; end of interval
         (offset <???>)) ; size of each chunk if we divide the interval in 3
    (list (list start <???>)  ; 1st subinterval: [start, start+offset]
          (list <???> <???>)  ; 2nd subinterval: [start+offset, start+2*offset]
          (list <???> end)))) ; 3rd subinterval: [start+2*offset, end]
(定义(三等分间隔)
(让*((开始);间隔的开始
(结束);间隔结束
(偏移量);如果我们将间隔除以3,则每个块的大小
(列表(列表开始);第一个子间隔:[开始,开始+偏移]
(列表);第二个子区间:[开始+偏移,开始+2*偏移]
(完),;第三子间隔:[开始+2*偏移,结束]

到目前为止您做了什么?请不要在这里抛掷作业问题,除非先1)将其标记为作业,并2)显示您试图解决的问题。请不要粗鲁。我来这里是为了寻求帮助,而不是被激怒。是的,这是家庭作业。我不经常来这里,所以我不知道有必要把一个问题贴上家庭作业的标签。如果这听起来很粗鲁,那不是我的本意。将您迄今为止所做的代码添加到问题本身,而不是作为注释,以便其他人可以查看并帮助您改进。@ÓscarLópez作业标签现已被列入黑名单,我们正在删除它。请不要添加或建议添加。更多信息请参见标签。@Tim我不知道,从什么时候起它就被列入黑名单了?这是否意味着SO不再帮助人们做家庭作业了?