From 668d7791b06d59d55666c91df735852b40429f02 Mon Sep 17 00:00:00 2001 From: ava Date: Sun, 29 Dec 2024 16:10:34 +0300 Subject: [PATCH 01/65] Add Ava line --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 7cbe15f3c..9ae35102f 100644 --- a/README.md +++ b/README.md @@ -10,3 +10,9 @@ California is dedicated to fostering a culture of trust, respect, and Our shared commitment to growth and development empowers each member to contribute and learn from collective experiences, ensuring we work together effectively to achieve success. + +Meet the Team! + +Each member brings something special to the table. + + Ava: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป From e6bed303744666aaacaa6fa0b4113b24f8a39874 Mon Sep 17 00:00:00 2001 From: Saeed Imadeldin Osman Ali <49066304+Saeed-Emad@users.noreply.github.com> Date: Sun, 29 Dec 2024 20:25:09 +0300 Subject: [PATCH 02/65] Update README.md I added my contribution to the team's README --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 9ae35102f..1a6e5eb0b 100644 --- a/README.md +++ b/README.md @@ -16,3 +16,6 @@ Meet the Team! Each member brings something special to the table. Ava: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป + + Saeee:Every mistake is progress, + and Teamwork fuels growthโ„ข๏ธ๐Ÿค– \ No newline at end of file From 0486a911382587d30131aa0bc49cab4060ae8093 Mon Sep 17 00:00:00 2001 From: Saeed Imadeldin Osman Ali <49066304+Saeed-Emad@users.noreply.github.com> Date: Sun, 29 Dec 2024 20:29:05 +0300 Subject: [PATCH 03/65] Update README.md Added my contribution to the team's README --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1a6e5eb0b..e0ad0c669 100644 --- a/README.md +++ b/README.md @@ -17,5 +17,6 @@ Each member brings something special to the table. Ava: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป - Saeee:Every mistake is progress, - and Teamwork fuels growthโ„ข๏ธ๐Ÿค– \ No newline at end of file + **Saeee**:*Every mistake is progress, + and Teamwork fuels growthโ„ข๏ธ๐Ÿค–* + From 4a7302c464eb9bf565ea7b945279c3dc01979959 Mon Sep 17 00:00:00 2001 From: Saeed Imadeldin Osman Ali <49066304+Saeed-Emad@users.noreply.github.com> Date: Mon, 30 Dec 2024 09:23:00 +0300 Subject: [PATCH 04/65] Update README.md Add my contribution to the team's README file --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index e0ad0c669..850a76a76 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,5 @@ Meet the Team! Each member brings something special to the table. Ava: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป - - **Saeee**:*Every mistake is progress, - and Teamwork fuels growthโ„ข๏ธ๐Ÿค–* + Saeee: Every mistake is progress,and Teamwork fuels growthโ„ข๏ธ๐Ÿค– From fdc5b8b3fc7ec5ce4996dc0e751d586adcbd4459 Mon Sep 17 00:00:00 2001 From: Saeed Imadeldin Osman Ali <49066304+Saeed-Emad@users.noreply.github.com> Date: Mon, 30 Dec 2024 09:25:35 +0300 Subject: [PATCH 05/65] Update README.md Add my contribution to the team's README file --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 850a76a76..c77322ddf 100644 --- a/README.md +++ b/README.md @@ -16,5 +16,5 @@ Meet the Team! Each member brings something special to the table. Ava: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป - Saeee: Every mistake is progress,and Teamwork fuels growthโ„ข๏ธ๐Ÿค– + Saeee: Every mistake is progress , and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– From fd006237370bd16a2a2f235f1da1a63816ab8c1a Mon Sep 17 00:00:00 2001 From: Saeed Imadeldin Osman Ali <49066304+Saeed-Emad@users.noreply.github.com> Date: Mon, 30 Dec 2024 09:53:43 +0300 Subject: [PATCH 06/65] Update README.md Add my contribution to the team's README file --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c77322ddf..fa7ed833b 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,6 @@ Meet the Team! Each member brings something special to the table. - Ava: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป - Saeee: Every mistake is progress , and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– +- **Ava**: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป +- **Saeee**: Every mistake is progress, and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– From 2487e0a89771fffc87eb6a1c42ecfdc1bb7e2f86 Mon Sep 17 00:00:00 2001 From: Saeed Imadeldin Osman Ali <49066304+Saeed-Emad@users.noreply.github.com> Date: Mon, 30 Dec 2024 09:59:15 +0300 Subject: [PATCH 07/65] Update README.md fix the issue Add my contribution to the team's README file --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index fa7ed833b..62d9e4dbc 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,5 @@ California is dedicated to fostering a culture of trust, respect, and Meet the Team! Each member brings something special to the table. - - **Ava**: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป - **Saeee**: Every mistake is progress, and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– - From c36ceb8e87e62ddf4f36ff142796550385adf089 Mon Sep 17 00:00:00 2001 From: Saeed Imadeldin Osman Ali <49066304+Saeed-Emad@users.noreply.github.com> Date: Mon, 30 Dec 2024 10:01:31 +0300 Subject: [PATCH 08/65] Update README.md fix the issue Add my contribution to the team's README file --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 62d9e4dbc..028c0dedf 100644 --- a/README.md +++ b/README.md @@ -14,5 +14,5 @@ California is dedicated to fostering a culture of trust, respect, and Meet the Team! Each member brings something special to the table. -- **Ava**: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป +- **Ava**: Turning coffee into code โ˜• โžก๏ธ ๐Ÿ’ป - **Saeee**: Every mistake is progress, and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– From 85b17ad08d813af761d4b73c9088eb6f877a39a9 Mon Sep 17 00:00:00 2001 From: Saeed Imadeldin Osman Ali <49066304+Saeed-Emad@users.noreply.github.com> Date: Mon, 30 Dec 2024 10:06:44 +0300 Subject: [PATCH 09/65] Update README.md try fix the issue Add my contribution to the team's README file --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 028c0dedf..53808e57a 100644 --- a/README.md +++ b/README.md @@ -14,5 +14,7 @@ California is dedicated to fostering a culture of trust, respect, and Meet the Team! Each member brings something special to the table. -- **Ava**: Turning coffee into code โ˜• โžก๏ธ ๐Ÿ’ป -- **Saeee**: Every mistake is progress, and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– + + - **Ava**: Turning coffee into code โ˜• โžก๏ธ ๐Ÿ’ป + + - **Saeed**: Every mistake is progress, and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– From 848ed85f7821344c17c61a7f8f42208bb723a8d0 Mon Sep 17 00:00:00 2001 From: Saeed Imadeldin Osman Ali <49066304+Saeed-Emad@users.noreply.github.com> Date: Mon, 30 Dec 2024 10:09:42 +0300 Subject: [PATCH 10/65] Update README.md try fix the issue Add my contribution to the team's README file --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 53808e57a..eef1bd9e1 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,6 @@ Meet the Team! Each member brings something special to the table. - - **Ava**: Turning coffee into code โ˜• โžก๏ธ ๐Ÿ’ป + - **Ava** : Turning coffee into code โ˜• โžก๏ธ ๐Ÿ’ป - - **Saeed**: Every mistake is progress, and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– + - **Saeed** : Every mistake is progress , and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– From ff4ae18d5902ada14d28a8b5d1db614aa090265e Mon Sep 17 00:00:00 2001 From: Saeed Imadeldin Osman Ali <49066304+Saeed-Emad@users.noreply.github.com> Date: Mon, 30 Dec 2024 10:13:29 +0300 Subject: [PATCH 11/65] Update README.md try fix the issue Add my contribution to the team's README file --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index eef1bd9e1..76bb6f246 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,6 @@ Meet the Team! Each member brings something special to the table. - - **Ava** : Turning coffee into code โ˜• โžก๏ธ ๐Ÿ’ป + - **Ava**: Turning coffee into code โ˜• โžก๏ธ ๐Ÿ’ป - - **Saeed** : Every mistake is progress , and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– + - **Saeed**: Every mistake is progress , and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– From 4306e3a4dda10b432c9ad03ddee9d65158278862 Mon Sep 17 00:00:00 2001 From: Saeed Imadeldin Osman Ali <49066304+Saeed-Emad@users.noreply.github.com> Date: Mon, 30 Dec 2024 10:17:50 +0300 Subject: [PATCH 12/65] Update README.md try fix the issue Add my contribution to the team's README file --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 76bb6f246..62d9e4dbc 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,5 @@ California is dedicated to fostering a culture of trust, respect, and Meet the Team! Each member brings something special to the table. - - - **Ava**: Turning coffee into code โ˜• โžก๏ธ ๐Ÿ’ป - - - **Saeed**: Every mistake is progress , and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– +- **Ava**: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป +- **Saeee**: Every mistake is progress, and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– From 1783a51dd56fe81c77431c07930a24fd166fd61b Mon Sep 17 00:00:00 2001 From: Saeed Imadeldin Osman Ali <49066304+Saeed-Emad@users.noreply.github.com> Date: Mon, 30 Dec 2024 10:20:15 +0300 Subject: [PATCH 13/65] Update README.md try fix the issue Add my contribution to the team's README file --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 62d9e4dbc..9cbdbfbd4 100644 --- a/README.md +++ b/README.md @@ -14,5 +14,7 @@ California is dedicated to fostering a culture of trust, respect, and Meet the Team! Each member brings something special to the table. + - **Ava**: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป - **Saeee**: Every mistake is progress, and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– + From c383a145128afd567320c588c2dbf6799283b287 Mon Sep 17 00:00:00 2001 From: Saeed Imadeldin Osman Ali <49066304+Saeed-Emad@users.noreply.github.com> Date: Mon, 30 Dec 2024 10:23:48 +0300 Subject: [PATCH 14/65] Update README.md try fix the issue Add my contribution to the team's README file --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 9cbdbfbd4..f1b59c7db 100644 --- a/README.md +++ b/README.md @@ -17,4 +17,3 @@ Each member brings something special to the table. - **Ava**: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป - **Saeee**: Every mistake is progress, and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– - From b5b0772a1da42d82dcf4be8d099d04dc6dfc743a Mon Sep 17 00:00:00 2001 From: ava Date: Thu, 2 Jan 2025 21:59:02 +0300 Subject: [PATCH 15/65] Add Ava fun fact --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f1b59c7db..9e0580861 100644 --- a/README.md +++ b/README.md @@ -15,5 +15,6 @@ Meet the Team! Each member brings something special to the table. +- **Ava**: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป - **Ava**: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป - **Saeee**: Every mistake is progress, and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– From 6315b63dcf81185d2b7e815b6dbb7b9ecdf337b5 Mon Sep 17 00:00:00 2001 From: Nahom kiflu Date: Sat, 4 Jan 2025 11:00:36 +0300 Subject: [PATCH 16/65] ADD Nahom text --- README.md | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9e0580861..fc9205904 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,27 @@ +Hereโ€™s an updated version of your README file with your entry included: + +--- + # California Group Welcome to **California Group**, -California is dedicated to fostering a culture of trust, respect, and - accountability while promoting open communication and efficient collaboration. - Our goal is to create an environment that values diverse perspectives, - encourages teamwork, and drives success. We support continuous learning - and innovative thinking, enhancing our collaborative efforts. - Our shared commitment to growth and development empowers each member - to contribute and learn from collective experiences, ensuring we - work together effectively to achieve success. +California is dedicated to fostering a culture of trust, respect, and accountability +while promoting open communication and efficient collaboration. Our goal is to +create an environment that values diverse perspectives, encourages teamwork, and +drives success. We support continuous learning and innovative thinking, enhancing +our collaborative efforts. Our shared commitment to growth and development empowers +each member to contribute and learn from collective experiences, ensuring we work +together effectively to achieve success. -Meet the Team! +## Meet the Team Each member brings something special to the table. -- **Ava**: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป - **Ava**: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป - **Saeee**: Every mistake is progress, and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– +- **Nahom**: We ask not for a lighter burden, but for broader shoulders. ๐Ÿ’ช๐ŸŒ + +--- + +Let me know if you need any further modifications! From d258919fe222246caee9f628f35089e89820553a Mon Sep 17 00:00:00 2001 From: Nahom kiflu Date: Sat, 4 Jan 2025 11:03:24 +0300 Subject: [PATCH 17/65] ADD Nahom text --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index fc9205904..1a2f5839c 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,3 @@ Each member brings something special to the table. - **Ava**: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป - **Saeee**: Every mistake is progress, and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– - **Nahom**: We ask not for a lighter burden, but for broader shoulders. ๐Ÿ’ช๐ŸŒ - ---- - -Let me know if you need any further modifications! From 0af01c279cc24f7426d300c22c06f490e55de309 Mon Sep 17 00:00:00 2001 From: Nahom kiflu Date: Sat, 4 Jan 2025 11:04:44 +0300 Subject: [PATCH 18/65] ADD Nahom text --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 1a2f5839c..95b068802 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ -Hereโ€™s an updated version of your README file with your entry included: - ---- - # California Group Welcome to **California Group**, From 3c9a6b9f2af325430a3a8594e7bcce2d2408adc3 Mon Sep 17 00:00:00 2001 From: Cynthia-Wairimu Date: Sun, 5 Jan 2025 21:51:25 +0300 Subject: [PATCH 19/65] add my learning goal --- collaboration/learning_goals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/collaboration/learning_goals.md b/collaboration/learning_goals.md index ad43d5204..a8472c9f2 100644 --- a/collaboration/learning_goals.md +++ b/collaboration/learning_goals.md @@ -60,7 +60,7 @@ strategies. - Become proficient in testing and documentation for clear, accurate, and reliable code. -### **Member 4** +### **Cynthia Wairimu** - Improve debugging and troubleshooting skills to solve problems efficiently. - Strike a balance between speed and quality in all aspects of development. From a86c1e6f729ec51fb49191cd2bb657f845846460 Mon Sep 17 00:00:00 2001 From: Saeed Imadeldin Osman Ali <49066304+Saeed-Emad@users.noreply.github.com> Date: Tue, 7 Jan 2025 17:43:45 +0300 Subject: [PATCH 20/65] Update settings.json fix the settings.json conflict. --- .vscode/settings.json | 1 - 1 file changed, 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index dca4ae409..cf26bf81f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -131,4 +131,3 @@ "python.testing.pytestEnabled": false, "python.testing.unittestEnabled": true } - From 297f937b576b94ad16d0a056c2ff0974e4073688 Mon Sep 17 00:00:00 2001 From: Hasan Zemzem Date: Wed, 8 Jan 2025 04:52:45 +0300 Subject: [PATCH 21/65] Adding Palindrome code and test --- solutions/palindrome_checker.py | 42 ++++++++++++++++++++ solutions/tests/test_palindrome_checker.py | 46 ++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 solutions/palindrome_checker.py create mode 100644 solutions/tests/test_palindrome_checker.py diff --git a/solutions/palindrome_checker.py b/solutions/palindrome_checker.py new file mode 100644 index 000000000..486d0ea48 --- /dev/null +++ b/solutions/palindrome_checker.py @@ -0,0 +1,42 @@ +""" +This module contains a function to check if a string is a palindrome. + +A palindrome is a string that reads the same forward and backward, ignoring spaces, punctuation, and capitalization. +""" + + +def is_palindrome(s: str) -> bool: + """ + Check if a given string is a palindrome, ignoring spaces, punctuation, and capitalization. + + Parameters: + s (str): The input string to check. + + Returns: + bool: True if the input string is a palindrome, False otherwise. + + Example: + >>> is_palindrome("A man, a plan, a canal: Panama") + True + >>> is_palindrome("Hello") + False + """ + # Normalize the string: remove non-alphanumeric characters and convert to lowercase + normalized = "".join(char.lower() for char in s if char.isalnum()) + # Check if the normalized string is equal to its reverse + return normalized == normalized[::-1] + + +# Example usage +if __name__ == "__main__": + test_strings = [ + "A man, a plan, a canal: Panama", + "Racecar", + "Hello", + "", + "12321", + "Not a palindrome", + ] + + for test in test_strings: + print(f"'{test}' is a palindrome: {is_palindrome(test)}") diff --git a/solutions/tests/test_palindrome_checker.py b/solutions/tests/test_palindrome_checker.py new file mode 100644 index 000000000..df31143bb --- /dev/null +++ b/solutions/tests/test_palindrome_checker.py @@ -0,0 +1,46 @@ +""" +This module contains unit tests for the `is_palindrome` function in `palindrome_checker.py`. + +The `is_palindrome` function determines whether a string is a palindrome, ignoring spaces, +punctuation, and capitalization. +""" + +import unittest + +from ..palindrome_checker import is_palindrome + + +class TestPalindromeChecker(unittest.TestCase): + """ + Unit tests for the `is_palindrome` function. + """ + + def test_palindromes(self): + """ + Test cases where the input string is a palindrome. + """ + self.assertTrue(is_palindrome("A man, a plan, a canal: Panama")) + self.assertTrue(is_palindrome("Racecar")) + self.assertTrue(is_palindrome("12321")) + self.assertTrue(is_palindrome("")) + + def test_non_palindromes(self): + """ + Test cases where the input string is not a palindrome. + """ + self.assertFalse(is_palindrome("Hello")) + self.assertFalse(is_palindrome("Not a palindrome")) + self.assertFalse(is_palindrome("Python Programming")) + + def test_edge_cases(self): + """ + Test edge cases including single characters and strings with special characters. + """ + self.assertTrue(is_palindrome("a")) + self.assertTrue(is_palindrome(" ")) + self.assertTrue(is_palindrome("!!")) + self.assertTrue(is_palindrome("Able , was I saw eLba")) + + +if __name__ == "__main__": + unittest.main() From d46e65ab6d997ba0712b96b73c97c22a1b9b31ba Mon Sep 17 00:00:00 2001 From: ciiyaa Date: Wed, 8 Jan 2025 15:20:53 +0300 Subject: [PATCH 22/65] Add about repo in main readme.md --- README.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6f35c2b00..da6e740a4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # California Group -Welcome to **California Group**, +Welcome to **California Group** Repository, + +We are proudly part of the **MIT Computer and Data Science Foundation Track _2024-2025_**. California is dedicated to fostering a culture of trust, respect, and accountability while promoting open communication and efficient collaboration. Our goal is to @@ -15,8 +17,20 @@ together effectively to achieve success. Each member brings something special to the table. - **Ava**: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป -- **Saeee**: Every mistake is progress, and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– +- **Saeed**: Every mistake is progress, and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– - **Nahom**: We ask not for a lighter burden, but for broader shoulders. ๐Ÿ’ช๐ŸŒ - **WuorBhang**: Like comedy! making people laugh ๐Ÿ˜ƒ - **Novel Yonas**: I can spend 8 hrs in GYM - **Hasan**: I breath Cyber Secur1ty ๐Ÿฅท๐Ÿผ๐Ÿ›ก๐Ÿ’ป + +## About This Repository + +This repository serves as a centralized hub for contributing Python solutions to +various coding challenges and implementing robust test cases to ensure their +accuracy and reliability. + +Inside `solutions/` folder each file is designed to be modular and concise, +addressing a specific problem. + +The `solutions/tests/` folder contains unit tests for each solution +Tests ensure that the solutions are accurate and can handle various edge cases. From 21846bcd681f1e4c218e06c13282886a01b30470 Mon Sep 17 00:00:00 2001 From: Hasan Zemzem Date: Wed, 8 Jan 2025 15:25:29 +0300 Subject: [PATCH 23/65] Matching function name with the file name, and correcting test assertions --- solutions/tests/test_vowel_counter.py | 32 ++++++++++++++------------- solutions/vowel_counter.py | 8 +++---- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/solutions/tests/test_vowel_counter.py b/solutions/tests/test_vowel_counter.py index 0cd93dc62..d4292f6b9 100644 --- a/solutions/tests/test_vowel_counter.py +++ b/solutions/tests/test_vowel_counter.py @@ -1,7 +1,7 @@ """ This module contains unit tests for the vowel_counter module. It includes test cases for the following function: -- count_vowels: Test the function that counts vowels in a string. +- vowel_counter: Test the function that counts vowels in a string. Tests cover various cases including normal strings, empty strings, and case insensitivity. @@ -12,7 +12,7 @@ import unittest -from ..vowel_counter import count_vowels +from ..vowel_counter import vowel_counter class TestVowelCounter(unittest.TestCase): @@ -20,28 +20,30 @@ class TestVowelCounter(unittest.TestCase): Test suite for the vowel_counter module. """ - def test_count_vowels(self): + def test_vowel_counter(self): """ - Test the count_vowels function. + Test the vowel_counter function. """ # Test for different cases - self.assertEqual(count_vowels("Hello World"), 3) # 'e', 'o', 'o' - self.assertEqual(count_vowels("Python"), 1) # 'o' - self.assertEqual(count_vowels("aeiou"), 5) # all vowels - self.assertEqual(count_vowels("XYZ"), 0) # no vowels - self.assertEqual(count_vowels("HELLO WORLD!"), 3) # 'E', 'O', 'O' + self.assertEqual(vowel_counter("Hello World"), 3) # 'e', 'o', 'o' + self.assertEqual(vowel_counter("Python"), 1) # 'o' + self.assertEqual(vowel_counter("aeiou"), 5) # all vowels + self.assertEqual(vowel_counter("XYZ"), 0) # no vowels + self.assertEqual(vowel_counter("HELLO WORLD!"), 3) # 'E', 'O', 'O' - def test_count_vowels_empty(self): + def test_vowel_counter_empty(self): """ - Test count_vowels for empty string. + Test vowel_counter for empty string. """ - self.assertEqual(count_vowels(""), 0) # No vowels in an empty string + self.assertEqual(vowel_counter(""), 0) # No vowels in an empty string - def test_count_vowels_case_sensitive(self): + def test_vowel_counter_case_sensitive(self): """ - Test that the count_vowels function is case-insensitive. + Test that the vowel_counter function is case-insensitive. """ - self.assertEqual(count_vowels("AaEeIiOoUu"), 10) # All vowels, case-insensitive + self.assertEqual( + vowel_counter("AaEeIiOoUu"), 10 + ) # All vowels, case-insensitive if __name__ == "__main__": diff --git a/solutions/vowel_counter.py b/solutions/vowel_counter.py index 9e5bab0a0..227c36c77 100644 --- a/solutions/vowel_counter.py +++ b/solutions/vowel_counter.py @@ -3,15 +3,15 @@ The function considers vowels as 'a', 'e', 'i', 'o', 'u' in both lowercase and uppercase. Function: -- count_vowels: Counts vowels in a provided string. +- vowel_counter: Counts vowels in a provided string. Example: - >>> count_vowels("Hello World") + >>> vowel_counter("Hello World") 3 """ -def count_vowels(text): +def vowel_counter(text): """ Counts the number of vowels in the provided text. @@ -24,7 +24,7 @@ def count_vowels(text): int: The number of vowels in the input string. Example: - >>> count_vowels("Hello World") + >>> vowel_counter("Hello World") 3 """ vowels = "aeiouAEIOU" From 412ba7475389823d9c37e89117a4757ff47bc762 Mon Sep 17 00:00:00 2001 From: Hasan Zemzem Date: Wed, 8 Jan 2025 15:26:01 +0300 Subject: [PATCH 24/65] separating assertions to make one at a time --- solutions/tests/test_vowel_counter.py | 40 +++++++++++++++++++++------ 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/solutions/tests/test_vowel_counter.py b/solutions/tests/test_vowel_counter.py index d4292f6b9..706cdff15 100644 --- a/solutions/tests/test_vowel_counter.py +++ b/solutions/tests/test_vowel_counter.py @@ -20,16 +20,40 @@ class TestVowelCounter(unittest.TestCase): Test suite for the vowel_counter module. """ - def test_vowel_counter(self): + def test_vowel_counter_hello_world(self): """ - Test the vowel_counter function. + Test the vowel_counter function with the string 'Hello World'. + Expect 3 vowels: 'e', 'o', 'o'. """ - # Test for different cases - self.assertEqual(vowel_counter("Hello World"), 3) # 'e', 'o', 'o' - self.assertEqual(vowel_counter("Python"), 1) # 'o' - self.assertEqual(vowel_counter("aeiou"), 5) # all vowels - self.assertEqual(vowel_counter("XYZ"), 0) # no vowels - self.assertEqual(vowel_counter("HELLO WORLD!"), 3) # 'E', 'O', 'O' + self.assertEqual(vowel_counter("Hello World"), 3) + + def test_vowel_counter_python(self): + """ + Test the vowel_counter function with the string 'Python'. + Expect 1 vowel: 'o'. + """ + self.assertEqual(vowel_counter("Python"), 1) + + def test_vowel_counter_all_vowels(self): + """ + Test the vowel_counter function with the string 'aeiou'. + Expect 5 vowels: all vowels are present. + """ + self.assertEqual(vowel_counter("aeiou"), 5) + + def test_vowel_counter_no_vowels(self): + """ + Test the vowel_counter function with the string 'XYZ'. + Expect 0 vowels: no vowels are present. + """ + self.assertEqual(vowel_counter("XYZ"), 0) + + def test_vowel_counter_uppercase(self): + """ + Test the vowel_counter function with the string 'HELLO WORLD!'. + Expect 3 vowels: 'E', 'O', 'O'. + """ + self.assertEqual(vowel_counter("HELLO WORLD!"), 3) def test_vowel_counter_empty(self): """ From 6024f713ef49440948ae69a655119d19255aef59 Mon Sep 17 00:00:00 2001 From: Wuor Bhang <143351848+WuorBhang@users.noreply.github.com> Date: Wed, 8 Jan 2025 22:39:51 +0000 Subject: [PATCH 25/65] correcting 0-repo and conflict on someone use my branch to create their solution too --- collaboration/guide/0_repository_setup.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/collaboration/guide/0_repository_setup.md b/collaboration/guide/0_repository_setup.md index c48f383da..45ec6e1f2 100644 --- a/collaboration/guide/0_repository_setup.md +++ b/collaboration/guide/0_repository_setup.md @@ -14,8 +14,9 @@ it for collaboration: - Change your [repository description](https://stackoverflow.com/questions/7757751/how-do-you-change-a-repository-description-on-github) - Add or remove topics from your repository - - Update your main README with your group name and an initial - overview of your project. (You can change this as much as you want.) + - Update your main README with your group name and + an initial + overview of your project. (You can change the initial such as you want.) - Under settings in your repository select: - _Issues_ - _Projects_ From 0aff102f6e6c66f24595d22776ba38d1bac4819d Mon Sep 17 00:00:00 2001 From: Wuor Bhang <143351848+WuorBhang@users.noreply.github.com> Date: Wed, 8 Jan 2025 22:48:06 +0000 Subject: [PATCH 26/65] correcting 0-repo and conflict on someone use my branch to create their solution too now --- collaboration/guide/0_repository_setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/collaboration/guide/0_repository_setup.md b/collaboration/guide/0_repository_setup.md index 45ec6e1f2..0f62ab428 100644 --- a/collaboration/guide/0_repository_setup.md +++ b/collaboration/guide/0_repository_setup.md @@ -16,7 +16,7 @@ it for collaboration: - Add or remove topics from your repository - Update your main README with your group name and an initial - overview of your project. (You can change the initial such as you want.) + overview of your project. (You can change this as much as you want.) - Under settings in your repository select: - _Issues_ - _Projects_ From 4c40805df1ef06d1edaffaf0302782aa59c79901 Mon Sep 17 00:00:00 2001 From: Hasan Zemzem Date: Thu, 9 Jan 2025 02:06:39 +0300 Subject: [PATCH 27/65] Making changes as reviewers requested --- solutions/palindrome_checker.py | 29 +++--- solutions/tests/test_palindrome_checker.py | 101 ++++++++++++++++----- 2 files changed, 91 insertions(+), 39 deletions(-) diff --git a/solutions/palindrome_checker.py b/solutions/palindrome_checker.py index 486d0ea48..e40c64da7 100644 --- a/solutions/palindrome_checker.py +++ b/solutions/palindrome_checker.py @@ -5,7 +5,7 @@ """ -def is_palindrome(s: str) -> bool: +def palindrome_checker(s: str) -> bool: """ Check if a given string is a palindrome, ignoring spaces, punctuation, and capitalization. @@ -15,28 +15,21 @@ def is_palindrome(s: str) -> bool: Returns: bool: True if the input string is a palindrome, False otherwise. + Raises: + TypeError: If the input `s` is not a string. + Example: - >>> is_palindrome("A man, a plan, a canal: Panama") + >>> palindrome_checker("A man, a plan, a canal: Panama") True - >>> is_palindrome("Hello") + >>> palindrome_checker("Hello") False + >>> palindrome_checker("12321") + True """ + # Defensive assertion: Ensure the input is a string + if not isinstance(s, str): + raise TypeError("Input must be a string") # Normalize the string: remove non-alphanumeric characters and convert to lowercase normalized = "".join(char.lower() for char in s if char.isalnum()) # Check if the normalized string is equal to its reverse return normalized == normalized[::-1] - - -# Example usage -if __name__ == "__main__": - test_strings = [ - "A man, a plan, a canal: Panama", - "Racecar", - "Hello", - "", - "12321", - "Not a palindrome", - ] - - for test in test_strings: - print(f"'{test}' is a palindrome: {is_palindrome(test)}") diff --git a/solutions/tests/test_palindrome_checker.py b/solutions/tests/test_palindrome_checker.py index df31143bb..d0a86cfdb 100644 --- a/solutions/tests/test_palindrome_checker.py +++ b/solutions/tests/test_palindrome_checker.py @@ -1,45 +1,104 @@ """ -This module contains unit tests for the `is_palindrome` function in `palindrome_checker.py`. +This module contains unit tests for the `palindrome_checker` function in `palindrome_checker.py`. -The `is_palindrome` function determines whether a string is a palindrome, ignoring spaces, +The `palindrome_checker` function determines whether a string is a palindrome, ignoring spaces, punctuation, and capitalization. """ import unittest -from ..palindrome_checker import is_palindrome +from solutions.palindrome_checker import palindrome_checker class TestPalindromeChecker(unittest.TestCase): """ - Unit tests for the `is_palindrome` function. + Unit tests for the `palindrome_checker` function. """ - def test_palindromes(self): + # Test cases where the input string is a palindrome + def test_palindrome_phrase(self): """ - Test cases where the input string is a palindrome. + Test a palindrome phrase with punctuation and spaces. """ - self.assertTrue(is_palindrome("A man, a plan, a canal: Panama")) - self.assertTrue(is_palindrome("Racecar")) - self.assertTrue(is_palindrome("12321")) - self.assertTrue(is_palindrome("")) + self.assertTrue(palindrome_checker("A man, a plan, a canal: Panama")) - def test_non_palindromes(self): + def test_palindrome_single_word(self): """ - Test cases where the input string is not a palindrome. + Test a single-word palindrome. """ - self.assertFalse(is_palindrome("Hello")) - self.assertFalse(is_palindrome("Not a palindrome")) - self.assertFalse(is_palindrome("Python Programming")) + self.assertTrue(palindrome_checker("Racecar")) - def test_edge_cases(self): + def test_palindrome_numeric(self): """ - Test edge cases including single characters and strings with special characters. + Test a numeric palindrome. """ - self.assertTrue(is_palindrome("a")) - self.assertTrue(is_palindrome(" ")) - self.assertTrue(is_palindrome("!!")) - self.assertTrue(is_palindrome("Able , was I saw eLba")) + self.assertTrue(palindrome_checker("12321")) + + def test_palindrome_empty_string(self): + """ + Test an empty string as a palindrome. + """ + self.assertTrue(palindrome_checker("")) + + # Test cases where the input string is not a palindrome + def test_non_palindrome_single_word(self): + """ + Test a non-palindrome word. + """ + self.assertFalse(palindrome_checker("Hello")) + + def test_non_palindrome_phrase(self): + """ + Test a non-palindrome phrase. + """ + self.assertFalse(palindrome_checker("Not a palindrome")) + + # Test edge cases + def test_edge_case_single_letter(self): + """ + Test a single-letter string. + """ + self.assertTrue(palindrome_checker("a")) + + def test_edge_case_single_space(self): + """ + Test a single space character. + """ + self.assertTrue(palindrome_checker(" ")) + + def test_edge_case_special_characters(self): + """ + Test a string with only special characters. + """ + self.assertTrue(palindrome_checker("!!")) + + def test_edge_case_mixed_phrase(self): + """ + Test a complex palindrome phrase with mixed case and punctuation. + """ + self.assertTrue(palindrome_checker("Able , was I saw eLba")) + + # Defensive assertion tests + def test_invalid_input_type_integer(self): + """ + Test that the function raises a TypeError for non-string input (integer). + """ + with self.assertRaises(TypeError): + palindrome_checker(12345) + + def test_invalid_input_type_list(self): + """ + Test that the function raises a TypeError for non-string input (list). + """ + with self.assertRaises(TypeError): + palindrome_checker(["a", "b", "c"]) + + def test_invalid_input_type_none(self): + """ + Test that the function raises a TypeError for non-string input (None). + """ + with self.assertRaises(TypeError): + palindrome_checker(None) if __name__ == "__main__": From 168ba18b7ffcbfed41f2b04a907d7f4b6376aa56 Mon Sep 17 00:00:00 2001 From: Wuor Bhang <143351848+WuorBhang@users.noreply.github.com> Date: Wed, 8 Jan 2025 23:39:04 +0000 Subject: [PATCH 28/65] updating my branch since someone use it to push and commit their solutions --- solutions/is_square.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/solutions/is_square.py b/solutions/is_square.py index 2ca824ae9..fe193e7ba 100644 --- a/solutions/is_square.py +++ b/solutions/is_square.py @@ -6,14 +6,14 @@ Module contents: - is_square: checks if a given integer is a perfect square. -Created on XX XX XX +Created on 26th/Dec/22024 @author: WUOR BHANG GATWECH Challenge is from the Codewars website. Defining the square root of a given number: -In this kata, you will create a function that determines whether a non-negative +In this challenge, I will create a function that determines whether a non-negative integer is a perfect square. The function returns `True` if the input is a perfect square and `False` otherwise. From a7f0f5710fe908c84e150e1ce9b49f8be15335c4 Mon Sep 17 00:00:00 2001 From: Hasan Zemzem Date: Thu, 9 Jan 2025 02:41:54 +0300 Subject: [PATCH 29/65] updates as reviewer requested --- solutions/tests/test_vowel_counter.py | 23 ++++++++++++++------ solutions/vowel_counter.py | 31 +++++++++++++++++++++++++-- 2 files changed, 46 insertions(+), 8 deletions(-) diff --git a/solutions/tests/test_vowel_counter.py b/solutions/tests/test_vowel_counter.py index 706cdff15..d9cb2df10 100644 --- a/solutions/tests/test_vowel_counter.py +++ b/solutions/tests/test_vowel_counter.py @@ -55,20 +55,31 @@ def test_vowel_counter_uppercase(self): """ self.assertEqual(vowel_counter("HELLO WORLD!"), 3) - def test_vowel_counter_empty(self): - """ - Test vowel_counter for empty string. - """ - self.assertEqual(vowel_counter(""), 0) # No vowels in an empty string - def test_vowel_counter_case_sensitive(self): """ Test that the vowel_counter function is case-insensitive. + Expect 10 vowels: 'A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u'. """ self.assertEqual( vowel_counter("AaEeIiOoUu"), 10 ) # All vowels, case-insensitive + # Defensive assertion tests + def test_invalid_input_type_integer(self): + """Test that the function raises a TypeError for non-string input (integer).""" + with self.assertRaises(TypeError): + vowel_counter(12345) + + def test_invalid_input_type_list(self): + """Test that the function raises a TypeError for non-string input (list).""" + with self.assertRaises(TypeError): + vowel_counter(["a", "b", "c"]) + + def test_empty_string(self): + """Test that the function raises a ValueError for an empty string.""" + with self.assertRaises(ValueError): + vowel_counter("") + if __name__ == "__main__": unittest.main() diff --git a/solutions/vowel_counter.py b/solutions/vowel_counter.py index 227c36c77..55ebe3787 100644 --- a/solutions/vowel_counter.py +++ b/solutions/vowel_counter.py @@ -11,21 +11,48 @@ """ -def vowel_counter(text): +def vowel_counter(text) -> int: """ Counts the number of vowels in the provided text. Vowels are considered to be 'a', 'e', 'i', 'o', 'u' (both lowercase and uppercase). - Args: + Strategy: + - First, ensure the input is valid: + - Check that the input is a string. + - Ensure the input is not empty. + - Then, iterate through the string to count vowels: + - Convert the string to lowercase for consistent comparison. + - Check each character against the list of vowels. + - Finally, return the total number of vowels found. + + Parameters: text (str): The input string to count vowels in. + The purpose of this argument is to provide the text where the vowels (a, e, i, o, u) are searched for. Returns: int: The number of vowels in the input string. + Raises: + TypeError: If the input `text` is not a string. + ValueError: If the input `text` is an empty string. + Example: >>> vowel_counter("Hello World") 3 + >>> vowel_counter("Hasan") + 2 + >>> vowel_counter("Shy myths fly by.") + 0 """ + # Defensive assertion: Ensure the input is a string + if not isinstance(text, str): + raise TypeError("Input must be a string") + + # Defensive assertion: Ensure the string is not empty + if not text: + raise ValueError("Input string cannot be empty") + + # Define vowels and count occurrences vowels = "aeiouAEIOU" return sum(1 for char in text if char in vowels) From 57a20a00c9c8e017f537c5b6ce4db60146aa77d3 Mon Sep 17 00:00:00 2001 From: ibrahemisba7 Date: Thu, 9 Jan 2025 12:29:10 +0300 Subject: [PATCH 30/65] Reorganize group norms file --- collaboration/README.md | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/collaboration/README.md b/collaboration/README.md index 0a18ab57d..75ea03812 100644 --- a/collaboration/README.md +++ b/collaboration/README.md @@ -83,37 +83,3 @@ Our team prioritizes productivity through clear communication, timely task - Use emoji codes for quick replies and a "compliments jar" in Slack to recognize contributions. - During challenging discussions, pause to ensure everyone feels heard. - -## Team Introduction - -Welcome to our project! We're excited to share a bit about the vibrant team - behind the scenes. Each member brings unique talents and personalities that - contribute to our success. Hereโ€™s a little introduction to our team: - -## Meet Our Team ๐ŸŽ‰ - -### 1. Wuor Bhang - -- Fun Fact: I like comedy! Whether itโ€™s stand-up or witty banter, - I love what make people laugh. It's all about bringing joy and a positive - vibe to our work! - -### 2. Novel Yonas - -- Fun Fact: I can spend 8 hrs in GYM. - -### 3. [Team Member Name] - -- Fun Fact: [Fun fact or something theyโ€™d like to share.] - -### 4. [Team Member Name] - -- Fun Fact: [Fun fact or something theyโ€™d like to share.] - -### 5. [Team Member Name] - -- Fun Fact: [Fun fact or something theyโ€™d like to share.] - -### 6. [Team Member Name] - -- Fun Fact: [Fun fact or something theyโ€™d like to share.] From bf7fba2013717939889e4414ba4c08887dabe0b3 Mon Sep 17 00:00:00 2001 From: urz1 Date: Thu, 9 Jan 2025 12:30:33 +0300 Subject: [PATCH 31/65] chore: remove solution files and tests which have not been revewied --- solutions/check_straight_line.py | 47 -------------- solutions/max_coders_chessboard.py | 55 ---------------- solutions/tests/test_check_straight_line.py | 65 ------------------- solutions/tests/test_max_coders_chessboard.py | 42 ------------ 4 files changed, 209 deletions(-) delete mode 100644 solutions/check_straight_line.py delete mode 100644 solutions/max_coders_chessboard.py delete mode 100644 solutions/tests/test_check_straight_line.py delete mode 100644 solutions/tests/test_max_coders_chessboard.py diff --git a/solutions/check_straight_line.py b/solutions/check_straight_line.py deleted file mode 100644 index dede53e12..000000000 --- a/solutions/check_straight_line.py +++ /dev/null @@ -1,47 +0,0 @@ -""" -Module for checking if a set of coordinates lie on a straight line. -""" - -from typing import List - - -class Solution: - """ - A solution to determine if given points lie on a straight line. - """ - - def check_straight_line(self, coordinates: List[List[int]]) -> bool: - """ - Determines if the given coordinates form a straight line. - - Arguments: - coordinates: List[List[int]] - - List of 2D coordinates where each coordinate is represented as [x, y]. - - At least two points are required. - - Returns: - bool - - True if all the points lie on a straight line, otherwise False. - - Raises: - ValueError: If less than two points are provided. - """ - - # Defensive assertion - if len(coordinates) < 2: - raise ValueError("At least two points are required to determine a line.") - - # Calculate the slope using differences to avoid floating-point issues - dx = coordinates[1][0] - coordinates[0][0] - dy = coordinates[1][1] - coordinates[0][1] - - # Iterate through the points - for i in range(2, len(coordinates)): - x_diff = coordinates[i][0] - coordinates[i - 1][0] - y_diff = coordinates[i][1] - coordinates[i - 1][1] - - # Use cross multiplication to compare slopes - if dy * x_diff != dx * y_diff: - return False - - return True diff --git a/solutions/max_coders_chessboard.py b/solutions/max_coders_chessboard.py deleted file mode 100644 index 2ff93e01a..000000000 --- a/solutions/max_coders_chessboard.py +++ /dev/null @@ -1,55 +0,0 @@ -""" -This module provides a function to calculate the maximum number of Coders -that can be placed on an n x n chessboard such that no two Coders attack -each other. It also generates the configuration of the chessboard. -""" - -from typing import List, Tuple - - -def max_coders_chessboard(n: int) -> Tuple[int, List[str]]: - """ - Calculates the maximum number of Coders that can be placed on an n x n - chessboard without any two Coders attacking each other. - - Arguments: - n : int - The size of the chessboard (1 โ‰ค n โ‰ค 1000). - - Returns: - Tuple[int, List[str]] - - The maximum number of Coders that can be placed. - - The configuration of the chessboard as a list of strings. - - Raises: - ValueError: If `n` is not in the range 1 to 1000 inclusive. - - Examples: - >>> max_coders_chessboard(3) - (5, ['C.C', '.C.', 'C.C']) - - >>> max_coders_chessboard(4) - (8, ['C.C.', '.C.C', 'C.C.', '.C.C']) - - >>> max_coders_chessboard(1) - (1, ['C']) - """ - if not (1 <= n <= 1000): - raise ValueError( - "The size of the chessboard must be between 1 and 1000 inclusive." - ) - - count = 0 - board = [] - - for i in range(n): - row = [] - for j in range(n): - if (i + j) % 2 == 0: # Checkerboard pattern - row.append("C") - count += 1 - else: - row.append(".") - board.append("".join(row)) - - return count, board diff --git a/solutions/tests/test_check_straight_line.py b/solutions/tests/test_check_straight_line.py deleted file mode 100644 index 745446dd7..000000000 --- a/solutions/tests/test_check_straight_line.py +++ /dev/null @@ -1,65 +0,0 @@ -""" -Unit tests for the check_straight_line module. -""" - -import unittest -from solutions.check_straight_line import Solution - - -class TestCheckStraightLine(unittest.TestCase): - """ - Test cases for the Solution class's checkStraightLine method. - """ - - def test_all_points_on_line(self): - """ - Test that the function correctly identifies points on a straight line. - """ - solution = Solution() - coordinates = [[1, 2], [2, 3], [3, 4]] - self.assertTrue(solution.check_straight_line(coordinates)) - - def test_points_not_on_line(self): - """ - Test that the function correctly identifies points not on a straight line. - """ - solution = Solution() - coordinates = [[1, 1], [2, 2], [3, 4]] - self.assertFalse(solution.check_straight_line(coordinates)) - - def test_vertical_line(self): - """ - Test that the function works for vertical lines. - """ - solution = Solution() - coordinates = [[2, 1], [2, 3], [2, 5]] - self.assertTrue(solution.check_straight_line(coordinates)) - - def test_insufficient_points(self): - """ - Test that the function raises an exception for fewer than two points. - """ - solution = Solution() - coordinates = [[1, 1]] - with self.assertRaises(ValueError): - solution.check_straight_line(coordinates) - - def test_horizontal_line(self): - """ - Test that the function works for horizontal lines. - """ - solution = Solution() - coordinates = [[1, 2], [3, 2], [5, 2]] - self.assertTrue(solution.check_straight_line(coordinates)) - - def test_boundary_case(self): - """ - Test that the function handles edge cases for large input ranges. - """ - solution = Solution() - coordinates = [[-1000000, -1000000], [0, 0], [1000000, 1000000]] - self.assertTrue(solution.check_straight_line(coordinates)) - - -if __name__ == "__main__": - unittest.main() diff --git a/solutions/tests/test_max_coders_chessboard.py b/solutions/tests/test_max_coders_chessboard.py deleted file mode 100644 index 4e665a003..000000000 --- a/solutions/tests/test_max_coders_chessboard.py +++ /dev/null @@ -1,42 +0,0 @@ -""" -Unit tests for the max_coders_chessboard function. -""" - -import unittest -from solutions.max_coders_chessboard import max_coders_chessboard - - -class TestMaxCodersChessboard(unittest.TestCase): - """ - Unit tests for the `max_coders_chessboard` function. - """ - - def test_small_board(self): - """Test the function with a small board size.""" - self.assertEqual(max_coders_chessboard(3), (5, ["C.C", ".C.", "C.C"])) - - def test_even_sized_board(self): - """Test the function with an even-sized board.""" - self.assertEqual( - max_coders_chessboard(4), (8, ["C.C.", ".C.C", "C.C.", ".C.C"]) - ) - - def test_single_cell_board(self): - """Test the function with a single-cell board.""" - self.assertEqual(max_coders_chessboard(1), (1, ["C"])) - - def test_invalid_board_size(self): - """Test the function raises an error for invalid board size.""" - with self.assertRaises(ValueError): - max_coders_chessboard(0) - - def test_large_board(self): - """Test the function with a large board size.""" - n = 1000 - result = max_coders_chessboard(n) - self.assertEqual(result[0], (n * n + 1) // 2) # Check max coders count - self.assertEqual(len(result[1]), n) # Check board size - - -if __name__ == "__main__": - unittest.main() From 6ba329177ef716ef182f956e10d88254ca52eb8c Mon Sep 17 00:00:00 2001 From: Cynthia-Wairimu Date: Thu, 9 Jan 2025 20:19:51 +0300 Subject: [PATCH 32/65] resolved learning goals conflict & added Cynthia to main README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index da6e740a4..0d50020b7 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ Each member brings something special to the table. - **WuorBhang**: Like comedy! making people laugh ๐Ÿ˜ƒ - **Novel Yonas**: I can spend 8 hrs in GYM - **Hasan**: I breath Cyber Secur1ty ๐Ÿฅท๐Ÿผ๐Ÿ›ก๐Ÿ’ป +- **Cynthia**: Crafting solutions, one line of code at a time. ๐Ÿ’ปโœจ ## About This Repository From e1d2aac9d7260a09b07dbd251fa44bd38c1d8c79 Mon Sep 17 00:00:00 2001 From: Novel-Y Date: Thu, 9 Jan 2025 22:00:25 +0300 Subject: [PATCH 33/65] adding my spacific gravity calculator --- .vscode/launch.json | 1 + solutions/specific_gravity_calculator.py | 55 +++++++++++++++++++ .../tests/test_specific_gravity_calculator.py | 38 +++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 solutions/specific_gravity_calculator.py create mode 100644 solutions/tests/test_specific_gravity_calculator.py diff --git a/.vscode/launch.json b/.vscode/launch.json index 4342f4c90..b5ac3f602 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,6 +4,7 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ + { "name": "ET: Debug Python (unittest)", "type": "debugpy", diff --git a/solutions/specific_gravity_calculator.py b/solutions/specific_gravity_calculator.py new file mode 100644 index 000000000..73c52de0e --- /dev/null +++ b/solutions/specific_gravity_calculator.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +A module for calculating the specific gravity of a substance. + +Module contents: + - calculate_specific_gravity: calculates the specific gravity of a substance given its density. + +Created on 06/01/2025 + +@author: Novel Yonas + +Specific Gravity Calculator: +This module provides functionality to calculate the specific gravity of a substance. +Specific gravity is a dimensionless quantity that compares the density of a substance +to the density of a reference substance (typically water at 4ยฐC, which has a density +of 1000 kg/mยณ). + +The specific gravity is calculated using the formula: +Specific Gravity = Density of substance / Density of reference substance + +In this module, we use water at 4ยฐC as the reference substance, with a density of 1000 kg/mยณ. + +Usage: + The main function in this module is 'calculate_specific_gravity', which takes + the density of a substance as input and returns its specific gravity. +""" + + +def calculate_specific_gravity(a, w): + """ + Calculates the specific gravity of a rock mass. + + Args: + a: Float, weight of the rock mass measured in air. + w: Float, weight of the rock mass measured in water. + + Returns: + Float: The specific gravity of the rock mass. + None: If the weight in air is less than or equal to the weight in water. + + Raises: + ValueError: If invalid inputs are provided or the calculation cannot proceed. + + Examples: + >>> calculate_specific_gravity(4, 2) + 2.0 + >>> calculate_specific_gravity(5, 2) + 1.6666666666666667 + >>> calculate_specific_gravity(2, 2) + + """ + if a <= w: + return None # Return None to indicate an error + return a / (a - w) diff --git a/solutions/tests/test_specific_gravity_calculator.py b/solutions/tests/test_specific_gravity_calculator.py new file mode 100644 index 000000000..203380a59 --- /dev/null +++ b/solutions/tests/test_specific_gravity_calculator.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" + Unit test class for the `calculate_specific_gravity` function. + + This class contains test cases to validate the functionality and edge cases of the + `calculate_specific_gravity` function, ensuring it handles valid inputs, invalid inputs, + and edge conditions gracefully. + + Test cases include: + - Valid inputs where the specific gravity is correctly calculated. + - Cases where the weight in air equals or is less than the weight in water. + - Inputs with negative values to check for proper error handling. +""" +import unittest +from solutions.specific_gravity_calculator import calculate_specific_gravity + + +class TestCalculateSpecificGravity(unittest.TestCase): + """specific_gravity_calculator""" + + def test_valid_input(self): + """Test with valid inputs.""" + self.assertAlmostEqual(calculate_specific_gravity(4, 2), 2.0) + self.assertAlmostEqual(calculate_specific_gravity(5, 2), 1.6666666666666667) + + def test_equal_weights(self): + """Test when weight in air is equal to weight in water.""" + self.assertIsNone(calculate_specific_gravity(2, 2)) + + def test_weight_in_air_less_than_water(self): + """Test when weight in air is less than weight in water.""" + self.assertIsNone(calculate_specific_gravity(1, 2)) + + def test_invalid_inputs(self): + """Test with invalid inputs like negative values.""" + self.assertIsNone(calculate_specific_gravity(-4, 2)) + self.assertIsNone(calculate_specific_gravity(-4, -2)) From 44760383c1304e283e6586ceed926d557b341aa5 Mon Sep 17 00:00:00 2001 From: Hasan Zemzem Date: Thu, 9 Jan 2025 22:14:53 +0300 Subject: [PATCH 34/65] Strategy removed from the docstrings, and distributed into each block of code --- solutions/vowel_counter.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/solutions/vowel_counter.py b/solutions/vowel_counter.py index 55ebe3787..3a56f5af1 100644 --- a/solutions/vowel_counter.py +++ b/solutions/vowel_counter.py @@ -17,15 +17,6 @@ def vowel_counter(text) -> int: Vowels are considered to be 'a', 'e', 'i', 'o', 'u' (both lowercase and uppercase). - Strategy: - - First, ensure the input is valid: - - Check that the input is a string. - - Ensure the input is not empty. - - Then, iterate through the string to count vowels: - - Convert the string to lowercase for consistent comparison. - - Check each character against the list of vowels. - - Finally, return the total number of vowels found. - Parameters: text (str): The input string to count vowels in. The purpose of this argument is to provide the text where the vowels (a, e, i, o, u) are searched for. From 9ce386964cc994f3baa532d32d49a78626261ef0 Mon Sep 17 00:00:00 2001 From: Novel-Y Date: Thu, 9 Jan 2025 22:18:28 +0300 Subject: [PATCH 35/65] fixing 1 --- solutions/specific_gravity_calculator.py | 3 ++- .../tests/test_specific_gravity_calculator.py | 19 +++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/solutions/specific_gravity_calculator.py b/solutions/specific_gravity_calculator.py index 73c52de0e..abea5bd1f 100644 --- a/solutions/specific_gravity_calculator.py +++ b/solutions/specific_gravity_calculator.py @@ -11,7 +11,8 @@ @author: Novel Yonas Specific Gravity Calculator: -This module provides functionality to calculate the specific gravity of a substance. +This module provides functionality to calculate the specific gravity +of a substance. Specific gravity is a dimensionless quantity that compares the density of a substance to the density of a reference substance (typically water at 4ยฐC, which has a density of 1000 kg/mยณ). diff --git a/solutions/tests/test_specific_gravity_calculator.py b/solutions/tests/test_specific_gravity_calculator.py index 203380a59..ddc600810 100644 --- a/solutions/tests/test_specific_gravity_calculator.py +++ b/solutions/tests/test_specific_gravity_calculator.py @@ -1,18 +1,21 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ - Unit test class for the `calculate_specific_gravity` function. +Unit test class for the `calculate_specific_gravity` function. - This class contains test cases to validate the functionality and edge cases of the - `calculate_specific_gravity` function, ensuring it handles valid inputs, invalid inputs, - and edge conditions gracefully. +This class contains test cases to validate the functionality +and edge cases of the +`calculate_specific_gravity` function, ensuring it handles valid inputs, invalid inputs, +and edge conditions gracefully. - Test cases include: - - Valid inputs where the specific gravity is correctly calculated. - - Cases where the weight in air equals or is less than the weight in water. - - Inputs with negative values to check for proper error handling. +Test cases include: +- Valid inputs where the specific gravity is correctly calculated. +- Cases where the weight in air equals or is less than the weight in water. +- Inputs with negative values to check for proper error handling. """ + import unittest + from solutions.specific_gravity_calculator import calculate_specific_gravity From c7129b00b180e7f6a80fbf741ba865207ba55bdd Mon Sep 17 00:00:00 2001 From: Novel-Y Date: Thu, 9 Jan 2025 22:59:20 +0300 Subject: [PATCH 36/65] added my review sessions calculator --- solutions/review_date_calculator.py | 76 +++++++++++++++++++ .../tests/test_review_date_calculator.py | 39 ++++++++++ 2 files changed, 115 insertions(+) create mode 100644 solutions/review_date_calculator.py create mode 100644 solutions/tests/test_review_date_calculator.py diff --git a/solutions/review_date_calculator.py b/solutions/review_date_calculator.py new file mode 100644 index 000000000..389afbed4 --- /dev/null +++ b/solutions/review_date_calculator.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +A module for calculating spaced repetition review days. + +Module contents: + - calculate_review_days: calculates review days based on an initial study day. + +Created on 07/01/2025 + +@author: Novel Yonas + +Spaced Repetition Review Calculator: +This module provides functionality to calculate review days for a spaced repetition +learning technique. It determines the next four review days based on an initial +study day, with each subsequent review spaced at double the interval of the previous one. + +The main function in this module is 'calculate_review_days', which is defined as follows: + + Calculate spaced repetition review days based on an initial study day. + + Args: + start_day (int): The day of the initial study session (1-31). + + Returns: + list[int]: A list of four spaced repetition review days. + Each subsequent review is spaced at double + the interval of the previous one, ignoring month and year changes. + +""" + + +def calculate_review_days(start_day): + """ + Calculate spaced repetition review days based on an initial study day. + + Args: + start_day (int): The day of the initial study session (1-31). + + Returns: + list[int]: A list of four spaced repetition review days. + Each subsequent review is spaced at double + the interval of the previous one, ignoring month and year changes. + + Examples: + >>> calculate_review_days(1) + [2, 4, 8, 16] + + >>> calculate_review_days(15) + [16, 18, 22, 30] + + >>> calculate_review_days(28) + [29, 31, 4, 12] + + >>> calculate_review_days(30) + [31, 2, 6, 14] + + >>> calculate_review_days(31) + [1, 3, 7, 15] + """ + review_days = [] # Initialize an empty list to store review days + current_day = start_day + interval = 1 # Start with 1 day to the first review + + for _ in range(4): # Loop to calculate four review days + # Calculate the next review day + current_day += interval + + # Adjust the day if it exceeds 31 + if current_day > 31: + current_day -= 31 + + review_days.append(current_day) # Add the calculated day to the list + interval *= 2 # Double the interval for the next review + + return review_days # Return the list of review days diff --git a/solutions/tests/test_review_date_calculator.py b/solutions/tests/test_review_date_calculator.py new file mode 100644 index 000000000..c25fb90f8 --- /dev/null +++ b/solutions/tests/test_review_date_calculator.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Unit test class for the `calculate_review_days` function. + +This class contains test cases to validate the functionality and edge cases of the +`calculate_review_days` function, ensuring it handles various input scenarios correctly +and produces the expected output for spaced repetition review schedules. + +The test suite aims to comprehensively cover the function's behavior, including: +- Correctness of the calculated review days. +- Proper handling of month transitions. +""" +import unittest +from solutions.review_date_calculator import calculate_review_days + + +class TestCalculateReviewDays(unittest.TestCase): + """Unit tests for the calculate_review_days function.""" + + def test_start_day_1(self): + """Test case for start day 1.""" + self.assertEqual(calculate_review_days(1), [2, 4, 8, 16]) + + def test_start_day_15(self): + """Test case for start day 15.""" + self.assertEqual(calculate_review_days(15), [16, 18, 22, 30]) + + def test_start_day_30(self): + """Test case for start day 30.""" + self.assertEqual(calculate_review_days(30), [31, 2, 6, 14]) + + def test_start_day_31(self): + """Test case for start day 31.""" + self.assertEqual(calculate_review_days(31), [1, 3, 7, 15]) + + def test_start_day_edge(self): + """Test case for an edge start day 28.""" + self.assertEqual(calculate_review_days(28), [29, 31, 4, 12]) From f84b7cb054824dda6271e2b7faa584e56f8f4c79 Mon Sep 17 00:00:00 2001 From: Novel-Y Date: Thu, 9 Jan 2025 23:19:08 +0300 Subject: [PATCH 37/65] fixed bugs in the test and function files --- solutions/review_date_calculator.py | 3 ++- solutions/tests/test_review_date_calculator.py | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/solutions/review_date_calculator.py b/solutions/review_date_calculator.py index 389afbed4..bcd7ababb 100644 --- a/solutions/review_date_calculator.py +++ b/solutions/review_date_calculator.py @@ -11,7 +11,8 @@ @author: Novel Yonas Spaced Repetition Review Calculator: -This module provides functionality to calculate review days for a spaced repetition +This module provides functionality to calculate review days +for a spaced repetition learning technique. It determines the next four review days based on an initial study day, with each subsequent review spaced at double the interval of the previous one. diff --git a/solutions/tests/test_review_date_calculator.py b/solutions/tests/test_review_date_calculator.py index c25fb90f8..056b8e120 100644 --- a/solutions/tests/test_review_date_calculator.py +++ b/solutions/tests/test_review_date_calculator.py @@ -3,7 +3,8 @@ """ Unit test class for the `calculate_review_days` function. -This class contains test cases to validate the functionality and edge cases of the +This class contains test cases to validate the functionality +and edge cases of the `calculate_review_days` function, ensuring it handles various input scenarios correctly and produces the expected output for spaced repetition review schedules. @@ -11,7 +12,9 @@ - Correctness of the calculated review days. - Proper handling of month transitions. """ + import unittest + from solutions.review_date_calculator import calculate_review_days From 917741489008065b7998e6162f16178eff8bd734 Mon Sep 17 00:00:00 2001 From: urz1 Date: Thu, 9 Jan 2025 23:49:57 +0300 Subject: [PATCH 38/65] Add learning goals --- README.md | 1 + collaboration/learning_goals.md | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/README.md b/README.md index 0d50020b7..9ba97ea31 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ Each member brings something special to the table. - **Novel Yonas**: I can spend 8 hrs in GYM - **Hasan**: I breath Cyber Secur1ty ๐Ÿฅท๐Ÿผ๐Ÿ›ก๐Ÿ’ป - **Cynthia**: Crafting solutions, one line of code at a time. ๐Ÿ’ปโœจ +- **Sadam**:Turning data into dreams with the power of AI & ML ๐Ÿค–โœจ ## About This Repository diff --git a/collaboration/learning_goals.md b/collaboration/learning_goals.md index 1b3fc093e..1b23eda0c 100644 --- a/collaboration/learning_goals.md +++ b/collaboration/learning_goals.md @@ -85,6 +85,14 @@ strategies. - Master data analysis tools for geophysical and geochemical data interpretation. - Understand and adapt geo-modelling scripts for customized environmental applications. +### **Sadam Husen** + +- Dive deeper into advanced machine learning and AI techniques, focusing on +real-world applications. + +- Contribute to projects that leverage AI for social impact, aiming for ethical +and inclusive solutions. + --- ## ๐ŸŒŸ Why These Goals Matter From c39e2c3e7d152088d0e4714bb3fa2e435db058f5 Mon Sep 17 00:00:00 2001 From: ciiyaa Date: Fri, 10 Jan 2025 02:00:21 +0300 Subject: [PATCH 39/65] Add links to team names --- README.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index da6e740a4..8c7ae7b6f 100644 --- a/README.md +++ b/README.md @@ -16,12 +16,20 @@ together effectively to achieve success. Each member brings something special to the table. -- **Ava**: Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป -- **Saeed**: Every mistake is progress, and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– -- **Nahom**: We ask not for a lighter burden, but for broader shoulders. ๐Ÿ’ช๐ŸŒ -- **WuorBhang**: Like comedy! making people laugh ๐Ÿ˜ƒ -- **Novel Yonas**: I can spend 8 hrs in GYM -- **Hasan**: I breath Cyber Secur1ty ๐Ÿฅท๐Ÿผ๐Ÿ›ก๐Ÿ’ป +- [**Ava:**](https://github.com/ciiyaa) Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป +- [**Saeed:**](https://github.com/Saeed-Emad) Every mistake is progress, + and Teamwork fuels growth โ„ข๏ธ ๐Ÿค– +- [**Nahom:**](https://github.com/phoenix27522) We ask not for a lighter burden, + but for broader shoulders. ๐Ÿ’ช๐ŸŒ +- [**WuorBhang:**](https://github.com/WuorBhang) Like comedy! + making people laugh ๐Ÿ˜ƒ +- [**Novel Yonas:**](https://github.com/Novel-Y) I can spend 8 hrs in GYM +- [**Hasan:**](https://github.com/Hasan-Z) I breath Cyber Secur1ty ๐Ÿฅท๐Ÿผ๐Ÿ›ก๐Ÿ’ป +- [**Cynthia:**](https://github.com/Cynthia-Wairimu) Crafting solutions, + one line of code at a time. ๐Ÿ’ปโœจ +- [**Sadam:**](https://github.com/Urz1) +- [**Ibrahim:**](https://github.com/Ibrahim-Elmisbah) +- [**Anyak:**](https://github.com/Anyak7) ## About This Repository From b32eff70f83e4ce5cb2bb003ecd9971feebcebb2 Mon Sep 17 00:00:00 2001 From: ciiyaa Date: Fri, 10 Jan 2025 02:29:49 +0300 Subject: [PATCH 40/65] Add about section --- README.md | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8c7ae7b6f..827985dd0 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ together effectively to achieve success. ## Meet the Team -Each member brings something special to the table. +ach member brings something special to the table. - [**Ava:**](https://github.com/ciiyaa) Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป - [**Saeed:**](https://github.com/Saeed-Emad) Every mistake is progress, @@ -33,12 +33,27 @@ Each member brings something special to the table. ## About This Repository -This repository serves as a centralized hub for contributing Python solutions to -various coding challenges and implementing robust test cases to ensure their -accuracy and reliability. +This repository features a variety of **Python** solutions tackling +challenges like math computations, string processing, geometry, and logical operations. +Each solution includes comprehensive tests, both _unittests_ +and inline _doctests_, to ensure reliability. Inside `solutions/` folder each file is designed to be modular and concise, addressing a specific problem. The `solutions/tests/` folder contains unit tests for each solution Tests ensure that the solutions are accurate and can handle various edge cases. + +## Running Tests + +Run unit tests from the root with: + +`python -m unittest discover -v` + +_Doctests_ are embedded within the scripts and can be run directly in +**Python** for quick checks. + +## License + +This project is licensed under the MIT License. +For more details, see the `LICENSE` file. From 16c36d4ea5973cfa4882abc2f709f0c8601a151b Mon Sep 17 00:00:00 2001 From: ciiyaa Date: Fri, 10 Jan 2025 03:14:16 +0300 Subject: [PATCH 41/65] Add project milestones --- README.md | 48 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 827985dd0..ad5090110 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ -# California Group +# MIT G#23 - California Group ๐ŸŒด -Welcome to **California Group** Repository, +Welcome! -We are proudly part of the **MIT Computer and Data Science Foundation Track _2024-2025_**. +We are proudly part of the **MIT Computer and Data Science Foundations Track _2024-2025_**. -California is dedicated to fostering a culture of trust, respect, and accountability +**California** is dedicated to fostering a culture of trust, respect, and accountability while promoting open communication and efficient collaboration. Our goal is to create an environment that values diverse perspectives, encourages teamwork, and -drives success. We support continuous learning and innovative thinking, enhancing -our collaborative efforts. Our shared commitment to growth and development empowers +drives success. We support continuous learning and innovative thinking. +Our shared commitment to growth and development empowers each member to contribute and learn from collective experiences, ensuring we work together effectively to achieve success. @@ -33,22 +33,38 @@ ach member brings something special to the table. ## About This Repository -This repository features a variety of **Python** solutions tackling -challenges like math computations, string processing, geometry, and logical operations. -Each solution includes comprehensive tests, both _unittests_ -and inline _doctests_, to ensure reliability. +This repository is a culmination of our journey through three key milestones: -Inside `solutions/` folder each file is designed to be modular and concise, -addressing a specific problem. +### ๐Ÿš€ Project Kick-Off -The `solutions/tests/` folder contains unit tests for each solution -Tests ensure that the solutions are accurate and can handle various edge cases. +We began with a clear vision to tackle a range of coding challenges, +communication rules, group norms and project workflow. + +### ๐Ÿงฉ Challenges and Solutions + +Throughout the project, we developed a variety of Python solutions +addressing challenges in **mathematics, string processing, geometry, +and logical operations**. Each solution is modular, concise, +and rigorously tested for reliability using both _unittests_ and inline _doctests_. + +### โœ… Finalization and Project Closure + +In the final phase, we ensured all solutions were +thoroughly tested and refined, ready for use and future development. +This phase marked the successful completion of our collaborative effort. + +The `solutions/` directory contains all solutions, each targeting a specific problem. + +_Unittests_ are located in the `solutions/tests/` folder to ensure accuracy and +robustness, covering a wide range of scenarios, including edge cases. ## Running Tests -Run unit tests from the root with: +To run all available _unittests_, execute the following from the root directory: -`python -m unittest discover -v` +```bash +python -m unittest discover -v +``` _Doctests_ are embedded within the scripts and can be run directly in **Python** for quick checks. From 76e1771a11a310b91f086bc5c344ad317a9a47af Mon Sep 17 00:00:00 2001 From: ciiyaa Date: Fri, 10 Jan 2025 03:17:32 +0300 Subject: [PATCH 42/65] Refine meet the team --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ad5090110..c2877c84d 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ together effectively to achieve success. ## Meet the Team -ach member brings something special to the table. +Each member brings something special to the table. - [**Ava:**](https://github.com/ciiyaa) Turning coffee into code โ˜•โžก๏ธ๐Ÿ’ป - [**Saeed:**](https://github.com/Saeed-Emad) Every mistake is progress, From 56e2aabf03265d5997865ff0294f4b5d0fc8dc9d Mon Sep 17 00:00:00 2001 From: ciiyaa Date: Fri, 10 Jan 2025 03:29:15 +0300 Subject: [PATCH 43/65] Add Sadam quote --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c2877c84d..2b056b768 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,8 @@ Each member brings something special to the table. - [**Hasan:**](https://github.com/Hasan-Z) I breath Cyber Secur1ty ๐Ÿฅท๐Ÿผ๐Ÿ›ก๐Ÿ’ป - [**Cynthia:**](https://github.com/Cynthia-Wairimu) Crafting solutions, one line of code at a time. ๐Ÿ’ปโœจ -- [**Sadam:**](https://github.com/Urz1) +- [**Sadam:**](https://github.com/Urz1) Turning data into dreams with + the power of AI & ML ๐Ÿค–โœจ - [**Ibrahim:**](https://github.com/Ibrahim-Elmisbah) - [**Anyak:**](https://github.com/Anyak7) From f7386f3a3d1c7a5376a829e697d47571c3d15b87 Mon Sep 17 00:00:00 2001 From: Anyak Abraham <160361288+Anyak7@users.noreply.github.com> Date: Fri, 10 Jan 2025 04:07:30 +0300 Subject: [PATCH 44/65] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2b056b768..4f32f0719 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Each member brings something special to the table. - [**Sadam:**](https://github.com/Urz1) Turning data into dreams with the power of AI & ML ๐Ÿค–โœจ - [**Ibrahim:**](https://github.com/Ibrahim-Elmisbah) -- [**Anyak:**](https://github.com/Anyak7) +- [**Anyak:**](https://github.com/Anyak7) Technology is the future, and we are the builders. Let's code, learn, and grow together! ## About This Repository From 45406097b5de1a75f5066d5a6616224fd45fb9fe Mon Sep 17 00:00:00 2001 From: saeed-emad Date: Fri, 10 Jan 2025 15:07:33 +0200 Subject: [PATCH 45/65] update_solutions_readme --- solutions/README.md | 142 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 138 insertions(+), 4 deletions(-) diff --git a/solutions/README.md b/solutions/README.md index f6b33d37b..8371c45e5 100644 --- a/solutions/README.md +++ b/solutions/README.md @@ -1,5 +1,139 @@ -# Solutions +# Solutions Repository -This README file is for the writing of the challenges of the MIT Foundation - group project of Code challenge on Codewar. - The solutions are written in Python. +## Overview + +Welcome to the **Solutions** repository for our group project! This repository +contains Python solutions to a variety of coding challenges. Each solution is +authored by a group member and is designed to address specific problems or +tasks using efficient and professional code practices. + +--- + +## Solutions List + +### 1. [add_binary.py](./add_binary.py) + +**Author:** Abraham Anyak +**Description:** Module for adding and manipulating binary numbers. + +### 2. [calculate_bmi.py](./calculate_bmi.py) + +**Author:** Cynthia-Wairimu +**Description:** Function to calculate BMI and determine weight category. + +### 3. [double_letter.py](./double_letter.py) + +**Author:** WuorBhang +**Description:** Module for checking if a word contains consecutive duplicate + letters using recursion. + +### 4. [friend_or_foe.py](./friend_or_foe.py) + +**Author:** Cynthia-Wairimu +**Description:** A function that filters a list of strings and returns +a list with only your friend's name in it. + +### 5. [is_even_number.py](./is_even_number.py) + +**Author:** Saeed Ali +**Description:** Module for checking if a number is even. + +### 6. [is_prime.py](./is_prime.py) + +**Author:** Ibrahim-Elmisbah +**Description:** Module for determining whether a number is prime. + +### 7. [is_square.py](./is_square.py) + +**Author:** WuorBhang +**Description:** Module for determining whether a given number is a perfect square. + +### 8. [is_unique.py](./is_unique.py) + +**Author:** Ava Abdullah +**Description:** A module for checking if all characters in a string are unique. + +### 9. [length_of_longest_substring.py](./length_of_longest_substring.py) + +**Author:** SADAM HUSEN ALI +**Description:** This module provides a solution for the problem of finding the +length of the longest substring without repeating characters in a given string. + +### 10. [longest_palindromic_substring.py](./longest_palindromic_substring.py) + +**Author:** Nahom Tekle +**Description:** This module provides a solution +for finding the longest palindromic substring in a given string using +the "expand around center" technique. + +### 11. [max_area.py](./max_area.py) + +**Author:** SADAM HUSEN ALI +**Description:** The function determines the maximum area of water a container +can hold, given an array of integers representing the height of the container walls. + +### 12. [most_frequent_character.py](./most_frequent_character.py) + +**Author:** Ava Abdullah +**Description:** A module for finding the most frequent character in a string. + +### 13. [palindrome_checker.py](./palindrome_checker.py) + +**Author:** Hasan Zemzem +**Description:** This module contains a function to check if a string is +a palindrome. A palindrome is a string that reads the same forward and backward. + +### 14. [pascal_triangle.py](./pascal_triangle.py) + +**Author:** Nahom Tekle +**Description:** Function that generates Pascal's triangle up to the nth row. +The function returns a list of lists representing the triangle, with each inner +list corresponding to a row. + +### 15. [review_date_calculator.py](./review_date_calculator.py) + +**Author:** Novel Yonas +**Description:** A module for calculating spaced repetition review days. + +### 16. [specific_gravity_calculator.py](./specific_gravity_calculator.py) + +**Author:** Novel Yonas +**Description:** A module for calculating the specific gravity of a substance. + +### 17. [square_number.py](./square_number.py) + +**Author:** Saeed Ali +**Description:** The function calculates the square of a given number. + +### 18. [sum.py](./sum.py) + +**Author:** Abraham Anyak +**Description:** A function to compute the sum of two numbers. + +### 19. [sum_proper_divisors.py](./sum_proper_divisors.py) + +**Author:** Ibrahim-Elmisbah +**Description:** Module for calculating the sum of proper divisors of a given number. + +### 20. [vowel_counter.py](./vowel_counter.py) + +**Author:** Hasan Zemzem +**Description:** Module provides a function to count the number of vowels +in a given text. The function considers vowels as 'a', 'e', 'i', 'o', 'u' +in both lowercase and uppercase. + +--- + +## Contribution + +Each solution is authored and maintained by individual contributors. +For improvements, bug reports, or new ideas, +feel free to open a pull request or create an issue. + +## License + +This project is licensed under the MIT License. See the [LICENSE](./LICENSE) +file for details. + +--- +***Happy Coding! ๐ŸŽ‰*** From b0c780261bd8e301d15b4d9466781d7114a95692 Mon Sep 17 00:00:00 2001 From: ibrahemisba7 Date: Fri, 10 Jan 2025 16:22:17 +0300 Subject: [PATCH 46/65] Add some featuers to all-team-readme --- README.md | 55 +++++++++++++++++++++++++++---- assets/California flag.gif | Bin 0 -> 129798 bytes assets/California intro.gif | Bin 0 -> 68249 bytes assets/Welcome to California.gif | Bin 0 -> 283872 bytes assets/california-beach.gif | Bin 0 -> 478010 bytes assets/california-flag 2.gif | Bin 0 -> 24909 bytes 6 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 assets/California flag.gif create mode 100644 assets/California intro.gif create mode 100644 assets/Welcome to California.gif create mode 100644 assets/california-beach.gif create mode 100644 assets/california-flag 2.gif diff --git a/README.md b/README.md index 4f32f0719..b18526a8d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,13 @@ -# MIT G#23 - California Group ๐ŸŒด +# MIT G#23 - California Group ๐ŸŒ‰ + +
+ Description of the GIF +
-Welcome! +**Welcome!** + + ![alt text]() We are proudly part of the **MIT Computer and Data Science Foundations Track _2024-2025_**. @@ -12,7 +19,7 @@ Our shared commitment to growth and development empowers each member to contribute and learn from collective experiences, ensuring we work together effectively to achieve success. -## Meet the Team +## Meet the Team ๐ŸŒž๐ŸŒด Each member brings something special to the table. @@ -29,12 +36,20 @@ Each member brings something special to the table. one line of code at a time. ๐Ÿ’ปโœจ - [**Sadam:**](https://github.com/Urz1) Turning data into dreams with the power of AI & ML ๐Ÿค–โœจ -- [**Ibrahim:**](https://github.com/Ibrahim-Elmisbah) -- [**Anyak:**](https://github.com/Anyak7) Technology is the future, and we are the builders. Let's code, learn, and grow together! +- [**Ibrahim:**](https://github.com/Ibrahim-Elmisbah) Obsessed with creating and + spotting logical fallacies ๐Ÿค“๐Ÿ”๐Ÿง  +- [**Anyak:**](https://github.com/Anyak7) Technology is the future, +and we are the builders. Let's code, learn, and grow together! + +## About This Repository ๐Ÿ„ -## About This Repository +![alt text]()![alt text]()![alt text]() -This repository is a culmination of our journey through three key milestones: +This repository is part of the MIT Emerging Talent - Foundation Track program. +It is a dedicated space for learning and practicing Python programming, +as well as improving skills in documentation, testing, +and code review to build a strong foundation in software development. +We achieve this culmination through three key milestones: ### ๐Ÿš€ Project Kick-Off @@ -67,6 +82,26 @@ To run all available _unittests_, execute the following from the root directory: python -m unittest discover -v ``` +____ + +## Repo Structure + +``` plaintext +MIT-Emerging-Talent-Foundation-Track/ +โ”œโ”€โ”€ .github/ +โ”œโ”€โ”€ .vscode/ +โ”œโ”€โ”€ assets/ +โ”œโ”€โ”€ collaboration/ +โ”‚ โ”œโ”€โ”€ guide/ +โ”‚ โ”œโ”€โ”€ Communication.md +โ”‚ โ”œโ”€โ”€ Constraints.md +โ”‚ โ”œโ”€โ”€ Learning_goals.md +โ”‚ โ”œโ”€โ”€ README.md +โ”‚ โ”œโ”€โ”€ Retrospective.md +โ”œโ”€โ”€ solutions/ +โ”‚ โ”œโ”€โ”€ tests/ +```` + _Doctests_ are embedded within the scripts and can be run directly in **Python** for quick checks. @@ -74,3 +109,9 @@ _Doctests_ are embedded within the scripts and can be run directly in This project is licensed under the MIT License. For more details, see the `LICENSE` file. +___ + +
+ Description of the GIF +
diff --git a/assets/California flag.gif b/assets/California flag.gif new file mode 100644 index 0000000000000000000000000000000000000000..099f319a8e7ae9227984645ac5c67b600e9f3c39 GIT binary patch literal 129798 zcmeFYRZ|=c)NUDqhIBWLySqbhcX#*T-UN5o#@#KrCrEJD#@z`H!Gc4O5a@ZoshXOZ zb9-*j{s~XjuG+QMv*i?I`31~3-=)5L?0@%v=Kmz{zm)*|9fBj{hiDm~Ju8V6K25wj zZMh|@Ek7q2iU1pyBnOVVAc?LltGP6drMI4)DyM_K$QLs?R~aT(8}(p&

