我需要创建一个接收列表和所需新大小的Scheme函数,然后该函数使用相同的列表值扩展列表大小。例如:
'(1 2 3) to size 6 will turn to '(1 2 3 1 2 3)
'(1 2) to size 5 will turn to '(1 2 1 2 1)
'(4 5 6 1) to size 7 will turn to '(4 5 6 1 4 5 6)
新的长度函数参数可以等于或大于当前列表大小。
答案 0 :(得分:0)
您可以使用SRFI 1函数circular-list
(与Racket的内置take
一起)来执行此操作:
(require srfi/1)
(define (take-circular lst n)
(take (apply circular-list lst) n))
如果你想避免使用SRFI 1,另一种方法是这样的:
(define (take-circular lst n)
(let ((size (length lst)))
(if (> n size)
(append lst (take-circular lst (- n size)))
(take lst n))))