aboutsummaryrefslogtreecommitdiff
path: root/challenge-034
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2019-11-12 11:15:08 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2019-11-12 11:15:08 +0000
commitd09088982cdde4e0ebd8122ce304ddc015e83d3c (patch)
treea0c8371e15f85d32289956476ee3f44bcf698665 /challenge-034
parentd42023142cf4b22ab9face26a30107182db302c5 (diff)
downloadperlweeklychallenge-club-d09088982cdde4e0ebd8122ce304ddc015e83d3c.tar.gz
perlweeklychallenge-club-d09088982cdde4e0ebd8122ce304ddc015e83d3c.tar.bz2
perlweeklychallenge-club-d09088982cdde4e0ebd8122ce304ddc015e83d3c.zip
- Added solutions by Ulrich Rieke.
Diffstat (limited to 'challenge-034')
-rw-r--r--challenge-034/ulrich-rieke/perl6/ch-1.p622
-rw-r--r--challenge-034/ulrich-rieke/perl6/ch-2.p657
2 files changed, 79 insertions, 0 deletions
diff --git a/challenge-034/ulrich-rieke/perl6/ch-1.p6 b/challenge-034/ulrich-rieke/perl6/ch-1.p6
new file mode 100644
index 0000000000..cb25c4aab9
--- /dev/null
+++ b/challenge-034/ulrich-rieke/perl6/ch-1.p6
@@ -0,0 +1,22 @@
+use v6 ;
+
+#shows the use of hash slices!
+my %towers = "tower 1" => 88 , "my favourite tower" => 102 , "elite tower" => 250 ,
+ "record tower" => 500 , "ancient tower" => 34 , "medieval tower" => 20 ;
+my @smaller = %towers.keys.grep( { %towers{$_} < 100 } ) ;
+%towers{ @smaller }:delete ;
+say "The bigger towers:" ;
+for %towers.kv -> $tower , $height {
+ say "$tower has a height of $height meters." ;
+}
+
+#...and of array slices :
+my @random_DNA_bases ;
+for (1..63 ) {
+ @random_DNA_bases.push( <A C T G>.pick( 1 )) ;
+}
+say "randomly selected DNA bases:" ;
+@random_DNA_bases.say ;
+my @tripletstarts = @random_DNA_bases[0,3,6...*] ;
+say "...and the corresponding triplet starts:" ;
+@tripletstarts.say ;
diff --git a/challenge-034/ulrich-rieke/perl6/ch-2.p6 b/challenge-034/ulrich-rieke/perl6/ch-2.p6
new file mode 100644
index 0000000000..b28a8ca1db
--- /dev/null
+++ b/challenge-034/ulrich-rieke/perl6/ch-2.p6
@@ -0,0 +1,57 @@
+use v6 ;
+
+#demonstrating the use of a dispatcher, without much of input validation
+
+sub add( Numeric $a , Numeric $b ) {
+ return $a + $b ;
+}
+
+sub subtract( Numeric $a , Numeric $b ) {
+ return $a - $b ;
+}
+
+sub multiply( Numeric $a , Numeric $b ) {
+ return $a * $b ;
+}
+
+sub divide( Numeric $a , Numeric $b ) {
+ return $a / $b ;
+}
+
+say "Enter a number from 1 to 4 to indicate what you want to do!" ;
+say "1) add" ;
+say "2) subtract" ;
+say "3) multiply" ;
+say "4) divide" ;
+my $answer = $*IN.get ;
+my $choice = $answer.substr(0, 1 ) ;
+while ( +$choice < 1 || +$choice > 4 ) {
+ say "Enter a number from 1 to 4 to indicate what you want to do!" ;
+ say "1) add" ;
+ say "2) subtract" ;
+ say "3) multiply" ;
+ say "4) divide" ;
+ $answer = $*IN.get ;
+ $choice = $answer.substr(0, 1 ) ;
+}
+say "Enter your 2 operands: ( 2 in a row separated by spaces )" ;
+my $numberline = $*IN.get ;
+my @numbers = $numberline.split(/\s+/) ;
+while @numbers.elems < 2 {
+ say "Enter your 2 operands: (2 in a row separated by spaces)" ;
+ my $numberline = $*IN.get ;
+ my @numbers = $numberline.split(/\s+/) ;
+}
+my %dispatcher = '1' => &add , '2' => &subtract , '3' => &multiply,
+ '4' => &divide ;
+if ( 1 <= +$choice <= 3 ) {
+ say "The result is {%dispatcher{$choice}(+@numbers[0] , +@numbers[1]) }!" ;
+}
+if (+$choice == 4 ) {
+ if (+@numbers[1] == 0) {
+ say "Illegal division by 0!" ;
+ }
+ else {
+ say "The result is {%dispatcher{'4'}(+@numbers[0] , +@numbers[1]) }!" ;
+ }
+}