From 6b7ad5180a7dbcd24b47c08c2be7c3ec51989556 Mon Sep 17 00:00:00 2001 From: Mark Anderson Date: Mon, 17 Aug 2020 09:05:51 -0600 Subject: ch-2.raku --- challenge-074/mark-anderson/raku/ch-2.raku | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/challenge-074/mark-anderson/raku/ch-2.raku b/challenge-074/mark-anderson/raku/ch-2.raku index c572e643c3..8e8f0a9b99 100644 --- a/challenge-074/mark-anderson/raku/ch-2.raku +++ b/challenge-074/mark-anderson/raku/ch-2.raku @@ -1,31 +1,29 @@ sub MAIN($string) { my @fnr-chars = gather { for 1..$string.chars -> $i { - take fnr($string.substr(0, $i)); + take fnr($string.substr($i-1, 1)); } } say @fnr-chars.join; } -sub fnr($string) { +sub fnr($letter) { state %seen; - state $singles; - - my $letter = $string.substr($string.chars-1, 1); + state $fnr-chars; %seen{$letter}++; given %seen{$letter} { when 1 { - $singles ~= $letter; + $fnr-chars ~= $letter; return $letter; } when 2 { - my $idx = $singles.index($letter); - $singles = $singles.substr(0, $idx) ~ $singles.substr($idx+1); + my $idx = $fnr-chars.index($letter); + $fnr-chars = $fnr-chars.substr(0, $idx) ~ $fnr-chars.substr($idx+1); } } - return $singles.substr($singles.chars-1, 1) // "#"; + return $fnr-chars.substr($fnr-chars.chars-1, 1) // "#"; } -- cgit