aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchirvasitua <chirvasitua@gmail.com>2021-07-12 14:18:00 -0400
committerchirvasitua <chirvasitua@gmail.com>2021-07-12 14:18:00 -0400
commit5d82be102bc5151bd3560a42e93b1de66473d74e (patch)
treeb5fddb60b813498e99e2da1ad843299a792f25e3
parent1aa7b6eaba2a58fc1ef0612373e3aed6b61f345d (diff)
downloadperlweeklychallenge-club-5d82be102bc5151bd3560a42e93b1de66473d74e.tar.gz
perlweeklychallenge-club-5d82be102bc5151bd3560a42e93b1de66473d74e.tar.bz2
perlweeklychallenge-club-5d82be102bc5151bd3560a42e93b1de66473d74e.zip
1st commit on 121_python
-rwxr-xr-xchallenge-121/stuart-little/python/ch-1.py7
-rwxr-xr-xchallenge-121/stuart-little/python/ch-2.py27
2 files changed, 34 insertions, 0 deletions
diff --git a/challenge-121/stuart-little/python/ch-1.py b/challenge-121/stuart-little/python/ch-1.py
new file mode 100755
index 0000000000..0e9f54f8ca
--- /dev/null
+++ b/challenge-121/stuart-little/python/ch-1.py
@@ -0,0 +1,7 @@
+#!/usr/bin/env python
+
+# run <script> <bit position>
+
+import sys
+
+print(int(sys.argv[1]) ^ 2**(int(sys.argv[2])-1))
diff --git a/challenge-121/stuart-little/python/ch-2.py b/challenge-121/stuart-little/python/ch-2.py
new file mode 100755
index 0000000000..d4831d657d
--- /dev/null
+++ b/challenge-121/stuart-little/python/ch-2.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+
+# run <script> <nr of cities>
+
+from itertools import permutations
+import random
+import sys
+
+def mkRMat(n):
+ return [[0 if j==i else random.randint(1,9) for j in range(1,n+1)] for i in range(1,n+1)]
+
+def sayMat(m):
+ for i in m: print(i)
+
+def pathCost(path,mat):
+ return sum([mat[path[i]][path[(i+1)% len(path)]] for i in range(len(path))])
+
+nr=int(sys.argv[1])
+mat = mkRMat(nr)
+
+print("Your matrix:")
+sayMat(mat)
+
+sol = min([(perm,pathCost(perm,mat)) for perm in permutations(range(nr))], key=lambda p: p[1])
+
+print(f"Optimal cost: {sol[1]}")
+print(f"Optimal path: {list(sol[0]) + [sol[0][0]]}")