Trilhas
/
JavaScript
JavaScript
/
Exercícios
/
Terno pitagórico
Terno pitagórico

Terno pitagórico

Médio

Introdução

Você tem fama de resolver problemas com maestria, conhecida pela habilidade de encarar os enigmas matemáticos mais desafiadores. Certa noite, você recebe uma carta urgente de um inventor chamado Triangle Tinkerer, que está trabalhando em um projeto novo e revolucionário. A carta diz:

Caro matemático,

Preciso da sua ajuda. Estou projetando um dispositivo que depende das propriedades únicas dos ternos pitagóricos: conjuntos de três números inteiros que satisfazem a equação a² + b² = c². Este dispositivo vai revolucionar a navegação, mas, para que funcione, preciso programá-lo com todos os ternos possíveis em que a soma de a, b e c seja igual a um número específico, N. Calcular esses ternos à mão levaria anos, mas ouvi dizer que você é mais do que capaz de dar conta da tarefa.

Não há tempo a perder. O futuro da minha invenção, e talvez até o futuro da inovação matemática, depende da sua capacidade de resolver este problema.

Com a importância da tarefa em mente, você parte em busca de todos os ternos pitagóricos que satisfazem a condição. Seu trabalho pode ter implicações de longo alcance, abrindo novas possibilidades na ciência e na engenharia. Você consegue encarar o desafio e entrar para a história?

Instruções

Um terno pitagórico é um conjunto de três números naturais, {a, b, c}, para os quais,

a² + b² = c²

e tal que,

a < b < c

Por exemplo,

3² + 4² = 5².

Dado um número inteiro N de entrada, encontre todos os ternos pitagóricos para os quais a + b + c = N.

Por exemplo, com N = 1000, existe exatamente um terno pitagórico para o qual a + b + c = 1000: {200, 375, 425}.

Implementação

Por padrão, apenas sum é passado para a função triplets, mas ela também pode receber, opcionalmente, minFactor e/ou maxFactor. Quando esses valores forem informados, certifique-se de que cada fator do trio seja pelo menos minFactor e no máximo maxFactor.

Advanced

Se você estiver resolvendo isso pela CLI, existe um caso de teste com números grandes que está desativado no momento para evitar timeouts no nosso executor de testes. Você pode ativá-lo, se quiser, removendo o .skip, mas saiba que pode demorar um pouco para rodar.

Editar via GitHub O link abre em uma nova janela ou aba
JavaScript Exercism

Tudo pronto para começar Terno pitagórico?

Crie sua conta no Exercism para aprender e dominar JavaScript com 37 conceitos159 exercícios e mentoria humana de verdade, tudo de graça.