1iC{NR9 zGoh3S*E9;2EElEhcQ`r8VTA}J6<+F9`H3|s^bJ8e4N&u@>aT5BTgrZz`L=-Ju7t(j#>U>x*1_KX zkwx&y$?>IvqWrj)Wsg(E&Qmt4mu>+x(Z$Cdc2QsZQ*->D`6_`g)LIiDX2{_6eSsWC1OGEvfU zotrNMe&58${d6>Owp2i@+RcBno5|^2DDQD8U(%t3G4)%s;;b^r2oc1R=dw4{z83{I z?e^H|u1eW6!28nu>T;ODIji(HplYCVo;)_**PY#K#n@@o#CegSQaP%z z%Vi7dj&T}F`x6X#QUc)A2ZvFkuJwrS*k zAl*`+^S7!}D0#&LdC1QWygUap((E-KFP>HmyRW_5o*rfIobP6sLz1{3DvPBceECc(5p`;95*>rD^_X&p8ybrwah&ga>NM;nx9 z9>v&asl*;0S4!FF(RthD)?k1Ci}|AE3v4~BiEsF9e;g^e!IWF^a=~O(ubYznEk>cR z^RO^pa^);M#n7HQGTkAE(gOCLHoc+djnGcV#>Nphbbu))rQ}eht)^YGa|rU|c*S5( zSQ*wrTlgfS$E>{anVBl4L5Ii2yoGk-i<+wFDQ^6GEro_UeOd^!n$W|E3v_AZBULM| z7Qnh1<;xUR9_#G`RX$~wKd9iAvhK?S(Z;z}%WL3SMt#Wgra1%ToBr% zCkou2hciiXwxIEQtr?bQT+5;4ao#@jv@ZOdf}ZTcGbtplpVRSvqFEA*&&ERXs_O&;Pq@#ld)$v=ILD)9a06`Zc3;5{CD=mMg} z*=7^*!#8jkW&{SnnjpoK5fJ_?KPuQdHuCD55@(c-Ds(APi%eK0_?5b(H5xUeIaJOv z_KrZb=~nvdtFkV3d~qj}Z5Pg;aI(L5B^0Rki5|%sF>kk|Xfe&OK}uJrT?b4(@fEI) z9u6<p%-qVi)^kUPxIF63&&w>S*0kjQhgc}| zO-ZCtsifBow387}p9WM$cxvKRO8YhQCUr1vYf{l^>mS;cj$FywS*EuLqL_o553+Kk zt&;DtXw*4xd2CAz^j9JVZyRa?d78?2?y^->J~J6EmW=Uz7>6gi49c)UKTo#xPO(R_HM}R#BnZ1vKFj*8fCS? zNnu1t^&~2XS-s~8mGq2eUc{gNRi2Tn;h{^m<)9WxD#NK9Hp<|72lAS;G!2T==M>o> zN`B)}2-ndN`uIY1G{U9XAVi>B@`;SOgyk!^c+`ZvDQObEJsvNxl`zczqG4T9t>tL6 zub(^CZe5Vc&svsZ@xzTQpgGg7cz((D{n;llA$DCY(u%Xm!oWOiI0mM2>Z)05xH1F& zJ}C0x@jZGbICMsSb39gXLSo0QiaKiN#*`-JcNJ>Ps`1@atgo$p-wQ1UyMhsovym3) zi*z{QM6^pp76K5Gen2K*qG{P}v=oJ<9NS3jVyT8gbV{Y~^b1mIYL=Gat}I139_{*x zj>X(s-G}5^y~yBpFVWQnk$45oExGX~!L|E<>~xtXIKgkzAxyu;n3K@sPXt%CI14)? zO5xK{bb|F5KjEahELZLgz>fQXXx0w)DVsCFRs0IxrQR_r)Ek;$FMdF19fiVOGH`6C zJ~X>jgu=Hyubnue6uBqE>TAGc5hM5@x?oaY(~bUPHv^H#w6HO^e&E#6PKs!i|BfrO z@ksdh^UPHLj~ca}V^KuGxzJV^UxZgPUQ1(NvqzJrCH}9rZTBn?VinXwNFA?>0G9Iw zrApu%(8;HCeNLB)Yem>bM=X5No42Lb6zHgL6i$38zn?1qv-9YbDCvFBggfc)2^!0X zVRp&~y<^Tqd!Oe?-p{a>oQv}y|ATcO-n*P)OgpD&MACgbULO4m2Yq_sv8}fU$Y@V{ zWq-9ST%`sH`8>l@NKQ=Wv-&X1Bgs`7as3JY8J1IgaUKl+xxRNDRhdHya*d`YIT4o= z-VaU8W;dP%vir;&AUHWk4-v0~K+lMtIMZ!N4lp89+uMAZv4?)TS80#NS+m%Dzxug2 z?bR`9{syt7{ktE(eoI0o?u!H^8hDt z#P!K!l;*1fz^kbg(V(7(g}2SD7jPCoaADOK)iy8?#qsBAAj)XqjTvx_!&C9WM1`JK z1x4&IL$0SdX!g)>>AgB10!B42aOEAa%nN9q2^d<1tcF0C~up=Y~Ahn zJRIA+L{~#Xb-jgc-Laxwmac&ZbaKBcboEPJ(*}*h5a;ZW)ngaWN-rz| zjBR{JY(1F(0@@=KF?9k@Q;FzhcYmTNEpu0ldGV+@x+v@w`{@w3iGJsvC2dV9@M3nKH{&P-zF3! zZUbC;=eooJQfO2Ugg-HCX6t8S`k(L-V~i_kd2{C?*Q~zM28Dql>gA}xei;TH{(z6MD$Ow{+Fk(z_ z!%zOC0L*X8M5?BUM9xw@ktA+2{6QIazKRzbi3455I^b{`hX!b_yCt>(xV*D1R@^p< zY+9cKWJY~Od^`}^T;_{xSNn6eY(2`Je7SN0<@G^)zR76M&X!*IynH4pJ7Z$Y#1{IvdAQQM$uGnrAc`di)FRwY3 z68LSZGk$F03VQM&eM*bclIR>R*orYy;RKb!AjH+q){l_S6~S5Akmt(u4GxDJfv;2( z;Y+Lb>oAuL0gr5hi2RNm1cksxn^4B|P}G`ajW%U30gH1~$mx*C_9Die8L;~qa6O(F z7W3b7WOM0<;Q9fn&;vyXK&#>|CD4*FU$4nipdF!KsH~sS2gk1hrA;11XhhMWd_kWY zgXTCB4}C12%z(3I;RF+jGI9Z_KH26K!8v1LJx^scxnAtv9&XuR=dVMyZJ|P=YDY2n-S&k%j1rms~pz2arO#93QoVYOv`(vD~ zO~?$)o^`Bnsvlrkm5$5+JR>k)xGtNk4B@3O7ene4)97$?P3DOB}$fzsCIIv4etjA|I^RV)#|d>mh;yLD<-5@S?D? z3g?A6;5voP1aDGmJ7CSlG;|ag-4VCxkjI(rY>FCl9}`cnSQUU5T4@{j$+y;h)oGC< zjloEJk&#cqx?ZdUZ|}zSVwAFQ1LsWL7X1aZJ_j_10VXPJ#`%E1LX`E3!~6uZ`_LRb zh#TI21ddkQBIwyXJ!dq?#-g?5=>PmqYt$69V#ta~5Kx(>o^E^~Q%CmHWZlKV$MqwT z&TZM%bS)Vu!(`6p(}vK5i%S?km)ZPhwMIawYk38*>fi+Z=;0VsWozKV&X_EP=D6PB zt#aa5->z8^Q&0A2w@ZcJv5Wz)aT{E%ndJc0{w6v|&I>1O$hWb?=Ittjdwp9qG{+%G zqa(JO-z_V9^aa~O|E)XO*v2k3kc>!vF?B4(h%6O6(#E&)$??QK5N}*80`cG1ue@l5 z(wChP+RS&RJfrmP3-x+O61`r7B4gd33H;a{V!h=;X&hY~@cj%llha;QnePS5*R|;1 z|3DsB!Hj90JfjEx2C?7K9dY8a$d-LV?c(M)-wFBAtYqV6)PuEWM!@3Ttr(H`)5(Lu zySNfcbIzIZk%XbH<1rS`IifCmp&OoOHsU3&m(sKJHxYi^ztezm^{zo6uXiTOc3#~M zehpl4fi71K(@YM#2S62kLg_tSVZ^OtwS)S?ngNm`MpNSL<-DEn79$H8T>TphX+g`0 zkN_-RATS2w7l#7^F_8BdINJ}H;{aK?f_HX%W$Dv|QLVNg{I?!bmqLI6#>SaOBR6|# zOvL@RAbl?gH(H%HbnlAz_kmhs>eiom*hR3BtnjQ1muANv^$mrw&3OZZM^57Oen16_I)9(qD#{ z7qAw$G3Q{fV(2-pt?U{z-C)j5+WN@?lV}y9@v=x5TBnzjGf8Krh!ym!v{q;dlJf0I zKUfZn1E#Lcrmi>lKLQuQ1N(Wli{i3OoTPg2$ziS-;95VhN!EEK&gyS5sNHF+%cST| zv0&oYw1`d?7I5_;Wj#3DT9FI)j&=n~XgSOQ7y<(ZD0Wd)cTq&U)?UX)T>v|Un`PW`G&>J-nbjBDQVsj~E`hg$ z6#!Du0e|7aD7bfR8UXwZnCS<8dGrd6+Jm_q$`>BWT>>O*ni5USJ-i5Bcj*|G7jIt) z+Vdwf!*iVyG}v%70zMX3wfeN~AYpr`Sa>Y= z1=x4I<{AX>=LPPF4+ZWq{D1^;!0$u<4X{gFdQui+^Jsu}ia?tjTeB)#{zpAf-y{B@ zQ^drhLGW3L=vndGG5+OYV8x!#_hVnsVa+ALmF)}&IyrDLx2#!-U1|D-Jmb)rYfXu@ zMuUCF0i06-KoSpz%+5o;9DOZ3KrK8fQ$1_^eCEb>To-gf^!?b4?85nN6VD4br?H8N zcIWTQ%0DFy*f*>lm&Fwh;OfN@^4q!H_PK-VmHp>k7~Agr_U_cX-z8+na-T1Jzn`tn zoCSXdlqK#CCj$=VMDNceZv)B1d%ATA6fVVWr_6SV$N^iIr)XcU3W81_Rd=&g0h8d} zO*X*d_uCQh^?TE6j<1I!aE{+-2K+ ze7`4|y-*{6bPK*`tiSa#z3{m@tM7f(>$@=QJEDbej)efBY!48bhwh*UsSh}>>L3@t zZ$GwoiNv1A$(}NUpJ#h+9#x;6$ew}U&m`%#Z}>nhZ=iu2P!$~XN9J!GdGJ2#wq(WG z2;s?&uGODEpfXdAYZ3a`7JcUK{c*t=cmu`(I2Z=EtY_c8oUvu#-!64F9gr~nHVYiv zIrQRn8V5h63in>ZRYT2G|2`m#7^PsHQyH`OVg-n>T+%3Qo(p3H*0&qWIx_uJ&A^JA zQts_m94#X|7B_uYJX0X#bA7b+b5+e;EcoqBB!Ym`LMjHA_4Dvky?I~Y%jMoApY!K| z(95N2p)Ac`6B+bMcoB?lWMcuOj~c^k>hv;D5Z4(tM60e=x$ zM{C=Q)+!g1MH%|IOqYDTLka9&bzG~WGS3vQ)@3ycDM z86+%xS7ZT8fWKTMK#1(t0+m_wM&dQym1a1Bu}Fl1-m8TecWkR7ekap;Ap%|`#`;W< zVU1BXSqE+Q`xDPsSCSXvc7?s6RdmRU?vZkx;rJsfYv;c&1r z>4#`f7KXx9neR@M-!PcPAzURId7sACN1)ZkS`vu9z)0@7YhXw24bwpV>iqp*6!Dkc z0n|e0hJmBJ@Fj#FQ*NR}^vdO%dq;Tz6VEpJNRQ)~WZ#keK^)MMfE)58lGLU)S6B=e zCCBJr8+eY}QVt5CT%*CH2>AimNqhTwS5kAYS;Q!jT~W+Y9u0giD#z~2tu2X711CDM zb-Sw^p@FqY1%+MefKHD65uqHRv8#zqzHftq4WZ{Pp)H|Jl!;Al#6JNjp-tWRJtd@S zV1>wW+trT5sqZyv$@$x!4Y_8)s~o9aMS!fKP5UWou03oYC5M}I#5?~3WApXkGaKor zMNq+u%U8QXUlgKjVGc^6e{ar1vG3+9-M%%QZq>eiPRtpj<7d*- z75+4HSkdP!g>_4xRFem5+n8L~mK!7p?bw_DufXQlQAP(lPyQwp;^1W7HWIsTE7)f0 zaZGMa^`trMvuAsw>}VkU1*Er%8z58}dbOxjU|aPHwTuesNhKgHJotb z35P2c6PT3%h=_J4ocdeLWLL#RR7#Z4QbAea8-N&i_9Ck_^-I*e12OPxDa;8b@k7(z z(eUwU?d>o9pxZka$B`RDgg8l>nB7PSr{d}r)d2>SGnNpngtPUqSA#wit4nx@qEm4^ zV7iA+{N$1`m~IZVc2$l94Z}omjzA|*NW=m|c&(eoq9x_CfuUux&);dKbInUlru0$x zlKJbCxnn)Y^>LE?tSH;Yq+{I(^Dcd;aJF5oL;K^fquzcK&LAh%?3w2* zj+i)006ke)VHupVB+52Mq0^x1S|1o?9j!*clw?$79vt(oiiobM*!yOGK^;HAOudbk zmgK*t={Ls=-8)K|Gwg66x-^Tb%N&`|lDM}F{-;l#H_jTIeh`)QBkl!-5ywfOEN>

<&qEE`FJ%Yv(BmrFo9!U9cHU8kj-sF77zvIz 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%0AV4o})oR4!e0(-z!^IWus2|v-J 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 Y`aS#4T)a@d2KVr4a<(B31V!lo0cMU|$p8QV literal 0 HcmV?d00001 diff --git a/assets/California intro.gif b/assets/California intro.gif new file mode 100644 index 0000000000000000000000000000000000000000..486c8981e592667ef5969b54fafe1ca523fafb9e GIT binary patch literal 68249 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