aboutsummaryrefslogtreecommitdiff
path: root/challenge-074/mark-anderson
diff options
context:
space:
mode:
authorMark Anderson <mark@frontrangerunner.com>2020-08-17 02:56:08 -0600
committerMark Anderson <mark@frontrangerunner.com>2020-08-17 02:56:08 -0600
commitc97bde3ea44f3fd9a4ece6f2f8739ed9853401d0 (patch)
treee5e9180a262ba712eb2c444352aeb7a2985b4c6e /challenge-074/mark-anderson
parent26b6db21e84648652c374d46c5a9c7de5e862e17 (diff)
downloadperlweeklychallenge-club-c97bde3ea44f3fd9a4ece6f2f8739ed9853401d0.tar.gz
perlweeklychallenge-club-c97bde3ea44f3fd9a4ece6f2f8739ed9853401d0.tar.bz2
perlweeklychallenge-club-c97bde3ea44f3fd9a4ece6f2f8739ed9853401d0.zip
Challenge 74 Solutions
Diffstat (limited to 'challenge-074/mark-anderson')
-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;