aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-02-16 19:13:54 +0000
committerGitHub <noreply@github.com>2021-02-16 19:13:54 +0000
commit11484ca2b26fd79019f37e2a9f53cd0eff2a9f0f (patch)
treec6e0fcbed9cb1fcc46b0019f4c6732e0d2f66ee6
parent21e60474fc0c9a38f930a493a0d9ce0c17fd288f (diff)
parentf20e360a06c231aaf9a9730dc720c232c274f9ed (diff)
downloadperlweeklychallenge-club-11484ca2b26fd79019f37e2a9f53cd0eff2a9f0f.tar.gz
perlweeklychallenge-club-11484ca2b26fd79019f37e2a9f53cd0eff2a9f0f.tar.bz2
perlweeklychallenge-club-11484ca2b26fd79019f37e2a9f53cd0eff2a9f0f.zip
Merge pull request #3546 from jaldhar/challenge-096
Challenge 96 by Jaldhar H. Vyas
-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