From baaf0741547c00cb590fcd6ac1de7f8e99816c19 Mon Sep 17 00:00:00 2001
From: Michael Mutote <130656746+mr1Michael@users.noreply.github.com>
Date: Thu, 12 Oct 2023 17:11:59 +0200
Subject: [PATCH] 22202956 Exercise 4.9 question 4 done

still requires optimization for space usage and speed. Memoizing might be a good Idea!
---
 4_9_Exercises/Question 4.py | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
 create mode 100644 4_9_Exercises/Question 4.py

diff --git a/4_9_Exercises/Question 4.py b/4_9_Exercises/Question 4.py
new file mode 100644
index 0000000..b5a7132
--- /dev/null
+++ b/4_9_Exercises/Question 4.py	
@@ -0,0 +1,29 @@
+def np(x, y, trace=None):
+    if trace is None:
+        trace = [(0, 0)]
+    current = trace[-1]
+    if current in trace[:-1]:
+        return 0
+    if current[0] > x or current[1] > y or current[0] < 0 or current[1] < 0:
+        return 0
+    if (current[0], current[1]) == (x, y) and len(trace) > 1:
+        print(current[0], x, current[1], y, " this is in success")
+        print(trace)
+        return 1
+    if x + y < 2:
+        return 1
+
+    x_1, y_1 = (current[0], current[1] + 1) if current[1] < y else (current[0], current[1])
+    x_2, y_2 = (current[0] + 1, current[1]) if current[0] < x else (current[0], current[1])
+    x_3, y_3 = current[0] - 1, current[1]
+    x_4, y_4 = current[0], current[1] - 1
+
+    trace_1 = trace + [(x_1, y_1)]
+    trace_2 = trace + [(x_2, y_2)]
+    trace_3 = trace + [(x_3, y_3)]
+    trace_4 = trace + [(x_4, y_4)]
+
+    return np(x, y, trace_1) + \
+        np(x, y, trace_2) + \
+        np(x, y, trace_3) + \
+        np(x, y, trace_4)
-- 
GitLab