53 lines
1.9 KiB
Markdown
53 lines
1.9 KiB
Markdown
---
|
|
id: 5900f4ae1000cf542c50ffc0
|
|
title: 'Problema 321: Trocando contadores'
|
|
challengeType: 5
|
|
forumTopicId: 301978
|
|
dashedName: problem-321-swapping-counters
|
|
---
|
|
|
|
# --description--
|
|
|
|
Uma linha horizontal que compreende $2n + 1$ quadrados tem $n$ contadores vermelhos colocados em uma extremidade e $n$ contadores azuis na outra extremidade, estando separados por um único quadrado vazio no centro. Por exemplo, para $n = 3$.
|
|
|
|
<img class="img-responsive center-block" alt="três quadrados com contadores vermelhos e azuis colocados em pontas opostas da linha, separados por um quadrado vazio" src="https://cdn.freecodecamp.org/curriculum/project-euler/swapping-counters-1.gif" style="background-color: white; padding: 10px;" />
|
|
|
|
Um contador pode se mover de um quadrado para o próximo (deslizando) ou pular sobre outro contador (salto) desde que o quadrado ao lado desse contador esteja desocupado.
|
|
|
|
<img class="img-responsive center-block" alt="movimentos permitidos do contador" src="https://cdn.freecodecamp.org/curriculum/project-euler/swapping-counters-2.gif" style="background-color: white; padding: 10px;" />
|
|
|
|
Considere $M(n)$ como representando o número mínimo de movimentos/ações para reverter completamente as posições dos contadores coloridos; ou seja, mover todos os contadores vermelhos para a direita e todos os contadores azuis para a esquerda.
|
|
|
|
Pode-se verificar que $M(3) = 15$, que também é um número triangular.
|
|
|
|
Se criarmos uma sequência baseada nos valores de n para os quais $M(n)$ é um número triangular, então os primeiros cinco termos seriam: 1, 3, 10, 22, e 63, e sua soma seria 99.
|
|
|
|
Encontre a soma dos primeiros quarenta termos desta sequência.
|
|
|
|
# --hints--
|
|
|
|
`swappingCounters()` deve retornar `2470433131948040`.
|
|
|
|
```js
|
|
assert.strictEqual(swappingCounters(), 2470433131948040);
|
|
```
|
|
|
|
# --seed--
|
|
|
|
## --seed-contents--
|
|
|
|
```js
|
|
function swappingCounters() {
|
|
|
|
return true;
|
|
}
|
|
|
|
swappingCounters();
|
|
```
|
|
|
|
# --solutions--
|
|
|
|
```js
|
|
// solution required
|
|
```
|