Display a linear combination: Difference between revisions

Added Wren
m (→‎{{header|REXX}}: changed a comment.)
(Added Wren)
Line 1,538:
[-1, -2, 0, -3] -> -e(1) - 2*e(2) - 3*e(4)
[-1] -> -e(1)</pre>
 
=={{header|Wren}}==
{{trans|Kotlin}}
{{libheader|Wren-fmt}}
<lang ecmascript>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))
}</lang>
 
{{out}}
<pre>
[1, 2, 3] -> e(1) + 2*e(2) + 3*e(3)
[0, 1, 2, 3] -> e(2) + 2*e(3) + 3*e(4)
[1, 0, 3, 4] -> e(1) + 3*e(3) + 4*e(4)
[1, 2, 0] -> e(1) + 2*e(2)
[0, 0, 0] -> 0
[0] -> 0
[1, 1, 1] -> e(1) + e(2) + e(3)
[-1, -1, -1] -> -e(1) - e(2) - e(3)
[-1, -2, 0, -3] -> -e(1) - 2*e(2) - 3*e(4)
[-1] -> -e(1)
</pre>
 
=={{header|zkl}}==
9,486

edits