aboutsummaryrefslogtreecommitdiff
path: root/challenge-096
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2021-02-15 13:35:49 -0500
committerJaldhar H. Vyas <jaldhar@braincells.com>2021-02-15 13:35:49 -0500
commitf20e360a06c231aaf9a9730dc720c232c274f9ed (patch)
treed4567a0098570c6ca1f43e100e1c6e0bc06e4e0f /challenge-096
parent558defb28cef986e1c4dadce543ac0a8c8b037e4 (diff)
downloadperlweeklychallenge-club-f20e360a06c231aaf9a9730dc720c232c274f9ed.tar.gz
perlweeklychallenge-club-f20e360a06c231aaf9a9730dc720c232c274f9ed.tar.bz2
perlweeklychallenge-club-f20e360a06c231aaf9a9730dc720c232c274f9ed.zip
Challenge 96 by Jaldhar H. Vyas
Diffstat (limited to 'challenge-096')
-rw-r--r--challenge-096/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-096/jaldhar-h-vyas/perl/ch-1.sh1
-rwxr-xr-xchallenge-096/jaldhar-h-vyas/perl/ch-2.pl52
-rwxr-xr-xchallenge-096/jaldhar-h-vyas/raku/ch-1.sh1
-rwxr-xr-xchallenge-096/jaldhar-h-vyas/raku/ch-2.raku34
5 files changed, 89 insertions, 0 deletions
diff --git a/challenge-096/jaldhar-h-vyas/blog.txt b/challenge-096/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..c87e41fff8
--- /dev/null
+++ b/challenge-096/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2021/02/perl_weekly_challenge_week_96.html
diff --git a/challenge-096/jaldhar-h-vyas/perl/ch-1.sh b/challenge-096/jaldhar-h-vyas/perl/ch-1.sh
new file mode 100755
index 0000000000..5beec9b643
--- /dev/null
+++ b/challenge-096/jaldhar-h-vyas/perl/ch-1.sh
@@ -0,0 +1 @@
+perl -E 'say join q{ }, (reverse @ARGV);' $@ \ No newline at end of file
diff --git a/challenge-096/jaldhar-h-vyas/perl/ch-2.pl b/challenge-096/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..3114d70648
--- /dev/null
+++ b/challenge-096/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,52 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+use English qw/ -no_match_vara /;
+
+sub usage {
+ print<<"-USAGE-";
+Usage:
+ $PROGRAM_NAME <from> <to>
+
+ <from> string to convert from
+ <to> string to convert to
+-USAGE-
+ exit 0;
+}
+
+sub min {
+ return (sort { $a <=> $b } @_)[0];
+}
+
+sub levenshtein {
+ my ($from, $to) = @_;
+ my $fromLength = length $from;
+ my $toLength = length $to;
+
+ if ($toLength == 0) {
+ return $fromLength;
+ }
+
+ if ($fromLength == 0) {
+ return $toLength;
+ }
+
+ my $fromTail = substr($from, 1, $fromLength - 1);
+ my $toTail = substr($to, 1, $toLength - 1);
+
+ if (substr($from, 0, 1) eq substr($to, 0, 1)) {
+ return levenshtein($fromTail, $toTail);
+ }
+
+ return 1 + min(
+ levenshtein($from, $toTail), # Insert
+ levenshtein($fromTail, $to), # Remove
+ levenshtein($fromTail, $toTail) # Replace
+ );
+}
+
+if (scalar @ARGV < 2) {
+ usage();
+}
+
+say levenshtein($ARGV[0], $ARGV[1]);
diff --git a/challenge-096/jaldhar-h-vyas/raku/ch-1.sh b/challenge-096/jaldhar-h-vyas/raku/ch-1.sh
new file mode 100755
index 0000000000..9c33ad4bd2
--- /dev/null
+++ b/challenge-096/jaldhar-h-vyas/raku/ch-1.sh
@@ -0,0 +1 @@
+raku -e '@*ARGS.reverse.join(q{ }).say;' $@ \ No newline at end of file
diff --git a/challenge-096/jaldhar-h-vyas/raku/ch-2.raku b/challenge-096/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..33b152b7c6
--- /dev/null
+++ b/challenge-096/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,34 @@
+#!/usr/bin/raku
+
+sub levenshtein(Str $from, Str $to) {
+ my $fromLength = $from.chars;
+ my $toLength = $to.chars;
+
+ if $toLength == 0 {
+ return $fromLength;
+ }
+
+ if $fromLength == 0 {
+ return $toLength;
+ }
+
+ my $fromTail = $from.substr(1, $fromLength - 1);
+ my $toTail = $to.substr(1, $toLength - 1);
+
+ if $from.substr(0, 1) eq $to.substr(0, 1) {
+ return levenshtein($fromTail, $toTail);
+ }
+
+ return 1 + (
+ levenshtein($from, $toTail), # Insert
+ levenshtein($fromTail, $to), # Remove
+ levenshtein($fromTail, $toTail) # Replace
+ ).min;
+}
+
+sub MAIN(
+ Str $S1, #= string to convert from
+ Str $S2, #= string to convert to
+) {
+ say levenshtein($S1, $S2);
+} \ No newline at end of file