Hello World 多項式の係数を計算する Maxima プログラム

Hello World 多項式については id:yshl:20060925 参照。これがあればアリアリでもナシナシでも*1自由に簡単に多項式化できます。

display2d:false$

/* 文字列操作パッケージ */
load("stringproc")$
/* 文字列に改行を追加して文字のリストに変換 */
hello_list:charlist(simplode(["Hello, World!",newline]))$
/* 文字を符号化 */
hello_num:map(cint,hello_list)$

/* 多項式化 */
f:0.5$
len:length(hello_num)$
for n:1 thru len do (
  f:f+hello_num[n]*product((x-i)/(n-i),i,1,n-1)*product((x-i)/(n-i),i,n+1,len)
)$
/* この時点の f は x=1 の時最初の文字のコードを返す多項式。
 * x=0 で最初の文字を返す為には 1 ずらす */
f:subst(x+1,x,f)$

/* 0 次の係数から順に小数で表示 */
for n:0 thru len-1 do (
    print(float(coeff(expand(f),x,n)))
)$

*1:「,」や「!」がそれぞれ有ったり無かったりすること。ELF Golf 紳士のスポ〜ツより。