Shift list elements to left by 3: Difference between revisions
Content added Content deleted
Drkameleon (talk | contribs) (Added Arturo implementation) |
(Added a Scheme implementation.) |
||
Line 1,482: | Line 1,482: | ||
After: [4, 5, 6, 7, 8, 9, 1, 2, 3] |
After: [4, 5, 6, 7, 8, 9, 1, 2, 3] |
||
</pre> |
</pre> |
||
=={{header|Scheme}}== |
|||
{{works with|Chez Scheme}} |
|||
<lang scheme>; Rotate a list by the given number of elements. |
|||
; Positive = Rotate left; Negative = Rotate right. |
|||
(define list-rotate |
|||
(lambda (lst n) |
|||
(cond |
|||
((or (not (pair? lst)) (= n 0)) |
|||
lst) |
|||
((< n 0) |
|||
(let ((end (1- (length lst)))) |
|||
(list-rotate (append (list (list-ref lst end)) (list-head lst end)) (1+ n)))) |
|||
(else |
|||
(list-rotate (cdr (append lst (list (car lst)))) (1- n))))))</lang> |
|||
{{out}} |
|||
<pre>(list-rotate '(1 2 3 4 5 6 7 8 9) 3) --> (4 5 6 7 8 9 1 2 3) |
|||
(list-rotate '(1 2 3 4 5 6 7 8 9) -3) --> (7 8 9 1 2 3 4 5 6)</pre> |
|||
=={{header|Wren}}== |
=={{header|Wren}}== |