aboutsummaryrefslogtreecommitdiff
path: root/challenge-237
diff options
context:
space:
mode:
authorMichael Firkins <michael@firkins>2023-10-02 21:05:31 +1100
committerMichael Firkins <michael@firkins>2023-10-03 13:47:59 +1100
commit98b832f1ff2919defd3e4fa528b60362a6caf0fc (patch)
treef729edb6c340ce902c2a490634ff932fc874a124 /challenge-237
parent9a50910d2d97f98fc942e1a5275016a462be8abb (diff)
downloadperlweeklychallenge-club-98b832f1ff2919defd3e4fa528b60362a6caf0fc.tar.gz
perlweeklychallenge-club-98b832f1ff2919defd3e4fa528b60362a6caf0fc.tar.bz2
perlweeklychallenge-club-98b832f1ff2919defd3e4fa528b60362a6caf0fc.zip
pwc237 solution in python
Diffstat (limited to 'challenge-237')
-rw-r--r--challenge-237/pokgopun/python/ch-1.py55
-rw-r--r--challenge-237/pokgopun/python/ch-2.py62
2 files changed, 117 insertions, 0 deletions
diff --git a/challenge-237/pokgopun/python/ch-1.py b/challenge-237/pokgopun/python/ch-1.py
new file mode 100644
index 0000000000..e04ed8c727
--- /dev/null
+++ b/challenge-237/pokgopun/python/ch-1.py
@@ -0,0 +1,55 @@
+### https://theweeklychallenge.org/blog/perl-weekly-challenge-237/
+"""
+
+Task 1: Seize The Day
+
+Submitted by: [44]Mark Anderson
+ __________________________________________________________________
+
+ Given a year, a month, a weekday of month, and a day of week (1 (Mon)
+ .. 7 (Sun)), print the day.
+
+Example 1
+
+Input: Year = 2024, Month = 4, Weekday of month = 3, day of week = 2
+Output: 16
+
+The 3rd Tue of Apr 2024 is the 16th
+
+Example 2
+
+Input: Year = 2025, Month = 10, Weekday of month = 2, day of week = 4
+Output: 9
+
+The 2nd Thu of Oct 2025 is the 9th
+
+Example 3
+
+Input: Year = 2026, Month = 8, Weekday of month = 5, day of week = 3
+Output: 0
+
+There isn't a 5th Wed in Aug 2026
+
+Task 2: Maximise Greatness
+"""
+### solution by pokgopun@gmail.com
+
+import datetime
+
+def seizeTheDay(tup):
+ y,m,mw,wd = tup
+ dt = datetime.date(y, m, 1)
+ wdd = wd - dt.isoweekday()
+ if wdd < 0: wdd += 7
+ try:
+ return dt.replace(day = 1 + 7*(mw - 1) + wdd).day
+ except:
+ return 0
+
+for inpt,otpt in {
+ (2024,4,3,2): 16,
+ (2025,10,2,4): 9,
+ (2026,8,5,3): 0,
+ }.items():
+ print(seizeTheDay(inpt)==otpt)
+
diff --git a/challenge-237/pokgopun/python/ch-2.py b/challenge-237/pokgopun/python/ch-2.py
new file mode 100644
index 0000000000..7f52133712
--- /dev/null
+++ b/challenge-237/pokgopun/python/ch-2.py
@@ -0,0 +1,62 @@
+### https://theweeklychallenge.org/blog/perl-weekly-challenge-237/
+"""
+
+Task 2: Maximise Greatness
+
+Submitted by: [45]Mohammad S Anwar
+ __________________________________________________________________
+
+ You are given an array of integers.
+
+ Write a script to permute the give array such that you get the maximum
+ possible greatness.
+
+ To determine greatness, nums[i] < perm[i] where 0 <= i < nums.length
+
+Example 1
+
+Input: @nums = (1, 3, 5, 2, 1, 3, 1)
+Output: 4
+
+One possible permutation: (2, 5, 1, 3, 3, 1, 1) which returns 4 greatness as bel
+ow:
+nums[0] < perm[0]
+nums[1] < perm[1]
+nums[3] < perm[3]
+nums[4] < perm[4]
+
+Example 2
+
+Input: @ints = (1, 2, 3, 4)
+Output: 3
+
+One possible permutation: (2, 3, 4, 1) which returns 3 greatness as below:
+nums[0] < perm[0]
+nums[1] < perm[1]
+nums[2] < perm[2]
+ __________________________________________________________________
+
+ Last date to submit the solution 23:59 (UK Time) Sunday 8th October
+ 2023.
+ __________________________________________________________________
+
+SO WHAT DO YOU THINK ?
+"""
+### solution by pokgopun@gmail.com
+
+from itertools import permutations
+
+def maxGreat(tup):
+ l, m = len(tup), 0
+ for pm in permutations(tup):
+ g = tuple( pm[i] > tup[i] for i in range(l) ).count(True)
+ if m < g : m = g
+ return m
+
+for inpt,otpt in {
+ (1, 3, 5, 2, 1, 3, 1): 4,
+ (1, 2, 3, 4): 3,
+ }.items():
+ print(maxGreat(inpt)==otpt)
+
+