저는 Scheme 및 기능적 프로그래밍을 처음 사용하므로 익숙하지 않아야합니다. ,Scheme : 피벗을 기준으로 요소 정렬
하나를 작거나 같은 피벗에있는 모든 요소에 대한
하나 : 나는 목록 및 피벗을받는 함수를 구현하고 다음이 명 목록을 포함하는 목록을 반환하기 위해 노력하고있어 피봇보다 큰 모든 요소에 대해
define helper (lambda (lst pivot)
(define lst1 null)
(define lst2 null)
(define my-split (lambda (lst pivot lst1 lst2)
(if (null? lst)
(list lst1 lst2)
(if (<= (car lst) pivot)
(my-split (cdr lst) pivot (cons (car lst) lst1) lst2)
(my-split (cdr lst) pivot lst1 (cons (car lst) lst2))))))
(my-split lst pivot lst1 lst2)))
내 현재의 문제는 lst1
및 lst2
가 그래서 문제가 추측 실행의 끝에서 null
있다는 것입니다 : -
(cons (car lst) lst1)
&
(cons (car lst) lst2)))
입니다.
일부 복잡한 명령을 사용하는 웹에서 일부 구현을 보았습니다. 사용하지 못하게되었습니다 (예, 숙제입니다).
직접 제공하는 대신 내 코드를 수정하는 방법을 제공해주십시오.
감사
내가 언급했듯이, Im은'set! '을 사용할 수 없기 때문에 입력 매개 변수에'lst1'과'lst2'를 추가하고 인수로 전달했지만 결과는 동일합니다 (내 편집 참조). 당신이 제공하는 것에 대한 코드 샘플을 제공 할 수 있습니까? – Noam
@Noam 거의 다 왔어. 마지막 라인에서'if (list lst1 lst2)'를 첫 번째'if' 표현식의 첫 번째 팔로 옮긴다 ('null'을 대체). –
감사합니다. – Noam