From 4b1074856eb77dbff60e8028aa505cae13ee2d68 Mon Sep 17 00:00:00 2001 From: rir Date: Wed, 2 Feb 2022 00:15:42 -0500 Subject: raku challenge 150 --- challenge-150/0rir/README | 2 ++ challenge-150/0rir/raku/ch-1.raku | 46 +++++++++++++++++++++++++++++++++++++++ challenge-150/0rir/raku/ch-2.raku | 19 ++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 challenge-150/0rir/README create mode 100644 challenge-150/0rir/raku/ch-1.raku create mode 100644 challenge-150/0rir/raku/ch-2.raku 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( ' ,'); -- cgit