From f440681893fcdec9eb47797f0f030e0345c8ef44 Mon Sep 17 00:00:00 2001 From: 冯昶 Date: Tue, 1 Nov 2022 19:16:08 +0800 Subject: challenge #189, raku solutions --- challenge-189/feng-chang/raku/ch-1.raku | 9 +++++++++ challenge-189/feng-chang/raku/ch-2.raku | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100755 challenge-189/feng-chang/raku/ch-1.raku create mode 100755 challenge-189/feng-chang/raku/ch-2.raku diff --git a/challenge-189/feng-chang/raku/ch-1.raku b/challenge-189/feng-chang/raku/ch-1.raku new file mode 100755 index 0000000000..c5900f29fb --- /dev/null +++ b/challenge-189/feng-chang/raku/ch-1.raku @@ -0,0 +1,9 @@ +#!/bin/env raku + +unit sub MAIN(*@C); + +my $c = @C.pop; +put do given @C.grep(* gt $c).min { + when 'a'..'z' { $_ } + default { $c } +} diff --git a/challenge-189/feng-chang/raku/ch-2.raku b/challenge-189/feng-chang/raku/ch-2.raku new file mode 100755 index 0000000000..ab7a3bc4e8 --- /dev/null +++ b/challenge-189/feng-chang/raku/ch-2.raku @@ -0,0 +1,20 @@ +#!/bin/env raku + +sub degree(@N is copy --> UInt:D) { + my $d = 0; + + while @N { + my $cnt = @N.grep(* == @N[0]).elems; + $d = $cnt if $cnt > $d; + @N .= grep(* != @N[0]); + } + + $d +} + +unit sub MAIN(*@n); + +my $d = degree(@n); +my @candidates = (^@n.elems X ^@n.elems).grep({.[1] ≥ .[0]}).grep({ $d == degree(@n[.minmax]) }); +my $min-val = @candidates.map({ .[1] - .[0] }).min; +put @n[@candidates.grep({ $min-val == .[1]-.[0] }).first.minmax]; -- cgit