diff options
| author | Mark Anderson <mark@frontrangerunner.com> | 2020-08-17 09:05:51 -0600 |
|---|---|---|
| committer | Mark Anderson <mark@frontrangerunner.com> | 2020-08-17 09:05:51 -0600 |
| commit | 6b7ad5180a7dbcd24b47c08c2be7c3ec51989556 (patch) | |
| tree | 6784c28b69496dc0bd61279699b3197abc8a371c | |
| parent | 04630eaa204fd0950cdac071e8dac700cf536614 (diff) | |
| download | perlweeklychallenge-club-6b7ad5180a7dbcd24b47c08c2be7c3ec51989556.tar.gz perlweeklychallenge-club-6b7ad5180a7dbcd24b47c08c2be7c3ec51989556.tar.bz2 perlweeklychallenge-club-6b7ad5180a7dbcd24b47c08c2be7c3ec51989556.zip | |
ch-2.raku
| -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) // "#"; } |
