diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-11-12 11:15:08 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-11-12 11:15:08 +0000 |
| commit | d09088982cdde4e0ebd8122ce304ddc015e83d3c (patch) | |
| tree | a0c8371e15f85d32289956476ee3f44bcf698665 /challenge-034 | |
| parent | d42023142cf4b22ab9face26a30107182db302c5 (diff) | |
| download | perlweeklychallenge-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.p6 | 22 | ||||
| -rw-r--r-- | challenge-034/ulrich-rieke/perl6/ch-2.p6 | 57 |
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' => ÷ ; +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]) }!" ; + } +} |
