diff options
| author | drclaw1394 <drclaw@mac.com> | 2019-04-17 17:06:18 +1000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-04-17 17:06:18 +1000 |
| commit | e80612d6f29f76ce4ce13eef35eb6a74389b4c86 (patch) | |
| tree | 8a434f7b739b473be7204d0f4556396b75935161 /challenge-004 | |
| parent | 107bdf42f90c5c0d55f7c92cc0959ac54a151244 (diff) | |
| parent | cffdcd1d446a5865cdb0de52aa09afeab86b02aa (diff) | |
| download | perlweeklychallenge-club-e80612d6f29f76ce4ce13eef35eb6a74389b4c86.tar.gz perlweeklychallenge-club-e80612d6f29f76ce4ce13eef35eb6a74389b4c86.tar.bz2 perlweeklychallenge-club-e80612d6f29f76ce4ce13eef35eb6a74389b4c86.zip | |
Merge pull request #3 from manwar/master
Merging for week 4 questions
Diffstat (limited to 'challenge-004')
101 files changed, 4554 insertions, 0 deletions
diff --git a/challenge-004/abigail/README b/challenge-004/abigail/README new file mode 100644 index 0000000000..5f0d73ae16 --- /dev/null +++ b/challenge-004/abigail/README @@ -0,0 +1 @@ +Solution by Abigail diff --git a/challenge-004/abigail/perl5/ch-1.pl b/challenge-004/abigail/perl5/ch-1.pl new file mode 100644 index 0000000000..b6b556b801 --- /dev/null +++ b/challenge-004/abigail/perl5/ch-1.pl @@ -0,0 +1 @@ +say 2 * atan2 (1,0) diff --git a/challenge-004/abigail/perl5/ch-2.pl b/challenge-004/abigail/perl5/ch-2.pl new file mode 100644 index 0000000000..7d252aa886 --- /dev/null +++ b/challenge-004/abigail/perl5/ch-2.pl @@ -0,0 +1,26 @@ +use 5.026; + +use strict; +use warnings; +no warnings 'syntax'; + +# +# Assume the list of letters are the arguments. Read the list +# of words from STDIN +# +my %letters; +$letters {$_} ++ for "@ARGV" =~ /[a-z]/g; + +WORD: while (<STDIN>) { + chomp; + next if /[^a-z]/; + my %l; + $l {$_} ++ for split //; + foreach my $c (keys %l) { + no warnings 'uninitialized'; + next WORD if $letters {$c} < $l {$c}; + } + say; +} + +__END__ diff --git a/challenge-004/adam-russell/README b/challenge-004/adam-russell/README new file mode 100644 index 0000000000..9420c9a781 --- /dev/null +++ b/challenge-004/adam-russell/README @@ -0,0 +1 @@ +Solution by Adam Russell diff --git a/challenge-004/ailbhe-tweedie/README b/challenge-004/ailbhe-tweedie/README new file mode 100644 index 0000000000..36d4034b70 --- /dev/null +++ b/challenge-004/ailbhe-tweedie/README @@ -0,0 +1 @@ +Solution by Ailbhe Tweedie diff --git a/challenge-004/alex-daniel/README b/challenge-004/alex-daniel/README new file mode 100644 index 0000000000..65550789bd --- /dev/null +++ b/challenge-004/alex-daniel/README @@ -0,0 +1 @@ +Solution by Alex Daniel. diff --git a/challenge-004/alexander-karelas/README b/challenge-004/alexander-karelas/README new file mode 100644 index 0000000000..3de9fce8d9 --- /dev/null +++ b/challenge-004/alexander-karelas/README @@ -0,0 +1 @@ +Solution by Alexander Karelas diff --git a/challenge-004/alexey-melezhik/README b/challenge-004/alexey-melezhik/README new file mode 100644 index 0000000000..ca7008f224 --- /dev/null +++ b/challenge-004/alexey-melezhik/README @@ -0,0 +1 @@ +Solution by Alexey Melezhik diff --git a/challenge-004/alicia-bielsa/README b/challenge-004/alicia-bielsa/README new file mode 100644 index 0000000000..c5187874c3 --- /dev/null +++ b/challenge-004/alicia-bielsa/README @@ -0,0 +1 @@ +Solution by Alicia Beilsa. diff --git a/challenge-004/andrezgz/README b/challenge-004/andrezgz/README new file mode 100644 index 0000000000..f4fd0da88e --- /dev/null +++ b/challenge-004/andrezgz/README @@ -0,0 +1 @@ +Solution by Andrezgz diff --git a/challenge-004/antonio-gamiz/README b/challenge-004/antonio-gamiz/README new file mode 100644 index 0000000000..1f5ed5871a --- /dev/null +++ b/challenge-004/antonio-gamiz/README @@ -0,0 +1 @@ +Solution by Antonio Gamiz diff --git a/challenge-004/arne-sommer/README b/challenge-004/arne-sommer/README new file mode 100644 index 0000000000..b5d88e4df4 --- /dev/null +++ b/challenge-004/arne-sommer/README @@ -0,0 +1 @@ +Solution by Arne Sommer. diff --git a/challenge-004/arpad-toth/README b/challenge-004/arpad-toth/README new file mode 100644 index 0000000000..6661dd82c1 --- /dev/null +++ b/challenge-004/arpad-toth/README @@ -0,0 +1 @@ +Solution by Arpad Toth diff --git a/challenge-004/athanasius/README b/challenge-004/athanasius/README new file mode 100644 index 0000000000..cc357fda4a --- /dev/null +++ b/challenge-004/athanasius/README @@ -0,0 +1 @@ +Solution by Athanasius diff --git a/challenge-004/athanasius/perl5/ch-1.pl b/challenge-004/athanasius/perl5/ch-1.pl new file mode 100644 index 0000000000..434e378932 --- /dev/null +++ b/challenge-004/athanasius/perl5/ch-1.pl @@ -0,0 +1,2 @@ +use bignum 'bpi'; +print "\n", bpi(-s __FILE__), "\n"; diff --git a/challenge-004/athanasius/perl5/ch-2.pl b/challenge-004/athanasius/perl5/ch-2.pl new file mode 100644 index 0000000000..8c6339a41b --- /dev/null +++ b/challenge-004/athanasius/perl5/ch-2.pl @@ -0,0 +1,72 @@ +use strict; +use warnings; +use Data::Dump qw( pp ); + +# Usage: perl Challenge_2.pl <filename> <letters> +# +# <letters> may be given in "words" separated by whitespace; the whitespace will +# be ignored + +scalar @ARGV >= 2 + or die "\nUsage: perl $0 <filename> <letters>, stopped"; + +my ($filename, @letters) = @ARGV; + +open my $fh, '<', $filename + or die "Cannot open file '$filename' for reading, stopped"; + +my %words_found; +my %letters; +++$letters{$_} for map { lc } split //, join('', @letters); + +while (my $line = <$fh>) +{ + $line =~ s/\s//g; # Remove all whitespace (incl. trailing newline) + my $word = lc $line; # Convert to lower case to make case insensitive + + if (exists $words_found{$word}) + { + ++$words_found{$word}; + } + else + { + my @word_letters = sort map { lc } split //, $word; + ++$words_found{$word} if is_submultiset(@word_letters); + } +} + +close $fh + or die "Cannot close file '$filename', stopped"; + +# Display results + +if (scalar keys %words_found == 0) +{ + print "\nNo words found\n"; +} +else +{ + print "\nWords found:\n", pp(\%words_found), "\n"; +} + +# Return 1 if the given letters are a sub-multiset of the multiset @letters +# 0 otherwise + +sub is_submultiset +{ + my %word_letters; + + for (@_) + { + return 0 unless exists $letters{$_}; + ++$word_letters{$_}; + } + + for (keys %word_letters) + { + return 0 if $word_letters{$_} > $letters{$_}; + } + + return 1; +} + diff --git a/challenge-004/aubrey-quarcoo/README b/challenge-004/aubrey-quarcoo/README new file mode 100644 index 0000000000..8e63a2c1f5 --- /dev/null +++ b/challenge-004/aubrey-quarcoo/README @@ -0,0 +1 @@ |
