Juicio triangular
Reporta para cada tres segmentos de línea si pueden formar un triángulo. Regresa el resultado en cualquier orden.
Table: Triangle
+-------------+------+
| Column Name | Type |
+-------------+------+
| x | int |
| y | int |
| z | int |
+-------------+------+
- (x, y, z) es la llave primaria.
- Cada fila contiene las longitudes de tres segmentos de línea.
El formato del resultado se muestra en el siguiente ejemplo.
Ejemplo 1:
Entrada:
Tabla Triangle:
+----+----+----+
| x | y | z |
+----+----+----+
| 13 | 15 | 30 |
| 10 | 20 | 15 |
+----+----+----+
Salida:
+----+----+----+----------+
| x | y | z | triangle |
+----+----+----+----------+
| 13 | 15 | 30 | No |
| 10 | 20 | 15 | Yes |
+----+----+----+----------+
Solución
import pandas as pd
def triangle_judgement(triangle: pd.DataFrame) -> pd.DataFrame:
triangle_cols = []
for itm in triangle.itertuples():
x, y, z = abs(itm.x), abs(itm.y), abs(itm.z)
if (x + y > z and x + z > y and y + z > x):
triangle_cols.append('Yes')
else:
triangle_cols.append('No')
triangle['triangle'] = triangle_cols
return triangle
def test_triangle_judgement():
data = [[13, 15, 30], [10, 20, 15]]
triangle = pd.DataFrame(
data, columns=['x', 'y', 'z']
).astype({'x': 'Int64', 'y': 'Int64', 'z': 'Int64'})
got = triangle_judgement(triangle)
expected = pd.DataFrame({
'x': [13, 10],
'y': [15, 20],
'z': [30, 15],
'triangle': ['No', 'Yes'],
})
pd.testing.assert_frame_equal(got, expected, check_dtype=False)