diff options
| author | rir <rirans@comcast.net> | 2022-02-02 00:15:42 -0500 |
|---|---|---|
| committer | rir <rirans@comcast.net> | 2022-02-02 00:15:42 -0500 |
| commit | 4b1074856eb77dbff60e8028aa505cae13ee2d68 (patch) | |
| tree | 38706cd18eed72d09849904cceb6c67c2b581848 | |
| parent | 3db914247260655a488978511149cccc73408b00 (diff) | |
| download | perlweeklychallenge-club-4b1074856eb77dbff60e8028aa505cae13ee2d68.tar.gz perlweeklychallenge-club-4b1074856eb77dbff60e8028aa505cae13ee2d68.tar.bz2 perlweeklychallenge-club-4b1074856eb77dbff60e8028aa505cae13ee2d68.zip | |
raku challenge 150
| -rw-r--r-- | challenge-150/0rir/README | 2 | ||||
| -rw-r--r-- | challenge-150/0rir/raku/ch-1.raku | 46 | ||||
| -rw-r--r-- | challenge-150/0rir/raku/ch-2.raku | 19 |
3 files changed, 67 insertions, 0 deletions
diff --git a/challenge-150/0rir/README b/challenge-150/0rir/README new file mode 100644 index 0000000000..48ee4684c2 --- /dev/null +++ b/challenge-150/0rir/README @@ -0,0 +1,2 @@ + +Solution by Robert Ransbottom. diff --git a/challenge-150/0rir/raku/ch-1.raku b/challenge-150/0rir/raku/ch-1.raku new file mode 100644 index 0000000000..29114e8c2c --- /dev/null +++ b/challenge-150/0rir/raku/ch-1.raku @@ -0,0 +1,46 @@ +#!/usr/bin/env raku +# vim: ft=raku sw=4 expandtab +use v6.d; +use Lingua::EN::Numbers :short; + +my $sot = 51; +my @out; +my @data = + [ '1', '2' ], [ '1234567890', '1234567890' ], + [ '12', '34' ], [ '123456789', '012345678' ], + [ '123', '456' ], [ '12345678', '90123456' ], + [ '1234', '5678' ], [ '1234567', '8901234' ], + [ '12345', '67890' ], [ '123456', '789012' ], + [ '1234567890' x 2, '1234567890' x 2 ], + [ '1234567890' x 3, '1234567890' x 3 ], + [ '1234567890' x 6, '1234567890' x 6 ], +; + +my @input = @data.pick; +my ($a, $b) = @input[0]; +die 'Mismatched input' unless $a.chars == $b.chars; +@out.push: $a, $b; + +my @f-word = $a, $b, { + state $x =$a; + state $y =$b; + my $z= $x ~ $y; + ($x,$y)=($y,$z); + $z} … ∞; + +my $f-word; +my $words; +for @f-word { + $f-word = $_; + $words ~= "'$_'\n"; + last if .chars ≥ $sot; +} + +@out.push: $f-word.substr( $sot-1, 1), $words, (' ' x 9), ord-d( $sot), $sot; +@out.push: $f-word,$f-word.substr( $sot -1 ,1) ; + +printf qq{Input: \$a = '%s', \$b = '%s'} + ~ "\nOutput: %s \n\nFibonacci Words:\n\n%s\n%sThe %s" + ~ " digit in the first term having at least %s digits\n" + ~ qq{'%s' is %s.\n}, + |@out; diff --git a/challenge-150/0rir/raku/ch-2.raku b/challenge-150/0rir/raku/ch-2.raku new file mode 100644 index 0000000000..d2f21ce280 --- /dev/null +++ b/challenge-150/0rir/raku/ch-2.raku @@ -0,0 +1,19 @@ +#!/usr/bin/env raku +# vim: ft=raku sw=4 expandtabs +use v6.d; + +my %tag = (1 … 500) Z=> ( (False) xx 500); + +my @prime = 2, 3, 5, 7, 11, 13, 17, 19, ; +my @square = @prime»² ; + +for 4 … 500 -> $k { + for @square -> $f { + if $k ÷ $f == Int( $k ÷ $f ) { + %tag{$k}:delete; + last; + } + } +} +say 'The smallest positive square-free integers are'; +say %tag.keys.sort(&infix:«<=>»).join( ' ,'); |
