Conoce más del reto de la semana
Descripción del reto
Estamos remplazando una herramienta antigua, con una nueva versión (usando el lenguaje de moda, claro). Debemos validar que ambas herramientas devuelvan resultados idénticos.
Por la naturaleza del proceso, la magia de los números flotantes, y otras cosas que nadie sabe explicar, los números no serán exactamente iguales, aunque si están dentro de un rango, podemos decir que son idénticos.
También, ambas herramientas devuelven los valores "desordenados", es decir, el primer elemento para una herramienta puede estar en cualquier otra posición para la otra.
Veamos un ejemplo
La primera herramienta nos devolvió los siguientes resultados (en formato CSV):
|--------|-------|-----|
| Name | X | Y |
|--------|-------|-----|
| Cat | 106 | 450 |
| Dog | 300 | 200 |
| Snake | 45 | 100 |
|--------|-------|-----|
La segunda herramienta nos da lo siguiente:
|----------|----------|-------|-----|
| X | Y | Name | Tag |
|----------|----------|-------|-----|
| 299.9999 | 200.0001 | Dog | |
| 45.003 | 99.9999 | Snake | |
| 106.0005 | 499.9999 | Cat | |
|----------|----------|-------|-----|
El rango para considerar que un número es idéntico a otro es 0.001.
En este caso el valor X del Cat es 106.0005 en una herramienta y 106 en la otra. Podemos considerar que son idénticos.
También el valor Y de Skate es 99.9999 y 100 en la otra. También son idénticos.
Finalmente, el valor Tag que devuelve una herramienta está vacío, por lo que podemos ignorar que esa columna no existe en la tabla de la otra herramienta. Es decir, no estamos considerando los valores vacíos en la comparación.
Bajo estas condiciones, podemos decir que ambas tablas tienen valores idénticos.
En caso de que una tabla tuviera más registros que otra, o cualquiera de sus valores sean distintos, debemos indicarlo, y también señalar la condición en la que son diferentes.
¿Cómo lo resolverías?
Algunas pistas
- Empieza pensando ¿Cómo puedes identificar que un registro es similar a otro, considerando todas sus columnas? (Te puede ayudar el concepto de las llaves primarias en las bases de datos)
- ¿Cómo podemos identificar que dos números diferentes son idénticos si su diferencia está dentro del rango que definimos?
Top comments (0)