diff --git a/fuzzy_logic/fuzzy_operations.py b/fuzzy_logic/fuzzy_operations.py index 0f573f158663bf0fb7d23e6a6ab19408285fa5ee..fbaca9421327738fd5085f5a80808b015c3e581d 100644 --- a/fuzzy_logic/fuzzy_operations.py +++ b/fuzzy_logic/fuzzy_operations.py @@ -1,4 +1,5 @@ -"""README, Author - Jigyasa Gandhi(mailto:jigsgandhi97@gmail.com) +""" +README, Author - Jigyasa Gandhi(mailto:jigsgandhi97@gmail.com) Requirements: - scikit-fuzzy - numpy @@ -7,7 +8,11 @@ Python: - 3.5 """ import numpy as np -import skfuzzy as fuzz + +try: + import skfuzzy as fuzz +except ImportError: + fuzz = None if __name__ == "__main__": # Create universe of discourse in Python using linspace () diff --git a/project_euler/problem_014/sol2.py b/project_euler/problem_014/sol2.py index 0a58f8d9a05a38998f56bcb249e5e4c3f43b13bf..d2a1d9f0e46898d3e1c689fe9ddf3eb660d40579 100644 --- a/project_euler/problem_014/sol2.py +++ b/project_euler/problem_014/sol2.py @@ -27,25 +27,27 @@ Which starting number, under one million, produces the longest chain? """ from __future__ import annotations +COLLATZ_SEQUENCE_LENGTHS = {1: 1} + def collatz_sequence_length(n: int) -> int: """Returns the Collatz sequence length for n.""" - sequence_length = 1 - while n != 1: - if n % 2 == 0: - n //= 2 - else: - n = 3 * n + 1 - sequence_length += 1 + if n in COLLATZ_SEQUENCE_LENGTHS: + return COLLATZ_SEQUENCE_LENGTHS[n] + if n % 2 == 0: + next_n = n // 2 + else: + next_n = 3 * n + 1 + sequence_length = collatz_sequence_length(next_n) + 1 + COLLATZ_SEQUENCE_LENGTHS[n] = sequence_length return sequence_length def solution(n: int = 1000000) -> int: """Returns the number under n that generates the longest Collatz sequence. - # The code below has been commented due to slow execution affecting Travis. - # >>> solution(1000000) - # 837799 + >>> solution(1000000) + 837799 >>> solution(200) 171 >>> solution(5000) diff --git a/requirements.txt b/requirements.txt index ef4e180439056d649fdc19c93e1d4c50e5c732d4..e01d87cffabe52b99a305d501f40dd9c80f941b8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,7 +9,7 @@ pandas pillow qiskit requests -scikit-fuzzy +# scikit-fuzzy # Causing broken builds sklearn statsmodels sympy