diff options
| author | Conor Hoekstra <codereport@outlook.com> | 2021-12-24 22:16:15 -0500 |
|---|---|---|
| committer | Conor Hoekstra <codereport@outlook.com> | 2021-12-24 22:16:15 -0500 |
| commit | c804b128cf740d95b244cd3fe15e86d0820ab51e (patch) | |
| tree | b9db7c3a5f93e6a83640f56bfd5decb9bbe8dbfe /challenge-033 | |
| parent | 116add27d0d74360c7d4ad26b12d972657e51afa (diff) | |
| parent | 6f518c687f743b68d3eeddedcf3d831aca20d4ec (diff) | |
| download | perlweeklychallenge-club-c804b128cf740d95b244cd3fe15e86d0820ab51e.tar.gz perlweeklychallenge-club-c804b128cf740d95b244cd3fe15e86d0820ab51e.tar.bz2 perlweeklychallenge-club-c804b128cf740d95b244cd3fe15e86d0820ab51e.zip | |
Merge branch 'master' of https://github.com/manwar/perlweeklychallenge-club
Diffstat (limited to 'challenge-033')
| -rw-r--r-- | challenge-033/paulo-custodio/Makefile | 2 | ||||
| -rw-r--r-- | challenge-033/paulo-custodio/README | 1 | ||||
| -rw-r--r-- | challenge-033/paulo-custodio/perl/ch-1.pl | 57 | ||||
| -rw-r--r-- | challenge-033/paulo-custodio/perl/ch-2.pl | 37 | ||||
| -rw-r--r-- | challenge-033/paulo-custodio/python/ch-1.py | 55 | ||||
| -rw-r--r-- | challenge-033/paulo-custodio/python/ch-2.py | 36 | ||||
| -rw-r--r-- | challenge-033/paulo-custodio/sample.txt | 1 | ||||
| -rw-r--r-- | challenge-033/paulo-custodio/t/test-1.yaml | 31 | ||||
| -rw-r--r-- | challenge-033/paulo-custodio/t/test-2.yaml | 18 |
9 files changed, 238 insertions, 0 deletions
diff --git a/challenge-033/paulo-custodio/Makefile b/challenge-033/paulo-custodio/Makefile new file mode 100644 index 0000000000..c3c762d746 --- /dev/null +++ b/challenge-033/paulo-custodio/Makefile @@ -0,0 +1,2 @@ +all: + perl ../../challenge-001/paulo-custodio/test.pl diff --git a/challenge-033/paulo-custodio/README b/challenge-033/paulo-custodio/README new file mode 100644 index 0000000000..87dc0b2fbd --- /dev/null +++ b/challenge-033/paulo-custodio/README @@ -0,0 +1 @@ +Solution by Paulo Custodio diff --git a/challenge-033/paulo-custodio/perl/ch-1.pl b/challenge-033/paulo-custodio/perl/ch-1.pl new file mode 100644 index 0000000000..8346b97cbf --- /dev/null +++ b/challenge-033/paulo-custodio/perl/ch-1.pl @@ -0,0 +1,57 @@ +#!/usr/bin/perl + +# Challenge 033 +# +# Task #1 +# Count Letters (A..Z) +# Create a script that accepts one or more files specified on the command-line +# and count the number of times letters appeared in the files. +# +# So with the following input file sample.txt +# +# The quick brown fox jumps over the lazy dog. +# the script would display something like: +# +# a: 1 +# b: 1 +# c: 1 +# d: 1 +# e: 3 +# f: 1 +# g: 1 +# h: 2 +# i: 1 +# j: 1 +# k: 1 +# l: 1 +# m: 1 +# n: 1 +# o: 4 +# p: 1 +# q: 1 +# r: 2 +# s: 1 +# t: 2 +# u: 2 +# v: 1 +# w: 1 +# x: 1 +# y: 1 +# z: 1 + +use Modern::Perl; + +# collect +my %count; +while (<>) { + for (split //, lc($_)) { + if (/[a-z]/) { + $count{$_}++; + } + } +} + +# output +for (sort keys %count) { + say "$_: $count{$_}"; +} diff --git a/challenge-033/paulo-custodio/perl/ch-2.pl b/challenge-033/paulo-custodio/perl/ch-2.pl new file mode 100644 index 0000000000..761f07455c --- /dev/null +++ b/challenge-033/paulo-custodio/perl/ch-2.pl @@ -0,0 +1,37 @@ +#!/usr/bin/perl + +# Challenge 033 +# +# Task #2 +# Formatted Multiplication Table +# Write a script to print 11x11 multiplication table, only the top half triangle. +# +# x| 1 2 3 4 5 6 7 8 9 10 11 +# ---+-------------------------------------------- +# 1| 1 2 3 4 5 6 7 8 9 10 11 +# 2| 4 6 8 10 12 14 16 18 20 22 +# 3| 9 12 15 18 21 24 27 30 33 +# 4| 16 20 24 28 32 36 40 44 +# 5| 25 30 35 40 45 50 55 +# 6| 36 42 48 54 60 66 +# 7| 49 56 63 70 77 +# 8| 64 72 80 88 +# 9| 81 90 99 +# 10| 100 110 +# 11| 121 + +use Modern::Perl; + +# header +print " x|"; +printf "%4d", $_ for 1..11; +print "\n"; +print "---+", "-"x(11*4), "\n"; + +# print table +for my $row (1..11) { + printf "%3d|", $row; + print " "x(4*($row-1)); + printf "%4d", $row*$_ for $row..11; + print "\n"; +} diff --git a/challenge-033/paulo-custodio/python/ch-1.py b/challenge-033/paulo-custodio/python/ch-1.py new file mode 100644 index 0000000000..bee81c7d25 --- /dev/null +++ b/challenge-033/paulo-custodio/python/ch-1.py @@ -0,0 +1,55 @@ +#!/usr/bin/python3 + +# Challenge 033 +# +# Task #1 +# Count Letters (A..Z) +# Create a script that accepts one or more files specified on the command-line +# and count the number of times letters appeared in the files. +# +# So with the following input file sample.txt +# +# The quick brown fox jumps over the lazy dog. +# the script would display something like: +# +# a: 1 +# b: 1 +# c: 1 +# d: 1 +# e: 3 +# f: 1 +# g: 1 +# h: 2 +# i: 1 +# j: 1 +# k: 1 +# l: 1 +# m: 1 +# n: 1 +# o: 4 +# p: 1 +# q: 1 +# r: 2 +# s: 1 +# t: 2 +# u: 2 +# v: 1 +# w: 1 +# x: 1 +# y: 1 +# z: 1 + +import fileinput +import sys +from collections import defaultdict + +# collect +count = defaultdict(lambda: 0) +for line in fileinput.input(): + for c in line: + if c.isalpha(): + count[c.lower()] += 1 + +# output +for key in sorted(count): + print(f"{key}: {count[key]}") diff --git a/challenge-033/paulo-custodio/python/ch-2.py b/challenge-033/paulo-custodio/python/ch-2.py new file mode 100644 index 0000000000..c7ebd913b5 --- /dev/null +++ b/challenge-033/paulo-custodio/python/ch-2.py @@ -0,0 +1,36 @@ +#!/usr/bin/python3 + +# Challenge 033 +# +# Task #2 +# Formatted Multiplication Table +# Write a script to print 11x11 multiplication table, only the top half triangle. +# +# x| 1 2 3 4 5 6 7 8 9 10 11 +# ---+-------------------------------------------- +# 1| 1 2 3 4 5 6 7 8 9 10 11 +# 2| 4 6 8 10 12 14 16 18 20 22 +# 3| 9 12 15 18 21 24 27 30 33 +# 4| 16 20 24 28 32 36 40 44 +# 5| 25 30 35 40 45 50 55 +# 6| 36 42 48 54 60 66 +# 7| 49 56 63 70 77 +# 8| 64 72 80 88 +# 9| 81 90 99 +# 10| 100 110 +# 11| 121 + +# print header +print(" x|", end="") +for col in range(1, 12): + print(f"{col:4d}", end="") +print("") +print("---+", "-"*(11*4), sep="") + +# print table +for row in range(1, 12): + print(f"{row:3d}|", end="") + print(" "*(4*(row-1)), end="") + for col in range(row, 12): + print(f"{row*col:4d}", end="") + print("") diff --git a/challenge-033/paulo-custodio/sample.txt b/challenge-033/paulo-custodio/sample.txt new file mode 100644 index 0000000000..2fe6575e76 --- /dev/null +++ b/challenge-033/paulo-custodio/sample.txt @@ -0,0 +1 @@ +The quick brown fox jumps over the lazy dog. diff --git a/challenge-033/paulo-custodio/t/test-1.yaml b/challenge-033/paulo-custodio/t/test-1.yaml new file mode 100644 index 0000000000..894d074083 --- /dev/null +++ b/challenge-033/paulo-custodio/t/test-1.yaml @@ -0,0 +1,31 @@ +- setup: + cleanup: + args: sample.txt + input: + output: | + |a: 1 + |b: 1 + |c: 1 + |d: 1 + |e: 3 + |f: 1 + |g: 1 + |h: 2 + |i: 1 + |j: 1 + |k: 1 + |l: 1 + |m: 1 + |n: 1 + |o: 4 + |p: 1 + |q: 1 + |r: 2 + |s: 1 + |t: 2 + |u: 2 + |v: 1 + |w: 1 + |x: 1 + |y: 1 + |z: 1 diff --git a/challenge-033/paulo-custodio/t/test-2.yaml b/challenge-033/paulo-custodio/t/test-2.yaml new file mode 100644 index 0000000000..6188568fb4 --- /dev/null +++ b/challenge-033/paulo-custodio/t/test-2.yaml @@ -0,0 +1,18 @@ +- setup: + cleanup: + args: + input: + output: | + | x| 1 2 3 4 5 6 7 8 9 10 11 + |---+-------------------------------------------- + | 1| 1 2 3 4 5 6 7 8 9 10 11 + | 2| 4 6 8 10 12 14 16 18 20 22 + | 3| 9 12 15 18 21 24 27 30 33 + | 4| 16 20 24 28 32 36 40 44 + | 5| 25 30 35 40 45 50 55 + | 6| 36 42 48 54 60 66 + | 7| 49 56 63 70 77 + | 8| 64 72 80 88 + | 9| 81 90 99 + | 10| 100 110 + | 11| 121 |
