aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2019-06-26 17:17:27 +0100
committerGitHub <noreply@github.com>2019-06-26 17:17:27 +0100
commitf8eb67dfb5db0f2a45924bab9774df6197e2f98c (patch)
tree4be14cb709484fe4a3e1ab93c4554495b961c763
parent7c04dd47b6278d9e14fc1b4aef7649308cf914bd (diff)
parent365a21e5a71bd4db362173a597b0d970e6907ef8 (diff)
downloadperlweeklychallenge-club-f8eb67dfb5db0f2a45924bab9774df6197e2f98c.tar.gz
perlweeklychallenge-club-f8eb67dfb5db0f2a45924bab9774df6197e2f98c.tar.bz2
perlweeklychallenge-club-f8eb67dfb5db0f2a45924bab9774df6197e2f98c.zip
Merge pull request #306 from seaker/mybranch
challeng 014
-rwxr-xr-xchallenge-012/feng-chang/perl5/ch-3.pl24
-rwxr-xr-xchallenge-013/feng-chang/perl5/ch-1.pl24
-rwxr-xr-xchallenge-013/feng-chang/perl5/ch-2.pl33
-rwxr-xr-xchallenge-014/feng-chang/perl5/ch-1.pl22
-rwxr-xr-xchallenge-014/feng-chang/perl5/ch-2.pl40
-rwxr-xr-xchallenge-014/feng-chang/perl6/ch-1.p618
-rwxr-xr-xchallenge-014/feng-chang/perl6/ch-2.p617
7 files changed, 178 insertions, 0 deletions
diff --git a/challenge-012/feng-chang/perl5/ch-3.pl b/challenge-012/feng-chang/perl5/ch-3.pl
new file mode 100755
index 0000000000..ce69036c6b
--- /dev/null
+++ b/challenge-012/feng-chang/perl5/ch-3.pl
@@ -0,0 +1,24 @@
+#!/bin/env perl
+
+use Modern::Perl;
+use WWW::Mechanize;
+use XML::LibXML;
+
+exit unless @ARGV;
+
+my $m = WWW::Mechanize->new() or die "cannot initialize robot\n";
+
+my $base_url = 'http://www.stands4.com/services/v2/syno.php?uid=7082&tokenid=Bnm2q0xAKY2up6qQ';
+my $url = $base_url . "&word=$ARGV[0]&format=xml";
+
+$m->get($url);
+
+my $dom = XML::LibXML->load_xml(string => $m->content);
+foreach my $r ($dom->findnodes('//result')) {
+ say 'term: ', $r->findvalue('./term');
+ say ' definition: ', $r->findvalue('./definition');
+ say ' example: ', $r->findvalue('./example');
+ say ' partofspeech: ', $r->findvalue('./partofspeech');
+ say ' synonyms: ', $r->findvalue('./synonyms');
+ say ' antonyms: ', $r->findvalue('./antonyms');
+}
diff --git a/challenge-013/feng-chang/perl5/ch-1.pl b/challenge-013/feng-chang/perl5/ch-1.pl
new file mode 100755
index 0000000000..1f2c604bc2
--- /dev/null
+++ b/challenge-013/feng-chang/perl5/ch-1.pl
@@ -0,0 +1,24 @@
+#!/bin/env perl
+
+use Modern::Perl;
+use Date::Manip;
+
+sub is_leap_year {
+ my $year = shift;
+
+ return 1 if $year % 400 == 0;
+ return 0 if $year % 100 == 0;
+ return 1 if $year % 4 == 0;
+ return 0;
+}
+
+exit if @ARGV < 1;
+my $year = $ARGV[0];
+
+my @last_days = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
+$last_days[1] = 29 if is_leap_year($year);
+
+for my $month (1..12) {
+ my $d = ParseDate("$year-$month-". $last_days[$month - 1]);
+ say UnixDate(DateCalc($d, sprintf('- %d days', (UnixDate($d, '%w') - 5) % 7)), '%Y/%m/%d');
+}
diff --git a/challenge-013/feng-chang/perl5/ch-2.pl b/challenge-013/feng-chang/perl5/ch-2.pl
new file mode 100755
index 0000000000..27b72c67ce
--- /dev/null
+++ b/challenge-013/feng-chang/perl5/ch-2.pl
@@ -0,0 +1,33 @@
+#!/bin/env perl
+
+use Modern::Perl;
+
+my @F = (1);
+my @M = (0);
+
+sub F {
+ my $n = int(shift);
+ exit if $n < 0;
+
+ return $F[$n] if defined $F[$n];
+
+ $F[$n] = $n - M(F($n - 1));
+}
+
+sub M {
+ my $n = int(shift);
+ exit if $n < 0;
+
+ return $M[$n] if defined $M[$n];
+
+ $M[$n] = $n - F(M($n - 1));
+}
+
+exit unless defined $ARGV[0];
+my $n = $ARGV[0];
+
+print(F($_), ' ') for 0 .. $n - 1;
+say '';
+
+print(M($_), ' ') for 0 .. $n - 1;
+say '';
diff --git a/challenge-014/feng-chang/perl5/ch-1.pl b/challenge-014/feng-chang/perl5/ch-1.pl
new file mode 100755
index 0000000000..91815b7ad5
--- /dev/null
+++ b/challenge-014/feng-chang/perl5/ch-1.pl
@@ -0,0 +1,22 @@
+#!/bin/env perl
+
+use Modern::Perl;
+
+my @eck = (0, 0);
+
+exit unless defined $ARGV[0];
+my $n = int($ARGV[0]);
+exit if $n < 2;
+
+for my $i (2 .. $n) {
+ $eck[$i] = 0;
+
+ for (my $j = $i - 2; $j >= 0; --$j) {
+ if ($eck[$j] == $eck[$i - 1]) {
+ $eck[$i] = $i - $j - 1;
+ last;
+ }
+ }
+}
+
+say join(' ', @eck);
diff --git a/challenge-014/feng-chang/perl5/ch-2.pl b/challenge-014/feng-chang/perl5/ch-2.pl
new file mode 100755
index 0000000000..74159cb8e0
--- /dev/null
+++ b/challenge-014/feng-chang/perl5/ch-2.pl
@@ -0,0 +1,40 @@
+#!/bin/env perl
+
+use Modern::Perl;
+
+my @aUSPS = qw(
+ al ak az ar ca co ct de fl ga
+ hi id il in ia ks ky la me md
+ ma mi mn ms mo mt ne nv nh nj
+ nm ny nc nd oh ok or pa ri sc
+ sd tn tx ut vt va wa wv wi wy
+);
+
+my %hUSPS;
+map { $hUSPS{ $_ } = 1 } @aUSPS;
+
+my @words;
+my $max_len = 0;
+
+open my $fh, '<', '/usr/share/dict/words' or die "cannot read /usr/share/dict/words\n";
+
+myloop:
+while (my $w = <$fh>) {
+ chomp $w;
+ $w = lc($w);
+
+ for my $p ($w =~ m/..?/g) {
+ next myloop unless $hUSPS{ $p };
+ }
+
+ push @words, $w;
+ my $len = length $w;
+ $max_len = $len if $len > $max_len;
+}
+close $fh;
+
+say "max word length is $max_len";
+
+for my $w (@words) {
+ say $w if length($w) == $max_len;
+}
diff --git a/challenge-014/feng-chang/perl6/ch-1.p6 b/challenge-014/feng-chang/perl6/ch-1.p6
new file mode 100755
index 0000000000..7fe81fe8ea
--- /dev/null
+++ b/challenge-014/feng-chang/perl6/ch-1.p6
@@ -0,0 +1,18 @@
+#!/bin/env perl6
+
+sub MAIN(UInt $n) {
+ my @eck = 0, 0;
+
+ for 2..$n -> Int $i {
+ @eck[$i] = 0;
+
+ for $i - 2 ... 0 -> Int $j {
+ if @eck[$j] == @eck[$i - 1] {
+ @eck[$i] = $i - $j - 1;
+ last;
+ }
+ }
+ }
+
+ say @eck;
+}
diff --git a/challenge-014/feng-chang/perl6/ch-2.p6 b/challenge-014/feng-chang/perl6/ch-2.p6
new file mode 100755
index 0000000000..5c11db745a
--- /dev/null
+++ b/challenge-014/feng-chang/perl6/ch-2.p6
@@ -0,0 +1,17 @@
+#!/bin/env perl6
+
+my @usps = <
+ al ak az ar ca co ct de fl ga
+ hi id il in ia ks ky la me md
+ ma mi mn ms mo mt ne nv nh nj
+ nm ny nc nd oh ok or pa ri sc
+ sd tn tx ut vt va wa wv wi wy
+>;
+
+my @words = '/usr/share/dict/words'.IO.lines».lc.grep({ all($_.comb(2)) ∈ @usps }).unique;
+
+my Int $max-length = @words».chars.max;
+say "max word length is $max-length";
+
+my @longest-words = @words.grep: { $_.chars == $max-length };
+say @longest-words;