def check_constraints(q: list[int]) -> bool:
    '''

    Vérifie que toutes les contraintes du problème soient satisfaites dans
    la solution ``q`` représentant la ligne sur laquelle est placée chaque
    dames ``q[i]``.

    >>> check_constraints([0])
    True
    >>> check_constraints([1, 3, 0, 2])
    True
    >>> check_constraints([1, 3, 5, 0, 2, 4])
    True

    >>> check_constraints([0, 1, 2, 3])
    False
    >>> check_constraints([3, 2, 1, 0])
    False
    >>> check_constraints([1, 3, 0, 0])
    False
    >>> check_constraints([1, 4, 5, 2, 0, 4])
    False

    '''
    n = len(q)

    for i in range(n):
        for j in range(i + 1, n):
            if q[i] == q[j]: return False
            if q[i] - q[j] == i - j: return False
            if q[j] - q[i] == i - j: return False

    return True

if __name__ == '__main__':
    import doctest
    doctest.testmod()