aboutsummaryrefslogtreecommitdiff
path: root/challenge-065
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-06-22 08:25:37 +0100
committerGitHub <noreply@github.com>2020-06-22 08:25:37 +0100
commitc7dd9e53455fd3c0443c2d6c454d6254fe2a20a2 (patch)
tree8bd1e400166ddc0efa418d196b7d747ef31321b7 /challenge-065
parent22daa6e1e4a61f980458143e2984bdbdeb596e56 (diff)
parentdb0d5aaafba89acf026bcb997256f4fbfb7ea60b (diff)
downloadperlweeklychallenge-club-c7dd9e53455fd3c0443c2d6c454d6254fe2a20a2.tar.gz
perlweeklychallenge-club-c7dd9e53455fd3c0443c2d6c454d6254fe2a20a2.tar.bz2
perlweeklychallenge-club-c7dd9e53455fd3c0443c2d6c454d6254fe2a20a2.zip
Merge pull request #1851 from jaldhar/challenge-065
Challenge 65 by Jaldhar H. Vyas
Diffstat (limited to 'challenge-065')
-rw-r--r--challenge-065/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-065/jaldhar-h-vyas/perl/ch-1.pl47
-rwxr-xr-xchallenge-065/jaldhar-h-vyas/perl/ch-2.pl52
-rwxr-xr-xchallenge-065/jaldhar-h-vyas/raku/ch-1.p612
-rwxr-xr-xchallenge-065/jaldhar-h-vyas/raku/ch-2.p634
5 files changed, 146 insertions, 0 deletions
diff --git a/challenge-065/jaldhar-h-vyas/blog.txt b/challenge-065/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..3efb754e28
--- /dev/null
+++ b/challenge-065/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2020/06/perl_weekly_challenge_week_65.html
diff --git a/challenge-065/jaldhar-h-vyas/perl/ch-1.pl b/challenge-065/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..998365c19b
--- /dev/null
+++ b/challenge-065/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,47 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use 5.010;
+use English qw/ -no_match_vars /;
+
+sub usage() {
+ print<<"-USAGE-";
+Usage:
+ $PROGRAM_NAME <N> <S>
+
+ <N> number of digits in match
+ <S> sum of digits in match
+-USAGE-
+
+ exit(1);
+}
+
+sub X {
+ my @a = @{ $_[0] };
+ my @b = @{ $_[1] };
+
+ return map {
+ my $first = $_;
+ map {
+ [ ref $first eq 'ARRAY' ? @{$first} : $first, $_ ];
+ } @b;
+ } @a;
+}
+
+if (scalar @ARGV < 2) {
+ usage();
+}
+
+my ($N, $S) = @ARGV;
+
+my @digits = 1 .. 9;
+
+for (1 .. $N - 1) {
+ @digits = X(\@digits, [0 .. 9]);
+}
+
+@digits = map { join q{}, @{$_}; }
+ grep { my $accum; map {$accum += $_; } @{$_}; $accum == $S; }
+ @digits;
+
+say join q{, }, @digits; \ No newline at end of file
diff --git a/challenge-065/jaldhar-h-vyas/perl/ch-2.pl b/challenge-065/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..cc23e7c09c
--- /dev/null
+++ b/challenge-065/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,52 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use 5.010;
+use English qw/ -no_match_vars /;
+
+sub usage() {
+ print<<"-USAGE-";
+Usage:
+ $PROGRAM_NAME <S>
+
+ <S> string to search for palindromes
+-USAGE-
+
+ exit(1);
+}
+
+sub is_palindrome {
+ my ($s) = @_;
+
+ return $s eq reverse $s;
+}
+
+sub get_palindromes {
+ my ($s) = @_;
+ my @palindromes;
+
+ for my $l (2 .. length $s ) {
+ my $possible = substr $s, 0, $l;
+ if (is_palindrome($possible)) {
+ push @palindromes, $possible;
+ push @palindromes, get_palindromes(substr $s, $l);
+ }
+ }
+
+ return @palindromes;
+}
+
+if (scalar @ARGV < 1) {
+ usage();
+}
+
+my $S = $ARGV[0];
+my %results;
+
+for my $n (0 .. (length $S) - 1) {
+ for my $palindrome (get_palindromes(substr $S, $n)) {
+ $results{$palindrome}++;
+ }
+}
+
+say scalar keys %results ? join q{, }, keys %results : '-1';
diff --git a/challenge-065/jaldhar-h-vyas/raku/ch-1.p6 b/challenge-065/jaldhar-h-vyas/raku/ch-1.p6
new file mode 100755
index 0000000000..a9130e02f0
--- /dev/null
+++ b/challenge-065/jaldhar-h-vyas/raku/ch-1.p6
@@ -0,0 +1,12 @@
+#!/usr/bin/perl6
+
+multi sub MAIN(
+ Int $N, #= number of digits in match
+ Int $S #= sum of digits in match
+) {
+ ([X~] ([0 .. 9] xx $N))
+ .grep({ !/^0/ })
+ .grep({ ([+] $_.comb) == $S })
+ .join(q{, })
+ .say;
+} \ No newline at end of file
diff --git a/challenge-065/jaldhar-h-vyas/raku/ch-2.p6 b/challenge-065/jaldhar-h-vyas/raku/ch-2.p6
new file mode 100755
index 0000000000..9ddb4f2ab0
--- /dev/null
+++ b/challenge-065/jaldhar-h-vyas/raku/ch-2.p6
@@ -0,0 +1,34 @@
+#!/usr/bin/perl6
+
+sub is_palindrome(Str $s) {
+ return $s eq $s.flip;
+}
+
+
+sub get_palindromes(Str $s) {
+ my @palindromes;
+
+ for 2 .. $s.chars -> $l {
+ my $possible = $s.substr(0, $l);
+ if $possible.chars && is_palindrome($possible) {
+ @palindromes.push($possible);
+ @palindromes.push(get_palindromes($s.substr($l)));
+ }
+ }
+ return @palindromes;
+}
+
+multi sub MAIN(
+ Str $S #= string to search for palindromes
+) {
+ my %results;
+
+ for 0 ..^ $S.chars -> $n {
+ for get_palindromes($S.substr($n)) -> $palindrome {
+ if ($palindrome.trim ne q{}) {
+ %results{$palindrome.trim}++;
+ }
+ }
+ }
+ say %results.keys.elems ?? %results.keys.join(q{, }) !! '-1';
+}