aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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//;
+}