diff options
| author | Mark Anderson <mark@frontrangerunner.com> | 2020-08-17 05:39:46 -0600 |
|---|---|---|
| committer | Mark Anderson <mark@frontrangerunner.com> | 2020-08-17 05:39:46 -0600 |
| commit | 5050191e6336097ab728c03a89290b3caab083ad (patch) | |
| tree | ba17414a535819ae15b1369e86baba5d8e51e93e | |
| parent | c97bde3ea44f3fd9a4ece6f2f8739ed9853401d0 (diff) | |
| download | perlweeklychallenge-club-5050191e6336097ab728c03a89290b3caab083ad.tar.gz perlweeklychallenge-club-5050191e6336097ab728c03a89290b3caab083ad.tar.bz2 perlweeklychallenge-club-5050191e6336097ab728c03a89290b3caab083ad.zip | |
ch-1.raku
| -rw-r--r-- | challenge-074/mark-anderson/raku/ch-2.p6 | 31 | ||||
| -rw-r--r-- | challenge-074/mark-anderson/raku/ch-2.raku | 25 |
2 files changed, 31 insertions, 25 deletions
diff --git a/challenge-074/mark-anderson/raku/ch-2.p6 b/challenge-074/mark-anderson/raku/ch-2.p6 new file mode 100644 index 0000000000..c572e643c3 --- /dev/null +++ b/challenge-074/mark-anderson/raku/ch-2.p6 @@ -0,0 +1,31 @@ +sub MAIN($string) { + my @fnr-chars = gather { + for 1..$string.chars -> $i { + take fnr($string.substr(0, $i)); + } + } + + say @fnr-chars.join; +} + +sub fnr($string) { + state %seen; + state $singles; + + my $letter = $string.substr($string.chars-1, 1); + + %seen{$letter}++; + + given %seen{$letter} { + when 1 { + $singles ~= $letter; + return $letter; + } + when 2 { + my $idx = $singles.index($letter); + $singles = $singles.substr(0, $idx) ~ $singles.substr($idx+1); + } + } + + return $singles.substr($singles.chars-1, 1) // "#"; +} diff --git a/challenge-074/mark-anderson/raku/ch-2.raku b/challenge-074/mark-anderson/raku/ch-2.raku deleted file mode 100644 index 2447d5f9a5..0000000000 --- a/challenge-074/mark-anderson/raku/ch-2.raku +++ /dev/null @@ -1,25 +0,0 @@ -unit sub MAIN($string); - -my %seen; -my $singles; - -my @first-non-repeatings = gather { - for 1..$string.chars -> $i { - my $letter = $string.substr($i-1, 1); - - %seen{$letter}++; - - if %seen{$letter} == 1 { - $singles ~= $letter; - take $letter; - } - - else { - my $idx = $singles.index($letter); - $singles = $singles.substr(0, $idx) ~ $singles.substr($idx+1); - take $singles.substr($singles.chars-1, 1) // "#"; - } - } -} - -say @first-non-repeatings.join; |
