From 5a800a7d5890022c7736748a305db7ed608cfb1c Mon Sep 17 00:00:00 2001 From: Ruben Westerberg Date: Sun, 29 Sep 2019 07:33:39 +1000 Subject: Added ch2.pl --- challenge-027/ruben-westerberg/perl5/ch-2.pl | 33 ++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100755 challenge-027/ruben-westerberg/perl5/ch-2.pl diff --git a/challenge-027/ruben-westerberg/perl5/ch-2.pl b/challenge-027/ruben-westerberg/perl5/ch-2.pl new file mode 100755 index 0000000000..569388237f --- /dev/null +++ b/challenge-027/ruben-westerberg/perl5/ch-2.pl @@ -0,0 +1,33 @@ +#!/usr/bin/env perl +use warnings; +use strict; +use Tie::Scalar; + +package myclass; +sub TIESCALAR { + my $class=shift; + my $h=shift; + bless ({history=>$h}, $class); +} + +sub FETCH { + my $self=shift; + my $h=$self->{history}; + $h->[-1]; +} +sub STORE { + my $self=shift; + my $value=shift; + push @{$self->{history}},$value; + +} + +package main; +my $test; +my @history; +tie $test, 'myclass', \@history; +$test=10; +$test=1; +$test=15; +print "Current Value of variable: $test\n"; +print "Historical Values: @history\n"; -- cgit From 11fba8cbf38f61ade47560244c4ebf18a2b75f60 Mon Sep 17 00:00:00 2001 From: Ruben Westerberg Date: Sun, 29 Sep 2019 09:31:20 +1000 Subject: Added ch-1.pl --- challenge-027/ruben-westerberg/perl5/ch-1.pl | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100755 challenge-027/ruben-westerberg/perl5/ch-1.pl diff --git a/challenge-027/ruben-westerberg/perl5/ch-1.pl b/challenge-027/ruben-westerberg/perl5/ch-1.pl new file mode 100755 index 0000000000..0bb1428281 --- /dev/null +++ b/challenge-027/ruben-westerberg/perl5/ch-1.pl @@ -0,0 +1,21 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +my @l; +while (@l<2) { + print "Enter line".(@l+1).": x1 y1 x2 y2\n"; + my $l=; my @p=split " ", $l; + if (@p==4) { + push @l, {px=>[@p[0,2]],py=>[@p[1,3]],m=>undef,c=>undef}; + } + else { + print "not a valid line! \n"; + } +} + +for (@l) { $$_{c}=$$_{py}[0]-($$_{m}*$$_{px}[0]); } +my $x=($l[0]{c}-$l[1]{c})/( $l[1]{m}-$l[0]{m}); +my $y=$l[0]{m}*$x+$l[0]{c}; + +print "Intercept point: $x, $y\n"; -- cgit From 1d50267e1aaf80b678ec31b32825d96b396a504f Mon Sep 17 00:00:00 2001 From: Ruben Westerberg Date: Sun, 29 Sep 2019 12:41:46 +1000 Subject: Added ch-1.p6. Fixed deleted line in ch-1.pl --- challenge-027/ruben-westerberg/perl5/ch-1.pl | 5 ++++- challenge-027/ruben-westerberg/perl6/ch-1.p6 | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100755 challenge-027/ruben-westerberg/perl6/ch-1.p6 diff --git a/challenge-027/ruben-westerberg/perl5/ch-1.pl b/challenge-027/ruben-westerberg/perl5/ch-1.pl index 0bb1428281..8e55486e6d 100755 --- a/challenge-027/ruben-westerberg/perl5/ch-1.pl +++ b/challenge-027/ruben-westerberg/perl5/ch-1.pl @@ -14,7 +14,10 @@ while (@l<2) { } } -for (@l) { $$_{c}=$$_{py}[0]-($$_{m}*$$_{px}[0]); } +for (@l) { + $$_{m}=($$_{py}[1]-$$_{py}[0])/($$_{px}[1]-$$_{px}[0]); + $$_{c}=$$_{py}[0]-($$_{m}*$$_{px}[0]); +} my $x=($l[0]{c}-$l[1]{c})/( $l[1]{m}-$l[0]{m}); my $y=$l[0]{m}*$x+$l[0]{c}; diff --git a/challenge-027/ruben-westerberg/perl6/ch-1.p6 b/challenge-027/ruben-westerberg/perl6/ch-1.p6 new file mode 100755 index 0000000000..9718354d9d --- /dev/null +++ b/challenge-027/ruben-westerberg/perl6/ch-1.p6 @@ -0,0 +1,20 @@ +#!/usr/bin/env perl6 +my @l; +while @l < 2 { + my @p=split " ", prompt("Enter line"~(@l+1)~": x1 y1 x2 y2\n"), :skip-empty; + if (@p==4) { + push @l, {px=>[@p[0,2]],py=>[@p[1,3]],m=>Any,c=>Any}; + } + else { + print "not a valid line! \n"; + } +} + +for @l { + $_=($_[1]-$_[0])/($_[1]-$_[0]); + $_=$_[0]- ($_*$_[0]); +} +my $x=(@l[0]-@l[1])/( @l[1]-@l[0]); +my $y=@l[0]*$x+@l[0]; + +put "Intercept point: $x, $y"; -- cgit From 00fb011561d7297cdbc4e21981985a56befab264 Mon Sep 17 00:00:00 2001 From: Ruben Westerberg Date: Sun, 29 Sep 2019 14:38:20 +1000 Subject: Added ch-2.p6 and readme --- challenge-027/ruben-westerberg/README | 15 +++++++-------- challenge-027/ruben-westerberg/perl6/ch-2.p6 | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 8 deletions(-) create mode 100755 challenge-027/ruben-westerberg/perl6/ch-2.p6 diff --git a/challenge-027/ruben-westerberg/README b/challenge-027/ruben-westerberg/README index b22be03bd3..c17b59a016 100644 --- a/challenge-027/ruben-westerberg/README +++ b/challenge-027/ruben-westerberg/README @@ -2,15 +2,14 @@ Solution by Ruben Westerberg ch-1.pl and ch-1.p6 === -Stone and Jewels -Run the program with two arguments, the first one being the stone, and the second one the jewel. -The total number of letters in the jewel present in the stone is printed. -If no arguments are given a test set is used. +Intersecting lines. +Run the program. you will be propted to enter two points for the first line and then two points for the second line. +Points are intered as interleved xy pairs +example: + When prompted to enter the line starting at the origin and ending at x=5 and y=10, the two points are entered as follows: + 0 0 5 10 ch-2.pl and ch-2.p6 === -Angular average -Run the program with at least one argument. Each argument is an angle in degrees. -The output is the average of the list of angles supplied. -If no arguments are given, a test list is used. +Run the program to demonstrate history of every assignement to a variable. diff --git a/challenge-027/ruben-westerberg/perl6/ch-2.p6 b/challenge-027/ruben-westerberg/perl6/ch-2.p6 new file mode 100755 index 0000000000..ec2d2af03d --- /dev/null +++ b/challenge-027/ruben-westerberg/perl6/ch-2.p6 @@ -0,0 +1,18 @@ +#!/usr/bin/env perl6 + +my @history; +my $value:=remembering(@history); +$value=4; +$value=10; +$value=100; +put "Current value of variable: $value"; +put "Historical Values: " , join " ",@history; + + +sub remembering (@history) { + return-rw Proxy.new( + FETCH => method () {@history[*-1]}, + STORE => method ($new) {;@history.push($new)} + ); +} + -- cgit