Equilibrium index: Difference between revisions
Content added Content deleted
(Added Wren) |
|||
Line 2,610: | Line 2,610: | ||
{{out}} |
{{out}} |
||
<pre>Indices: 3, 6,</pre> |
<pre>Indices: 3, 6,</pre> |
||
=={{header|Wren}}== |
|||
<lang ecmascript>var equilibrium = Fn.new { |a| |
|||
var len = a.count |
|||
var equi = [] |
|||
if (len == 0) return equi // sequence has no indices at all |
|||
var rsum = a.reduce { |acc, x| acc + x } |
|||
var lsum = 0 |
|||
for (i in 0...len) { |
|||
rsum = rsum - a[i] |
|||
if (rsum == lsum) equi.add(i) |
|||
lsum = lsum + a[i] |
|||
} |
|||
return equi |
|||
} |
|||
var rset = Fn.new { |m, n| |
|||
var s = "%(n)" |
|||
var c = s.count |
|||
return (m > c) ? " " * (m - c) + s : s |
|||
} |
|||
var tests = [ |
|||
[-7, 1, 5, 2, -4, 3, 0], |
|||
[2, 4, 6], |
|||
[2, 9, 2], |
|||
[1, -1, 1, -1, 1, -1, 1], |
|||
[1], |
|||
[] |
|||
] |
|||
System.print("The equilibrium indices for the following sequences are:\n") |
|||
for (test in tests) { |
|||
System.print("%(rset.call(24, test)) -> %(equilibrium.call(test))") |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
The equilibrium indices for the following sequences are: |
|||
[-7, 1, 5, 2, -4, 3, 0] -> [3, 6] |
|||
[2, 4, 6] -> [] |
|||
[2, 9, 2] -> [1] |
|||
[1, -1, 1, -1, 1, -1, 1] -> [0, 1, 2, 3, 4, 5, 6] |
|||
[1] -> [0] |
|||
[] -> [] |
|||
</pre> |
|||
=={{header|XPL0}}== |
=={{header|XPL0}}== |