2014-12-06 2 views
0

두 개의 다항식을 더하는 함수가 있는데, 두 다항식의 합이 0이되면 여전히 답안에서 반환됩니다. 내 목록에서 0 개의 계수와 해당 항을 제거 할 수 있어야합니다.Lisp의 목록에서 하위 목록을 제거합니다.

내 다항식 표현 같은 배^2인지 ((5- ((2 ×)))) 예를 들어

다항식이^2 + 3Y + 0X^2는 같을 것이다 배 인 경우.

((5 ((2 x))) 
(3 ((1 y))) 
(0 ((2 x)))) 

나는 목록의 첫 번째 목록은 0 계수를 가지고 있지만 내가 계수가 여기에 0

되는 경우 목록을 재귀 적으로 제거 할을 얻기 위해 고군분투 경우 식별 할 수 있도록 일부 코드가 내 코드 :

(defun my-remove(a) 
    (if(null a) 
    a 
    (if(equal (car(car a)) 0) 
     t 
     nil))) 

현재로서는 첫 번째 목록의 계수가 0이면 true를 반환하고 그렇지 않으면 false를 반환합니다.

+2

왜 Common Lisp'remove' 기능을 사용하지 않습니까? –

+2

'(조건이 nil 인 경우)'단지'조건'입니다. –

+0

구문에 어려움을 겪고 있습니다. 나는이 예제를 보았다. (remove '(1 2)'((1 2) (1 3)) : test # 'equal)'그러나 나는 무엇을 평등하게 두어야할지 모르겠다. 0을 넣으려고했으나 작동하지 않았습니다. – JaAnTr

답변

1
CL-USER 52 > (remove 0 '((5 ((2 x))) 
         (3 ((1 y))) 
         (0 ((2 x)))) 
        :key #'first) 
((5 ((2 X))) (3 ((1 Y)))) 
+0

고맙습니다. 나는 전에 '처음'을 보지 못했지만 그것을 읽었습니다. 나는 그것이 자동차와 똑같다고 말하고 있습니다. 나는 자동차로 그것을 시험해 보았고 정확하게 똑같이 작동한다. 나는 단지 확신하고 싶다. – JaAnTr

+0

예,'first'는'car'의 별칭입니다 _functionally_,'cdr'에'rest'도 있습니다. 나는 보통 개념적으로 목록에있는 것들에 대해서는'first' /'rest'를 사용하지만, 다른 cons 셀들에 대해서는'car'와'cdr'를 사용합니다. – Svante

+0

@ rainer-joswig 어떻게 이것을 함수에 통합 할 수 있습니까? 나는 그것이 분명해야한다고 생각하지만 구문에 어려움을 겪고 있습니다. 지금은 내가 가지고있다. (defun my-remove (a) (remove a a : key # 'first))'값은 예상되는 타입 목록이 아니기 때문에 작동하지 않는다. – JaAnTr

관련 문제