From b8a0f3583b84bf0f36e8789ac05523b472de9c73 Mon Sep 17 00:00:00 2001 From: 冯昶 Date: Mon, 3 May 2021 20:47:16 +0800 Subject: challenge 111, raku solutions --- challenge-111/feng-chang/raku/ch-1.raku | 19 +++++++++++++++++++ challenge-111/feng-chang/raku/ch-1.txt | 5 +++++ challenge-111/feng-chang/raku/ch-2.raku | 7 +++++++ 3 files changed, 31 insertions(+) create mode 100755 challenge-111/feng-chang/raku/ch-1.raku create mode 100644 challenge-111/feng-chang/raku/ch-1.txt create mode 100755 challenge-111/feng-chang/raku/ch-2.raku diff --git a/challenge-111/feng-chang/raku/ch-1.raku b/challenge-111/feng-chang/raku/ch-1.raku new file mode 100755 index 0000000000..0355d1e80c --- /dev/null +++ b/challenge-111/feng-chang/raku/ch-1.raku @@ -0,0 +1,19 @@ +#!/bin/env raku + +sub binary-search(@a, Int:D $start, Int:D $end, Int:D $n) { + my $middle = ($start + $end) div 2; + do given @a[$middle] { + when $_ == $n { 1 } + when $start == $end { 0 } + when $_ > $n { binary-search(@a, $start, $middle - 1, $n) } + default { binary-search(@a, $middle + 1, $end, $n) } + } +} + +sub MAIN( + Int:D $n, + Str:D $f where *.IO.f = 'ch-1.txt' +) { + my @a = $f.IO.words; + put binary-search(@a, 0, @a.elems - 1, $n); +} diff --git a/challenge-111/feng-chang/raku/ch-1.txt b/challenge-111/feng-chang/raku/ch-1.txt new file mode 100644 index 0000000000..1daf55c92c --- /dev/null +++ b/challenge-111/feng-chang/raku/ch-1.txt @@ -0,0 +1,5 @@ + 1 2 3 5 7 + 9 11 15 19 20 +23 24 25 29 31 +32 33 39 40 42 +45 47 48 49 50 diff --git a/challenge-111/feng-chang/raku/ch-2.raku b/challenge-111/feng-chang/raku/ch-2.raku new file mode 100755 index 0000000000..a5d8d40c7d --- /dev/null +++ b/challenge-111/feng-chang/raku/ch-2.raku @@ -0,0 +1,7 @@ +#!/bin/env raku + +sub MAIN(Str:D $words where *.IO.e = '/usr/share/dict/words') { + my @w = $words.IO.words.grep({ [le] $_.lc.comb }); + my $max-length = @w».chars.max; + @w.grep(*.chars == $max-length).put; +} -- cgit