public Punto read(int x1, int y1, int z1, List <Punto> bloques) { Punto p = bloques.Find(x => x.x == x1 && x.y == y1 && x.z == z1); return(p); }
public void query(int x1, int y1, int z1, int x2, int y2, int z2) { double suma = 0; if (restriccion.validaPuntos(x1, x2, n) && restriccion.validaPuntos(y1, y2, n) && restriccion.validaPuntos(z1, z2, n)) { Punto p1 = bloques.Lpunto.Find(x => x.x == x1 && x.y == y1 && x.z == z1); Punto p2 = bloques.Lpunto.Find(x => x.x == x2 && x.y == y2 && x.z == z2); if (p1 == null && p2 != null) { suma = suma + p2.w; } else { if (p2 == null && p1 != null) { suma = suma + p1.w; } else { if (p1 != null && p2 != null) { if (p1 != p2) { suma = suma + p1.w + p2.w; } else { suma = suma + p1.w; } } } } foreach (Punto p in bloques.Lpunto) { if (p1 != null && p2 != null) { if (restriccion.validaBloques(p, p1, p2) && p.x != p1.x && p.y != p1.y && p.z != p1.z && p.x != p2.x && p.y != p2.y && p.z != p2.z) { suma = suma + p.w; } } else { Punto puntoA = new Punto(x1, y1, z1, 0); Punto puntoB = new Punto(x2, y2, z2, 0); if (restriccion.validaBloques(p, puntoA, puntoB) && p.x != puntoA.x && p.y != puntoA.y && p.z != puntoA.z && p.x != puntoB.x && p.y != puntoB.y && p.z != puntoB.z) { suma = suma + p.w; } } } } resultado.Add(suma); }