2012-10-27 2 views
-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) 

새 길이 함수 매개 변수는 현재 목록 크기보다 크거나 같을 수 있습니다.

+2

이 숙제가 있니? –

+0

일종의, 그것은 내가 학교에서 가져가는 프로젝트이고 더 큰 무언가의 작은 부분 일뿐입니다. –

+1

그런 경우에는 Pretty Big보다는 표준 Racket 언어를 사용하는 것이 좋습니다. 후자는 꽤 구식입니다 (또는 Eli Barzilay가 나에게 알려줍니다). –

답변

0

당신은이 작업을 수행하기 위해 (라켓의 내장 take 함께) SRFI 1 기능 circular-list를 사용할 수 있습니다

(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)))) 
+0

감사. 실제로 SRFI 1을 사용할 수 없으므로 두 번째 코드를 시도했지만 작동하지 않았습니다. 먼저'take '라는 단어는 정의되지 않았으므로'circular-list'로 변경 했으므로 이제 프로그램은 무한 루프에 빠지게됩니다. –

+0

라켓에서 어떤 언어를 사용하고 있습니까? 'take '는 여러분이 표준 라켓 언어 ('#lang racket')를 사용한다면 정의됩니다. –

+0

오, 정말 유감스럽게 생각합니다. 내가 사용하는 언어는 Pretty Big입니다. –

관련 문제