Skip to content

Commit 5d0a44d

Browse files
committed
refactor: use constants to match keys
1 parent cb115da commit 5d0a44d

3 files changed

Lines changed: 20 additions & 22 deletions

File tree

api/core/computation.py

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,9 @@
11
from typing import List
22

3+
from api.core.constants import SequenceWords
34

4-
def is_divisible_by(num: int, divisor: int) -> bool:
5-
"""Function to unnecessarily complicate the modulo operation.
65

7-
Args:
8-
num (nnt): Number to be tested
9-
divisor (nnt): Number to test divisibility against
10-
11-
Returns:
12-
bool: Returns True if the num is a multiple of divisor
13-
"""
14-
return num % divisor == 0
15-
16-
17-
def fizzbuzz(n: int) -> str:
6+
def _find_fizzbuzz_up_to(n: int) -> str:
187
"""Performs a standard FizzBuzz check on a given number.
198
209
If the number is divisible by 3, returns "Fizz". If the number
@@ -23,18 +12,18 @@ def fizzbuzz(n: int) -> str:
2312
representation of the number.
2413
2514
Parameters:
26-
n (nnt): The number to be checked
15+
n (int): The number to be checked
2716
2817
Returns:
2918
str: The FizzBuzz result for the given number.
3019
"""
3120
result = ""
3221

33-
if is_divisible_by(n, 3):
34-
result += "Fizz"
22+
if n % 3 == 0:
23+
result += SequenceWords.Fizz
3524

36-
if is_divisible_by(n, 5):
37-
result += "Buzz"
25+
if n % 5 == 0:
26+
result += SequenceWords.Buzz
3827

3928
return result.strip() if result else str(n)
4029

@@ -48,4 +37,4 @@ def generate_fizzbuzz_sequence(limit: int) -> List[str]:
4837
Returns:
4938
list: Resulting FizzBuzz outputs
5039
"""
51-
return [fizzbuzz(i) for i in range(1, limit + 1)]
40+
return [_find_fizzbuzz_up_to(i) for i in range(1, limit + 1)]

api/core/constants.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,10 @@ class EnvironmentVariables:
1111
class RedisConfigs:
1212
LOCAL: Final[str] = "localhost"
1313
DEFAULT_PORT: Final[int] = 6379
14+
15+
16+
@dataclass(frozen=True)
17+
class SequenceWords:
18+
Fizz: Final[str] = "Fizz"
19+
Buzz: Final[str] = "Buzz"
20+
FizzBuzz: Final[str] = "FizzBuzz"

api/core/models.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
from pydantic import BaseModel, EmailStr
44

5+
from api.core.constants import SequenceWords
6+
57

68
class FizzBuzzSequence(BaseModel):
79
"""Data class for FizzBuzz sequence data."""
@@ -25,9 +27,9 @@ def from_sequence(cls, data: List[str]) -> "FizzBuzzSequence":
2527
Returns:
2628
FizzBuzzSequence: Data model
2729
"""
28-
fizz = data.count("Fizz")
29-
buzz = data.count("Buzz")
30-
fizzbuzz = data.count("FizzBuzz")
30+
fizz = data.count(SequenceWords.Fizz)
31+
buzz = data.count(SequenceWords.Buzz)
32+
fizzbuzz = data.count(SequenceWords.FizzBuzz)
3133
digits = len(data) - (fizz + buzz + fizzbuzz)
3234
return cls(
3335
fizz=fizz,

0 commit comments

Comments
 (0)