2016-11-13 2 views
1

나는 이것이 새 질문이라는 것을 알고 있습니다. 구성표에 다항식을 표시하는 'displayPoly'함수를 만들려고합니다.계수 목록으로 표현 된 다항식을 문자열로 변환합니다.

(define degree 
(lambda(list) 
    (if (null? list) 
     (- 1) 
    (+ 1 (degree (cdr list)))))) 
: 예를 들어, 목록 '(2 0 1 5.1 8)에 표시한다 배^4 + X^2 + 5.1 배 + I는 다음과 같이 "도"를 정의 제

같이 주어진다

기본 체계 기능에 엄격하게 제한됩니다. • 정의, 람다, 조건, 조건, 죄수, 자동차, CDR, 목록, 구성원, 목록 참조 • 조건 자 : null? 명부? 같은? 끈? 번호? 회원? • 산술 연산자, 관계 연산자, 논리 연산자 • 정렬, 매핑, 필터, foldr, foldl, 길이, 역방향, 추가, 마지막, let, let *, letrec, 인쇄, 시작, 줄 바꿈, 표시, expt, 문자열 추가 , 축소, 범위

답변

0

일부 도우미 기능을 작성해야합니다.

  1. 주어진 다항식이 도의 목록을 반환하는 함수를 작성하십시오.

    입력 '(2 0 1 5.1 8) 출력 (4 3 2 1 0)

  2. 함수 계수를 소정 mono 쓰기도 문자열로서 단항식 출력한다.

    입력 : 2~4 출력 "^ 2 × 4"

  3. 사용 (map mono '(2 0 1 5.1 8) (4 3 2 1 0))가 monomials의리스트를 생성한다.

  4. add-between (또는 직접 쓰십시오)을 사용하여 모든 모노매이드 사이에 "+"를 추가하십시오.

  5. 최종 문자열을 얻으려면 (apply string-append your-list-of-monomials)을 사용하십시오.

참고 : 더 좋은 출력을 낼 수는 있지만 좋은 시작입니다.

+0

제안 사항은 음수 계수에 문제를 일으킬 수 있습니다. 예. '(-1 2 -5)'는'-x^2 + 2x - 5'로 만들어야합니다. – Sylwester

+0

'(-1) x^2 + 2x + (-5)'는 완벽하지는 않지만 적어도 정확합니다. – soegaard

+0

@skywester 네거티브가 표시되는 방식은 문제가 아니 었습니다. "+"가 사이에있는 한. 어쨌든 재귀를 사용하여 작업하고 디스플레이합니다. 내가 얻은 유일한 문제는 0 (5 0 3 -2 1) = 5x^4 + 0x^3 + 3x^2 + -2x + 1이다. 나는 모노와 필터를 매핑하려했지만, 불운. 이것이해야 할 것 같아요. 고맙습니다. –

관련 문제