From 4845c19dfbea86f160e57dcc1568c8b8e9b43fda Mon Sep 17 00:00:00 2001 From: Niels van Dijke Date: Fri, 24 Jul 2020 20:04:23 +0000 Subject: Task 2 --- challenge-070/perlboy1967/perl/ch-2.pl | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 challenge-070/perlboy1967/perl/ch-2.pl (limited to 'challenge-070') diff --git a/challenge-070/perlboy1967/perl/ch-2.pl b/challenge-070/perlboy1967/perl/ch-2.pl new file mode 100755 index 0000000000..edcf137275 --- /dev/null +++ b/challenge-070/perlboy1967/perl/ch-2.pl @@ -0,0 +1,38 @@ +#!/usr/bin/perl + +# Perl Weekly Challenge - 070 +# +# Task 2 - Gray Code Sequence +# +# Author: Niels 'PerlBoy' van Dijke + +use strict; +use warnings; + +sub genGrayCodeSequence($); + +my ($N) = @ARGV; + +die "Argument must be a positive number" + unless ($N =~ m#^\d+$#); + +my @g = genGrayCodeSequence($N); + +printf q{ +Input: $N = %d +Output: [%s] +}, $N, join(', ', @g); + +sub genGrayCodeSequence($) { + my ($N) = @_; + + my @g = (0, 1); + + for my $i (2 .. $N) { + map { $_ = "0$_" } @g; + map { m/^.(.*)/; push(@g, "1$1") } reverse @g; + } + + map { $_ = oct("0b$_") } @g; +} + -- cgit