Я читаю и слышу, как люди говорят о функциональном программировании, и я пытаюсь обернуть его вокруг и понять, применимо ли оно ко мне. Я системный администратор (пожалуйста, говорите медленно), который пишет много кода Python.
К сожалению, большинство примеров FP, которые я нахожу, используют языки esoteri c и решают сложные математические задачи. ,
Если у кого-то есть несколько свободных минут, не могли бы вы показать мне, как решить эту проблему, используя Python + FP, пожалуйста? Для меня это гораздо более реалистичная c проблема.
Это мой "обычный" подход:
def long(text: str) -> int:
visited = []
longest, count = 0, 0
for i in text:
if i not in visited:
count += 1
if longest < count:
longest = count
visited.append(i)
else:
count = 1
visited = [i]
return longest
И контрольный пример:
@pytest.mark.parametrize(('input', 'output'), [("", 0), ('abc', 3), ('a', 1), ('abcabc', 3),
('abcabcd', 4), ('abcab', 3), ('abcabcdabcdeab', 5), ('aaaa', 1),
(string.ascii_lowercase, 26)])
def test_long(input, output):
x = long.long(input)
assert x == output