aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchallenge-096/pkmnx/raku/ch-1.raku23
-rwxr-xr-xchallenge-096/pkmnx/raku/ch-2.raku28
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) )
+ )
+}