aboutsummaryrefslogtreecommitdiff
path: root/challenge-074
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-08-17 13:04:28 +0100
committerGitHub <noreply@github.com>2020-08-17 13:04:28 +0100
commit74729414de38358703031df835ee4e5bb25f9731 (patch)
treef0912d7a7ecc00662bb35cff63d733ec3001ba92 /challenge-074
parent73dc99bd2b356b035b1bda610b1e7db7d2754c91 (diff)
parent04630eaa204fd0950cdac071e8dac700cf536614 (diff)
downloadperlweeklychallenge-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.raku34
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) // "#";
+}