diff options
| -rw-r--r-- | challenge-074/mark-anderson/raku/ch-2.raku | 16 |
1 files 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) // "#"; } |
