aboutsummaryrefslogtreecommitdiff
path: root/challenge-182
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2022-09-18 22:30:44 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2022-09-18 22:30:44 +0100
commitc69869c5acfe0cfbcad27c16a72b5ef37c7d9539 (patch)
treeb45dda3185a7d4c7204dfda4539c380284acdff0 /challenge-182
parent830bdfd5cb6368729ea10a2bf82f62e145cb2729 (diff)
parent940966224c21b3db939d64385681d4776759fe87 (diff)
downloadperlweeklychallenge-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.txt1
-rw-r--r--challenge-182/arne-sommer/paths.txt5
-rw-r--r--challenge-182/arne-sommer/paths2.txt5
-rwxr-xr-xchallenge-182/arne-sommer/perl/ch-1.pl21
-rwxr-xr-xchallenge-182/arne-sommer/perl/ch-2.pl34
-rwxr-xr-xchallenge-182/arne-sommer/perl/common-path-perl34
-rwxr-xr-xchallenge-182/arne-sommer/perl/max-index-perl21
-rwxr-xr-xchallenge-182/arne-sommer/raku/ch-1.raku14
-rwxr-xr-xchallenge-182/arne-sommer/raku/ch-2.raku28
-rwxr-xr-xchallenge-182/arne-sommer/raku/common-path28
-rwxr-xr-xchallenge-182/arne-sommer/raku/common-path-first28
-rwxr-xr-xchallenge-182/arne-sommer/raku/max-index14
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;
+ }
+}