-1

リストと目的の新しいサイズを受け取る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)

新しい長さ関数パラメーターは、現在のリストサイズ以上にすることができます。

4

1 に答える 1

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))))
于 2012-10-27T13:18:09.250 に答える