aboutsummaryrefslogtreecommitdiff
path: root/challenge-237
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2023-10-08 19:04:18 +0100
committerGitHub <noreply@github.com>2023-10-08 19:04:18 +0100
commit98628b671c100d3a331b880ab5b691b25ff8e7e4 (patch)
treec0f8550e04c13ef7d01f50beb219227d211456f4 /challenge-237
parent8b5464f84c38b07f7ef8c2a43d8d5c1f86c06c33 (diff)
parent8840b976da7bb540bce8ccddfe0419883fdd46eb (diff)
downloadperlweeklychallenge-club-98628b671c100d3a331b880ab5b691b25ff8e7e4.tar.gz
perlweeklychallenge-club-98628b671c100d3a331b880ab5b691b25ff8e7e4.tar.bz2
perlweeklychallenge-club-98628b671c100d3a331b880ab5b691b25ff8e7e4.zip
Merge pull request #8820 from oWnOIzRi/week237
add solutions week 237 in python
Diffstat (limited to 'challenge-237')
-rw-r--r--challenge-237/steven-wilson/python/ch-01.py29
-rw-r--r--challenge-237/steven-wilson/python/ch-02.py43
2 files changed, 72 insertions, 0 deletions
diff --git a/challenge-237/steven-wilson/python/ch-01.py b/challenge-237/steven-wilson/python/ch-01.py
new file mode 100644
index 0000000000..6da63f3aa6
--- /dev/null
+++ b/challenge-237/steven-wilson/python/ch-01.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python3
+
+from datetime import date, timedelta
+
+
+def seize_the_day(year, month, week, dow):
+ """ Given a year, a month, a week of month, and a day of week
+ (1 (Mon) .. 7 (Sun)), return the day of month, 0 is returned if not
+ possible
+ >>> seize_the_day(2024, 4, 3, 2)
+ 16
+ >>> seize_the_day(2025, 10, 2, 4)
+ 9
+ >>> seize_the_day(2026, 8, 5, 3)
+ 0
+ """
+ d = date(year, month, (1 + (week - 1) * 7))
+ while(d.isoweekday() != dow):
+ d = d + timedelta(days=1)
+ if(d.month == month):
+ return d.day
+ else:
+ return 0
+
+
+if __name__ == "__main__":
+ import doctest
+
+ doctest.testmod()
diff --git a/challenge-237/steven-wilson/python/ch-02.py b/challenge-237/steven-wilson/python/ch-02.py
new file mode 100644
index 0000000000..c7ff7edd00
--- /dev/null
+++ b/challenge-237/steven-wilson/python/ch-02.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python3
+
+from itertools import permutations
+
+
+def calculate_greatness(elements, permutation):
+ ''' Calculate greatness of array of integers and a permutation
+ >>> calculate_greatness([1, 3, 5, 2, 1, 3, 1], [2, 5, 1, 3, 3, 1, 1])
+ 4
+ >>> calculate_greatness([1, 2, 3, 4], [2, 3, 4, 1])
+ 3
+ >>> calculate_greatness([1, 2], [1, 2])
+ 0
+ '''
+ count = 0
+ for index, elem in enumerate(elements):
+ if elem < permutation[index]:
+ count += 1
+ return count
+
+
+def maximise_greatness(elements):
+ ''' return maximum possible greatness from permutations of an array of integers
+ >>> maximise_greatness([1, 3, 5, 2, 1, 3, 1])
+ 4
+ >>> maximise_greatness([1, 2, 3, 4])
+ 3
+ >>> maximise_greatness([1, 1, 1])
+ 0
+ '''
+ perms = set(permutations(elements))
+ max_greatness = 0
+ for permutation in perms:
+ greatness = calculate_greatness(elements, permutation)
+ if greatness > max_greatness:
+ max_greatness = greatness
+ return max_greatness
+
+
+if __name__ == "__main__":
+ import doctest
+
+ doctest.testmod()