Law of cosines - triples: Difference between revisions
Content added Content deleted
(→{{header|J}}: Add J) |
Thundergnat (talk | contribs) (→{{header|Perl 6}}: Break apart angle calculations to reduce branching logic, clean up unneeded variables, eke out a few more percent points of speed-up) |
||
Line 578:
=={{header|Perl 6}}==
<lang perl6>
my %sq = (1..$n).map: { .² => $_ };
my %triples;
(1..^$n).race(:8degree).map: -> $a {
for $a^..$n -> $b {
my $
$angle == 120 ?? $ab + $a * $b !!▼
$ab;▼
%triples{$angle}{~($a, %sq{$cos}, $b)}++ and last if %sq{$cos}:exists;▼
}▼
else {▼
%triples{$angle}{~($a, $b, %sq{$cos})}++ and last if %sq{$cos}:exists;▼
}▼
}
}
%triples.keys
}
multi triples (90, $n) {
my %sq = (1..$n).map: { .² => $_ };
my %triples;
(1..^$n).race(:8degree).map: -> $a {
}
%triples.keys
}
multi triples (120, $n) {
my %sq = (1..$n).map: { .² => $_ };
my %triples;
(1..^$n).race(:8degree).map: -> $a {
for $a^..$n -> $b {
}
%triples.keys
}
Line 603 ⟶ 619:
say "Integer triangular triples for sides 1..$n:";
for 120, 90, 60 -> $angle {
my
if $angle == 60 { push
printf "Angle %3d° has %2d solutions: %s\n", $angle, +
}
my ($angle, $count) = 60, 10_000;
say "\nExtra credit:";
{{out}}
<pre>Integer triangular triples for sides 1..13:
Line 619 ⟶ 634:
Extra credit:
=={{header|Python}}==
|