--- id: 5900f3db1000cf542c50feec challengeType: 5 title: 'Problem 109: Darts' videoUrl: '' localeTitle: 'Problema 109: Dardos' --- ## Description
No jogo de dardos, um jogador lança três dardos em uma prancha de alvo que é dividida em vinte seções de igual tamanho, numeradas de um a vinte.

A pontuação de um dardo é determinada pelo número da região em que o dardo pousa. Um pouso de dardo fora do anel externo vermelho / verde pontua zero. As regiões de preto e creme dentro deste anel representam pontuações únicas. No entanto, o anel externo vermelho / verde e o anel intermediário pontuam os escores duplo e triplo, respectivamente. No centro do tabuleiro há dois círculos concêntricos chamados de região de touro, ou olho de boi. O touro exterior vale 25 pontos e o touro interno é um duplo, valendo 50 pontos. Existem muitas variações de regras, mas no jogo mais popular os jogadores começarão com uma pontuação 301 ou 501 eo primeiro jogador a reduzir seu total de corridas a zero é um vencedor. No entanto, é normal jogar um sistema de "duplicação", o que significa que o jogador deve conseguir um duplo (incluindo o olho duplo no centro do tabuleiro) em seu dardo final para vencer; qualquer outro dardo que reduza seu total de corridas para um ou menos significa que a pontuação para aquele conjunto de três dardos é "busto". Quando um jogador é capaz de terminar em sua pontuação atual, ele é chamado de "checkout" e o maior check-out é 170: T20 T20 D25 (dois agudos 20s e duplo touro). Existem exatamente onze maneiras distintas de fazer checkout em uma pontuação de 6:

D3

D1 D2

S2 D2

D2 D1

S4 D1

S1 S1 D2 S1 T1 D1 S1 S3 D1 D1 D1 D1 D1 S2 D1 S2 S2 D1

Note que D1 D2 é considerado diferente de D2 D1 quando eles terminam em diferentes duplas. No entanto, a combinação S1 T1 D1 é considerada igual a T1 S1 D1. Além disso, não incluiremos erros em considerar combinações; por exemplo, D3 é o mesmo que 0 D3 e 0 0 D3. Incrivelmente, existem 42336 formas distintas de check-out no total. Quantas maneiras distintas pode um jogador finalizar com uma pontuação inferior a 100?

## Instructions
## Tests
```yml tests: - text: euler109() deve retornar 38182. testString: 'assert.strictEqual(euler109(), 38182, "euler109() should return 38182.");' ```
## Challenge Seed
```js function euler109() { // Good luck! return true; } euler109(); ```
## Solution
```js // solution required ```