aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordeadmarshal <adeadmarshal@gmail.com>2023-06-06 08:48:19 +0330
committerdeadmarshal <adeadmarshal@gmail.com>2023-06-06 08:48:19 +0330
commitcc909bd14aeda7f762256e7c8d35cccde7cdbc6c (patch)
tree2d4a5407d9a0f4ff4b7ba995a446d682ebcefab3
parent401be1861472af6d62bbdeb0fe65f6ced1ca8f31 (diff)
downloadperlweeklychallenge-club-cc909bd14aeda7f762256e7c8d35cccde7cdbc6c.tar.gz
perlweeklychallenge-club-cc909bd14aeda7f762256e7c8d35cccde7cdbc6c.tar.bz2
perlweeklychallenge-club-cc909bd14aeda7f762256e7c8d35cccde7cdbc6c.zip
TWC220
-rw-r--r--challenge-220/deadmarshal/perl/ch-1.pl14
-rw-r--r--challenge-220/deadmarshal/perl/ch-2.pl34
2 files changed, 48 insertions, 0 deletions
diff --git a/challenge-220/deadmarshal/perl/ch-1.pl b/challenge-220/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..505ecbcb8f
--- /dev/null
+++ b/challenge-220/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,14 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use List::MoreUtils qw(uniq);
+
+sub common_characters{
+ my %count;
+ map{$count{$_}++ foreach uniq split '',CORE::fc} @{$_[0]};
+ sort grep{$count{$_} == @{$_[0]}} keys %count;
+}
+
+printf "%s\n", join ' ', common_characters(["Perl","Rust","Raku"]);
+printf "%s\n", join ' ', common_characters(["love","live","leave"]);
+
diff --git a/challenge-220/deadmarshal/perl/ch-2.pl b/challenge-220/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..3de51a3fcf
--- /dev/null
+++ b/challenge-220/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,34 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Algorithm::Combinatorics qw(permutations);
+use List::MoreUtils qw(slide all);
+use Data::Show;
+
+sub is_perfect_square{
+ do{
+ my $sqrt = sqrt($_[0]);
+ return ($sqrt * $sqrt) == $_[0];
+ }if($_[0] >= 0);
+ 0
+}
+
+sub squareful{
+ my %hash;
+ map{$hash{$_}++} @{$_[0]};
+ return @{$_[0]} if keys %hash == 1;
+ my @ret;
+ my $iter = permutations($_[0]);
+ while(my $p = $iter->next)
+ {
+ if(all{$_ == 1} slide{is_perfect_square($a+$b)} @$p)
+ {
+ push @ret,$p;
+ }
+ }
+ @ret;
+}
+
+print show squareful([1,17,8]);
+print show squareful([2,2,2]);
+