Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions exercises/practice/largest-series-product/.meta/example.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
def slices(series, size):

if not size <= len(series):
raise ValueError('span must be smaller than string length')
raise ValueError('span must not exceed string length')
elif not 0 < size:
raise ValueError('span must not be negative')
elif not all(item.isdigit() for item in series):
Expand All @@ -20,4 +20,4 @@ def slices(series, size):
def largest_product(series, size):
if size == 0:
return 1
return max(reduce(mul, slice) for slice in slices(series, size))
return max(reduce(mul, slice) for slice in slices(series, size))
10 changes: 10 additions & 0 deletions exercises/practice/largest-series-product/.meta/tests.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,11 @@ description = "reports zero if all spans include zero"

[5d81aaf7-4f67-4125-bf33-11493cc7eab7]
description = "rejects span longer than string length"
include = false

[0ae1ce53-d9ba-41bb-827f-2fceb64f058b]
description = "rejects span longer than string length"
reimplements = "5d81aaf7-4f67-4125-bf33-11493cc7eab7"

[06bc8b90-0c51-4c54-ac22-3ec3893a079e]
description = "reports 1 for empty string and empty product (0 span)"
Expand All @@ -49,6 +54,11 @@ include = false

[6d96c691-4374-4404-80ee-2ea8f3613dd4]
description = "rejects empty string and nonzero span"
include = false

[6cf66098-a6af-4223-aab1-26aeeefc7402]
description = "rejects empty string and nonzero span"
reimplements = "6d96c691-4374-4404-80ee-2ea8f3613dd4"

[7a38f2d6-3c35-45f6-8d6f-12e6e32d4d74]
description = "rejects invalid character in digits"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# These tests are auto-generated with test data from:
# https://github.com/exercism/problem-specifications/tree/main/exercises/largest-series-product/canonical-data.json
# File last updated on 2023-07-19
# File last updated on 2025-06-20

import unittest

Expand Down Expand Up @@ -44,17 +44,13 @@ def test_rejects_span_longer_than_string_length(self):
with self.assertRaises(ValueError) as err:
largest_product("123", 4)
self.assertEqual(type(err.exception), ValueError)
self.assertEqual(
err.exception.args[0], "span must be smaller than string length"
)
self.assertEqual(err.exception.args[0], "span must not exceed string length")

def test_rejects_empty_string_and_nonzero_span(self):
with self.assertRaises(ValueError) as err:
largest_product("", 1)
self.assertEqual(type(err.exception), ValueError)
self.assertEqual(
err.exception.args[0], "span must be smaller than string length"
)
self.assertEqual(err.exception.args[0], "span must not exceed string length")

def test_rejects_invalid_character_in_digits(self):
with self.assertRaises(ValueError) as err:
Expand Down
Loading