在Scheme / Racket中向左旋转一个列表

时间:2012-10-24 09:04:58

标签: list scheme racket

尝试旋转方案/球拍中的左侧列表。 例如:( rotate-left'(abc))输出(bca)

这是ze代码!

(define (rotate-left LIST)
    (if(null? LIST)'()
        (cons(car LIST)(cons(cdr LIST)'())))))

不幸的是,这只输出相同的列表!应该是一个简单的解决方案我敢肯定,我知道我很接近......感谢您的帮助!

3 个答案:

答案 0 :(得分:8)

@laser_wizard给出的答案不起作用......这是一个正确的实现 - 您必须将第一个cons替换为append,以便在端添加第一个元素列表。

(define (rotate-left LIST)
  (if (null? LIST)
      '()
      (append (cdr LIST)
              (cons (car LIST)
                    '()))))


(rotate-left '(a b c))
> '(b c a)

答案 1 :(得分:1)

测试案例!测试用例!这里的检查期望可以帮助您理解问题,其他人可以帮助您了解您的需求。

我想我已经老了。

答案 2 :(得分:-2)

你有车和cdr向后!你走了:

(define (rotate-left LIST)
    (if(null? LIST)'()
        (cons(cdr LIST)(cons(car LIST)'())))))