aboutsummaryrefslogtreecommitdiff
path: root/challenge-004
diff options
context:
space:
mode:
authorE7-87-83 <fungcheokyin@gmail.com>2021-06-09 16:21:12 +0800
committerE7-87-83 <fungcheokyin@gmail.com>2021-06-09 16:21:12 +0800
commitc0e6f7597cc064e00bc42794780a55b424cfdba9 (patch)
tree531f8174a2e595db1c94e6df8c3b4d69b1ec7a4c /challenge-004
parentd7f1a42f45701d5b0ed19ea0b9823d9dc41de271 (diff)
parentef1528e9b9b1bee88fc5deaf724f31330b216d9a (diff)
downloadperlweeklychallenge-club-c0e6f7597cc064e00bc42794780a55b424cfdba9.tar.gz
perlweeklychallenge-club-c0e6f7597cc064e00bc42794780a55b424cfdba9.tar.bz2
perlweeklychallenge-club-c0e6f7597cc064e00bc42794780a55b424cfdba9.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-004')
-rw-r--r--challenge-004/paulo-custodio/perl/ch-1.pl4
-rw-r--r--challenge-004/paulo-custodio/perl/ch-2.pl4
-rwxr-xr-xchallenge-004/paulo-custodio/python/ch-1.py13
-rwxr-xr-xchallenge-004/paulo-custodio/python/ch-2.py40
-rwxr-xr-x[-rw-r--r--]challenge-004/paulo-custodio/test.pl6
5 files changed, 57 insertions, 10 deletions
diff --git a/challenge-004/paulo-custodio/perl/ch-1.pl b/challenge-004/paulo-custodio/perl/ch-1.pl
index 356e712c44..82b75fe8d4 100644
--- a/challenge-004/paulo-custodio/perl/ch-1.pl
+++ b/challenge-004/paulo-custodio/perl/ch-1.pl
@@ -8,9 +8,7 @@
#
# we need a big-math library to compute any large number of digits
-use strict;
-use warnings;
-use 5.030;
+use Modern::Perl;
use Math::BigFloat;
say Math::BigFloat->bpi(-s $0);
diff --git a/challenge-004/paulo-custodio/perl/ch-2.pl b/challenge-004/paulo-custodio/perl/ch-2.pl
index faaa875806..13e66397e8 100644
--- a/challenge-004/paulo-custodio/perl/ch-2.pl
+++ b/challenge-004/paulo-custodio/perl/ch-2.pl
@@ -10,9 +10,7 @@
# use all the letters.
# (Disclaimer: The challenge was proposed by Scimon Proctor)
-use strict;
-use warnings;
-use 5.030;
+use Modern::Perl;
@ARGV==1 or die "Usage: ch-2.pl letters\n";
my($letters) = @ARGV;
diff --git a/challenge-004/paulo-custodio/python/ch-1.py b/challenge-004/paulo-custodio/python/ch-1.py
new file mode 100755
index 0000000000..c1f19cec8d
--- /dev/null
+++ b/challenge-004/paulo-custodio/python/ch-1.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python3
+
+# Challenge 004
+#
+# Challenge #1
+# Write a script to output the same number of PI digits as the size of your script.
+# Say, if your script size is 10, it should print 3.141592653.
+
+import math_pi # pip install math-pi
+import os;
+
+size = os.path.getsize(__file__)
+print(math_pi.pi(b=size-1)) # -1 to account for "3."
diff --git a/challenge-004/paulo-custodio/python/ch-2.py b/challenge-004/paulo-custodio/python/ch-2.py
new file mode 100755
index 0000000000..8cadfda8c8
--- /dev/null
+++ b/challenge-004/paulo-custodio/python/ch-2.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python3
+
+# Challenge 004
+#
+# Challenge #2
+# You are given a file containing a list of words (case insensitive 1 word per
+# line) and a list of letters. Print each word from the file that can be made
+# using only letters from the list. You can use each letter only once (though
+# there can be duplicates and you can use each of them once), you don't have to
+# use all the letters.
+# (Disclaimer: The challenge was proposed by Scimon Proctor)
+
+import sys
+import re
+
+def isalpha(word):
+ if re.fullmatch(r"[a-zA-Z]+", word):
+ return True
+ else:
+ return False
+
+def matches_letters(word, letters):
+ for c in letters:
+ word = re.sub(c, "", word, 1)
+ if word == "":
+ return True
+ return False
+
+def print_matching(file, letters):
+ letters = letters.lower()
+ fp = open(file, 'r')
+ for line in fp.readlines():
+ word = line.strip()
+ if isalpha(word) and len(word) >= 2 and matches_letters(word, letters):
+ print(word)
+
+if len(sys.argv) != 2:
+ print("Usage: ch-2.py letters")
+else:
+ print_matching("words.txt", sys.argv[1])
diff --git a/challenge-004/paulo-custodio/test.pl b/challenge-004/paulo-custodio/test.pl
index a61c28ebb7..921572d853 100644..100755
--- a/challenge-004/paulo-custodio/test.pl
+++ b/challenge-004/paulo-custodio/test.pl
@@ -1,8 +1,6 @@
-#!/usr/bin/perl
+#!/usr/bin/env perl
-use strict;
-use warnings;
+use Modern::Perl;
use Test::More;
-use 5.030;
require '../../challenge-001/paulo-custodio/test.pl';