blob: edcf1372753073f2d685e1cb1fa0598a1aa6e353 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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;
}
|