aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-05-17 17:41:14 +0100
committerGitHub <noreply@github.com>2020-05-17 17:41:14 +0100
commit6414473cd4d25895bd93715ddcb67f603378761b (patch)
tree035d37e93e00fe71767cd8bb75990b52c8a80670
parentbabf9a6d473f8e5ce85f6d078073ebcb880492f1 (diff)
parent09c8f7cacc2a2e65608551be49508f635839f330 (diff)
downloadperlweeklychallenge-club-6414473cd4d25895bd93715ddcb67f603378761b.tar.gz
perlweeklychallenge-club-6414473cd4d25895bd93715ddcb67f603378761b.tar.bz2
perlweeklychallenge-club-6414473cd4d25895bd93715ddcb67f603378761b.zip
Merge pull request #1725 from plis-acm/plis-branch
plis-acm finish challenge 060 task #1 and #2
-rw-r--r--challenge-060/plis-acm/.gitignore1
-rw-r--r--challenge-060/plis-acm/README1
-rw-r--r--challenge-060/plis-acm/perl/ch-1.pl24
-rw-r--r--challenge-060/plis-acm/perl/ch-2.pl72
4 files changed, 98 insertions, 0 deletions
diff --git a/challenge-060/plis-acm/.gitignore b/challenge-060/plis-acm/.gitignore
new file mode 100644
index 0000000000..b25c15b81f
--- /dev/null
+++ b/challenge-060/plis-acm/.gitignore
@@ -0,0 +1 @@
+*~
diff --git a/challenge-060/plis-acm/README b/challenge-060/plis-acm/README
new file mode 100644
index 0000000000..6ebeaf2efb
--- /dev/null
+++ b/challenge-060/plis-acm/README
@@ -0,0 +1 @@
+Solution by plis-acm.
diff --git a/challenge-060/plis-acm/perl/ch-1.pl b/challenge-060/plis-acm/perl/ch-1.pl
new file mode 100644
index 0000000000..fd7ae5a34a
--- /dev/null
+++ b/challenge-060/plis-acm/perl/ch-1.pl
@@ -0,0 +1,24 @@
+#!/usr/bin/env perl
+
+use 5.018;
+use utf8;
+use warnings;
+use diagnostics;
+
+print "Input Number: ";
+chomp(my $input = <STDIN>);
+if ($input eq "") {
+ print "empty input";
+} else {
+ my $res;
+ if ($input =~ /\d+/) {
+ $res = "A" x ($input / 26);
+ $res .= chr($input % 26 - 1 + ord('A'));
+ } else {
+ for (split '', $input) {
+ if ($_ eq 'A') { $res += 26; }
+ else { $res += (ord($_) - ord('A') + 1); }
+ }
+ }
+ print "Output: $res\n";
+}
diff --git a/challenge-060/plis-acm/perl/ch-2.pl b/challenge-060/plis-acm/perl/ch-2.pl
new file mode 100644
index 0000000000..c867171582
--- /dev/null
+++ b/challenge-060/plis-acm/perl/ch-2.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/env perl
+
+use 5.018;
+use warnings;
+use diagnostics;
+use utf8;
+
+print "Input a number list: ";
+chomp(my $line = <STDIN>);
+my @nums = split ' ', $line;
+
+print "Input X: ";
+chomp(my $x = <STDIN>);
+
+print "Input Y: ";
+chomp(my $y = <STDIN>);
+
+my @result;
+
+sub gen {
+ my ($X, $Y, @L) = @_;
+ my @L1;
+ for (@L) {
+ if ((length $_) < $X) { push @L1, $_; }
+ }
+ @L1 = sort @L1;
+ my @L2 = @L1;
+ for (0..$#L1) {
+ &rec("", $X, $Y, @L2);
+ my @L3 = @L2[1..$#L2];
+ push(@L3, shift @L2);
+ @L2 = @L3;
+ }
+
+ @result = sort @result;
+}
+
+sub rec {
+ my ($cur, $X, $Y, @L) = @_;
+
+ if (length($cur) != 0) { $cur += 0; }
+
+ if (length($cur) == $X) {
+ if ($cur < $Y) { return $cur; }
+ else { return undef; }
+ } elsif (length($cur) > $X) { return undef; }
+ else {
+ while (my ($i, $v) = each @L) {
+ for (0..$X) {
+ my $cur1 = $cur x $_;
+ my $res1 = &rec($cur1 . $v, $X, $Y, @L[$i+1..$#L]);
+ my $res2 = &rec($cur1, $X, $Y, @L[$i+1..$#L]);
+
+ if ($res1 && !&contains($res1, @result)) {
+ push @result, $res1;
+ }
+ if ($res2 && !&contains($res2, @result)) {
+ push @result, $res2;
+ }
+ }
+ }
+ }
+}
+
+sub contains {
+ my ($x, @L) = @_;
+ for (@L) { if ($_ == $x ) {return 1;} }
+ undef;
+}
+
+&gen($x, $y, @nums);
+print "@result\n";