diff options
Diffstat (limited to 'challenge-109/colin-crain/python/ch-2.py')
| -rw-r--r-- | challenge-109/colin-crain/python/ch-2.py | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/challenge-109/colin-crain/python/ch-2.py b/challenge-109/colin-crain/python/ch-2.py new file mode 100644 index 0000000000..3d45b655a7 --- /dev/null +++ b/challenge-109/colin-crain/python/ch-2.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3
+#
+#
+# four-sq-permute.py
+#
+# TASK #2 › Four Squares Puzzle
+# Submitted by: Mohammad S Anwar
+# You are given four squares as below with numbers named a,b,c,d,e,f,g.
+#
+# (1) (3)
+# ╔══════════════╗ ╔══════════════╗
+# ║ ║ ║ ║
+# ║ a ║ ║ e ║
+# ║ ║ (2) ║ ║ (4)
+# ║ ┌───╫──────╫───┐ ┌───╫─────────┐
+# ║ │ ║ ║ │ │ ║ │
+# ║ │ b ║ ║ d │ │ f ║ │
+# ║ │ ║ ║ │ │ ║ │
+# ║ │ ║ ║ │ │ ║ │
+# ╚══════════╪═══╝ ╚═══╪══════╪═══╝ │
+# │ c │ │ g │
+# │ │ │ │
+# │ │ │ │
+# └──────────────┘ └─────────────┘
+# Write a script to place the given unique numbers in the square box so that sum of numbers in each box is the same.
+#
+# Example
+# Input: 1,2,3,4,5,6,7
+#
+# Output:
+#
+# a = 6
+# b = 4
+# c = 1
+# d = 5
+# e = 2
+# f = 3
+# g = 7
+#
+# Box 1: a + b = 6 + 4 = 10
+# Box 2: b + c + d = 4 + 1 + 5 = 10
+# Box 3: d + e + f = 5 + 2 + 3 = 10
+# Box 4: f + g = 3 + 7 = 10
+#
+#
+#
+#
+# © 2021 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+
+from itertools import permutations
+
+
+
+def find_solutions ( lst ):
+ out = []
+ for candidate in list( permutations(lst) ):
+ (v, n) = validate( candidate )
+ if v:
+ out.append( [candidate, n] )
+ return out
+
+def validate ( lst ):
+ n = lst[0] + lst[1]
+ return ( (n == lst[1] + lst[2] + lst[3]
+ == lst[3] + lst[4] + lst[5]
+ == lst[5] + lst[6]), n )
+
+def report ( tup ):
+ (list, n) = tup
+
+ print(f'''
+ ===============================
+ solution
+ sum is {n}
+ values:
+ ''')
+
+ letter_values = zip( ['a','b','c','d','e','f','g'] , list )
+ for lv in letter_values:
+ print(f"\t\t{lv[0]} = {lv[1]}")
+
+ print(f'''
+ ===============================
+ ''')
+
+input = [1,2,3,4,5,6,7]
+solution = find_solutions(input)
+if len(solution) > 0:
+ for sol in solution:
+ report(sol)
|
