freeCodeCamp/curriculum/challenges/japanese/10-coding-interview-prep/project-euler/problem-321-swapping-counte...

2.1 KiB

id title challengeType forumTopicId dashedName
5900f4ae1000cf542c50ffc0 問題 321: カウンターを入れ替える 1 301978 problem-321-swapping-counters

--description--

2n + 1 個のマスが横方向に一列に並べられ、一方の端に n 個の赤のカウンターが置かれ、もう一方の端に n 個の青のカウンターが置かれ、その間の 1 マスは空いています。 例えば、n = 3 のときは下図のようになります。

列の両側の 3 マスに赤と青のカウンターが置かれ、間の 1 マスは空いている

カウンターは、あるマスから次のマスに移動したり (スライド)、別のカウンターの隣のマスが空いていればそのカウンターを飛び越えたり (ホップ) できます。

許容されるカウンターの動き方

色付きカウンターの位置を完全に入れ替える (すなわち赤のカウンターをすべて右へ、青のカウンターをすべて左へ移動する) ための移動やアクションの最小回数を、M(n) とします。

M(3) = 15 であることを確認できます。これは三角数でもあります。

M(n) が三角数となるような n の値に基づいて数列を作ると、最初の 5 項は 1, 3, 10, 22, 63 で、それらの和は 99 です。

この数列の最初の 40 項の和を求めなさい。

--hints--

swappingCounters()2470433131948040 を返す必要があります。

assert.strictEqual(swappingCounters(), 2470433131948040);

--seed--

--seed-contents--

function swappingCounters() {

  return true;
}

swappingCounters();

--solutions--

// solution required