diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2019-06-26 17:17:27 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-06-26 17:17:27 +0100 |
| commit | f8eb67dfb5db0f2a45924bab9774df6197e2f98c (patch) | |
| tree | 4be14cb709484fe4a3e1ab93c4554495b961c763 | |
| parent | 7c04dd47b6278d9e14fc1b4aef7649308cf914bd (diff) | |
| parent | 365a21e5a71bd4db362173a597b0d970e6907ef8 (diff) | |
| download | perlweeklychallenge-club-f8eb67dfb5db0f2a45924bab9774df6197e2f98c.tar.gz perlweeklychallenge-club-f8eb67dfb5db0f2a45924bab9774df6197e2f98c.tar.bz2 perlweeklychallenge-club-f8eb67dfb5db0f2a45924bab9774df6197e2f98c.zip | |
Merge pull request #306 from seaker/mybranch
challeng 014
| -rwxr-xr-x | challenge-012/feng-chang/perl5/ch-3.pl | 24 | ||||
| -rwxr-xr-x | challenge-013/feng-chang/perl5/ch-1.pl | 24 | ||||
| -rwxr-xr-x | challenge-013/feng-chang/perl5/ch-2.pl | 33 | ||||
| -rwxr-xr-x | challenge-014/feng-chang/perl5/ch-1.pl | 22 | ||||
| -rwxr-xr-x | challenge-014/feng-chang/perl5/ch-2.pl | 40 | ||||
| -rwxr-xr-x | challenge-014/feng-chang/perl6/ch-1.p6 | 18 | ||||
| -rwxr-xr-x | challenge-014/feng-chang/perl6/ch-2.p6 | 17 |
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; |
