aboutsummaryrefslogtreecommitdiff
path: root/challenge-113/arne-sommer/perl/represent-integer-perl
diff options
context:
space:
mode:
author冯昶 <seaker@qq.com>2021-05-24 15:49:34 +0800
committer冯昶 <seaker@qq.com>2021-05-24 15:49:34 +0800
commitb876dd5b111bf1c267b2fb58cd64e6b655128e5c (patch)
tree95d82b58ea802af7a3cb3d20c72af0a7be502954 /challenge-113/arne-sommer/perl/represent-integer-perl
parentd848d3cf55a41587d2e8809838ffec2a84d4491d (diff)
parentc61ba475fd263546925b47f264825a44477622e0 (diff)
downloadperlweeklychallenge-club-b876dd5b111bf1c267b2fb58cd64e6b655128e5c.tar.gz
perlweeklychallenge-club-b876dd5b111bf1c267b2fb58cd64e6b655128e5c.tar.bz2
perlweeklychallenge-club-b876dd5b111bf1c267b2fb58cd64e6b655128e5c.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-113/arne-sommer/perl/represent-integer-perl')
-rwxr-xr-xchallenge-113/arne-sommer/perl/represent-integer-perl37
1 files changed, 37 insertions, 0 deletions
diff --git a/challenge-113/arne-sommer/perl/represent-integer-perl b/challenge-113/arne-sommer/perl/represent-integer-perl
new file mode 100755
index 0000000000..9d6a3af8dc
--- /dev/null
+++ b/challenge-113/arne-sommer/perl/represent-integer-perl
@@ -0,0 +1,37 @@
+#! /usr/bin/env perl
+
+use strict;
+use feature 'say';
+
+use Algorithm::Combinatorics 'combinations';
+use List::Util 'sum';
+use Getopt::Long;
+
+my $verbose = 0;
+GetOptions("verbose" => \$verbose);
+
+my $N = shift(@ARGV) // die "Please specify an integer > 0";
+die "Please specify an integer > 0" unless $N =~ /^[1-9]\d*$/;
+
+my $D = shift(@ARGV) // die "Please specify a digit";
+die "Please specify a digit" unless $D =~ /^\d$/;
+
+my @candidates = grep { /$D/ } (1 .. $N);
+
+say ": Candidates " . join(', ', @candidates) if $verbose;
+
+for my $size (1 .. @candidates)
+{
+ for my $comb (combinations(\@candidates, $size))
+ {
+ say ": Considering " . join(' + ', @$comb) if $verbose;
+
+ if (sum(@$comb) == $N)
+ {
+ say 1;
+ exit;
+ }
+ }
+}
+
+say 0;