Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
"""Utilities used by various strategies"""
import itertools
from functools import lru_cache
from axelrod import update_history
from axelrod import Actions
from axelrod.strategies.cycler import Cycler
C, D = Actions.C, Actions.D
def detect_cycle(history, min_size=1, max_size=12, offset=0):
"""Detects cycles in the sequence history.
Mainly used by hunter strategies.
Parameters
----------
history: sequence of C and D
The sequence to look for cycles within
min_size: int, 1
The minimum length of the cycle
max_size: int, 12
offset: int, 0
The amount of history to skip initially