diff options
| author | Kian-Meng, Ang <kianmeng@cpan.org> | 2019-05-05 21:04:15 +0800 |
|---|---|---|
| committer | Kian-Meng, Ang <kianmeng@cpan.org> | 2019-05-05 21:04:15 +0800 |
| commit | cd4b8f149a5a34e8702b9c156659702fe654fa4d (patch) | |
| tree | 4febb0b9cf09c79673b701943609ad84b3c6bc7a | |
| parent | be35481acbb84e90b0bd65880334806b28c702c3 (diff) | |
| download | perlweeklychallenge-club-cd4b8f149a5a34e8702b9c156659702fe654fa4d.tar.gz perlweeklychallenge-club-cd4b8f149a5a34e8702b9c156659702fe654fa4d.tar.bz2 perlweeklychallenge-club-cd4b8f149a5a34e8702b9c156659702fe654fa4d.zip | |
Challenge #006 answers and challenge #005 blog link
| -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 |
