aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-074/mark-anderson/raku/ch-2.raku25
1 files changed, 25 insertions, 0 deletions
diff --git a/challenge-074/mark-anderson/raku/ch-2.raku b/challenge-074/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..2447d5f9a5
--- /dev/null
+++ b/challenge-074/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,25 @@
+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;