aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2019-05-05 22:57:53 +0100
committerGitHub <noreply@github.com>2019-05-05 22:57:53 +0100
commitca5d1e6e342b6a23b8d5afd0b8a9b8acdd6875ef (patch)
tree89e07bb0a8b2c728c4fa5304d75ddfcdfa328eec
parent4ee1f009188b8a25b1032e1465bd828bb2c10f4d (diff)
parentd40e69151613169aa47e5ced653ae32a387ae106 (diff)
downloadperlweeklychallenge-club-ca5d1e6e342b6a23b8d5afd0b8a9b8acdd6875ef.tar.gz
perlweeklychallenge-club-ca5d1e6e342b6a23b8d5afd0b8a9b8acdd6875ef.tar.bz2
perlweeklychallenge-club-ca5d1e6e342b6a23b8d5afd0b8a9b8acdd6875ef.zip
Merge pull request #124 from drclaw1394/master
Ruben/drclaw Solutions for W6 P5 and P6
-rwxr-xr-xchallenge-006/ruben-westerberg/perl5/ch-1.pl30
-rwxr-xr-xchallenge-006/ruben-westerberg/perl5/ch-2.pl5
-rwxr-xr-xchallenge-006/ruben-westerberg/perl6/ch-1.p611
-rwxr-xr-xchallenge-006/ruben-westerberg/perl6/ch-2.p627
4 files changed, 73 insertions, 0 deletions
diff --git a/challenge-006/ruben-westerberg/perl5/ch-1.pl b/challenge-006/ruben-westerberg/perl5/ch-1.pl
new file mode 100755
index 0000000000..d8ae69a771
--- /dev/null
+++ b/challenge-006/ruben-westerberg/perl5/ch-1.pl
@@ -0,0 +1,30 @@
+#!/usr/bin/env perl
+#
+my $string=join ',', @ARGV;
+
+my @a=split ',' , $string;
+my %bag;
+foreach (@a) {
+ $bag{$_}++;
+}
+my @k1= sort { $a <=> $b} keys %bag;
+my @k2= @k1; push @k2, shift @k2;
+my @p;
+for (my $i=0; $i<=$#k1; $i++) {
+ if (abs($k2[$i]-$k1[$i]) > 1 ) {
+ push @p,$i;
+ push @p ,$i+1;
+ }
+}
+unshift @p, 0;
+pop @p;
+my @out;
+for (my $i=0; $i<$#p; $i+=2) {
+ my $a=$k1[$p[$i]];
+ my $b=$k1[$p[$i+1]];
+ my $val= $a-$b == 0? $a: "$a-$b";
+ push @out, $val;
+}
+print (join ",", @out);
+print "\n";
+
diff --git a/challenge-006/ruben-westerberg/perl5/ch-2.pl b/challenge-006/ruben-westerberg/perl5/ch-2.pl
new file mode 100755
index 0000000000..73928169ae
--- /dev/null
+++ b/challenge-006/ruben-westerberg/perl5/ch-2.pl
@@ -0,0 +1,5 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use bigrat qw<bexp bpi>;
+print bexp(bpi(50)*sqrt(163),50);
diff --git a/challenge-006/ruben-westerberg/perl6/ch-1.p6 b/challenge-006/ruben-westerberg/perl6/ch-1.p6
new file mode 100755
index 0000000000..9438726911
--- /dev/null
+++ b/challenge-006/ruben-westerberg/perl6/ch-1.p6
@@ -0,0 +1,11 @@
+#!/usr/bin/env perl6
+my $string= @*ARGS ?? @*ARGS.join(",")!! prompt "Enter numbers: ";
+my $a=$string.split(",",:skip-empty)>>.trim.grep({!/^$/})>>.Int.Bag;
+my @r1=$a.keys.sort;
+my @diff=@r1.rotate >>-<< @r1;
+my @p=(0,|map {|($^k,$k+1) if abs($^v) > 1}, @diff.kv);
+
+@p.pop;
+say join ",", map {@r1[$^a]==@r1[$^b]??@r1[$^a]!!"@r1[$^a]-@r1[$^b]"}, @p;
+
+
diff --git a/challenge-006/ruben-westerberg/perl6/ch-2.p6 b/challenge-006/ruben-westerberg/perl6/ch-2.p6
new file mode 100755
index 0000000000..a82f43c516
--- /dev/null
+++ b/challenge-006/ruben-westerberg/perl6/ch-2.p6
@@ -0,0 +1,27 @@
+#!/usr/bin/env perl6
+
+my $bigPi=FatRat.new(31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679,10**100);
+
+sub factorial($n) {
+ constant @f= (1.FatRat, |[\*] 1.FatRat..*);
+ @f[$n];
+}
+sub taylor-e ($atVal) {
+
+ my $sum=0.FatRat;
+ my $x=$atVal.FatRat;
+ for 0..200 {
+ $sum+=($x**$_)/factorial($_);
+ say "Iteration $_: " ~ $sum.Str.substr(0,50);
+ }
+ $sum;
+}
+
+sub newton-sqrt($val, $target, $repeat){
+ my $guess=$val.FatRat;
+ for ^$repeat {
+ $guess:=($guess - ($guess**2 -$target)/(2*$guess));
+ }
+ $guess;
+}
+say taylor-e($bigPi*newton-sqrt(10,163,6)).Str.substr(0,50);