aboutsummaryrefslogtreecommitdiff
path: root/challenge-012
diff options
context:
space:
mode:
authorRuben Westerberg <drclaw@mac.com>2019-06-15 22:40:50 +1000
committerRuben Westerberg <drclaw@mac.com>2019-06-15 22:40:50 +1000
commit799b42288f8a2bab13c59181df55d2bda4370ac0 (patch)
treee98882495d5eec3be53ac11fd3886b6d5284403b /challenge-012
parent5c1663e3f7a4bf8767cd62c4e7db03186561edb2 (diff)
downloadperlweeklychallenge-club-799b42288f8a2bab13c59181df55d2bda4370ac0.tar.gz
perlweeklychallenge-club-799b42288f8a2bab13c59181df55d2bda4370ac0.tar.bz2
perlweeklychallenge-club-799b42288f8a2bab13c59181df55d2bda4370ac0.zip
w12 ch1 and ch2 solutions p5 p6
Diffstat (limited to 'challenge-012')
-rw-r--r--challenge-012/ruben-westerberg/README6
-rwxr-xr-xchallenge-012/ruben-westerberg/perl5/ch-1.pl30
-rwxr-xr-xchallenge-012/ruben-westerberg/perl5/ch-2.pl24
-rwxr-xr-xchallenge-012/ruben-westerberg/perl6/ch-1.p69
-rwxr-xr-xchallenge-012/ruben-westerberg/perl6/ch-2.p617
5 files changed, 84 insertions, 2 deletions
diff --git a/challenge-012/ruben-westerberg/README b/challenge-012/ruben-westerberg/README
index 4e963bf8dc..712bdd1af6 100644
--- a/challenge-012/ruben-westerberg/README
+++ b/challenge-012/ruben-westerberg/README
@@ -1,7 +1,9 @@
Solution by Ruben Westerberg
ch-1.pl and ch-1.p6
-Run the program without command lines arguments to calculate 'equal point'
+Simply run the script
ch-2.pl and ch-2.p6
-run command with a single argument to print an identiy matrix of size specivied as the first argument. If no argument is specified a default size of 10 is used.
+Provide two or more command line arguments.
+ First is the seperator to use
+ Remaining arguments are paths to compare
diff --git a/challenge-012/ruben-westerberg/perl5/ch-1.pl b/challenge-012/ruben-westerberg/perl5/ch-1.pl
new file mode 100755
index 0000000000..bc2c4fc7a8
--- /dev/null
+++ b/challenge-012/ruben-westerberg/perl5/ch-1.pl
@@ -0,0 +1,30 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+my $searchFlag=1;
+my @primes;
+my $i=2;
+while ($searchFlag) {
+ if (isPrime($i)) {
+ push @primes, $i;
+ my $pp=1;
+ for (@primes) {
+ $pp*=$_;
+ }
+ if( !isPrime($pp+1) ) {
+ print $pp+1;
+ $searchFlag=undef;
+ }
+ }
+ $i++;
+}
+sub isPrime {
+ my $val=shift;
+ my $res=0;
+ for (my $i=2; $i<=$val/2; $i++){
+ $res++ if ($val%$i) == 0;
+ }
+ $res==0 ;
+}
+
diff --git a/challenge-012/ruben-westerberg/perl5/ch-2.pl b/challenge-012/ruben-westerberg/perl5/ch-2.pl
new file mode 100755
index 0000000000..3125c22c4c
--- /dev/null
+++ b/challenge-012/ruben-westerberg/perl5/ch-2.pl
@@ -0,0 +1,24 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use v5.26;
+my $separator=shift;
+my @list=@ARGV;
+my @path=map { [ (split $separator, $_)]} @list;
+my @sortedPath=sort {@$a <=> @$b} @path;
+my $min=@{$sortedPath[0]};
+print "/" unless $min >0;
+my @common;
+
+for (my $i=0; $i< $min; $i++) {
+ my @line;
+ my $sum=0;
+ my $f=${$sortedPath[0]}[$i];
+ for (my $j=0; $j< @sortedPath;$j++) {
+ my $c=${$sortedPath[$j]}[$i];
+ $sum++ if $f eq $c;
+ }
+ push @common, $f if $sum == @sortedPath;
+}
+print join "/", @common;
diff --git a/challenge-012/ruben-westerberg/perl6/ch-1.p6 b/challenge-012/ruben-westerberg/perl6/ch-1.p6
new file mode 100755
index 0000000000..87e2301fc9
--- /dev/null
+++ b/challenge-012/ruben-westerberg/perl6/ch-1.p6
@@ -0,0 +1,9 @@
+#!/usr/bin/env perl6
+
+my @p=(0..*).grep: *.is-prime;
+my @pp=[\*] @p;
+my @e=@pp.map: *+1;
+for @e {
+ last unless .is-prime;
+ LAST .say;
+}
diff --git a/challenge-012/ruben-westerberg/perl6/ch-2.p6 b/challenge-012/ruben-westerberg/perl6/ch-2.p6
new file mode 100755
index 0000000000..34fbcb0710
--- /dev/null
+++ b/challenge-012/ruben-westerberg/perl6/ch-2.p6
@@ -0,0 +1,17 @@
+#!/usr/bin/env perl6
+
+sub MAIN(
+ Str $separator,
+ *@paths
+){
+ my @path=@paths>>.split($separator);
+ @path=sort { $^a.elems <=> $^b.elems}, @path;
+ my $min=+@path[0];
+ @path.=map: *.[0..^$min];
+ my @common=do loop (my $i=0;$i < $min;$i++) {
+ my $s=@path[0..*-1;{$i}];
+ (all $s) eq $s[0] ?? $s[0] !! ();
+ }
+ say @common.join($separator);
+}
+