Equilibrium index: Difference between revisions
Content added Content deleted
(Added BASIC256) |
(add RPL) |
||
Line 2,722: | Line 2,722: | ||
<pre> |
<pre> |
||
equilibrium indices are : 3,6 |
equilibrium indices are : 3,6 |
||
</pre> |
|||
=={{header|RPL}}== |
|||
{| class="wikitable" |
|||
! RPL code |
|||
! Comment |
|||
|- |
|||
| |
|||
≪ |
|||
0 SWAP + → seq |
|||
≪ { } 0 seq ∑LIST |
|||
2 seq SIZE '''FOR''' j |
|||
seq j GET - SWAP seq j 1 - GET + SWAP |
|||
'''IF''' DUP2 == '''THEN''' ROT j 2 - + ROT ROT '''END''' |
|||
'''NEXT''' DROP2 |
|||
≫ ≫ ‘'''EQIDX'''’ STO |
|||
| |
|||
'''EQIDX''' ''( { A0..An } -- { equilibrium index } ) '' |
|||
add zero at list head to avoid GET error at first loop |
|||
left = 0 ; right = A0+A1+...An |
|||
loop from j=2 to length(seq) e.g. A0 to An |
|||
right -= seq[j] ; left += A[j-1] |
|||
if left = right then append j-2 to index list |
|||
drop left and right |
|||
return list |
|||
|} |
|||
{ -7 1 5 2 -4 3 0 } EQIDX |
|||
{{out}} |
|||
<pre> |
|||
1: { 3 6 } |
|||
</pre> |
</pre> |
||