better-diff icon indicating copy to clipboard operation
better-diff copied to clipboard

Symetric difference optimization

Open ElianCordoba opened this issue 1 year ago • 0 comments

Primero tomar la diferencia entre los node kind map y los que faltan de un lado marcarlos como add/del

 function symmetricDifference(map1: Map<number, any>, map2: Map<number, any>) {
    const missingInFirst = new Map<number, any>();
    const missingInSecond = new Map<number, any>();
  
    for (const [key, value] of map1.entries()) {
      if (!map2.has(key)) {
        missingInFirst.set(key, value);
      }
    }
  
    for (const [key, value] of map2.entries()) {
      if (!map1.has(key)) {
        missingInSecond.set(key, value);
      }
    }
  
    return {
      missingInFirst,
      missingInSecond,
    };
  }

  const res = symmetricDifference(iterA.kindTable, iterB.kindTable)

  for (const x of res.missingInFirst.keys()) {
    
  }

Despues, otra podria ser seria rankear los que tengan mayor differencia, por ejemplo tal vez numeros de un lado hay 10 y del otro 1000, una diferencia de 990, empezar por estos asi ya sabemos que el resto estan de mas y los reportamos como add/del

La idea principal es que me di cuenta que el algoritmo reporta muchos nodos simples, tal vez con esto podamos empezar por ahi antes y hacerlo mas rapido.

Tener en cuenta la idea de hacer que la tabla sea mutable, ahora tenemos que traernos los indexes y chekear si estan matched o no, si cada vez que marcamos actualizamos la tabla podemos borrar esta parte y nos va a servir con la idea de arriba

ElianCordoba avatar Mar 28 '23 17:03 ElianCordoba