From 68667e1ef31ed9488da6aab4e7f475dc174f9d35 Mon Sep 17 00:00:00 2001 From: Luda Ashikhmina Date: Fri, 7 Nov 2025 12:57:21 +0000 Subject: [PATCH 01/14] Ruff fix --- .github/workflows/ruff.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ruff.yml b/.github/workflows/ruff.yml index 164630d..89b3659 100644 --- a/.github/workflows/ruff.yml +++ b/.github/workflows/ruff.yml @@ -6,3 +6,5 @@ jobs: steps: - uses: actions/checkout@v4 - uses: astral-sh/ruff-action@v3 + - run: ruff check . + From c927cbf7ef29649a12f10902053bcaa0b7a14e15 Mon Sep 17 00:00:00 2001 From: Luda Ashikhmina Date: Fri, 7 Nov 2025 13:10:44 +0000 Subject: [PATCH 02/14] =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=8F=D1=8E=20=D0=B4=D0=BB=D0=B8=D0=BD=D1=83,=20=D1=87=D1=82?= =?UTF-8?q?=D0=BE=20=D0=BE=D0=BD=D0=B0=2010?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/checksum.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/checksum.py b/src/checksum.py index 74b4fb0..77326ac 100644 --- a/src/checksum.py +++ b/src/checksum.py @@ -1,7 +1,9 @@ def modulo11Checksum(ISBNNumber: str): digits = [int(char) for char in ISBNNumber if char.isdigit()] - + if len(digits) != 10: + return False + checkDigit = digits[-1] total = 0 From 1480c2e840b114a44dd7ddb8357fd8039d4d9a11 Mon Sep 17 00:00:00 2001 From: Luda Ashikhmina Date: Fri, 7 Nov 2025 13:14:17 +0000 Subject: [PATCH 03/14] =?UTF-8?q?=D0=BF=D0=BE=D0=BC=D0=B5=D0=BD=D1=8F?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=BA=D0=BE=D1=8D=D1=84=D1=84=D0=B8=D1=86=D0=B8?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=20=D0=BA?= =?UTF-8?q?=D0=B0=D0=B6=D0=B4=D0=BE=D0=B9=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=BD=D0=BE=D0=B9=20(=D0=B1=D1=8B=D0=BB=D0=BE=2010?= =?UTF-8?q?,=20=D0=B0=20=D1=81=D1=82=D0=B0=D0=BB=D0=BE=2010=20-=20i)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/checksum.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/checksum.py b/src/checksum.py index 77326ac..2f9fdcd 100644 --- a/src/checksum.py +++ b/src/checksum.py @@ -8,7 +8,7 @@ def modulo11Checksum(ISBNNumber: str): total = 0 for i in range(len(digits) - 1): - weight = 10 + weight = 10 - i digit = digits[i] total += digit * weight From 3136461e3386dea36c77ac3d1465f50e9b275d3c Mon Sep 17 00:00:00 2001 From: Luda Ashikhmina Date: Fri, 7 Nov 2025 13:27:15 +0000 Subject: [PATCH 04/14] =?UTF-8?q?=D1=80=D0=B0=D1=81=D1=81=D0=BC=D0=BE?= =?UTF-8?q?=D1=82=D1=80=D0=B5=D0=BB=D0=B0=20=D1=81=D0=BB=D1=83=D1=87=D0=B0?= =?UTF-8?q?=D0=B9=20=D0=BA=D0=BE=D0=B3=D0=B4=D0=B0=20=D0=BF=D0=BE=D1=81?= =?UTF-8?q?=D0=BB=D0=B5=D0=B4=D0=BD=D0=B8=D0=B9=20=D1=8D=D0=BB=D0=B5=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=20=D0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/checksum.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/checksum.py b/src/checksum.py index 2f9fdcd..68fb568 100644 --- a/src/checksum.py +++ b/src/checksum.py @@ -1,6 +1,13 @@ def modulo11Checksum(ISBNNumber: str): digits = [int(char) for char in ISBNNumber if char.isdigit()] + for char in ISBNNumber: + if char.isdigit(): + digit.append(int(char)) + elif (len(digit) == 9) and char == 'X': + digits.append(10) + + if len(digits) != 10: return False From 7aaf6035611274e50c01b959a9d29a5be7a3df5f Mon Sep 17 00:00:00 2001 From: Luda Ashikhmina Date: Fri, 7 Nov 2025 13:46:11 +0000 Subject: [PATCH 05/14] check type --- src/bin_search.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bin_search.py b/src/bin_search.py index 713abfc..2494c66 100644 --- a/src/bin_search.py +++ b/src/bin_search.py @@ -1,4 +1,6 @@ def binSearch(xs: list[int], x: int): + if type(x) != int: + return "wrong type" left, right = 0, len(xs) - 1 while left < right: mid = (left + right) // 2 From 5dce1ac66aa7b4e036d5bfbf5b2232398631d0fe Mon Sep 17 00:00:00 2001 From: Luda Ashikhmina Date: Fri, 7 Nov 2025 13:46:49 +0000 Subject: [PATCH 06/14] fixed while --- src/bin_search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin_search.py b/src/bin_search.py index 2494c66..755e921 100644 --- a/src/bin_search.py +++ b/src/bin_search.py @@ -2,7 +2,7 @@ def binSearch(xs: list[int], x: int): if type(x) != int: return "wrong type" left, right = 0, len(xs) - 1 - while left < right: + while left <= right: mid = (left + right) // 2 if xs[mid] == x: return mid From 8b652f51c2d761b427cfc4c862f67ccd0d50b0ab Mon Sep 17 00:00:00 2001 From: Luda Ashikhmina Date: Fri, 7 Nov 2025 13:55:55 +0000 Subject: [PATCH 07/14] added and fixed tests --- test/test_checksum.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/test_checksum.py b/test/test_checksum.py index f64a64c..9b86077 100644 --- a/test/test_checksum.py +++ b/test/test_checksum.py @@ -1,9 +1,10 @@ from src.checksum import modulo11Checksum -def test_good(): - assert modulo11Checksum("2-266-11156-8") - - def test_bad(): - assert not modulo11Checksum("2-266-11156-3") + assert not modulo11Checksum("2-266-11156-8") + assert not modulo11Checksum("1-563-9873X-X") + +def test_good(): + assert modulo11Checksum("2-266-11156-3") + assert modulo11Checksum("1-563-68745-X") From befee25ca6c0033a28a35ee39c811fb5c2f1508f Mon Sep 17 00:00:00 2001 From: Luda Ashikhmina Date: Fri, 7 Nov 2025 14:00:05 +0000 Subject: [PATCH 08/14] added tests --- test/test_bin_searh.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/test_bin_searh.py b/test/test_bin_searh.py index d18d85b..630ad94 100644 --- a/test/test_bin_searh.py +++ b/test/test_bin_searh.py @@ -11,3 +11,9 @@ def test_start(): def test_not_in_list(): assert binSearch([1, 2, 3, 4], 5) == -1 + +def test_wrong_type(): + assert binSearch([1,2,3,4,5], 'a') == -1 + +def test_end(): + assert binSearch([1,2,3,4,5],5) == 4 \ No newline at end of file From 29743d54a8f4505eb9ec9b944b873d8722331008 Mon Sep 17 00:00:00 2001 From: Luda Ashikhmina Date: Fri, 7 Nov 2025 14:08:22 +0000 Subject: [PATCH 09/14] =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=8F=D1=8E=20=D1=87=D1=82=D0=BE=20=D0=BA=D1=80=D0=BE=D0=BC?= =?UTF-8?q?=D0=B5=20=D1=86=D0=B8=D1=84=D1=80,=20=D1=87=D0=B5=D1=80=D1=82?= =?UTF-8?q?=D0=BE=D1=87=D0=B5=D0=BA=20=D0=B8=20=D0=BF=D1=80=D0=BE=D0=B1?= =?UTF-8?q?=D0=B5=D0=BB=D0=BE=D0=B2=20=D0=BD=D0=B8=D1=87=D0=B5=D0=B3=D0=BE?= =?UTF-8?q?=20=D0=BD=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/checksum.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/checksum.py b/src/checksum.py index 68fb568..1823066 100644 --- a/src/checksum.py +++ b/src/checksum.py @@ -6,6 +6,8 @@ def modulo11Checksum(ISBNNumber: str): digit.append(int(char)) elif (len(digit) == 9) and char == 'X': digits.append(10) + elif char != '-' and char != ' ': + return False if len(digits) != 10: From 875eee66cddd25dd17cc15f6d31c778f83bec06c Mon Sep 17 00:00:00 2001 From: Luda Ashikhmina Date: Fri, 7 Nov 2025 14:11:03 +0000 Subject: [PATCH 10/14] changed tab to spaces --- src/bin_search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin_search.py b/src/bin_search.py index 755e921..0f28a9b 100644 --- a/src/bin_search.py +++ b/src/bin_search.py @@ -1,6 +1,6 @@ def binSearch(xs: list[int], x: int): if type(x) != int: - return "wrong type" + return "wrong type" left, right = 0, len(xs) - 1 while left <= right: mid = (left + right) // 2 From f92d27d5f66c02bba3d6188a61ffc4121abce61a Mon Sep 17 00:00:00 2001 From: Luda Ashikhmina Date: Fri, 7 Nov 2025 14:12:24 +0000 Subject: [PATCH 11/14] changed tab to spaces --- src/checksum.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/checksum.py b/src/checksum.py index 1823066..bdcf612 100644 --- a/src/checksum.py +++ b/src/checksum.py @@ -2,17 +2,17 @@ def modulo11Checksum(ISBNNumber: str): digits = [int(char) for char in ISBNNumber if char.isdigit()] for char in ISBNNumber: - if char.isdigit(): - digit.append(int(char)) - elif (len(digit) == 9) and char == 'X': - digits.append(10) - elif char != '-' and char != ' ': - return False - + if char.isdigit(): + digit.append(int(char)) + elif (len(digit) == 9) and char == 'X': + digits.append(10) + elif char != '-' and char != ' ': + return False + if len(digits) != 10: - return False - + return False + checkDigit = digits[-1] total = 0 From 1400210642ae8c6b1336fd31fc71831cef053ec8 Mon Sep 17 00:00:00 2001 From: Luda Ashikhmina Date: Fri, 7 Nov 2025 14:14:38 +0000 Subject: [PATCH 12/14] fixed some problems --- test/test_bin_searh.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_bin_searh.py b/test/test_bin_searh.py index 630ad94..0b70656 100644 --- a/test/test_bin_searh.py +++ b/test/test_bin_searh.py @@ -13,7 +13,7 @@ def test_not_in_list(): assert binSearch([1, 2, 3, 4], 5) == -1 def test_wrong_type(): - assert binSearch([1,2,3,4,5], 'a') == -1 + assert binSearch([1,2,3,4,5], 'a') == 'wrong type' def test_end(): assert binSearch([1,2,3,4,5],5) == 4 \ No newline at end of file From 902baf05525ff77a1c991204a0d2071cd937d284 Mon Sep 17 00:00:00 2001 From: Luda Ashikhmina Date: Fri, 7 Nov 2025 14:16:43 +0000 Subject: [PATCH 13/14] fixed some little problems --- src/checksum.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/checksum.py b/src/checksum.py index bdcf612..45f61fc 100644 --- a/src/checksum.py +++ b/src/checksum.py @@ -1,6 +1,6 @@ def modulo11Checksum(ISBNNumber: str): - digits = [int(char) for char in ISBNNumber if char.isdigit()] + digits = [] for char in ISBNNumber: if char.isdigit(): digit.append(int(char)) From e4cf9d955cad67c7e633ef9b169f74b8b6629bc8 Mon Sep 17 00:00:00 2001 From: Luda Ashikhmina Date: Fri, 7 Nov 2025 14:17:49 +0000 Subject: [PATCH 14/14] fixed some little problems --- src/checksum.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/checksum.py b/src/checksum.py index 45f61fc..613636a 100644 --- a/src/checksum.py +++ b/src/checksum.py @@ -3,8 +3,8 @@ def modulo11Checksum(ISBNNumber: str): digits = [] for char in ISBNNumber: if char.isdigit(): - digit.append(int(char)) - elif (len(digit) == 9) and char == 'X': + digits.append(int(char)) + elif (len(digits) == 9) and char == 'X': digits.append(10) elif char != '-' and char != ' ': return False