aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-289/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-289/arne-sommer/raku/ch-1.raku13
-rwxr-xr-xchallenge-289/arne-sommer/raku/ch-2.raku44
-rwxr-xr-xchallenge-289/arne-sommer/raku/jumbled-letters46
-rwxr-xr-xchallenge-289/arne-sommer/raku/jumbled-letters-fixed44
-rw-r--r--challenge-289/arne-sommer/raku/jumbled.txt1
-rwxr-xr-xchallenge-289/arne-sommer/raku/third-maximum13
-rw-r--r--challenge-289/arne-sommer/raku/unjumbled.txt1
8 files changed, 163 insertions, 0 deletions
diff --git a/challenge-289/arne-sommer/blog.txt b/challenge-289/arne-sommer/blog.txt
new file mode 100644
index 0000000000..1cdb21a904
--- /dev/null
+++ b/challenge-289/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/jumbled-third.html
diff --git a/challenge-289/arne-sommer/raku/ch-1.raku b/challenge-289/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..8a5904f352
--- /dev/null
+++ b/challenge-289/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,13 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems > 0 && all(@ints) ~~ Int,
+ :v(:$verbose));
+
+my @uniquely-sorted = @ints.sort.reverse.squish;
+
+say ": Uniquely sorted: @uniquely-sorted[]" if $verbose;
+
+say @uniquely-sorted.elems >= 3 ?? @uniquely-sorted[2] !! @uniquely-sorted[0];
+
+
+
diff --git a/challenge-289/arne-sommer/raku/ch-2.raku b/challenge-289/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..1273d616fe
--- /dev/null
+++ b/challenge-289/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,44 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($file = "unjumbled.txt", :v(:$verbose));
+
+for (slurp $file).lines -> $line
+{
+ say $line.split(" ").map({ scramble($_) }).join(" ");
+}
+
+sub scramble ($word is copy)
+{
+ my @letters = $word.comb.grep({ /\w/ });
+
+ if @letters.elems <= 3
+ {
+ say ": [$word] -> $word" if $verbose;
+ return $word;
+ }
+
+ print ": [$word -> " if $verbose;
+
+ my $first = @letters.shift;
+ my $last = @letters.pop;
+
+ my @random = @letters.pick(*);
+
+ @random.unshift: $first;
+ @random.push: $last;
+
+ print "F:$first L:$last]" if $verbose;
+
+ my $return;
+
+ for $word.comb -> $letter
+ {
+ $letter ~~ /\w/
+ ?? ( $return ~= @random.shift )
+ !! ( $return ~= $letter );
+ }
+
+ say " -> $return" if $verbose;
+
+ return $return;
+}
diff --git a/challenge-289/arne-sommer/raku/jumbled-letters b/challenge-289/arne-sommer/raku/jumbled-letters
new file mode 100755
index 0000000000..8ec78052f7
--- /dev/null
+++ b/challenge-289/arne-sommer/raku/jumbled-letters
@@ -0,0 +1,46 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($file = "unjumbled.txt", :v(:$verbose));
+
+for (slurp $file).lines -> $line
+{
+ say $line.split(" ").map({ scramble($_) }).join(" ");
+}
+
+sub scramble ($word is copy)
+{
+ if $word.chars <= 2
+ {
+ say ": [$word] -> $word" if $verbose;
+ return $word;
+ }
+
+ print ": [$word -> " if $verbose;
+
+ my $first = $word.substr(0,1);
+ $word = $word.substr(1);
+
+ my $last = $word.substr($word.chars -1);
+ $word = $word.substr(0, $word.chars -1);
+
+ if $last ~~ /\W$/ {
+ $last = $word.substr($word.chars -1) ~ $last;
+ $word = $word.substr(0, $word.chars -1);
+ }
+
+ print "$first|$word|$last]" if $verbose;
+
+ my $return;
+ my @random = $word.comb.grep({ /\w/ }).pick(*);
+
+ for $word.comb -> $letter
+ {
+ $letter ~~ /\w/
+ ?? ( $return ~= @random.shift )
+ !! ( $return ~= $letter );
+ }
+
+ say " -> $first$return$last" if $verbose;
+
+ return $first ~ $return ~ $last;
+}
diff --git a/challenge-289/arne-sommer/raku/jumbled-letters-fixed b/challenge-289/arne-sommer/raku/jumbled-letters-fixed
new file mode 100755
index 0000000000..1273d616fe
--- /dev/null
+++ b/challenge-289/arne-sommer/raku/jumbled-letters-fixed
@@ -0,0 +1,44 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($file = "unjumbled.txt", :v(:$verbose));
+
+for (slurp $file).lines -> $line
+{
+ say $line.split(" ").map({ scramble($_) }).join(" ");
+}
+
+sub scramble ($word is copy)
+{
+ my @letters = $word.comb.grep({ /\w/ });
+
+ if @letters.elems <= 3
+ {
+ say ": [$word] -> $word" if $verbose;
+ return $word;
+ }
+
+ print ": [$word -> " if $verbose;
+
+ my $first = @letters.shift;
+ my $last = @letters.pop;
+
+ my @random = @letters.pick(*);
+
+ @random.unshift: $first;
+ @random.push: $last;
+
+ print "F:$first L:$last]" if $verbose;
+
+ my $return;
+
+ for $word.comb -> $letter
+ {
+ $letter ~~ /\w/
+ ?? ( $return ~= @random.shift )
+ !! ( $return ~= $letter );
+ }
+
+ say " -> $return" if $verbose;
+
+ return $return;
+}
diff --git a/challenge-289/arne-sommer/raku/jumbled.txt b/challenge-289/arne-sommer/raku/jumbled.txt
new file mode 100644
index 0000000000..ae0e9ed734
--- /dev/null
+++ b/challenge-289/arne-sommer/raku/jumbled.txt
@@ -0,0 +1 @@
+Aoccdrnig to a rscheearch at Cmabrigde Uinervtisy, it deosn’t mttaer in waht oredr the ltteers in a wrod are, the olny iprmoetnt tihng is taht the frist and lsat ltteer be at the rghit pclae. The rset can be a toatl mses and you can sitll raed it wouthit porbelm. Tihs is bcuseae the huamn mnid deos not raed ervey lteter by istlef, but the wrod as a wlohe.
diff --git a/challenge-289/arne-sommer/raku/third-maximum b/challenge-289/arne-sommer/raku/third-maximum
new file mode 100755
index 0000000000..8a5904f352
--- /dev/null
+++ b/challenge-289/arne-sommer/raku/third-maximum
@@ -0,0 +1,13 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems > 0 && all(@ints) ~~ Int,
+ :v(:$verbose));
+
+my @uniquely-sorted = @ints.sort.reverse.squish;
+
+say ": Uniquely sorted: @uniquely-sorted[]" if $verbose;
+
+say @uniquely-sorted.elems >= 3 ?? @uniquely-sorted[2] !! @uniquely-sorted[0];
+
+
+
diff --git a/challenge-289/arne-sommer/raku/unjumbled.txt b/challenge-289/arne-sommer/raku/unjumbled.txt
new file mode 100644
index 0000000000..03cd195a65
--- /dev/null
+++ b/challenge-289/arne-sommer/raku/unjumbled.txt
@@ -0,0 +1 @@
+According to a researcher at Cambrigde University, it doesn’t matter in what order the letters in a word are, the only important thing is that the first and last letter be at the right place. The rest can be a total mess and you can still read it without problem. This is because the human mind does not read every letter by itself, but the word as a whole.