Функциональное программирование в Python: самая длинная подстрока - PullRequest
3 голосов
/ 07 марта 2020

Я читаю и слышу, как люди говорят о функциональном программировании, и я пытаюсь обернуть его вокруг и понять, применимо ли оно ко мне. Я системный администратор (пожалуйста, говорите медленно), который пишет много кода 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...