diff options
| -rw-r--r-- | challenge-005/kian-meng-ang/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-005/kian-meng-ang/perl5/ch-1.pl (renamed from challenge-005/kian-meng-ang/ch-1.pl) | 0 | ||||
| -rw-r--r-- | challenge-005/kian-meng-ang/perl5/ch-2.pl (renamed from challenge-005/kian-meng-ang/ch-2.pl) | 0 | ||||
| -rw-r--r-- | challenge-006/kian-meng-ang/perl5/ch-1.pl | 48 |
4 files changed, 49 insertions, 0 deletions
diff --git a/challenge-005/kian-meng-ang/blog.txt b/challenge-005/kian-meng-ang/blog.txt new file mode 100644 index 0000000000..c43cc5892a --- /dev/null +++ b/challenge-005/kian-meng-ang/blog.txt @@ -0,0 +1 @@ +https://www.kianmeng.org/2019/05/perl-weekly-challenge-005-2019-week-17.html diff --git a/challenge-005/kian-meng-ang/ch-1.pl b/challenge-005/kian-meng-ang/perl5/ch-1.pl index 7bf4e81372..7bf4e81372 100644 --- a/challenge-005/kian-meng-ang/ch-1.pl +++ b/challenge-005/kian-meng-ang/perl5/ch-1.pl diff --git a/challenge-005/kian-meng-ang/ch-2.pl b/challenge-005/kian-meng-ang/perl5/ch-2.pl index 18e659b925..18e659b925 100644 --- a/challenge-005/kian-meng-ang/ch-2.pl +++ b/challenge-005/kian-meng-ang/perl5/ch-2.pl diff --git a/challenge-006/kian-meng-ang/perl5/ch-1.pl b/challenge-006/kian-meng-ang/perl5/ch-1.pl new file mode 100644 index 0000000000..ff49fa43a4 --- /dev/null +++ b/challenge-006/kian-meng-ang/perl5/ch-1.pl @@ -0,0 +1,48 @@ +#!/usr/bin/env perl + +use 5.010; +use strict; +use warnings; +use utf8; +use Carp; + +carp 'missing word and dictionary file' if (@ARGV != 1); + +my ($series) = @ARGV; +my @numbers = split /,/, $series; + +my (@sequence, @group); +for my $i (1 .. $#numbers) { + if ($numbers[$i] - $numbers[$i-1] == 1) { + push @group, $numbers[$i-1] if (scalar @group == 0); + push @group, $numbers[$i]; + } + else { + push @sequence, [@group]; + @group = (); + } + + if ($i == $#numbers) { + push @sequence, [@group]; + @group = (); + } +} + +my @shorter_series; +foreach my $s (@sequence) { + if (scalar @{$s} >= 3) { + push @shorter_series, sprintf '%d-%d', shift @{$s}, pop @{$s}; + } + else { + push @shorter_series, @{$s}; + } +} + +say join q|,|, @shorter_series; + +1; + +__END__ +$ perl ch-1.pl 1,2,3,4,9,10,14,15,16 +1-4,9,10,14-16 +# vi:et:sw=4 ts=4 ft=perl |
