aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Cross <dave@dave.org.uk>2021-06-27 09:39:39 +0100
committerDave Cross <dave@dave.org.uk>2021-06-27 09:39:39 +0100
commit3b538b6eec00aa989d9347e93ac09c3705e0c210 (patch)
treea096401f9780f1b8bf0959af567e2b1edfaebf17
parent6d06ca52515844b9c2f21cc4f90add72e9ece9f6 (diff)
downloadperlweeklychallenge-club-3b538b6eec00aa989d9347e93ac09c3705e0c210.tar.gz
perlweeklychallenge-club-3b538b6eec00aa989d9347e93ac09c3705e0c210.tar.bz2
perlweeklychallenge-club-3b538b6eec00aa989d9347e93ac09c3705e0c210.zip
Challenge #119
-rw-r--r--challenge-119/dave-cross/perl/ch-1.pl17
-rw-r--r--challenge-119/dave-cross/perl/ch-2.pl43
2 files changed, 60 insertions, 0 deletions
diff --git a/challenge-119/dave-cross/perl/ch-1.pl b/challenge-119/dave-cross/perl/ch-1.pl
new file mode 100644
index 0000000000..ea2c14b0c1
--- /dev/null
+++ b/challenge-119/dave-cross/perl/ch-1.pl
@@ -0,0 +1,17 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+say oct '0b' . join '', reverse get_number() =~ /(\d{4})(\d{4})/;
+
+sub get_number {
+ my $err = "Give me an integer less than 256\n";
+
+ die $err unless @ARGV;
+ die $err if $ARGV[0] =~ /\D/;
+ die $err if $ARGV[0] >= 256;
+
+ return sprintf '%08b', $ARGV[0];
+}
diff --git a/challenge-119/dave-cross/perl/ch-2.pl b/challenge-119/dave-cross/perl/ch-2.pl
new file mode 100644
index 0000000000..b794681d99
--- /dev/null
+++ b/challenge-119/dave-cross/perl/ch-2.pl
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+my $n = get_number();
+
+my @seq;
+
+while (@seq < $n) {
+ get_next(\@seq);
+}
+
+say $seq[-1];
+
+sub get_next {
+ my ($seq) = @_;
+
+ unless (@$seq) {
+ @$seq = 1;
+ return;
+ }
+
+ my $next = $seq->[-1] + 1;
+
+ until ($next =~ /^[123]+$/ and $next !~ /11/) {
+ ++$next;
+ }
+
+ push @$seq, $next;
+
+ return;
+}
+
+sub get_number {
+ my $err = "Give me an integer\n";
+
+ die $err unless @ARGV;
+ die $err if $ARGV[0] =~ /\D/;
+
+ return $ARGV[0];
+}