Equilibrium index: Difference between revisions
→{{header|Picat}}: Moved into subsections, added {{out}}
(→{{header|Picat}}: Moved into subsections, added {{out}}) |
|||
Line 2,100:
=={{header|Picat}}==
Note: Picat is 1-based.
===Prolog-style===
{{trans|Prolog}}
<lang Picat>equilibrium_index1(A, Ix) => ▼
append(Front, [_|Back], A),▼
sum(Front) = sum(Back),▼
Ix = length(Front)+1. % give 1 based index</lang>▼
===Loop approach===
{{trans|Java}}
<lang Picat>equilibrium_index2(A, Ix) =>▼
Len = A.length,▼
Ix1 = [],▼
TotalSum = sum(A),▼
RunningSum = 0,▼
foreach(I in 1..Len)▼
AI = A[I],▼
if TotalSum - RunningSum - AI == RunningSum then ▼
Ix1 := Ix1 ++ [I]▼
end,▼
RunningSum := RunningSum + AI▼
end,▼
Ix = Ix1.</lang>▼
Test the approaches.
<lang Picat>go =>
As = [
Line 2,131 ⟶ 2,156:
println(r2=R2),
nl.</lang>
▲equilibrium_index1(A, Ix) =>
▲ append(Front, [_|Back], A),
▲ sum(Front) = sum(Back),
▲ Ix = length(Front)+1. % give 1 based index
▲equilibrium_index2(A, Ix) =>
▲ Len = A.length,
▲ Ix1 = [],
▲ TotalSum = sum(A),
▲ RunningSum = 0,
▲ foreach(I in 1..Len)
▲ AI = A[I],
▲ if TotalSum - RunningSum - AI == RunningSum then
▲ Ix1 := Ix1 ++ [I]
▲ end,
▲ RunningSum := RunningSum + AI
▲ end,
▲ Ix = Ix1.
{{out}}
<pre>a = [-7,1,5,2,-4,3,0]▼
▲a = [-7,1,5,2,-4,3,0]
all1 = [4,7]
all2 = [4,7]
Line 2,186 ⟶ 2,187:
CPU time 0.019 seconds.
r2 = [115,372,4082,4254,4258,4261]</pre>
=={{header|PicoLisp}}==
|