diff options
| author | Ruben Westerberg <drclaw@mac.com> | 2019-04-22 06:58:30 +1000 |
|---|---|---|
| committer | Ruben Westerberg <drclaw@mac.com> | 2019-04-22 06:58:30 +1000 |
| commit | e7f6ba0e658583dbc1fe7756f276b52ffe2d3f7e (patch) | |
| tree | ac2039b8eca9508525ef862ab2a53a7fe00ed35c /challenge-004 | |
| parent | e80612d6f29f76ce4ce13eef35eb6a74389b4c86 (diff) | |
| download | perlweeklychallenge-club-e7f6ba0e658583dbc1fe7756f276b52ffe2d3f7e.tar.gz perlweeklychallenge-club-e7f6ba0e658583dbc1fe7756f276b52ffe2d3f7e.tar.bz2 perlweeklychallenge-club-e7f6ba0e658583dbc1fe7756f276b52ffe2d3f7e.zip | |
Ruben-Westerberg/drclaw solutions for W4
Perl5 and Perl6 solution for C1 and C2
Diffstat (limited to 'challenge-004')
| -rw-r--r-- | challenge-004/ruben-westerberg/README | 8 | ||||
| -rw-r--r-- | challenge-004/ruben-westerberg/letters.txt | 1 | ||||
| -rw-r--r-- | challenge-004/ruben-westerberg/perl5/.ch-1.pl.swp | bin | 0 -> 12288 bytes | |||
| -rwxr-xr-x | challenge-004/ruben-westerberg/perl5/ch-1.pl | 22 | ||||
| -rwxr-xr-x | challenge-004/ruben-westerberg/perl5/ch-2.pl | 30 | ||||
| -rwxr-xr-x | challenge-004/ruben-westerberg/perl6/ch-1.p6 | 20 | ||||
| -rwxr-xr-x | challenge-004/ruben-westerberg/perl6/ch-2.p6 | 12 | ||||
| -rw-r--r-- | challenge-004/ruben-westerberg/words.txt | 5 |
8 files changed, 95 insertions, 3 deletions
diff --git a/challenge-004/ruben-westerberg/README b/challenge-004/ruben-westerberg/README index c2873957a1..f8c44ff70c 100644 --- a/challenge-004/ruben-westerberg/README +++ b/challenge-004/ruben-westerberg/README @@ -1,7 +1,9 @@ Solution by Ruben Westerberg +#Challenge 1: Calculate pi to precision of byte size of program. +Simply run the .pl and .p6 scripts -Challange 1 (5-Smooth p5 and p6) does not require command input and runs indefinately - -Challenge 2 (pascal triangle p5 and p6) dies if user supplies less then 3 as input on the command line +#Challenge 2: Word find from a given file of letters +Usage is perl5/ch-2.pl letters.txt words.txt +Usage is perl6/ch-2.p6 letters.txt words.txt diff --git a/challenge-004/ruben-westerberg/letters.txt b/challenge-004/ruben-westerberg/letters.txt new file mode 100644 index 0000000000..3e2f0e2774 --- /dev/null +++ b/challenge-004/ruben-westerberg/letters.txt @@ -0,0 +1 @@ +helloothd were diff --git a/challenge-004/ruben-westerberg/perl5/.ch-1.pl.swp b/challenge-004/ruben-westerberg/perl5/.ch-1.pl.swp Binary files differnew file mode 100644 index 0000000000..da013b6872 --- /dev/null +++ b/challenge-004/ruben-westerberg/perl5/.ch-1.pl.swp diff --git a/challenge-004/ruben-westerberg/perl5/ch-1.pl b/challenge-004/ruben-westerberg/perl5/ch-1.pl new file mode 100755 index 0000000000..a0469ae11e --- /dev/null +++ b/challenge-004/ruben-westerberg/perl5/ch-1.pl @@ -0,0 +1,22 @@ +#!/usr/bin/env perl +use Math::BigRat; +my $places= (stat $0)[7]; +printf "Places: $places\n"; +my $prev=""; +my $sign; +my $pi=Math::BigRat->new("0/1"); +my $denom=1; +print "Pi start\n"; +my $stable= 0; +my $i=0; +my $float; +until ($stable) { + $sign= (($i % 2) ? -4 : 4); + $pi->badd("$sign/$denom"); + $denom+=2; + $i++; + $float=$pi->as_float($places); + printf "Iteration: $i, Value of PI (to $places decimal places):$float\n"; + $stable="$float" eq "$prev"; + $prev=$float; +} diff --git a/challenge-004/ruben-westerberg/perl5/ch-2.pl b/challenge-004/ruben-westerberg/perl5/ch-2.pl new file mode 100755 index 0000000000..5918e78cbc --- /dev/null +++ b/challenge-004/ruben-westerberg/perl5/ch-2.pl @@ -0,0 +1,30 @@ +#!/usr/bin/env perl +my @letters; +my %letters; +my @words; +open(my $lettersFile ,"<",(shift)); +while (<$lettersFile>) { + chomp; + s/\W//g; + $letters{$_}++ foreach ( split ""); +} +close $lettersFile; + +open(my $wordsFile, "<", (shift)); +my %words; +while (<$wordsFile>) { + chomp; + s/\W//gr; + my %bag; + $bag{$_}++ foreach (split ""); + + #now actually compare line by line + my $all=1; + foreach (keys %bag) { + $all &&= $letters{$_} >= $bag{$_}; + last if not $all; + } + print "$_\n" if $all; + +} +close $wordsFile; diff --git a/challenge-004/ruben-westerberg/perl6/ch-1.p6 b/challenge-004/ruben-westerberg/perl6/ch-1.p6 new file mode 100755 index 0000000000..6145705e06 --- /dev/null +++ b/challenge-004/ruben-westerberg/perl6/ch-1.p6 @@ -0,0 +1,20 @@ +#!/usr/bin/env perl6 +my $places= $*PROGRAM-NAME.IO.s + 1; +printf "Places: $places\n"; +my $prev=""; +my $sign; +my $pi=(0/1).FatRat; +my $denom=1; +my $stable= 0; +my $i=0; +my $float; +until ($stable) { + $sign= (($i %% 2) ?? 4 !! -4); + $pi+=($sign/$denom).FatRat; + $denom+=2; + $i++; + $float=$pi.Str.substr(0,$places+1); + say "Iteration: $i, Value of PI (to $places decimal places):$float"; + $stable=$float eq $prev; + $prev=$float; +} diff --git a/challenge-004/ruben-westerberg/perl6/ch-2.p6 b/challenge-004/ruben-westerberg/perl6/ch-2.p6 new file mode 100755 index 0000000000..b97754a9fd --- /dev/null +++ b/challenge-004/ruben-westerberg/perl6/ch-2.p6 @@ -0,0 +1,12 @@ +#!/usr/bin/env perl6 +#Read a list of words to process +#Read file of letters +my $lettersFile=@*ARGS[0]; +my $wordsFile=@*ARGS[1]; +my %letters=$lettersFile.IO.slurp.trim.split("")[1..*-2].Bag.hash; +my %words=$wordsFile.IO.lines.map({$_.trim => .trim.split("")[1..*-2].Bag.hash}); +say (%words.map: { + my @keys= .value.keys; + my @result= ($_.value{@keys}) Z<= (%letters{@keys}); + .key if so all @result; +}); diff --git a/challenge-004/ruben-westerberg/words.txt b/challenge-004/ruben-westerberg/words.txt new file mode 100644 index 0000000000..8bea0181bb --- /dev/null +++ b/challenge-004/ruben-westerberg/words.txt @@ -0,0 +1,5 @@ +hello +helllo +there +how +word |
