def annealer( list_spin, interact0, interact1, interact2, interact3, interact4, interact5, ): spin = [0, 0, 0, 0] spin[0] = list_spin[0] * 2 - 1 spin[1] = list_spin[1] * 2 - 1 spin[2] = list_spin[2] * 2 - 1 spin[3] = list_spin[3] * 2 - 1 H = [0, 0, 0, 0, 0] while 1: H[4] = ( -1 * interact0 * spin[0] * spin[1] ) \ + ( -1 * interact1 * spin[0] * spin[2] ) \ + ( -1 * interact2 * spin[0] * spin[3] ) \ + ( -1 * interact3 * spin[1] * spin[2] ) \ + ( -1 * interact4 * spin[1] * spin[3] ) \ + ( -1 * interact5 * spin[2] * spin[3] ) H[0] = ( interact0 * spin[0] * spin[1] ) \ + ( interact1 * spin[0] * spin[2] ) \ + ( interact2 * spin[0] * spin[3] ) \ + ( -1 * interact3 * spin[1] * spin[2] ) \ + ( -1 * interact4 * spin[1] * spin[3] ) \ + ( -1 * interact5 * spin[2] * spin[3] ) H[1] = ( interact0 * spin[0] * spin[1] ) \ + ( -1 * interact1 * spin[0] * spin[2] ) \ + ( -1 * interact2 * spin[0] * spin[3] ) \ + ( interact3 * spin[1] * spin[2] ) \ + ( interact4 * spin[1] * spin[3] ) \ + ( -1 * interact5 * spin[2] * spin[3] ) H[2] = ( -1 * interact0 * spin[0] * spin[1] ) \ + ( interact1 * spin[0] * spin[2] ) \ + ( -1 * interact2 * spin[0] * spin[3] ) \ + ( interact3 * spin[1] * spin[2] ) \ + ( -1 * interact4 * spin[1] * spin[3] ) \ + ( interact5 * spin[2] * spin[3] ) H[3] = ( -1 * interact0 * spin[0] * spin[1] ) \ + ( -1 * interact1 * spin[0] * spin[2] ) \ + ( interact2 * spin[0] * spin[3] ) \ + ( -1 * interact3 * spin[1] * spin[2] ) \ + ( interact4 * spin[1] * spin[3] ) \ + ( interact5 * spin[2] * spin[3] ) if ( H[0] < H[1] ): invert_tmp0 = 0 else: invert_tmp0 = 1 if ( H[2] < H[3] ): invert_tmp1 = 2 else: invert_tmp1 = 3 if ( H[invert_tmp0] < H[invert_tmp1] ): invert = invert_tmp0 else: invert = invert_tmp1 if ( H[4] > H[invert] ): spin[invert] = -spin[invert] else: return spin