From a08a69482b74e5b8e91162f5b9f4b114c8c61c38 Mon Sep 17 00:00:00 2001 From: Ruben Westerberg Date: Sat, 28 Mar 2020 21:28:30 +1000 Subject: Added ch-1.pl --- challenge-053/ruben-westerberg/perl/ch-1.pl | 43 +++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 challenge-053/ruben-westerberg/perl/ch-1.pl diff --git a/challenge-053/ruben-westerberg/perl/ch-1.pl b/challenge-053/ruben-westerberg/perl/ch-1.pl new file mode 100755 index 0000000000..b5498a3e46 --- /dev/null +++ b/challenge-053/ruben-westerberg/perl/ch-1.pl @@ -0,0 +1,43 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Data::Dumper; +use Math::Trig ':pi'; +use POSIX qw; +use v5.28; + +my $matrix=[ + [ 1, 2, 3 ], + [ 4, 5, 6 ], + [ 7, 8, 9 ] +]; + + +say "0deg rotation:"; +rotate($matrix,0); +say "90deg rotation:"; +rotate($matrix,90); +say "180deg rotation:"; +rotate($matrix,180); +say "270deg rotation:"; +rotate($matrix,270); + +sub rotate { + my ($input,$angle)=@_; + #input indexing + my @ip=map {pip4 *$_} 0..7; + my @ir= map {1+round sin} @ip; + my @ic =map {1+round cos} @ip; + + #output indexing + my @polar=map {($angle/180 *pi) + pip4 *$_} 0..7; + my @row= map {1+round sin} @polar; + my @col =map {1+round cos} @polar; + + my $out=[[],[],[]]; + + $out->[1]->[1]=$matrix->[1]->[1]; + $out->[$row[$_]]->[$col[$_]]=$matrix->[$ir[$_]]->[$ic[$_]] for (0..@col-1); + say "[".join(", ", @{$out->[$_]})."]" for 0..2; + $out; +} -- cgit From 48959aaec1d3d8c407e86cbcc88bcba0b538526f Mon Sep 17 00:00:00 2001 From: Ruben Westerberg Date: Sun, 29 Mar 2020 19:52:01 +1000 Subject: Added ch-2.pl List context in regex global match was the key! --- challenge-053/ruben-westerberg/perl/ch-1.pl | 4 +- challenge-053/ruben-westerberg/perl/ch-2.pl | 58 +++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 2 deletions(-) create mode 100755 challenge-053/ruben-westerberg/perl/ch-2.pl diff --git a/challenge-053/ruben-westerberg/perl/ch-1.pl b/challenge-053/ruben-westerberg/perl/ch-1.pl index b5498a3e46..48f1cf9509 100755 --- a/challenge-053/ruben-westerberg/perl/ch-1.pl +++ b/challenge-053/ruben-westerberg/perl/ch-1.pl @@ -26,8 +26,8 @@ sub rotate { my ($input,$angle)=@_; #input indexing my @ip=map {pip4 *$_} 0..7; - my @ir= map {1+round sin} @ip; - my @ic =map {1+round cos} @ip; + my @ir=map {1+round sin} @ip; + my @ic=map {1+round cos} @ip; #output indexing my @polar=map {($angle/180 *pi) + pip4 *$_} 0..7; diff --git a/challenge-053/ruben-westerberg/perl/ch-2.pl b/challenge-053/ruben-westerberg/perl/ch-2.pl new file mode 100755 index 0000000000..64f3dfa9ca --- /dev/null +++ b/challenge-053/ruben-westerberg/perl/ch-2.pl @@ -0,0 +1,58 @@ +#!/usr/bin/env perl +use warnings; +use strict; +use List::Util; +use v5.26; +no warnings 'experimental'; + +my $n=$ARGV[0]//5; +my @vowels=qw; + +die "Number not in range 1..5\n" unless grep /$n/, 1..5; + +say join "",@$_ for grep { + my $sum=0; + my $s=join '', @$_; + given ($s) { + my @match; #< Date: Sun, 29 Mar 2020 20:39:14 +1000 Subject: Added readme --- challenge-053/ruben-westerberg/README | 8 +++++--- challenge-053/ruben-westerberg/perl/ch-2.pl | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/challenge-053/ruben-westerberg/README b/challenge-053/ruben-westerberg/README index 84ce79a25d..37aacdf0d8 100644 --- a/challenge-053/ruben-westerberg/README +++ b/challenge-053/ruben-westerberg/README @@ -2,9 +2,11 @@ Solution by Ruben Westerberg ch-1.pl and ch-1.raku =================== -Stepping numbers -Run the the program with two arguments between 100 and 999. Displays stepping numbers. +Rotate matrix +Run program to demonstrate rotating matrix by 90, 180 and 270 deg + ch-2.pl and ch-2.raku =================== -Coin picking game. Use the < and > keys to select the end of the coin list. Plays against the computer. Most money wins +Vowels +Run the program with a single command line argument between 1 and 5 (default is 2). Program generates list of strings of this length from vowels and which abide by the specified rules. diff --git a/challenge-053/ruben-westerberg/perl/ch-2.pl b/challenge-053/ruben-westerberg/perl/ch-2.pl index 64f3dfa9ca..9aa0c3ba43 100755 --- a/challenge-053/ruben-westerberg/perl/ch-2.pl +++ b/challenge-053/ruben-westerberg/perl/ch-2.pl @@ -5,12 +5,12 @@ use List::Util; use v5.26; no warnings 'experimental'; -my $n=$ARGV[0]//5; +my $n=$ARGV[0]//2; my @vowels=qw; die "Number not in range 1..5\n" unless grep /$n/, 1..5; -say join "",@$_ for grep { +say for sort map {join "",@$_} grep { my $sum=0; my $s=join '', @$_; given ($s) { -- cgit From 4769d55c19fe240805c7d58354a0178729aea99e Mon Sep 17 00:00:00 2001 From: Ruben Westerberg Date: Sun, 29 Mar 2020 20:41:26 +1000 Subject: Added ch-1 and ch-2 raku --- challenge-053/ruben-westerberg/raku/ch-1.raku | 34 +++++++++++++++++++++++++++ challenge-053/ruben-westerberg/raku/ch-2.raku | 34 +++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100755 challenge-053/ruben-westerberg/raku/ch-1.raku create mode 100755 challenge-053/ruben-westerberg/raku/ch-2.raku diff --git a/challenge-053/ruben-westerberg/raku/ch-1.raku b/challenge-053/ruben-westerberg/raku/ch-1.raku new file mode 100755 index 0000000000..5d4d8ccc3e --- /dev/null +++ b/challenge-053/ruben-westerberg/raku/ch-1.raku @@ -0,0 +1,34 @@ +#!/usr/bin/env raku +my $matrix=[ + [ 1, 2, 3 ], + [ 4, 5, 6 ], + [ 7, 8, 9 ] +]; + +say "0deg rotation:"; +rotate($matrix,0); +say "90deg rotation:"; +rotate($matrix,90); +say "180deg rotation:"; +rotate($matrix,180); +say "270deg rotation:"; +rotate($matrix,270); + +sub rotate($input,$angle) { + #input indexing + my @ip= map {pi/4 *$_}, 0..7; + my @ir= map {1+round .sin}, @ip; #no sincos func in raku? + my @ic= map {1+round .cos}, @ip; #.. feature request! + + #output indexing + my @polar=map {($angle/180 *pi) + pi/4 *$_}, 0..7; + my @row= map {1+round .sin}, @polar; + my @col =map {1+round .cos}, @polar; + + my $out=[[],[],[]]; + + $out[1][1]=$matrix[1][1]; + $out[@row[$_]][@col[$_]]=$matrix[@ir[$_]][@ic[$_]] for (0..^@col); + say "["~join(", ", $out[$_])~"]" for 0..2; + $out; +} diff --git a/challenge-053/ruben-westerberg/raku/ch-2.raku b/challenge-053/ruben-westerberg/raku/ch-2.raku new file mode 100755 index 0000000000..d0d4191303 --- /dev/null +++ b/challenge-053/ruben-westerberg/raku/ch-2.raku @@ -0,0 +1,34 @@ +#!/usr/bin/env raku + +my $n=@*ARGS[0]//2; +my @vowels= ; + +die "Number not in range 1..5\n" unless $n ~~ 1..5; + +@vowels.combinations ==> #< #< #<|a$/; + + $sum+=m:g/e/; + $sum-= (m:g/ei|e$/); + + $sum+=m:g/i/; + $sum-= m:g/i<[aeou]>|i$/; + + $sum+=m:g/o/; + $sum-=m:g/o<[au]>|o$/; + + $sum+=m:g/u/; + $sum-=m:g/u<[oe]>|u$/; + } + $sum==0; +} ==> +my @combinations; + +.say for @combinations.map: {.join} ==> sort -- cgit