First commit for choose goodie
parent
feef9138d2
commit
9c7a31bd0d
|
@ -0,0 +1,39 @@
|
||||||
|
package DDG::Goodie::Combinations;
|
||||||
|
|
||||||
|
use DDG::Goodie;
|
||||||
|
|
||||||
|
triggers any => 'choose';
|
||||||
|
zci is_cached => 1;
|
||||||
|
zci answer_type => 'combination';
|
||||||
|
|
||||||
|
primary_example_queries '5 choose 3';
|
||||||
|
description 'Returns the number of combinations of size k which can be made from n objects (nCk).';
|
||||||
|
attribution github => ['https://github.com/conorfl', 'conorfl'],
|
||||||
|
twitter => '@areuhappylucia';
|
||||||
|
code_url 'https://github.com/duckduckgo/zeroclickinfo-goodies/blob/master/lib/DDG/Goodie/Combinations.pm';
|
||||||
|
topics 'math';
|
||||||
|
category 'calculations';
|
||||||
|
|
||||||
|
handle remainder => sub {
|
||||||
|
s/^\s+//;
|
||||||
|
s/\s+$//;
|
||||||
|
if($_ =~ /^(\d+)(?:\s+)(\d+)$/){
|
||||||
|
if($2 > $1){
|
||||||
|
return $1 . " choose " . $2 . " = 0";
|
||||||
|
}
|
||||||
|
my $n = $1;
|
||||||
|
|
||||||
|
my $k = $2;
|
||||||
|
my $combi = 1;
|
||||||
|
for my $i (($k+1)..$n) {
|
||||||
|
$combi *= $i;
|
||||||
|
}
|
||||||
|
for my $j (1..($n-$k)){
|
||||||
|
$combi /= $j
|
||||||
|
}
|
||||||
|
return $n . " choose " . $k . " = " . $combi;
|
||||||
|
}
|
||||||
|
return $_;
|
||||||
|
};
|
||||||
|
|
||||||
|
1;
|
Loading…
Reference in New Issue