Problem Statement
You are given pairwise distances between four hypothetical points. You need to return "YES" if there exist four points in space with such distances between them, and "NO" otherwise (all quotes for clarity only).
The distances are given as a String[] d, each element of which is a single-space separated list of integers. The j-th integer of the i-th element of d gives the distance between the i-th and j-th points.
Definition
- Class:
- Tetrahedron
- Method:
- exists
- Parameters:
- String[]
- Returns:
- String
- Method signature:
- String exists(String[] d)
- (be sure your method is public)
Constraints
- d will contain exactly 4 elements.
- Each element of d will contain exactly 4 integers, separated by single spaces.
- Each integer in d will be between 0 and 10, inclusive, and contain no extra leading zeroes.
- The i-th integer of the i-th element of d will be 0.
- The j-th integer of the i-th element of d will be equal to the i-th integer of the j-th element of d.
- The j-th integer of the i-th element of d will be between 1 and 10, inclusive, when i is not equal to j.
Examples
{"0 1 1 1", "1 0 1 1", "1 1 0 1", "1 1 1 0"}
Returns: "YES"
Just a regular tetrahedron.
{"0 1 2 3", "1 0 1 2", "2 1 0 1", "3 2 1 0"}
Returns: "YES"
Four points on a single line.
{"0 1 2 4", "1 0 1 2", "2 1 0 1", "4 2 1 0"}
Returns: "NO"
The first and last points are too far away.
{"0 2 2 1","2 0 2 2","2 2 0 2","1 2 2 0"}
Returns: "YES"
{"0 2 2 1","2 0 2 1","2 2 0 2","1 1 2 0"}
Returns: "NO"
{"0 2 2 2","2 0 1 2","2 1 0 2","2 2 2 0"}
Returns: "YES"
{"0 2 2 2","2 0 1 1","2 1 0 2","2 1 2 0"}
Returns: "NO"
{"0 2 1 1","2 0 2 2","1 2 0 1","1 2 1 0"}
Returns: "YES"
{"0 2 1 1","2 0 1 2","1 1 0 1","1 2 1 0"}
Returns: "NO"
{"0 1 1 1","1 0 1 1","1 1 0 1","1 1 1 0"}
Returns: "YES"
{"0 1 1 1","1 0 1 1","1 1 0 2","1 1 2 0"}
Returns: "NO"
{"0 1 1 1","1 0 1 1","1 1 0 1","1 1 1 0"}
Returns: "YES"
{"0 1 1 1","1 0 1 1","1 1 0 2","1 1 2 0"}
Returns: "NO"
{"0 1 1 1","1 0 1 1","1 1 0 1","1 1 1 0"}
Returns: "YES"
{"0 1 1 1","1 0 2 1","1 2 0 1","1 1 1 0"}
Returns: "NO"
{"0 1 2 2","1 0 2 2","2 2 0 3","2 2 3 0"}
Returns: "YES"
{"0 1 1 2","1 0 2 2","1 2 0 3","2 2 3 0"}
Returns: "NO"
{"0 2 3 2","2 0 2 2","3 2 0 3","2 2 3 0"}
Returns: "YES"
{"0 2 3 2","2 0 1 2","3 1 0 3","2 2 3 0"}
Returns: "NO"
{"0 3 3 2","3 0 1 2","3 1 0 2","2 2 2 0"}
Returns: "YES"
{"0 3 3 1","3 0 1 2","3 1 0 2","1 2 2 0"}
Returns: "NO"
{"0 2 3 2","2 0 3 1","3 3 0 3","2 1 3 0"}
Returns: "YES"
{"0 3 3 2","3 0 3 1","3 3 0 3","2 1 3 0"}
Returns: "NO"
{"0 2 3 1","2 0 1 1","3 1 0 2","1 1 2 0"}
Returns: "YES"
{"0 2 3 1","2 0 2 1","3 2 0 2","1 1 2 0"}
Returns: "NO"
{"0 1 3 2","1 0 3 2","3 3 0 2","2 2 2 0"}
Returns: "YES"
{"0 1 3 3","1 0 3 2","3 3 0 2","3 2 2 0"}
Returns: "NO"
{"0 2 3 3","2 0 3 2","3 3 0 2","3 2 2 0"}
Returns: "YES"
{"0 1 3 3","1 0 3 2","3 3 0 2","3 2 2 0"}
Returns: "NO"
{"0 2 4 2","2 0 3 2","4 3 0 3","2 2 3 0"}
Returns: "YES"
{"0 1 4 2","1 0 3 2","4 3 0 3","2 2 3 0"}
Returns: "NO"
{"0 3 3 1","3 0 3 3","3 3 0 3","1 3 3 0"}
Returns: "YES"
{"0 3 2 1","3 0 3 3","2 3 0 3","1 3 3 0"}
Returns: "NO"
{"0 3 3 4","3 0 2 3","3 2 0 2","4 3 2 0"}
Returns: "YES"
{"0 3 3 4","3 0 2 4","3 2 0 2","4 4 2 0"}
Returns: "NO"
{"0 3 1 4","3 0 2 1","1 2 0 3","4 1 3 0"}
Returns: "YES"
{"0 3 1 4","3 0 2 2","1 2 0 3","4 2 3 0"}
Returns: "NO"
{"0 2 2 2","2 0 3 3","2 3 0 3","2 3 3 0"}
Returns: "YES"
{"0 2 2 2","2 0 3 4","2 3 0 3","2 4 3 0"}
Returns: "NO"
{"0 5 4 2","5 0 1 3","4 1 0 2","2 3 2 0"}
Returns: "YES"
{"0 5 3 2","5 0 1 3","3 1 0 2","2 3 2 0"}
Returns: "NO"
{"0 2 3 5","2 0 2 4","3 2 0 3","5 4 3 0"}
Returns: "YES"
{"0 2 2 5","2 0 2 4","2 2 0 3","5 4 3 0"}
Returns: "NO"
{"0 3 1 3","3 0 3 4","1 3 0 3","3 4 3 0"}
Returns: "YES"
{"0 3 1 3","3 0 3 4","1 3 0 2","3 4 2 0"}
Returns: "NO"
{"0 4 2 2","4 0 3 3","2 3 0 1","2 3 1 0"}
Returns: "YES"
{"0 5 2 2","5 0 3 3","2 3 0 1","2 3 1 0"}
Returns: "NO"
{"0 4 4 3","4 0 4 4","4 4 0 2","3 4 2 0"}
Returns: "YES"
{"0 4 4 3","4 0 4 5","4 4 0 2","3 5 2 0"}
Returns: "NO"
{"0 2 4 3","2 0 2 1","4 2 0 1","3 1 1 0"}
Returns: "YES"
{"0 2 4 3","2 0 2 1","4 2 0 2","3 1 2 0"}
Returns: "NO"
{"0 6 2 3","6 0 6 5","2 6 0 4","3 5 4 0"}
Returns: "YES"
{"0 6 1 3","6 0 6 5","1 6 0 4","3 5 4 0"}
Returns: "NO"
{"0 3 4 3","3 0 4 1","4 4 0 4","3 1 4 0"}
Returns: "YES"
{"0 3 4 3","3 0 3 1","4 3 0 4","3 1 4 0"}
Returns: "NO"
{"0 1 3 5","1 0 3 5","3 3 0 5","5 5 5 0"}
Returns: "YES"
{"0 1 3 4","1 0 3 5","3 3 0 5","4 5 5 0"}
Returns: "NO"
{"0 4 5 3","4 0 2 4","5 2 0 4","3 4 4 0"}
Returns: "YES"
{"0 4 6 3","4 0 2 4","6 2 0 4","3 4 4 0"}
Returns: "NO"
{"0 4 2 4","4 0 4 2","2 4 0 4","4 2 4 0"}
Returns: "YES"
{"0 4 2 4","4 0 5 2","2 5 0 4","4 2 4 0"}
Returns: "NO"
{"0 6 5 3","6 0 5 3","5 5 0 4","3 3 4 0"}
Returns: "YES"
{"0 6 5 3","6 0 5 3","5 5 0 5","3 3 5 0"}
Returns: "NO"
{"0 6 6 4","6 0 1 3","6 1 0 3","4 3 3 0"}
Returns: "YES"
{"0 6 5 4","6 0 1 3","5 1 0 3","4 3 3 0"}
Returns: "NO"
{"0 6 6 3", "6 0 4 5", "6 4 0 4", "3 5 4 0"}
Returns: "YES"
{"0 6 6 2", "6 0 4 5", "6 4 0 4", "2 5 4 0"}
Returns: "NO"
{"0 5 4 6","5 0 4 2","4 4 0 4","6 2 4 0"}
Returns: "YES"
{"0 4 4 6","4 0 4 2","4 4 0 4","6 2 4 0"}
Returns: "NO"
{"0 1 4 6","1 0 4 6","4 4 0 6","6 6 6 0"}
Returns: "YES"
{"0 1 4 6","1 0 5 6","4 5 0 6","6 6 6 0"}
Returns: "NO"
{"0 1 5 5","1 0 5 5","5 5 0 6","5 5 6 0"}
Returns: "YES"
{"0 1 5 6","1 0 5 5","5 5 0 6","6 5 6 0"}
Returns: "NO"
{"0 5 4 6","5 0 4 2","4 4 0 4","6 2 4 0"}
Returns: "YES"
{"0 5 4 7","5 0 4 2","4 4 0 4","7 2 4 0"}
Returns: "NO"
{"0 2 6 4","2 0 7 4","6 7 0 5","4 4 5 0"}
Returns: "YES"
{"0 2 6 4","2 0 7 3","6 7 0 5","4 3 5 0"}
Returns: "NO"
{"0 6 8 1","6 0 6 6","8 6 0 8","1 6 8 0"}
Returns: "YES"
{"0 5 8 1","5 0 6 6","8 6 0 8","1 6 8 0"}
Returns: "NO"
{"0 3 4 6","3 0 5 8","4 5 0 8","6 8 8 0"}
Returns: "YES"
{"0 2 4 6","2 0 5 8","4 5 0 8","6 8 8 0"}
Returns: "NO"
{"0 2 6 5","2 0 7 5","6 7 0 5","5 5 5 0"}
Returns: "YES"
{"0 2 6 6","2 0 7 5","6 7 0 5","6 5 5 0"}
Returns: "NO"
{"0 7 5 7","7 0 8 7","5 8 0 4","7 7 4 0"}
Returns: "YES"
{"0 7 5 8","7 0 8 7","5 8 0 4","8 7 4 0"}
Returns: "NO"
{"0 4 4 3","4 0 7 6","4 7 0 3","3 6 3 0"}
Returns: "YES"
{"0 4 4 3","4 0 7 7","4 7 0 3","3 7 3 0"}
Returns: "NO"
{"0 9 7 7","9 0 5 6","7 5 0 8","7 6 8 0"}
Returns: "YES"
{"0 9 6 7","9 0 5 6","6 5 0 8","7 6 8 0"}
Returns: "NO"
{"0 5 9 7","5 0 5 3","9 5 0 4","7 3 4 0"}
Returns: "YES"
{"0 5 9 7","5 0 5 2","9 5 0 4","7 2 4 0"}
Returns: "NO"
{"0 4 3 3","4 0 6 2","3 6 0 5","3 2 5 0"}
Returns: "YES"
{"0 4 3 2","4 0 6 2","3 6 0 5","2 2 5 0"}
Returns: "NO"
{"0 4 7 3","4 0 8 3","7 8 0 9","3 3 9 0"}
Returns: "YES"
{"0 5 7 3","5 0 8 3","7 8 0 9","3 3 9 0"}
Returns: "NO"
{"0 3 3 4","3 0 1 5","3 1 0 5","4 5 5 0"}
Returns: "YES"
{"0 3 4 4","3 0 1 5","4 1 0 5","4 5 5 0"}
Returns: "NO"
{"0 8 3 4","8 0 8 7","3 8 0 2","4 7 2 0"}
Returns: "YES"
{"0 8 3 4","8 0 9 7","3 9 0 2","4 7 2 0"}
Returns: "NO"
{"0 10 4 5","10 0 9 6","4 9 0 4","5 6 4 0"}
Returns: "YES"
{"0 10 4 5","10 0 9 6","4 9 0 3","5 6 3 0"}
Returns: "NO"
{"0 7 3 2","7 0 5 6","3 5 0 2","2 6 2 0"}
Returns: "YES"
{"0 7 3 2","7 0 5 6","3 5 0 1","2 6 1 0"}
Returns: "NO"
{"0 9 6 7","9 0 4 3","6 4 0 4","7 3 4 0"}
Returns: "YES"
{"0 9 6 6","9 0 4 3","6 4 0 4","6 3 4 0"}
Returns: "NO"
{"0 7 9 5","7 0 8 7","9 8 0 5","5 7 5 0"}
Returns: "YES"
{"0 7 10 5","7 0 8 7","10 8 0 5","5 7 5 0"}
Returns: "NO"
{"0 6 8 6","6 0 7 8","8 7 0 4","6 8 4 0"}
Returns: "YES"
{"0 6 9 6","6 0 7 8","9 7 0 4","6 8 4 0"}
Returns: "NO"
{"0 6 10 9","6 0 10 4","10 10 0 9","9 4 9 0"}
Returns: "YES"
{"0 6 10 10","6 0 10 4","10 10 0 9","10 4 9 0"}
Returns: "NO"
{"0 4 5 4", "4 0 4 7", "5 4 0 4", "4 7 4 0" }
Returns: "NO"
{"0 1 2 4", "1 0 1 2", "2 1 0 1", "4 2 1 0" }
Returns: "NO"
{"0 6 6 3", "6 0 4 5", "6 4 0 4", "3 5 4 0" }
Returns: "YES"
{"0 5 5 5", "5 0 5 5", "5 5 0 9", "5 5 9 0" }
Returns: "NO"
{"0 3 3 4", "3 0 6 5", "3 6 0 5", "4 5 5 0" }
Returns: "YES"
{"0 6 6 2", "6 0 4 5", "6 4 0 4", "2 5 4 0" }
Returns: "NO"
{"0 10 10 3", "10 0 8 9", "10 8 0 8", "3 9 8 0" }
Returns: "YES"
{"0 3 6 5", "3 0 3 3", "6 3 0 5", "5 3 5 0" }
Returns: "NO"
{"0 3 6 5", "3 0 3 4", "6 3 0 5", "5 4 5 0" }
Returns: "YES"
{"0 1 2 3", "1 0 1 2", "2 1 0 1", "3 2 1 0" }
Returns: "YES"
{"0 4 8 5", "4 0 4 3", "8 4 0 5", "5 3 5 0" }
Returns: "YES"
{"0 7 10 7", "7 0 4 8", "10 4 0 5", "7 8 5 0" }
Returns: "NO"
{"0 10 10 5", "10 0 10 6", "10 10 0 6", "5 6 6 0" }
Returns: "NO"
{"0 10 5 8", "10 0 6 8", "5 6 0 10", "8 8 10 0" }
Returns: "NO"
{"0 3 1 5", "3 0 2 4", "1 2 0 6", "5 4 6 0" }
Returns: "NO"
{"0 3 5 5", "3 0 3 6", "5 3 0 4", "5 6 4 0" }
Returns: "NO"
{"0 3 5 4", "3 0 3 6", "5 3 0 4", "4 6 4 0" }
Returns: "NO"
{"0 4 2 2", "4 0 4 3", "2 4 0 1", "2 3 1 0" }
Returns: "YES"