<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_least_displacements(symmetry, is_plusminus='auto', is_diagonal=True, is_trigonal=False, log_level=0):
 """Return a set of displacements Returns ------- array_like List of directions with respect to axes. This gives only the symmetrically non equivalent directions. The format is like: [[0, 1, 0, 0], where each list is defined by: First value: Atom index in supercell starting with 0 Second to fourth: If the direction is displaced or not (1, 0, or -1) with respect to the axes. """

    displacements = []
    if is_diagonal:
        directions = directions_diag
    else:
        directions = directions_axis

    if log_level > 2:
        print("Site point symmetry:")

    for atom_num in symmetry.get_independent_atoms():
        site_symmetry = symmetry.get_site_symmetry(atom_num)

        if log_level > 2:
            print("Atom %d" % (atom_num + 1))
            for i, rot in enumerate(site_symmetry):
                print("----%d----" % (i + 1))
                for v in rot:
                    print("%2d %2d %2d" % tuple(v))

        for disp in get_displacement(site_symmetry,
                                     directions,
                                     is_trigonal,
                                     log_level):
            displacements.append([atom_num,
                                  disp[0], disp[1], disp[2]])
            if is_plusminus == 'auto':
                if is_minus_displacement(disp, site_symmetry):
                    displacements.append([atom_num,
                                          -disp[0], -disp[1], -disp[2]])
            elif is_plusminus is True:
                displacements.append([atom_num,
                                      -disp[0], -disp[1], -disp[2]])

    return displacements