aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Cross <dave@dave.org.uk>2021-05-24 07:51:31 +0100
committerDave Cross <dave@dave.org.uk>2021-05-24 07:51:31 +0100
commit68995345f41727a241644e976e76f5d40f84cd6b (patch)
treeac024ddf44797a2ca2af5177faab6294c3bc74cf
parentc61ba475fd263546925b47f264825a44477622e0 (diff)
downloadperlweeklychallenge-club-68995345f41727a241644e976e76f5d40f84cd6b.tar.gz
perlweeklychallenge-club-68995345f41727a241644e976e76f5d40f84cd6b.tar.bz2
perlweeklychallenge-club-68995345f41727a241644e976e76f5d40f84cd6b.zip
Solutions for challenge #114
-rw-r--r--challenge-114/dave-cross/ch-1.pl24
-rw-r--r--challenge-114/dave-cross/ch-2.pl34
2 files changed, 58 insertions, 0 deletions
diff --git a/challenge-114/dave-cross/ch-1.pl b/challenge-114/dave-cross/ch-1.pl
new file mode 100644
index 0000000000..8846c2c632
--- /dev/null
+++ b/challenge-114/dave-cross/ch-1.pl
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+my $n = get_arg();
+
+while (1) {
+ ++$n;
+
+ if ($n == reverse $n) {
+ say $n;
+ last;
+ }
+}
+
+sub get_arg {
+ if (!@ARGV or $ARGV[0] =~ /\D/) {
+ die "Give me a positive integer\n";
+ }
+
+ return $ARGV[0];
+}
diff --git a/challenge-114/dave-cross/ch-2.pl b/challenge-114/dave-cross/ch-2.pl
new file mode 100644
index 0000000000..74a508aa22
--- /dev/null
+++ b/challenge-114/dave-cross/ch-2.pl
@@ -0,0 +1,34 @@
+#!/use/bin/perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+my $n = get_arg();
+
+my $count = get_set_bits($n);
+
+while (1) {
+ $n++;
+
+ if (get_set_bits($n) == $count) {
+ say $n;
+ last;
+ }
+}
+
+sub get_arg {
+ if (!@ARGV or $ARGV[0] =~ /\D/) {
+ die "Give me a positive integer\n";
+ }
+
+ return $ARGV[0];
+}
+
+sub get_set_bits {
+ my ($dec) = @_;
+
+ my $bin = sprintf '%b', $dec;
+
+ return scalar $bin =~ tr/1//;
+}