와 단순화 산술 식, 방금 변수없이 표현식을 단순화하기 위해 필요 :라켓 : 나는이 기능은 가능한 한 산술 식을 단순화 안됩니다</p> <pre><code>; (simplify expr) ; ; where expr is one of the following ; - a number ; - a symbol ; - a list of the form '(a operator b) where a and b are arithmetic expressions </code></pre> <p>기능을 구현하기 위해 노력하고 변수
예 :
,174 :(simplify '(3 + a)) => '(3 + a)
(simplify '(((2 + (3 * 4)) * a) + 2) => '((14 * a) + 2)
(simplify '((2 + (3 - a)) * 2) => '((2 + (3 - a)) * 2)
는 이미 연산 식을 계산하는 기능을 구현
(define (eval t)
(cond
[(number? t) t]
[else ((cond
[(equal? (second t) '+) +]
[(equal? (second t) '-) -]
[(equal? (second t) '*) *]
[(equal? (second t) '/) /])
(eval (first t)) (eval (third t)))]))
이것은 내가 지금까지 가지고있는 것입니다. 그러나 그것이 제대로 작동하지 않는다는 사실 외에도 훨씬 좋은 방법이 있다고 생각합니다.
(define (simplify t)
(cond
[(number? t) t]
[(equal? 'a (first t)) `(,(first t) ,(second t) ,(simplify (third t))) ]
[(equal? 'a (third t)) `(,(simplify (first t)) ,(second t) ,(third t)) ]
[else ((cond
[(equal? (second t) '+) +]
[(equal? (second t) '-) -]
[(equal? (second t) '*) *]
[(equal? (second t) '/) /])
(simplify (first t)) (simplify (third t)))]))
어떤 도움을 주시면 감사하겠습니다!
감사합니다. 목록에서 패턴 (숫자 연산 번호)을 확인하는 함수 (match-pattern? t)를 작성했으나 #true를 반환하면 전체 목록을 평가합니다 (match-pattern? t) (num op num) 표현식뿐 아니라 변수로 인해 오류를 반환합니다. 그 점에 대해 나에게 힌트를 줄 수 있니? (정의 (t 단순화) (COND [(번호? t) t] [(기호? t) t] [(대전 패턴? t) (평가 용 t)] [다른 t])) – newbie
'(표현식 op 표현식)'을 처리하고 (단순화 표현식 op 단순 표현식)을 생성하는 추가 절이 필요합니다. – soegaard