From 8ce3fe6c38204b377e4389bafb3cbc744c1ad945 Mon Sep 17 00:00:00 2001 From: Adam Russell Date: Sat, 23 Jan 2021 18:58:52 -0500 Subject: initial commit --- challenge-096/adam-russell/blog.txt | 0 challenge-096/adam-russell/blog1.txt | 0 challenge-096/adam-russell/perl/ch-1.pl | 0 challenge-096/adam-russell/perl/ch-2.pl | 0 challenge-096/adam-russell/prolog/ch-1.p | 0 challenge-096/adam-russell/prolog/ch-2.p | 0 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 challenge-096/adam-russell/blog.txt create mode 100644 challenge-096/adam-russell/blog1.txt create mode 100644 challenge-096/adam-russell/perl/ch-1.pl create mode 100644 challenge-096/adam-russell/perl/ch-2.pl create mode 100644 challenge-096/adam-russell/prolog/ch-1.p create mode 100644 challenge-096/adam-russell/prolog/ch-2.p diff --git a/challenge-096/adam-russell/blog.txt b/challenge-096/adam-russell/blog.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/challenge-096/adam-russell/blog1.txt b/challenge-096/adam-russell/blog1.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/challenge-096/adam-russell/perl/ch-1.pl b/challenge-096/adam-russell/perl/ch-1.pl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/challenge-096/adam-russell/perl/ch-2.pl b/challenge-096/adam-russell/perl/ch-2.pl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/challenge-096/adam-russell/prolog/ch-1.p b/challenge-096/adam-russell/prolog/ch-1.p new file mode 100644 index 0000000000..e69de29bb2 diff --git a/challenge-096/adam-russell/prolog/ch-2.p b/challenge-096/adam-russell/prolog/ch-2.p new file mode 100644 index 0000000000..e69de29bb2 -- cgit From b7f871dd00678751b00bfddf71ab2eb05dd81a2c Mon Sep 17 00:00:00 2001 From: Adam Russell Date: Sun, 24 Jan 2021 00:29:29 -0500 Subject: Perl solutions for challenge 096 --- challenge-096/adam-russell/perl/ch-1.pl | 28 ++++++++++++++++++++++++ challenge-096/adam-russell/perl/ch-2.pl | 37 ++++++++++++++++++++++++++++++++ challenge-096/adam-russell/prolog/ch-1.p | 0 challenge-096/adam-russell/prolog/ch-2.p | 0 4 files changed, 65 insertions(+) delete mode 100644 challenge-096/adam-russell/prolog/ch-1.p delete mode 100644 challenge-096/adam-russell/prolog/ch-2.p diff --git a/challenge-096/adam-russell/perl/ch-1.pl b/challenge-096/adam-russell/perl/ch-1.pl index e69de29bb2..a89690ca4f 100644 --- a/challenge-096/adam-russell/perl/ch-1.pl +++ b/challenge-096/adam-russell/perl/ch-1.pl @@ -0,0 +1,28 @@ +use strict; +use warnings; +## +# You are given a string $S. +# Write a script to reverse the +# order of words in the given string. +## +sub reverse_words{ + my($words) = @_; + if(@{$words}){ + my $word = $words->[0]; + my $a = reverse_words([@{$words}[1 .. (@{$words} - 1)]]); + push @{$a}, $word; + return $a; + } + return []; +} + +MAIN:{ + my($S, $reversed); + $S = "The Weekly Challenge"; + $reversed = reverse_words([split(/\s+/, $S)]); + print join(" ", @{$reversed}) . "\n"; + + $S = " Perl and Raku are part of the same family "; + $reversed = reverse_words([split(/\s+/, $S)]); + print join(" ", @{$reversed}) . "\n"; +} \ No newline at end of file diff --git a/challenge-096/adam-russell/perl/ch-2.pl b/challenge-096/adam-russell/perl/ch-2.pl index e69de29bb2..6b8172ea02 100644 --- a/challenge-096/adam-russell/perl/ch-2.pl +++ b/challenge-096/adam-russell/perl/ch-2.pl @@ -0,0 +1,37 @@ +use strict; +use warnings; +## +# You are given two strings $S1 and $S2. +# Write a script to find out the minimum operations +# required to convert $S1 into $S2. The operations +# can be insert, remove or replace a character. +## +sub edit_distance{ + my($s, $t) = @_; + if(length($s) == 0){ + return length($t); + } + if(length($t) == 0){ + return length($s); + } + my($s0, $t0) = (substr($s, 0, 1), substr($t, 0, 1)); + if($s0 eq $t0){ + return edit_distance(substr($s, 1), substr($t, 1)); + } + my @sorted_distances = sort {$a <=> $b} ( + edit_distance($s, substr($t, 1)), + edit_distance(substr($s, 1), $t), + edit_distance(substr($s, 1), substr($t, 1)), + ); + return 1 + $sorted_distances[0]; +} + +MAIN:{ + my $distance; + + $distance = edit_distance("kitten", "sitting"); + print "$distance\n"; + + $distance = edit_distance("sunday", "monday"); + print "$distance\n"; +} \ No newline at end of file diff --git a/challenge-096/adam-russell/prolog/ch-1.p b/challenge-096/adam-russell/prolog/ch-1.p deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/challenge-096/adam-russell/prolog/ch-2.p b/challenge-096/adam-russell/prolog/ch-2.p deleted file mode 100644 index e69de29bb2..0000000000 -- cgit From c9435b673c393718db79398e20a0a084d99c422d Mon Sep 17 00:00:00 2001 From: Adam Russell Date: Sun, 24 Jan 2021 01:29:07 -0500 Subject: solutions for challenge 096 --- challenge-096/adam-russell/blog.txt | 1 + challenge-096/adam-russell/blog1.txt | 0 challenge-096/adam-russell/perl/ch-1.pl | 2 +- challenge-096/adam-russell/perl/ch-2.pl | 3 +++ 4 files changed, 5 insertions(+), 1 deletion(-) delete mode 100644 challenge-096/adam-russell/blog1.txt diff --git a/challenge-096/adam-russell/blog.txt b/challenge-096/adam-russell/blog.txt index e69de29bb2..a2d5c8a65b 100644 --- a/challenge-096/adam-russell/blog.txt +++ b/challenge-096/adam-russell/blog.txt @@ -0,0 +1 @@ +http://www.rabbitfarm.com/cgi-bin/blosxom/perl/2021/01/24 diff --git a/challenge-096/adam-russell/blog1.txt b/challenge-096/adam-russell/blog1.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/challenge-096/adam-russell/perl/ch-1.pl b/challenge-096/adam-russell/perl/ch-1.pl index a89690ca4f..e1d4c4bdf0 100644 --- a/challenge-096/adam-russell/perl/ch-1.pl +++ b/challenge-096/adam-russell/perl/ch-1.pl @@ -10,7 +10,7 @@ sub reverse_words{ if(@{$words}){ my $word = $words->[0]; my $a = reverse_words([@{$words}[1 .. (@{$words} - 1)]]); - push @{$a}, $word; + $a->[@{$a}] = $word; return $a; } return []; diff --git a/challenge-096/adam-russell/perl/ch-2.pl b/challenge-096/adam-russell/perl/ch-2.pl index 6b8172ea02..9cd50fe006 100644 --- a/challenge-096/adam-russell/perl/ch-2.pl +++ b/challenge-096/adam-russell/perl/ch-2.pl @@ -6,6 +6,9 @@ use warnings; # required to convert $S1 into $S2. The operations # can be insert, remove or replace a character. ## +use Memoize; +memoize("edit_distance"); + sub edit_distance{ my($s, $t) = @_; if(length($s) == 0){ -- cgit