From d84d541612f67c37a600291c45be31646dbb1e7d Mon Sep 17 00:00:00 2001 From: Ruben Westerberg Date: Fri, 12 Apr 2019 08:16:23 +1000 Subject: Added solution for w3 ch2 Also renamed w2 files and placed in perl5 perl6 directories --- challenge-002/ruben-westerberg/ch-1.p6 | 4 ---- challenge-002/ruben-westerberg/ch-1.pl | 5 ----- challenge-002/ruben-westerberg/ch-2.p6 | 2 -- challenge-002/ruben-westerberg/ch-2.pl | 26 ------------------------ challenge-002/ruben-westerberg/perl5/ch-1.pl | 5 +++++ challenge-002/ruben-westerberg/perl5/ch-2.pl | 26 ++++++++++++++++++++++++ challenge-002/ruben-westerberg/perl6/ch-1.p6 | 4 ++++ challenge-002/ruben-westerberg/perl6/ch-2.p6 | 2 ++ challenge-003/ruben-westerberg/README | 4 +++- challenge-003/ruben-westerberg/perl5/ch-2.pl | 30 ++++++++++++++++++++++++++++ challenge-003/ruben-westerberg/perl6/ch-2.p6 | 23 +++++++++++++++++++++ 11 files changed, 93 insertions(+), 38 deletions(-) delete mode 100755 challenge-002/ruben-westerberg/ch-1.p6 delete mode 100755 challenge-002/ruben-westerberg/ch-1.pl delete mode 100755 challenge-002/ruben-westerberg/ch-2.p6 delete mode 100755 challenge-002/ruben-westerberg/ch-2.pl create mode 100755 challenge-002/ruben-westerberg/perl5/ch-1.pl create mode 100755 challenge-002/ruben-westerberg/perl5/ch-2.pl create mode 100755 challenge-002/ruben-westerberg/perl6/ch-1.p6 create mode 100755 challenge-002/ruben-westerberg/perl6/ch-2.p6 create mode 100755 challenge-003/ruben-westerberg/perl5/ch-2.pl create mode 100755 challenge-003/ruben-westerberg/perl6/ch-2.p6 diff --git a/challenge-002/ruben-westerberg/ch-1.p6 b/challenge-002/ruben-westerberg/ch-1.p6 deleted file mode 100755 index 4ce164234e..0000000000 --- a/challenge-002/ruben-westerberg/ch-1.p6 +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env perl6 -$_ = join " ",@*ARGS; - -s:g/(\-|\+)?(0+)(\d*\.?\d+)/{$0!~~"-"??($0//"")~$2!!$/}/;.say; diff --git a/challenge-002/ruben-westerberg/ch-1.pl b/challenge-002/ruben-westerberg/ch-1.pl deleted file mode 100755 index ac4cf70614..0000000000 --- a/challenge-002/ruben-westerberg/ch-1.pl +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env perl -# -$_= join " ", @ARGV;#"010, 02, 0343"; - -s/(\-|\+)?(0+)(\d*\.?\d+)/($1 ne "-") ? ($1 \/\/ "").$3:$&/ge;print $_; diff --git a/challenge-002/ruben-westerberg/ch-2.p6 b/challenge-002/ruben-westerberg/ch-2.p6 deleted file mode 100755 index c011ae237c..0000000000 --- a/challenge-002/ruben-westerberg/ch-2.p6 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env perl6 -@*ARGS>>.Num>>.base(35)>>.&{say "Base 35: $_"; $_}>>.parse-base(35)>>.&{say "Base 10: $_"}; diff --git a/challenge-002/ruben-westerberg/ch-2.pl b/challenge-002/ruben-westerberg/ch-2.pl deleted file mode 100755 index 66e78301c8..0000000000 --- a/challenge-002/ruben-westerberg/ch-2.pl +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env perl -my $b=35; -foreach (@ARGV) { - my $power=0; - while (int($_/ $b**++$power) >= 1){}; - $power--; - my @out=(); - while ($power >= 0) { - my $place=$b**$power; - my $val=int($_ / $place); - my $digit= $val >= 10 ? chr(ord('A')+($val-10)) : $val; - push @out, $digit; - $_= $_- $place*$val; - $power--; - } - $base35=join "", @out; - print "Base 35: $base35\n"; - my $place= length $base35; - $_=reverse $base35; - my $sum=0; - while(--$place >=0){ - $val=chop $_; - $sum += $b**$place * (scalar (grep ($_ eq $val, "A".."Y")) ? (ord($val)-55) : $val); - } - print "Base 10: $sum\n"; -} diff --git a/challenge-002/ruben-westerberg/perl5/ch-1.pl b/challenge-002/ruben-westerberg/perl5/ch-1.pl new file mode 100755 index 0000000000..ac4cf70614 --- /dev/null +++ b/challenge-002/ruben-westerberg/perl5/ch-1.pl @@ -0,0 +1,5 @@ +#!/usr/bin/env perl +# +$_= join " ", @ARGV;#"010, 02, 0343"; + +s/(\-|\+)?(0+)(\d*\.?\d+)/($1 ne "-") ? ($1 \/\/ "").$3:$&/ge;print $_; diff --git a/challenge-002/ruben-westerberg/perl5/ch-2.pl b/challenge-002/ruben-westerberg/perl5/ch-2.pl new file mode 100755 index 0000000000..66e78301c8 --- /dev/null +++ b/challenge-002/ruben-westerberg/perl5/ch-2.pl @@ -0,0 +1,26 @@ +#!/usr/bin/env perl +my $b=35; +foreach (@ARGV) { + my $power=0; + while (int($_/ $b**++$power) >= 1){}; + $power--; + my @out=(); + while ($power >= 0) { + my $place=$b**$power; + my $val=int($_ / $place); + my $digit= $val >= 10 ? chr(ord('A')+($val-10)) : $val; + push @out, $digit; + $_= $_- $place*$val; + $power--; + } + $base35=join "", @out; + print "Base 35: $base35\n"; + my $place= length $base35; + $_=reverse $base35; + my $sum=0; + while(--$place >=0){ + $val=chop $_; + $sum += $b**$place * (scalar (grep ($_ eq $val, "A".."Y")) ? (ord($val)-55) : $val); + } + print "Base 10: $sum\n"; +} diff --git a/challenge-002/ruben-westerberg/perl6/ch-1.p6 b/challenge-002/ruben-westerberg/perl6/ch-1.p6 new file mode 100755 index 0000000000..4ce164234e --- /dev/null +++ b/challenge-002/ruben-westerberg/perl6/ch-1.p6 @@ -0,0 +1,4 @@ +#!/usr/bin/env perl6 +$_ = join " ",@*ARGS; + +s:g/(\-|\+)?(0+)(\d*\.?\d+)/{$0!~~"-"??($0//"")~$2!!$/}/;.say; diff --git a/challenge-002/ruben-westerberg/perl6/ch-2.p6 b/challenge-002/ruben-westerberg/perl6/ch-2.p6 new file mode 100755 index 0000000000..c011ae237c --- /dev/null +++ b/challenge-002/ruben-westerberg/perl6/ch-2.p6 @@ -0,0 +1,2 @@ +#!/usr/bin/env perl6 +@*ARGS>>.Num>>.base(35)>>.&{say "Base 35: $_"; $_}>>.parse-base(35)>>.&{say "Base 10: $_"}; diff --git a/challenge-003/ruben-westerberg/README b/challenge-003/ruben-westerberg/README index 58eaaedd18..51f17bea4c 100644 --- a/challenge-003/ruben-westerberg/README +++ b/challenge-003/ruben-westerberg/README @@ -1,3 +1,5 @@ Solution by Ruben Westerberg -inputs via command line arguments +Inputs via command line arguments + +Challenge 2 (pascal) dies if user supplies less then 3 as input diff --git a/challenge-003/ruben-westerberg/perl5/ch-2.pl b/challenge-003/ruben-westerberg/perl5/ch-2.pl new file mode 100755 index 0000000000..8ba5a76e5a --- /dev/null +++ b/challenge-003/ruben-westerberg/perl5/ch-2.pl @@ -0,0 +1,30 @@ +#!/usr/bin/env perl +use warnings; + +my $lines=$ARGV[0]; +die "Rows must be 3 or greater." unless ($lines >= 3); +my $current=[1]; +foreach (1 .. $lines) { + printRow($current); #print the current row + $current= makeRow($current) #make the next row; +} + +sub printRow { + $in=shift; + foreach (@$in) { + #TODO: Add centralised format + printf "%d ", $_;; + } + print "\n"; +} +sub makeRow { + my $in=shift; + my @row=(@$in,0); + my @outRow; + my $previous=0; + foreach (@row) { + push @outRow, $_+ $previous; + $previous=$_; + } + return \@outRow; +} diff --git a/challenge-003/ruben-westerberg/perl6/ch-2.p6 b/challenge-003/ruben-westerberg/perl6/ch-2.p6 new file mode 100755 index 0000000000..f970db6dc8 --- /dev/null +++ b/challenge-003/ruben-westerberg/perl6/ch-2.p6 @@ -0,0 +1,23 @@ +#!/usr/bin/env perl6 + +my $lines=@*ARGS[0]; +die "Rows must be 3 or greater." unless $lines >=3; + + +for 1..$lines { + state @current=(1); + say @current.join(" "); #TODO: make a better formating sub + @current=makeRow(@current); + +} +sub makeRow(@current) { + my @next=@current.push: 0; + my @outRow; + gather { + for @next { + state $previous=0; + take $_+$previous; + $previous=$_; + } + } +} -- cgit