From 5050191e6336097ab728c03a89290b3caab083ad Mon Sep 17 00:00:00 2001 From: Mark Anderson Date: Mon, 17 Aug 2020 05:39:46 -0600 Subject: ch-1.raku --- challenge-074/mark-anderson/raku/ch-2.p6 | 31 ++++++++++++++++++++++++++++++ challenge-074/mark-anderson/raku/ch-2.raku | 25 ------------------------ 2 files changed, 31 insertions(+), 25 deletions(-) create mode 100644 challenge-074/mark-anderson/raku/ch-2.p6 delete mode 100644 challenge-074/mark-anderson/raku/ch-2.raku 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; -- cgit From 04630eaa204fd0950cdac071e8dac700cf536614 Mon Sep 17 00:00:00 2001 From: Mark Anderson Date: Mon, 17 Aug 2020 05:40:47 -0600 Subject: ch-2.raku --- challenge-074/mark-anderson/raku/ch-2.p6 | 31 ------------------------------ challenge-074/mark-anderson/raku/ch-2.raku | 31 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 31 deletions(-) delete mode 100644 challenge-074/mark-anderson/raku/ch-2.p6 create mode 100644 challenge-074/mark-anderson/raku/ch-2.raku diff --git a/challenge-074/mark-anderson/raku/ch-2.p6 b/challenge-074/mark-anderson/raku/ch-2.p6 deleted file mode 100644 index c572e643c3..0000000000 --- a/challenge-074/mark-anderson/raku/ch-2.p6 +++ /dev/null @@ -1,31 +0,0 @@ -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 new file mode 100644 index 0000000000..c572e643c3 --- /dev/null +++ b/challenge-074/mark-anderson/raku/ch-2.raku @@ -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) // "#"; +} -- cgit