diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-06-22 08:25:37 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-22 08:25:37 +0100 |
| commit | c7dd9e53455fd3c0443c2d6c454d6254fe2a20a2 (patch) | |
| tree | 8bd1e400166ddc0efa418d196b7d747ef31321b7 /challenge-065 | |
| parent | 22daa6e1e4a61f980458143e2984bdbdeb596e56 (diff) | |
| parent | db0d5aaafba89acf026bcb997256f4fbfb7ea60b (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-065/jaldhar-h-vyas/perl/ch-1.pl | 47 | ||||
| -rwxr-xr-x | challenge-065/jaldhar-h-vyas/perl/ch-2.pl | 52 | ||||
| -rwxr-xr-x | challenge-065/jaldhar-h-vyas/raku/ch-1.p6 | 12 | ||||
| -rwxr-xr-x | challenge-065/jaldhar-h-vyas/raku/ch-2.p6 | 34 |
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'; +} |
