Skip to content

Instantly share code, notes, and snippets.

@KolosovAO
Last active June 16, 2018 07:34
Show Gist options
  • Save KolosovAO/8567a66c873fb2b9f8ac72f1cc7147a4 to your computer and use it in GitHub Desktop.
Save KolosovAO/8567a66c873fb2b9f8ac72f1cc7147a4 to your computer and use it in GitHub Desktop.
# создается массив путей [n]
# каждый возможный следующий путь записывается в новый сет
# если в одном из путей n стало равно 1, возвращается количество шагов

def solve(n):
    ways = [n]
    count = 0

    while(True):
        newWays = set()
        for x in ways:
            if x == 1:
                return count

            if x % 3 == 0:
                newWays.add(x / 3)
            if x % 2 == 0:
                newWays.add(x / 2)
            newWays.add(x - 1)
        ways = newWays
        count += 1

print(solve(9))
print(solve(10**6))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment