首页 > 解决方案 > 你能得到多项式中的幂的列表吗?帕里大奖赛

问题描述

我正在使用系数为 +1/-1(和零)的单变量多项式。这些可能很长,权力范围可能很大。我将权力视为一个向量会很方便 - 有什么方法可以快速做到这一点?我曾希望帕里已经有一个命令来执行此操作,但我似乎看不到一个?

只是一个例子来确认我正在尝试做什么......

输入:x^10 - x^8 + x^5 - x^2 + x + 1

期望的输出:[10, 8, 5, 2, 1, 0]

标签: polynomialsparipari-gp

解决方案


您可以使用Vecrev来获取多项式系数。之后,只需枚举它们以选择非零的从零开始的位置。您需要以下单线:

nonzeros(xs) = Vecrev([x[2]-1 | x <- select(x -> x[1] != 0, vector(#xs, i, [xs[i], i]))])

现在您可以轻松获得多项式幂的列表:

p = x^10 - x^8 + x^5 - x^2 + x + 1
nonzeros(Vecrev(p))
>> [10, 8, 5, 2, 1, 0]

推荐阅读