| 12345678910111213141516171819202122232425262728293031323334353637383940 | func isSelfCrossing(x []int) bool {	// 3 situations for self crossing:	// 1.     _____    0 intersects 3, x[2] <= x[0] && x[1] <= x[3]	//       |  1  |	//      2|     |0	//       `-----+-	//          3  |	//	// 2.    _____     0 intersects (and coincides) 4,	//      |  1  |    x[1] == x[3] && x[2] <= x[0] + x[4]	//     2|     |0	//      |     |	//      |_____^4	//         3	//	// 3.    ___       0 intersects 5,	//      | 1 |  5   x[4] <= x[2] && x[1] <= x[3] && x[2] <= x[0] + x[4] && x[3] <= x[1] + x[5]	//      | <-+---.	//     2|   |0  |4	//      |_______|	//          3	//	n := len(x)	if n < 4 {		return false	}	for i := 3; i < n; i++ {		if x[i-1] <= x[i-3] && x[i-2] <= x[i] {			return true		}		if 4 <= i && x[i-3] == x[i-1] && x[i-2] <= x[i-4]+x[i] {			return true		}		if 5 <= i && x[i-1] <= x[i-3] && x[i-4] <= x[i-2] && x[i-3] <= x[i-5]+x[i-1] && x[i-2] <= x[i-4]+x[i] {			return true		}	}	return false}
 |