From 35eb0decdba21074cfe5b9780282e9129d517938 Mon Sep 17 00:00:00 2001
From: Tsakagur <tsakagur@gmail.com>
Date: Fri, 13 Dec 2019 11:37:00 +0100
Subject: [PATCH 1/4] Easier solution

I found the solutions proposed a bit difficult to read. I think this one is just a direct translation of the instructions and will be easier for everyone to understand.
---
 .../9a-cats-with-hats                            | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
 create mode 100644 ch09-lists-tuples-and-dictionaries/9a-cats-with-hats

diff --git a/ch09-lists-tuples-and-dictionaries/9a-cats-with-hats b/ch09-lists-tuples-and-dictionaries/9a-cats-with-hats
new file mode 100644
index 0000000..9449c74
--- /dev/null
+++ b/ch09-lists-tuples-and-dictionaries/9a-cats-with-hats
@@ -0,0 +1,16 @@
+# At the start all cats are hatless.
+cats = [False]*100
+
+# We do a loop over each step size from 1 to 100
+for step in range(1,101):
+
+    # We only look at cat indices that are a multiple of our step size
+    for i in range(1, 100//step + 1):
+
+        # We change the hat status for each cat we loop over
+        cats[i*step-1] = not cats[i*step-1]
+
+# Print the list of cats that have a hat
+for i in range(100):
+    if cats[i]:
+        print(f"Cat {i+1} has a hat!")

From e25054eaa1d0358c71693bde34e0a4da95d1af62 Mon Sep 17 00:00:00 2001
From: Adam Makhlouf <tsakagur@gmail.com>
Date: Sat, 14 Dec 2019 11:12:12 +0100
Subject: [PATCH 2/4] Update
 ch09-lists-tuples-and-dictionaries/9a-cats-with-hats

Trick to simplify the math with the indices.

Co-Authored-By: David Amos <somacdivad@gmail.com>
---
 ch09-lists-tuples-and-dictionaries/9a-cats-with-hats | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ch09-lists-tuples-and-dictionaries/9a-cats-with-hats b/ch09-lists-tuples-and-dictionaries/9a-cats-with-hats
index 9449c74..72a78c0 100644
--- a/ch09-lists-tuples-and-dictionaries/9a-cats-with-hats
+++ b/ch09-lists-tuples-and-dictionaries/9a-cats-with-hats
@@ -1,5 +1,5 @@
 # At the start all cats are hatless.
-cats = [False]*100
+cats = [False]*101
 
 # We do a loop over each step size from 1 to 100
 for step in range(1,101):

From e8687aa3a34bba6f69f7171c14259c13d18aaa0a Mon Sep 17 00:00:00 2001
From: Adam Makhlouf <tsakagur@gmail.com>
Date: Mon, 23 Dec 2019 10:41:58 +0100
Subject: [PATCH 3/4] Update and renaming of the 9a-challenge-cats-with-hats

Making the variables easier to understand and some renaming for clarity.
---
 .../9a-cats-with-hats                         | 16 ----------------
 .../9a-challenge-cats-with-hats               | 19 +++++++++++++++++++
 2 files changed, 19 insertions(+), 16 deletions(-)
 delete mode 100644 ch09-lists-tuples-and-dictionaries/9a-cats-with-hats
 create mode 100644 ch09-lists-tuples-and-dictionaries/9a-challenge-cats-with-hats

diff --git a/ch09-lists-tuples-and-dictionaries/9a-cats-with-hats b/ch09-lists-tuples-and-dictionaries/9a-cats-with-hats
deleted file mode 100644
index 72a78c0..0000000
--- a/ch09-lists-tuples-and-dictionaries/9a-cats-with-hats
+++ /dev/null
@@ -1,16 +0,0 @@
-# At the start all cats are hatless.
-cats = [False]*101
-
-# We do a loop over each step size from 1 to 100
-for step in range(1,101):
-
-    # We only look at cat indices that are a multiple of our step size
-    for i in range(1, 100//step + 1):
-
-        # We change the hat status for each cat we loop over
-        cats[i*step-1] = not cats[i*step-1]
-
-# Print the list of cats that have a hat
-for i in range(100):
-    if cats[i]:
-        print(f"Cat {i+1} has a hat!")
diff --git a/ch09-lists-tuples-and-dictionaries/9a-challenge-cats-with-hats b/ch09-lists-tuples-and-dictionaries/9a-challenge-cats-with-hats
new file mode 100644
index 0000000..2b760fd
--- /dev/null
+++ b/ch09-lists-tuples-and-dictionaries/9a-challenge-cats-with-hats
@@ -0,0 +1,19 @@
+# At the start all cats are hatless.
+cats = [False]*101
+
+# We do a loop over each step size from 1 to 100
+for step_size in range(1, 100 + 1):
+    
+    # For each step size we calculate how many cats we are going to visit
+    cats_to_visit = 100 // step_size
+
+    # We only loop over cat indices that are a multiple of our step size
+    for i in range(1, cats_to_visit + 1):
+
+        # We reverse the hat status for each cat we loop over
+        cats[i*step_size] = not cats[i*step_size]
+
+# Print the list of cats that have a hat
+for i in range(100):
+    if cats[i]:
+        print(f"Cat {i+1} has a hat!")

From 48a5e7237c8330c5127bc9558320991b8e72535e Mon Sep 17 00:00:00 2001
From: Adam Makhlouf <tsakagur@gmail.com>
Date: Mon, 23 Dec 2019 10:45:03 +0100
Subject: [PATCH 4/4] Forgot to correct end loop

Now the cats that have a hat are all correctly displayed.
---
 .../9a-challenge-cats-with-hats                               | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ch09-lists-tuples-and-dictionaries/9a-challenge-cats-with-hats b/ch09-lists-tuples-and-dictionaries/9a-challenge-cats-with-hats
index 2b760fd..1f3e7a1 100644
--- a/ch09-lists-tuples-and-dictionaries/9a-challenge-cats-with-hats
+++ b/ch09-lists-tuples-and-dictionaries/9a-challenge-cats-with-hats
@@ -14,6 +14,6 @@ for step_size in range(1, 100 + 1):
         cats[i*step_size] = not cats[i*step_size]
 
 # Print the list of cats that have a hat
-for i in range(100):
+for i in range(101):
     if cats[i]:
-        print(f"Cat {i+1} has a hat!")
+        print(f"Cat {i} has a hat!")