aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlakpatashi <lakpatashi@gmail.com>2021-04-17 13:42:58 +0530
committerlakpatashi <lakpatashi@gmail.com>2021-04-17 13:42:58 +0530
commit24176c775e09d300cdedc76b0d0dd37e07add0c8 (patch)
tree384a8138ed6286b8a9aca039d88287669b29d388
parent6dd3064d49b5ea66646c0d6c8419203f7ea1b869 (diff)
downloadperlweeklychallenge-club-24176c775e09d300cdedc76b0d0dd37e07add0c8.tar.gz
perlweeklychallenge-club-24176c775e09d300cdedc76b0d0dd37e07add0c8.tar.bz2
perlweeklychallenge-club-24176c775e09d300cdedc76b0d0dd37e07add0c8.zip
Finished challenge-005 with perl
-rw-r--r--challenge-005/lakptashi/README1
-rwxr-xr-xchallenge-005/lakptashi/perl/ch-1.pl30
-rwxr-xr-xchallenge-005/lakptashi/perl/ch-2.pl28
3 files changed, 59 insertions, 0 deletions
diff --git a/challenge-005/lakptashi/README b/challenge-005/lakptashi/README
new file mode 100644
index 0000000000..bc153bd576
--- /dev/null
+++ b/challenge-005/lakptashi/README
@@ -0,0 +1 @@
+Solution by lakpatashi
diff --git a/challenge-005/lakptashi/perl/ch-1.pl b/challenge-005/lakptashi/perl/ch-1.pl
new file mode 100755
index 0000000000..caaf6003fe
--- /dev/null
+++ b/challenge-005/lakptashi/perl/ch-1.pl
@@ -0,0 +1,30 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+# PART 1
+my $word = "abcde";
+print "Given word: $word\n";
+my @arr = split '', $word;
+my $count=0;
+for ( permutate(@arr) ){
+ print join '',(@$_),"\n";
+ $count++;
+}
+print "Total no. of words: $count\n";
+
+sub permutate {
+ return [@_] if @_ <= 1;
+ map {
+ my ($f, @r) = list_with_x_first($_, @_);
+ map [$f, @$_], permutate(@r);
+ } 0..$#_;
+}
+
+sub list_with_x_first {
+ return if @_ == 1;
+ my $i = shift;
+ ($_[$i], @_[0..$i-1], @_[$i+1..$#_]);
+}
+
diff --git a/challenge-005/lakptashi/perl/ch-2.pl b/challenge-005/lakptashi/perl/ch-2.pl
new file mode 100755
index 0000000000..1c6591f1a1
--- /dev/null
+++ b/challenge-005/lakptashi/perl/ch-2.pl
@@ -0,0 +1,28 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+# PART 2
+use Data::Dumper;
+my %anaCount;
+my @wordList = ('abc','aabb','aedccc','aabbcc');
+
+my @max = (0,'');
+for my $word (@wordList){
+ my %dict;
+ ++$dict{$_} for split('', $word);
+ #print Dumper(\%dict);
+ my $deno = 1;
+ $deno *= factorial($_) for values %dict;
+ my $result = int factorial(length($word)) / $deno;
+ @max = ($result,$word) if $result> $max[0];
+}
+print "word with max anagrams:\n";
+print "@max\n";
+sub factorial {
+ my ($n) = @_;
+ $n *= $_ for 2 .. $n - 1;
+ return $n
+}
+