diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-10-01 16:58:11 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-01 16:58:11 +0100 |
| commit | 0f10ae532192b44c8c6291dfd0050f58e18b2be0 (patch) | |
| tree | 719507f2796926741a06f4ec39f7444c1641c0df | |
| parent | c4f4c02e318dfb3fff859eff1166a195a9a0dfc2 (diff) | |
| parent | 91183d2feee9b66c571866a63a6e067d2f76119e (diff) | |
| download | perlweeklychallenge-club-0f10ae532192b44c8c6291dfd0050f58e18b2be0.tar.gz perlweeklychallenge-club-0f10ae532192b44c8c6291dfd0050f58e18b2be0.tar.bz2 perlweeklychallenge-club-0f10ae532192b44c8c6291dfd0050f58e18b2be0.zip | |
Merge pull request #10939 from arnesom/branch-for-challenge-289
Arne Sommer
| -rw-r--r-- | challenge-289/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-289/arne-sommer/raku/ch-1.raku | 13 | ||||
| -rwxr-xr-x | challenge-289/arne-sommer/raku/ch-2.raku | 44 | ||||
| -rwxr-xr-x | challenge-289/arne-sommer/raku/jumbled-letters | 46 | ||||
| -rwxr-xr-x | challenge-289/arne-sommer/raku/jumbled-letters-fixed | 44 | ||||
| -rw-r--r-- | challenge-289/arne-sommer/raku/jumbled.txt | 1 | ||||
| -rwxr-xr-x | challenge-289/arne-sommer/raku/third-maximum | 13 | ||||
| -rw-r--r-- | challenge-289/arne-sommer/raku/unjumbled.txt | 1 |
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. |
