53 lines
2.5 KiB
Markdown
53 lines
2.5 KiB
Markdown
![]() |
---
|
|||
|
id: 5900f4ae1000cf542c50ffc0
|
|||
|
title: 'Завдання 321: Заміна фішок'
|
|||
|
challengeType: 5
|
|||
|
forumTopicId: 301978
|
|||
|
dashedName: problem-321-swapping-counters
|
|||
|
---
|
|||
|
|
|||
|
# --description--
|
|||
|
|
|||
|
Горизонтальний ряд, що складається з $2n + 1$ квадратів, має $n$ червоних фішок, розміщених в одному кінці, та $n$ синіх фішок у іншому кінці, котрі розмежовані пустим квадратом у центрі. Наприклад, якщо $n = 3$.
|
|||
|
|
|||
|
<img class="img-responsive center-block" alt="три квадрати з червоними та синіми фішками розміщені у протилежних кінцях ряду й розділені одним пустим квадратом" src="https://cdn.freecodecamp.org/curriculum/project-euler/swapping-counters-1.gif" style="background-color: white; padding: 10px;" />
|
|||
|
|
|||
|
Фішка може рухатися з одного квадрата до іншого (зміщення), чи може перестрибнути через іншу фішку, якщо квадрат біля фішки не зайнятий.
|
|||
|
|
|||
|
<img class="img-responsive center-block" alt="дозволені рухи фішок" src="https://cdn.freecodecamp.org/curriculum/project-euler/swapping-counters-2.gif" style="background-color: white; padding: 10px;" />
|
|||
|
|
|||
|
Нехай $M(n)$ відображає мінімальну кількість рухів/дій, потрібних для цілковитої зміни позицій кольорових фішок; це все, перемістіть усі червоні фішки праворуч та усі сині — ліворуч.
|
|||
|
|
|||
|
Може бути підтверджено, що $M(3) = 15$, яке є трикутним числом.
|
|||
|
|
|||
|
Якщо ми створимо послідовність, що базується на значеннях n, де $M(n)$ є трикутним числом, тоді першими п'ятьма значеннями будуть: 1, 3, 10, 22 та 63, а їхня сума дорівнюватиме 99.
|
|||
|
|
|||
|
Знайдіть суму перших сорока значень послідовності.
|
|||
|
|
|||
|
# --hints--
|
|||
|
|
|||
|
`swappingCounters()` має повернути `2470433131948040`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.strictEqual(swappingCounters(), 2470433131948040);
|
|||
|
```
|
|||
|
|
|||
|
# --seed--
|
|||
|
|
|||
|
## --seed-contents--
|
|||
|
|
|||
|
```js
|
|||
|
function swappingCounters() {
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
swappingCounters();
|
|||
|
```
|
|||
|
|
|||
|
# --solutions--
|
|||
|
|
|||
|
```js
|
|||
|
// solution required
|
|||
|
```
|