Spaces:
Running
Running
fix: el dedup ya no colapsa enumeraciones (grep -n perdia la ubicacion)
Browse files- js/acer-core.js +15 -1
js/acer-core.js
CHANGED
|
@@ -203,9 +203,23 @@ function cosine(a, b) {
|
|
| 203 |
return (na && nb) ? d / Math.sqrt(na * nb) : 0;
|
| 204 |
}
|
| 205 |
function dedupKey(s) {
|
| 206 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 207 |
}
|
| 208 |
|
|
|
|
| 209 |
/**
|
| 210 |
* Fusión por rangos recíprocos (RRF).
|
| 211 |
* Entrada: varias listas de ids ORDENADAS de más a menos relevante.
|
|
|
|
| 203 |
return (na && nb) ? d / Math.sqrt(na * nb) : 0;
|
| 204 |
}
|
| 205 |
function dedupKey(s) {
|
| 206 |
+
// ⚠️ El número de línea NO se borra cuando es lo único que distingue dos
|
| 207 |
+
// líneas idénticas. Antes se quitaba siempre, y eso colapsaba la salida de
|
| 208 |
+
// `grep -n`: "10: return 42;" y "87: return 42;" caían en la misma clave y
|
| 209 |
+
// se quedaba UNA. Pero «¿dónde está definido X?» es la pregunta más común de
|
| 210 |
+
// un agente de código, y la respuesta ES el número: darle un sitio de tres es
|
| 211 |
+
// darle una respuesta incompleta que parece completa.
|
| 212 |
+
//
|
| 213 |
+
// Regla: se normaliza el espaciado (eso sí es ruido) pero la posición se
|
| 214 |
+
// conserva como parte de la identidad de la línea. Solo colapsan las líneas
|
| 215 |
+
// que son iguales TAMBIÉN en dónde estaban — repeticiones de verdad, como
|
| 216 |
+
// "}" o el encabezado "[resultado …]" saliendo veinte veces.
|
| 217 |
+
const body = s.replace(/\s+/g, ' ').trim().toLowerCase();
|
| 218 |
+
const at = s.match(/^\s*(\d+)\s*[:→]/);
|
| 219 |
+
return at ? at[1] + '|' + body : body;
|
| 220 |
}
|
| 221 |
|
| 222 |
+
|
| 223 |
/**
|
| 224 |
* Fusión por rangos recíprocos (RRF).
|
| 225 |
* Entrada: varias listas de ids ORDENADAS de más a menos relevante.
|