Jump to content

Display a linear combination: Difference between revisions

Added Sidef
(→‎{{header|Elixir}}: String.lstrip -> trim_leading)
(Added Sidef)
Line 309:
-1, -2, 0, -3 ──► -e(1) - 2*e(2) - 3*e(4)
-1 ──► -e(1)
</pre>
 
=={{header|Sidef}}==
{{trans|Tcl}}
<lang ruby>func linear_combination(coeffs) {
var res = ""
for e,f in (coeffs.kv) {
given(f) {
when (1) {
res += "+e(#{e+1})"
}
when (-1) {
res += "-e(#{e+1})"
}
case (.> 0) {
res += "+#{f}*e(#{e+1})"
}
case (.< 0) {
res += "#{f}*e(#{e+1})"
}
}
}
res -= /^\+/
res || 0
}
 
var tests = [
%n{1 2 3},
%n{0 1 2 3},
%n{1 0 3 4},
%n{1 2 0},
%n{0 0 0},
%n{0},
%n{1 1 1},
%n{-1 -1 -1},
%n{-1 -2 0 -3},
%n{-1},
]
 
tests.each { |t|
printf("%10s -> %-10s\n", t.join(' '), linear_combination(t))
}</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>
 
2,747

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.