Display a linear combination: Difference between revisions

No edit summary
Line 1,088:
ReadChar
END Linear.</lang>
 
=={{header|Nim}}==
{{trans|Kotlin}}
<lang Nim>import strformat
 
proc linearCombo(c: openArray[int]): string =
 
for i, n in c:
if n == 0: continue
let op = if n < 0:
if result.len == 0: "-" else: " - "
else:
if n > 0 and result.len == 0: "" else: " + "
let av = abs(n)
let coeff = if av == 1: "" else: $av & '*'
result &= fmt"{op}{coeff}e({i + 1})"
if result.len == 0:
result = "0"
 
const 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:
echo fmt"{($c)[1..^1]:15} → {linearCombo(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|Perl}}==
Anonymous user