aboutsummaryrefslogtreecommitdiff
path: root/challenge-283/packy-anderson/python/ch-2.py
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-283/packy-anderson/python/ch-2.py')
-rwxr-xr-xchallenge-283/packy-anderson/python/ch-2.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/challenge-283/packy-anderson/python/ch-2.py b/challenge-283/packy-anderson/python/ch-2.py
new file mode 100755
index 0000000000..e8ccd8b72c
--- /dev/null
+++ b/challenge-283/packy-anderson/python/ch-2.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+
+from collections import Counter
+
+def digitCountValue(ints):
+ bag = Counter(ints) # count occurrences
+ explain = []
+ passes = True
+ for digit in range(len(ints)):
+ times = ints[digit]
+ occurs = bag[digit]
+ otimes = (
+ "0 times" if occurs == 0 else
+ f"{occurs} times" if occurs >= 2 else
+ "1 time"
+ )
+ if times == occurs:
+ explain.append(
+ f"$ints[{digit}] = {times}, the digit {digit} " +
+ f"occurs {otimes}"
+ )
+ else:
+ passes = False
+ ttimes = (
+ "0 times" if times == 0 else
+ f"{times} times" if times >= 2 else
+ "1 time"
+ )
+ explain.append(
+ f"$ints[{digit}] = {times}, the digit {digit} " +
+ f"occurs {otimes} rather than {ttimes}"
+ )
+ return passes, "\n".join(explain)
+
+def comma_join(arr):
+ return ', '.join(map(lambda i: str(i), arr))
+
+def solution(ints):
+ print(f'Input: @ints = ({comma_join(ints)})')
+ passes, explain = digitCountValue(ints)
+ print(f'Output: {passes}\n\n{explain}')
+
+print('Example 1:')
+solution([1, 2, 1, 0])
+
+print('\nExample 2:')
+solution([0, 3, 0])
+
+print('\nExample 3:')
+solution([0, 1, 2, 2])