diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2022-09-18 22:30:44 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2022-09-18 22:30:44 +0100 |
| commit | c69869c5acfe0cfbcad27c16a72b5ef37c7d9539 (patch) | |
| tree | b45dda3185a7d4c7204dfda4539c380284acdff0 /challenge-182 | |
| parent | 830bdfd5cb6368729ea10a2bf82f62e145cb2729 (diff) | |
| parent | 940966224c21b3db939d64385681d4776759fe87 (diff) | |
| download | perlweeklychallenge-club-c69869c5acfe0cfbcad27c16a72b5ef37c7d9539.tar.gz perlweeklychallenge-club-c69869c5acfe0cfbcad27c16a72b5ef37c7d9539.tar.bz2 perlweeklychallenge-club-c69869c5acfe0cfbcad27c16a72b5ef37c7d9539.zip | |
Merge branch 'master' of https://github.com/manwar/perlweeklychallenge-club
Diffstat (limited to 'challenge-182')
| -rw-r--r-- | challenge-182/arne-sommer/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-182/arne-sommer/paths.txt | 5 | ||||
| -rw-r--r-- | challenge-182/arne-sommer/paths2.txt | 5 | ||||
| -rwxr-xr-x | challenge-182/arne-sommer/perl/ch-1.pl | 21 | ||||
| -rwxr-xr-x | challenge-182/arne-sommer/perl/ch-2.pl | 34 | ||||
| -rwxr-xr-x | challenge-182/arne-sommer/perl/common-path-perl | 34 | ||||
| -rwxr-xr-x | challenge-182/arne-sommer/perl/max-index-perl | 21 | ||||
| -rwxr-xr-x | challenge-182/arne-sommer/raku/ch-1.raku | 14 | ||||
| -rwxr-xr-x | challenge-182/arne-sommer/raku/ch-2.raku | 28 | ||||
| -rwxr-xr-x | challenge-182/arne-sommer/raku/common-path | 28 | ||||
| -rwxr-xr-x | challenge-182/arne-sommer/raku/common-path-first | 28 | ||||
| -rwxr-xr-x | challenge-182/arne-sommer/raku/max-index | 14 |
12 files changed, 233 insertions, 0 deletions
diff --git a/challenge-182/arne-sommer/blog.txt b/challenge-182/arne-sommer/blog.txt new file mode 100644 index 0000000000..bcb1358d97 --- /dev/null +++ b/challenge-182/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/common-index.html diff --git a/challenge-182/arne-sommer/paths.txt b/challenge-182/arne-sommer/paths.txt new file mode 100644 index 0000000000..e0678fd698 --- /dev/null +++ b/challenge-182/arne-sommer/paths.txt @@ -0,0 +1,5 @@ +/a/b/c/1/x.pl +/a/b/c/d/e/2/x.pl +/a/b/c/d/3/x.pl +/a/b/c/4/x.pl +/a/b/c/d/5/x.pl diff --git a/challenge-182/arne-sommer/paths2.txt b/challenge-182/arne-sommer/paths2.txt new file mode 100644 index 0000000000..33198551cd --- /dev/null +++ b/challenge-182/arne-sommer/paths2.txt @@ -0,0 +1,5 @@ +/a/b/ssssssss +/a/b/ssxxxxxxx.pl +/a/b/sssssss.pl +/a/b/sssss.pl +/a/b/sssssss.pl diff --git a/challenge-182/arne-sommer/perl/ch-1.pl b/challenge-182/arne-sommer/perl/ch-1.pl new file mode 100755 index 0000000000..6a5ef7cac3 --- /dev/null +++ b/challenge-182/arne-sommer/perl/ch-1.pl @@ -0,0 +1,21 @@ +#! /usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; + +my @n = @ARGV; + +my $max = $n[0]; +my $index = 0; + +for my $i (1 .. $#n) +{ + if ($n[$i] > $max) + { + $max = $n[$i]; + $index = $i; + } +} + +say $index; diff --git a/challenge-182/arne-sommer/perl/ch-2.pl b/challenge-182/arne-sommer/perl/ch-2.pl new file mode 100755 index 0000000000..50db34f5f7 --- /dev/null +++ b/challenge-182/arne-sommer/perl/ch-2.pl @@ -0,0 +1,34 @@ +#! /usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; +use File::Slurp; +use feature 'signatures'; + +no warnings 'experimental::signatures'; + +my $file = shift(@ARGV) || "paths.txt"; +my @paths = read_file($file); +my $first = shift(@paths); + +while (@paths) +{ + my $next = shift(@paths); + + $first = common($first, $next); +} + +$first =~ /(.*)\//; say $1; + +sub common ($a, $b) +{ + my $length = length($a) < length($b) ? length($a) : length($b); + + for my $index (0 .. $length -1) + { + return substr($a, 0, $index) unless substr($a, $index, 1) eq substr($b, $index, 1); + } + + return substr($a, 0, $length); +} diff --git a/challenge-182/arne-sommer/perl/common-path-perl b/challenge-182/arne-sommer/perl/common-path-perl new file mode 100755 index 0000000000..50db34f5f7 --- /dev/null +++ b/challenge-182/arne-sommer/perl/common-path-perl @@ -0,0 +1,34 @@ +#! /usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; +use File::Slurp; +use feature 'signatures'; + +no warnings 'experimental::signatures'; + +my $file = shift(@ARGV) || "paths.txt"; +my @paths = read_file($file); +my $first = shift(@paths); + +while (@paths) +{ + my $next = shift(@paths); + + $first = common($first, $next); +} + +$first =~ /(.*)\//; say $1; + +sub common ($a, $b) +{ + my $length = length($a) < length($b) ? length($a) : length($b); + + for my $index (0 .. $length -1) + { + return substr($a, 0, $index) unless substr($a, $index, 1) eq substr($b, $index, 1); + } + + return substr($a, 0, $length); +} diff --git a/challenge-182/arne-sommer/perl/max-index-perl b/challenge-182/arne-sommer/perl/max-index-perl new file mode 100755 index 0000000000..6a5ef7cac3 --- /dev/null +++ b/challenge-182/arne-sommer/perl/max-index-perl @@ -0,0 +1,21 @@ +#! /usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; + +my @n = @ARGV; + +my $max = $n[0]; +my $index = 0; + +for my $i (1 .. $#n) +{ + if ($n[$i] > $max) + { + $max = $n[$i]; + $index = $i; + } +} + +say $index; diff --git a/challenge-182/arne-sommer/raku/ch-1.raku b/challenge-182/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..abcbe99d25 --- /dev/null +++ b/challenge-182/arne-sommer/raku/ch-1.raku @@ -0,0 +1,14 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@n where @n.elems > 0 && all(@n) ~~ Int); + +my $max = @n.max; + +for ^@n.elems -> $index +{ + if @n[$index] == $max + { + say $index; + last; + } +} diff --git a/challenge-182/arne-sommer/raku/ch-2.raku b/challenge-182/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..6316f50591 --- /dev/null +++ b/challenge-182/arne-sommer/raku/ch-2.raku @@ -0,0 +1,28 @@ +#! /usr/bin/env raku + +unit sub MAIN ($file where $file.IO.f && $file.IO.r = "paths.txt"); + +my @paths = $file.IO.lines; + +my $first = @paths.shift; + +while @paths +{ + my $next = @paths.shift; + + $first = common($first, $next); +} + +$first ~~ /(.*)\//; say $0.Str; + +sub common ($a, $b) +{ + my $length = min($a.chars, $b.chars); + + for ^$length -> $index + { + return $a.substr(0, $index) unless $a.substr($index,1) eq $b.substr($index,1); + } + + return $a.substr(0, $length); +} diff --git a/challenge-182/arne-sommer/raku/common-path b/challenge-182/arne-sommer/raku/common-path new file mode 100755 index 0000000000..6316f50591 --- /dev/null +++ b/challenge-182/arne-sommer/raku/common-path @@ -0,0 +1,28 @@ +#! /usr/bin/env raku + +unit sub MAIN ($file where $file.IO.f && $file.IO.r = "paths.txt"); + +my @paths = $file.IO.lines; + +my $first = @paths.shift; + +while @paths +{ + my $next = @paths.shift; + + $first = common($first, $next); +} + +$first ~~ /(.*)\//; say $0.Str; + +sub common ($a, $b) +{ + my $length = min($a.chars, $b.chars); + + for ^$length -> $index + { + return $a.substr(0, $index) unless $a.substr($index,1) eq $b.substr($index,1); + } + + return $a.substr(0, $length); +} diff --git a/challenge-182/arne-sommer/raku/common-path-first b/challenge-182/arne-sommer/raku/common-path-first new file mode 100755 index 0000000000..5459728eb4 --- /dev/null +++ b/challenge-182/arne-sommer/raku/common-path-first @@ -0,0 +1,28 @@ +#! /usr/bin/env raku + +unit sub MAIN ($file where $file.IO.f && $file.IO.r = "paths.txt"); + +my @paths = $file.IO.lines; + +my $first = @paths.shift; + +while @paths +{ + my $next = @paths.shift; + + $first = common($first, $next); +} + +say $first; + +sub common ($a, $b) +{ + my $length = min($a.chars, $b.chars); + + for ^$length -> $index + { + return $a.substr(0, $index) unless $a.substr($index,1) eq $b.substr($index,1); + } + + return $a.substr(0, $length); +} diff --git a/challenge-182/arne-sommer/raku/max-index b/challenge-182/arne-sommer/raku/max-index new file mode 100755 index 0000000000..abcbe99d25 --- /dev/null +++ b/challenge-182/arne-sommer/raku/max-index @@ -0,0 +1,14 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@n where @n.elems > 0 && all(@n) ~~ Int); + +my $max = @n.max; + +for ^@n.elems -> $index +{ + if @n[$index] == $max + { + say $index; + last; + } +} |
