Files
freeCodeCamp/curriculum/challenges/german/22-rosetta-code/rosetta-code-challenges/equilibrium-index.md
2024-01-24 19:52:36 +01:00

2.7 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
5987fd532b954e0f21b5d3f6 Gleichgewichtsindex 1 302255 equilibrium-index

--description--

An equilibrium index of a sequence is an index into the sequence such that the sum of elements at lower indices is equal to the sum of elements at higher indices.

Zum Beispiel, in einer Folge A:

  • $A_0 = -7$
  • $A_1 = 1$
  • $A_2 = 5$
  • $A_3 = 2$
  • $A_4 = -4$
  • $A_5 = 3$
  • $A_6 = 0$

3 ist ein Gleichgewichtsindex, da:

  • $A_0 + A_1 + A_2 = A_4 + A_5 + A_6$

6 ist auch ein Gleichgewichtsindex, da:

  • $A_0 + A_1 + A_2 + A_3 + A_4 + A_5 = 0$

(Summe der Null-Elemente ist Null)

7 ist kein Gleichgewichtsindex, da es sich nicht um einen gültigen Index der Sequenz A handelt.

--instructions--

Schreibe eine Funktion, die nach einer Sequenz ihre Gleichgewichtsindizes (falls vorhanden) zurückgibt.

Nehmen wir an, dass die Sequenz sehr lang sein kann.

--hints--

equilibrium sollte eine Funktion sein.

assert(typeof equilibrium === 'function');

equilibrium([-7, 1, 5, 2, -4, 3, 0]) sollte [3,6] zurückgeben.

assert.deepEqual(equilibrium(equilibriumTests[0]), ans[0]);

equilibrium([2, 4, 6]) sollte [] zurückgeben.

assert.deepEqual(equilibrium(equilibriumTests[1]), ans[1]);

equilibrium([2, 9, 2]) sollte [1] zurückgeben.

assert.deepEqual(equilibrium(equilibriumTests[2]), ans[2]);

equilibrium([1, -1, 1, -1, 1, -1, 1]) sollte [0,1,2,3,4,5,6] zurückgeben.

assert.deepEqual(equilibrium(equilibriumTests[3]), ans[3]);

equilibrium([1]) sollte [0] zurückgeben.

assert.deepEqual(equilibrium(equilibriumTests[4]), ans[4]);

equilibrium([]) sollte [] zurückgeben.

assert.deepEqual(equilibrium(equilibriumTests[5]), ans[5]);

--seed--

--after-user-code--

const equilibriumTests =
  [[-7, 1, 5, 2, -4, 3, 0], // 3, 6
  [2, 4, 6], // empty
  [2, 9, 2], // 1
  [1, -1, 1, -1, 1, -1, 1], // 0,1,2,3,4,5,6
  [1], // 0
  [] // empty
  ];
const ans = [[3, 6], [], [1], [0, 1, 2, 3, 4, 5, 6], [0], []];

--seed-contents--

function equilibrium(a) {

}

--solutions--

function equilibrium(a) {
  let N = a.length,
    i,
    l = [],
    r = [],
    e = [];
  for (l[0] = a[0], r[N - 1] = a[N - 1], i = 1; i < N; i++)
    { l[i] = l[i - 1] + a[i], r[N - i - 1] = r[N - i] + a[N - i - 1]; }
  for (i = 0; i < N; i++)
    { if (l[i] === r[i]) e.push(i); }
  return e;
}