diff options
| author | Philip Hood <hood@panix.com> | 2021-01-18 20:06:04 -0500 |
|---|---|---|
| committer | Philip Hood <hood@panix.com> | 2021-01-18 20:06:04 -0500 |
| commit | 2476e0b2f9bd2de0d84b6cebeba317c73f083252 (patch) | |
| tree | 89c8d9f278f0a8008dfd0a53601e66eca2c0eb9b /challenge-096 | |
| parent | 754e6dcd79dde5387229a23ae7eca35d70eac4a3 (diff) | |
| download | perlweeklychallenge-club-2476e0b2f9bd2de0d84b6cebeba317c73f083252.tar.gz perlweeklychallenge-club-2476e0b2f9bd2de0d84b6cebeba317c73f083252.tar.bz2 perlweeklychallenge-club-2476e0b2f9bd2de0d84b6cebeba317c73f083252.zip | |
challenge 96, nums 1 & 2, in raku
Diffstat (limited to 'challenge-096')
| -rwxr-xr-x | challenge-096/pkmnx/raku/ch-1.raku | 23 | ||||
| -rwxr-xr-x | challenge-096/pkmnx/raku/ch-2.raku | 28 |
2 files changed, 51 insertions, 0 deletions
diff --git a/challenge-096/pkmnx/raku/ch-1.raku b/challenge-096/pkmnx/raku/ch-1.raku new file mode 100755 index 0000000000..dd0ac107de --- /dev/null +++ b/challenge-096/pkmnx/raku/ch-1.raku @@ -0,0 +1,23 @@ +#!/usr/bin/env raku + +# see usage: +# +# pk@pkx:~/stuff/raku/perlweeklychallenge-club/challenge-096/pkmnx/raku$ cat poo +# Perl and Raku are part of the same family +# The Weekly Challenge +# pk@pkx:~/stuff/raku/perlweeklychallenge-club/challenge-096/pkmnx/raku$ time ./ch-1a.raku < poo +# Input: $S = " Perl and Raku are part of the same family " +# Output: "family same the of part are Raku and Perl" +# Input: $S = "The Weekly Challenge" +# Output: "Challenge Weekly The" +# +# real 0m0.167s +# user 0m0.174s +# sys 0m0.045s + +sub MAIN() { + for lines() { + printf( "Input: \$S = \"%s\"\n", $_ ); + printf( "Output: \"%s\"\n", $_.words.reverse.join(" ") ); + } +} diff --git a/challenge-096/pkmnx/raku/ch-2.raku b/challenge-096/pkmnx/raku/ch-2.raku new file mode 100755 index 0000000000..9668039a34 --- /dev/null +++ b/challenge-096/pkmnx/raku/ch-2.raku @@ -0,0 +1,28 @@ +#!/usr/bin/env raku + +# +# See as alg directly used from: https://en.wikipedia.org/wiki/Levenshtein_distance +# And see usage: +# +# pk@pkx:~/stuff/raku/perlweeklychallenge-club/challenge-096/pkmnx/raku$ time ./ch-2.raku kitten sitting +# 3 +# real 0m0.339s ... +# pk@pkx:~/stuff/raku/perlweeklychallenge-club/challenge-096/pkmnx/raku$ time ./ch-2.raku sunday monday +# 2 +# real 0m0.359s ... +# + +sub MAIN( Str $S1, Str $S2 ) { + lev( $S1.comb(), $S2.comb() ).say; +} + +sub lev( $a, $b ) { + return $a.elems if $b.elems == 0; + return $b.elems if $a.elems == 0; + return lev( $a.tail($a.elems -1), $b.tail($b.elems -1) ) if $a[0] eq $b[0]; + return 1 + min( + lev( $a.tail($a.elems -1), $b ), + lev( $a, $b.tail($b.elems -1) ), + lev( $a.tail($a.elems -1), $b.tail($b.elems -1) ) + ) +} |
