Dado um triângulo (a, b, c) com perímetro P (a+b+c) e semiperímetro S (P/2), podemos calcular a área A com:
A=sqrt[S(S-a)(S-b)(S-c)]
Dada uma maneira fácil de calcular A, podemos automatizar a busca por triângulos especiais. Por exemplo, todos aqueles cuja área é igual ao perímetro.
#!/bin/perl
use strict;
use warnings;
for my $a (1..1000) {
for my $b ($a..1000) {
for my $c ($b..1000) {
my $P=($a+$b+$c);
my $S=$P/2;
my $A=$S*($S-$a)*($S-$b)*($S-$c);
if($A>0) {
$A=sqrt($A);
print "($a, $b, $c) => $A\n" if int($A)==$A && $A==$P;
}
}
}
}
(5, 12, 13) => 30
(6, 8, 10) => 24
(6, 25, 29) => 60
(7, 15, 20) => 42
(9, 10, 17) => 36
Ou então, todos cuja área é metade do perímetro: apenas (3,4,5) com área 6. Nenhum tem área menor que S.