未验证 提交 729aaf64 编写于 作者: M Maxim Smolskiy 提交者: GitHub

Improve Project Euler problem 014 solution 2 (#5744)

* Improve solution

* Uncomment code that has been commented due to slow execution affecting Travis

* Fix

* scikit-fuzzy is causing broken builds

* fuzz = None

* Update fuzzy_operations.py
Co-authored-by: NChristian Clauss <cclauss@me.com>
上级 7a605766
"""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 ()
......
......@@ -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)
......
......@@ -9,7 +9,7 @@ pandas
pillow
qiskit
requests
scikit-fuzzy
# scikit-fuzzy # Causing broken builds
sklearn
statsmodels
sympy
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册