34 lines
737 B
Text
34 lines
737 B
Text
import "./fmt" for Fmt
|
|
|
|
var linearCombo = Fn.new { |c|
|
|
var sb = ""
|
|
var i = 0
|
|
for (n in c) {
|
|
if (n != 0) {
|
|
var op = (n < 0 && sb == "") ? "-" :
|
|
(n < 0) ? " - " :
|
|
(n > 0 && sb == "") ? "" : " + "
|
|
var av = n.abs
|
|
var coeff = (av == 1) ? "" : "%(av)*"
|
|
sb = sb + "%(op)%(coeff)e(%(i + 1))"
|
|
}
|
|
i = i + 1
|
|
}
|
|
return (sb == "") ? "0" : sb
|
|
}
|
|
|
|
var combos = [
|
|
[1, 2, 3],
|
|
[0, 1, 2, 3],
|
|
[1, 0, 3, 4],
|
|
[1, 2, 0],
|
|
[0, 0, 0],
|
|
[0],
|
|
[1, 1, 1],
|
|
[-1, -1, -1],
|
|
[-1, -2, 0, -3],
|
|
[-1]
|
|
]
|
|
for (c in combos) {
|
|
Fmt.print("$-15s -> $s", c.toString, linearCombo.call(c))
|
|
}
|