Functional programming 将表示为系数列表的多项式转换为字符串

Functional programming 将表示为系数列表的多项式转换为字符串,functional-programming,scheme,racket,polynomials,Functional Programming,Scheme,Racket,Polynomials,我知道这是个新问题。我正在尝试创建一个函数“displayPoly”,以在scheme中显示多项式。例如,下面给出的列表 '(20 1 5.1 8)应显示2x^4+x^2+5.1x+8 我将“学位”定义如下: (define degree (lambda(list) (if (null? list) (- 1) (+ 1 (degree (cdr list)))))) 请注意,我严格限于基本方案功能 •定义、lambda、if、cond、cons、car、cdr、l

我知道这是个新问题。我正在尝试创建一个函数“displayPoly”,以在scheme中显示多项式。例如,下面给出的列表 '(20 1 5.1 8)应显示2x^4+x^2+5.1x+8

我将“学位”定义如下:

 (define degree
 (lambda(list)
  (if (null? list) 
      (- 1)
  (+ 1  (degree (cdr list))))))
请注意,我严格限于基本方案功能 •定义、lambda、if、cond、cons、car、cdr、list、member、list ref •谓词:null?列表平等?一串号码?成员? •算术运算符、关系运算符、逻辑运算符
•排序、映射、筛选、foldr、foldl、长度、反转、追加、最后、let、let*、let rec、打印、开始、换行、显示、导出、字符串追加、减少、范围

您需要编写一些帮助函数

  • 编写一个函数,在给定多项式的情况下返回度数列表

    输入:'(2 0 1 5.1 8) 产出:(432110)

  • 编写一个函数
    mono
    ,该函数给定一个系数和一个度,输出一个单项式作为字符串

    投入:2 4 输出:“2x^4”

  • 使用
    (映射mono'(2 0 1 5.1 8)(4 3 2 1 0))
    生成单项式列表

  • 使用
    addbetween
    (或自己编写一个)在所有单项式之间添加“+”

  • 使用
    (应用字符串附加单项式列表)
    获取最终字符串


  • 注意:可以生成更漂亮的输出,但这是一个良好的开端。

    您需要编写一些帮助函数

  • 编写一个函数,在给定多项式的情况下返回度数列表

    输入:'(2 0 1 5.1 8) 产出:(432110)

  • 编写一个函数
    mono
    ,该函数给定一个系数和一个度,输出一个单项式作为字符串

    投入:2 4 输出:“2x^4”

  • 使用
    (映射mono'(2 0 1 5.1 8)(4 3 2 1 0))
    生成单项式列表

  • 使用
    addbetween
    (或自己编写一个)在所有单项式之间添加“+”

  • 使用
    (应用字符串附加单项式列表)
    获取最终字符串


  • 注:可以产生更漂亮的输出,但这是一个良好的开端。

    该建议会对负系数造成问题。例如,
    (-12-5)
    应该使
    -x^2+2x-5
    (-1)x^2+2x+(-5)
    不是完美的,但至少是正确的。@Skywest底片的显示方式不是问题。只要“+”显示在中间。不管怎样,我使用递归和显示来实现它。我遇到的唯一问题是它会显示0。i、 e(53-21)=5x^4+0x^3+3x^2+-2x+1。我试着映射mono和filter,但没有成功。我想这就够了。如果你的答案有帮助,请考虑通过点击绿色复选标记来接受答案。例如,
    (-12-5)
    应该使
    -x^2+2x-5
    (-1)x^2+2x+(-5)
    不是完美的,但至少是正确的。@Skywest底片的显示方式不是问题。只要“+”显示在中间。不管怎样,我使用递归和显示来实现它。我遇到的唯一问题是它会显示0。i、 e(53-21)=5x^4+0x^3+3x^2+-2x+1。我试着映射mono和filter,但没有成功。我想这就够了。如果你的答案有帮助,请考虑通过点击绿色复选标记来接受答案。