정말 정리가 필요합니다. 제목은 아무 것도 말하지 않고 코드 형식이 잘못되어 실제로 시작하려면 play around with loop해야합니다. 나는 당신이 당신의 해결책을 당신에게 시도해 볼 필요가 있기 때문에 당신에게주지 않을 것입니다. 다음은 과제 수행을 위해 사용할 수있는 예입니다.
;; this orders a list by their odd index
;; NB: index starts at zero so first element is even
(defun order-odd-index (list)
(loop :for element :in list ; iterates your list
:for index :from 0 ; starts from 0 and goes on
:if (oddp index) ; if in a loop
:collect element :into odd-list ; variable is automatically created
:else ; else in a loop
:collect element :into even-list
:finally (return (append odd-list even-list)))) ; what to do in the end
(order-odd-index '(4 67 3 2 7 9)) ; ==> (67 2 9 4 3 7)
나는 키워드 (같은 :for
대신 for
)이 기호 루프 키워드입니다 무엇을하지 않은 것을 나타 내기 위해 사용합니다. 그것은 선택 사항이지만 그것은 훨씬 깨끗해 보인다고 생각합니다.
이제 5 개의 변수로 요소를 수집하면 문제를 해결할 수 있습니다. 그 중 두 가지는 index가 인수로 주어진 장소 중 하나와 같을 때입니다. 다른 3은 앞과 뒤 사이에 있습니다. 마지막으로 당신은 단지 append
의 변수를 올바른 순서로 완성 할 수 있습니다.
오류 메시지에 무엇이 표시됩니까? 또한, 주위에 몇 가지 리스프 예제를보고 일부 공백을 사용하십시오. 코드를 이해하는 것이 훨씬 쉬울 것입니다. – lurker
, 컴파일러 경고 : ; SWAP-TWO-ELEMENT : 인수가있는 SET 호출 (NEWX CAR Z)에서 ; 3 개의 논쟁이 제공되었지만, 최대 2 개는 받아 들여진다. ; SET 의 현재 글로벌 정의에 의해; SWAP-TWO-ELEMENT : 선언되지 않은 무료 변수 CAR ; SWAP-TWO-ELEMENT에서 : 사용되지 않는 어휘 변수 COPYZ ; SWAP-TWO-ELEMENT에서 : 사용되지 않는 어휘 변수 NEWLIST ; SWAP-TWO-ELEMENT : 사용되지 않는 어휘 변수 X – user3511473
역 추적 : 0 : (CCL :: APPEND-2 AB) 1 : (SWAP-TWO-ELEMENT (ABCD) 2 3) 2 : (CCL :: CALL- (CCL :: CHEAP-EVAL (SWAP-TWO-ELEMENT '(ABCD) 2 3)) – user3511473