4.7 KiB
title | id | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
Heronian triangles | 595b98f8b5a2245e243aa831 | 5 | Triângulos Heronianos |
Description
A fórmula do herói para a área de um triângulo, dada a extensão de seus três lados a, b e c, é dada por:
$$ A = \ sqrt {s (sa) (sb) (sc)}, $$
onde s é metade do perímetro do triângulo; isso é,
$$ s = \ frac {a + b + c} {2}. $$
Os triângulos de Heronian são triângulos cujos lados e área são todos inteiros.
Um exemplo é o triângulo com os lados 3, 4 e 5 cuja área é 6 (e cujo perímetro é 12).
Note que qualquer triângulo cujos lados são todos um múltiplo inteiro de 3, 4, 5; como 6, 8, 10, também será um triângulo de Heroniano.
Definir um triângulo Heroniano Primitivo como um triângulo Heroniano onde o maior divisor comum
dos três lados é 1 (unidade).
Isso excluirá, por exemplo, o triângulo 6, 8, 10.
Tarefa: Implemente uma função baseada na fórmula de Herói, que retorna os primeiros n th
triângulos ordenados em uma matriz de matrizes.
Instructions
Tests
tests:
- text: <code>heronianTriangle</code> é uma função.
testString: 'assert(typeof heronianTriangle === "function", "<code>heronianTriangle</code> is a function.");'
- text: '<code>heronianTriangle()</code> deve retornar <code>[[3, 4, 5], [5, 5, 6], [5, 5, 8], [4, 13, 15], [5, 12, 13], [9, 10, 17], [3, 25, 26], [7, 15, 20], [10, 13, 13], [8, 15, 17]]</code>'
testString: 'assert.deepEqual(heronianTriangle(testCases[0]), res[0], "<code>heronianTriangle()</code> should return <code>[[3, 4, 5], [5, 5, 6], [5, 5, 8], [4, 13, 15], [5, 12, 13], [9, 10, 17], [3, 25, 26], [7, 15, 20], [10, 13, 13], [8, 15, 17]]</code>");'
- text: '<code>heronianTriangle()</code> deve retornar <code>[[3, 4, 5], [5, 5, 6], [5, 5, 8], [4, 13, 15], [5, 12, 13], [9, 10, 17], [3, 25, 26], [7, 15, 20], [10, 13, 13], [8, 15, 17], [13, 13, 24], [6, 25, 29], [11, 13, 20], [5, 29, 30], [13, 14, 15]],</code>'
testString: 'assert.deepEqual(heronianTriangle(testCases[1]), res[1], "<code>heronianTriangle()</code> should return <code>[[3, 4, 5], [5, 5, 6], [5, 5, 8], [4, 13, 15], [5, 12, 13], [9, 10, 17], [3, 25, 26], [7, 15, 20], [10, 13, 13], [8, 15, 17], [13, 13, 24], [6, 25, 29], [11, 13, 20], [5, 29, 30], [13, 14, 15]],</code>");'
- text: '<code>heronianTriangle()</code> deve retornar <code>[[3, 4, 5], [5, 5, 6], [5, 5, 8], [4, 13, 15], [5, 12, 13], [9, 10, 17], [3, 25, 26], [7, 15, 20], [10, 13, 13], [8, 15, 17], [13, 13, 24], [6, 25, 29], [11, 13, 20], [5, 29, 30], [13, 14, 15], [10, 17, 21], [7, 24, 25], [8, 29, 35], [12, 17, 25], [4, 51, 53]],</code>'
testString: 'assert.deepEqual(heronianTriangle(testCases[2]), res[2], "<code>heronianTriangle()</code> should return <code>[[3, 4, 5], [5, 5, 6], [5, 5, 8], [4, 13, 15], [5, 12, 13], [9, 10, 17], [3, 25, 26], [7, 15, 20], [10, 13, 13], [8, 15, 17], [13, 13, 24], [6, 25, 29], [11, 13, 20], [5, 29, 30], [13, 14, 15], [10, 17, 21], [7, 24, 25], [8, 29, 35], [12, 17, 25], [4, 51, 53]],</code>");'
- text: '<code>heronianTriangle()</code> deve retornar <code>[[3, 4, 5], [5, 5, 6], [5, 5, 8], [4, 13, 15], [5, 12, 13], [9, 10, 17], [3, 25, 26], [7, 15, 20], [10, 13, 13], [8, 15, 17], [13, 13, 24], [6, 25, 29], [11, 13, 20], [5, 29, 30], [13, 14, 15], [10, 17, 21], [7, 24, 25], [8, 29, 35], [12, 17, 25], [4, 51, 53], [19, 20, 37],[16, 17, 17], [17, 17, 30], [16, 25, 39], [13, 20, 21]]</code>'
testString: 'assert.deepEqual(heronianTriangle(testCases[3]), res[3], "<code>heronianTriangle()</code> should return <code>[[3, 4, 5], [5, 5, 6], [5, 5, 8], [4, 13, 15], [5, 12, 13], [9, 10, 17], [3, 25, 26], [7, 15, 20], [10, 13, 13], [8, 15, 17], [13, 13, 24], [6, 25, 29], [11, 13, 20], [5, 29, 30], [13, 14, 15], [10, 17, 21], [7, 24, 25], [8, 29, 35], [12, 17, 25], [4, 51, 53], [19, 20, 37],[16, 17, 17], [17, 17, 30], [16, 25, 39], [13, 20, 21]]</code>");'
Challenge Seed
// noprotect
function heronianTriangle (n) {
// Good luck!
return [];
}
After Test
console.info('after the test');
Solution
// solution required