diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-08-17 13:04:28 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-08-17 13:04:28 +0100 |
| commit | 74729414de38358703031df835ee4e5bb25f9731 (patch) | |
| tree | f0912d7a7ecc00662bb35cff63d733ec3001ba92 /challenge-074 | |
| parent | 73dc99bd2b356b035b1bda610b1e7db7d2754c91 (diff) | |
| parent | 04630eaa204fd0950cdac071e8dac700cf536614 (diff) | |
| download | perlweeklychallenge-club-74729414de38358703031df835ee4e5bb25f9731.tar.gz perlweeklychallenge-club-74729414de38358703031df835ee4e5bb25f9731.tar.bz2 perlweeklychallenge-club-74729414de38358703031df835ee4e5bb25f9731.zip | |
Merge pull request #2092 from andemark/branch-for-challenge-074
Branch for challenge 074
Diffstat (limited to 'challenge-074')
| -rw-r--r-- | challenge-074/mark-anderson/raku/ch-2.raku | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/challenge-074/mark-anderson/raku/ch-2.raku b/challenge-074/mark-anderson/raku/ch-2.raku index 2447d5f9a5..c572e643c3 100644 --- a/challenge-074/mark-anderson/raku/ch-2.raku +++ b/challenge-074/mark-anderson/raku/ch-2.raku @@ -1,25 +1,31 @@ -unit sub MAIN($string); +sub MAIN($string) { + my @fnr-chars = gather { + for 1..$string.chars -> $i { + take fnr($string.substr(0, $i)); + } + } + + say @fnr-chars.join; +} -my %seen; -my $singles; +sub fnr($string) { + state %seen; + state $singles; -my @first-non-repeatings = gather { - for 1..$string.chars -> $i { - my $letter = $string.substr($i-1, 1); + my $letter = $string.substr($string.chars-1, 1); - %seen{$letter}++; + %seen{$letter}++; - if %seen{$letter} == 1 { + given %seen{$letter} { + when 1 { $singles ~= $letter; - take $letter; + return $letter; } - - else { + when 2 { 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; + return $singles.substr($singles.chars-1, 1) // "#"; +} |
