private static List<Pos> emTorno(Pos p, Pos exclusao) { List<Pos> pes = new ArrayList<>(); Pos pe; if (p != null && p.i >= 0 && p.i < estado.length && p.j >= 0 && p.j < estado[0].length) { pe = new Pos(p.i - 1, p.j); if (pe.i >= 0 && pe.i < estado.length && pe.j >= 0 && pe.j < estado[0].length && !pe.equals(exclusao)) pes.add(pe); pe = new Pos(p.i, p.j - 1); if (pe.i >= 0 && pe.i < estado.length && pe.j >= 0 && pe.j < estado[0].length && !pe.equals(exclusao)) pes.add(pe); pe = new Pos(p.i + 1, p.j); if (pe.i >= 0 && pe.i < estado.length && pe.j >= 0 && pe.j < estado[0].length && !pe.equals(exclusao)) pes.add(pe); pe = new Pos(p.i, p.j + 1); if (pe.i >= 0 && pe.i < estado.length && pe.j >= 0 && pe.j < estado[0].length && !pe.equals(exclusao)) pes.add(pe); } return pes; }
public Pos getSecondNearestNode(Pos p) { Pos nearest = getNearestNode(p); int nearestRow = getRow(nearest); int nearestCol = getCol(nearest); if (nearest.equals(p)) return null; if (nearest.x == p.x) { if (nearest.y < p.y) return createPosFromNode(nearestRow + 1, nearestCol); else return createPosFromNode(nearestRow - 1, nearestCol); } else /* if (nearest.y == p.y) */ { if (nearest.x < p.x) return createPosFromNode(nearestRow, nearestCol + 1); else return createPosFromNode(nearestRow, nearestCol - 1); } }
public Pos getNearestNode(Pos p) { int row = getRow(p); int col = getCol(p); Pos nearest = createPosFromNode(row, col); double minDist = p.dist(nearest); if (nearest.equals(p)) return p; Pos tmp; if (nearest.x == p.x) { tmp = createPosFromNode(row + 1, col); } else /* if (nearest.y == p.y) */ { tmp = createPosFromNode(row, col + 1); } if (p.dist(tmp) < minDist) nearest = tmp; return nearest; }
@Override public Boolean visit(Pos ast) { boolean checkArg = ast.getArg().accept(this); if (!checkArg) return false; Type argType = ast.getArg().typeOf(env); if (!argType.isCompatibleToNumeric()) { addToErrorList( ast, "the unary operator + can not be applied to instances of type " + argType.getClass()); return false; } return true; }
@Override public Expr optimize(final QueryContext qc, final VarScope scp) throws QueryException { // number of predicates may change in loop for (int p = 0; p < preds.length; p++) { final Expr pred = preds[p]; if (pred instanceof CmpG || pred instanceof CmpV) { final Cmp cmp = (Cmp) pred; if (cmp.exprs[0].isFunction(Function.POSITION)) { final Expr e2 = cmp.exprs[1]; final SeqType st2 = e2.seqType(); // position() = last() -> last() // position() = $n (numeric) -> $n if (e2.isFunction(Function.LAST) || st2.one() && st2.type.isNumber()) { if (cmp instanceof CmpG && ((CmpG) cmp).op == OpG.EQ || cmp instanceof CmpV && ((CmpV) cmp).op == OpV.EQ) { qc.compInfo(OPTWRITE, pred); preds[p] = e2; } } } } else if (pred instanceof And) { if (!pred.has(Flag.FCS)) { // replace AND expression with predicates (don't swap position tests) qc.compInfo(OPTPRED, pred); final Expr[] and = ((Arr) pred).exprs; final int m = and.length - 1; final ExprList el = new ExprList(preds.length + m); for (final Expr e : Arrays.asList(preds).subList(0, p)) el.add(e); for (final Expr a : and) { // wrap test with boolean() if the result is numeric el.add(Function.BOOLEAN.get(null, info, a).optimizeEbv(qc, scp)); } for (final Expr e : Arrays.asList(preds).subList(p + 1, preds.length)) el.add(e); preds = el.finish(); } } else if (pred instanceof ANum) { final ANum it = (ANum) pred; final long i = it.itr(); if (i == it.dbl()) { preds[p] = Pos.get(i, info); } else { qc.compInfo(OPTREMOVE, this, pred); return Empty.SEQ; } } else if (pred.isValue()) { if (pred.ebv(qc, info).bool(info)) { qc.compInfo(OPTREMOVE, this, pred); preds = Array.delete(preds, p--); } else { // handle statically known predicates qc.compInfo(OPTREMOVE, this, pred); return Empty.SEQ; } } } return this; }
@Override public Boolean visit(Pos exp) { Expr unExpr = exp.getExpr(); if (!(unExpr.typeOf(environment) == new IntType())) { errorMsgs.add(String.format("Pos expression is not numeric: %s", exp)); return false; } return unExpr.accept(this); }
@Override public int hashCode() { int result = 17; int c = phrase.hashCode(); int e = pos.hashCode(); result = 31 * result + c; result = 31 * result + e; return result; }
@Override public void run() { // System.out.println("update map now"); LinkedList<EdgeOp> backlist = new LinkedList<>(); PublicData pd = PublicData.getData(); int i; PosOp tmpPosOp; EdgeOp tmpEdgeOp; Pos tmpPos; for (i = 0; i < pd.posTask.size(); i++) { tmpPosOp = pd.posTask.get(i); if (tmpPosOp.op == 0) { // op==0 add a pos MapViewer.this.g.addVertex(new Integer(tmpPosOp.pos)); tmpPos = pd.agentsPos.get(tmpPosOp.pos); MapViewer.this.layout.setLocation(tmpPosOp.pos, tmpPos.getX(), tmpPos.getY()); } else { MapViewer.this.g.removeVertex(tmpPosOp.pos); } } for (i = 0; i < pd.edgeTask.size(); i++) { tmpEdgeOp = pd.edgeTask.get(i); if (tmpEdgeOp.op == 0) { // add a edge // int edgeNum=g.getEdgeCount(); MapViewer.this.g.addEdge(edgeCnt, tmpEdgeOp.start, tmpEdgeOp.end); backlist.add(new EdgeOp(1, edgeCnt, 0, pd.displayCnt)); edgeCnt++; } else { // remove if (tmpEdgeOp.delay <= 0) { g.removeEdge(tmpEdgeOp.start); } else { tmpEdgeOp.delay--; backlist.add(tmpEdgeOp); } } } pd.resetTask(); pd.edgeTask = backlist; vv.repaint(); // throw new UnsupportedOperationException("Not supported yet."); //To change body of // generated methods, choose Tools | Templates. }
protected boolean slowCheck() { EntityPlayer player = Minecraft.getMinecraft().thePlayer; mOpen.clear(); mClosed.clear(); boolean newValue = false; // Boundry problems because doubles to ints suck, always pick the "good position" Pos current = new Pos(Math.ceil(player.posX), Math.ceil(player.posY), Math.ceil(player.posZ)); if (!goodSuccessor(current, null)) current = new Pos(Math.floor(player.posX), Math.floor(player.posY), Math.floor(player.posZ)); while (current != null && !newValue) { if (current.isExposed()) { newValue = true; break; } mOpen.addAll(successors(current)); mClosed.add(current); current = mOpen.poll(); } return newValue; }
/** * Prepares this expression for iterative evaluation. The expression can be iteratively evaluated * if no predicate or only the first is positional. * * @return result of check */ protected final boolean posIterator() { // check if first predicate is numeric if (preds.length == 1) { Expr p = preds[0]; if (p instanceof Int) p = Pos.get(((Int) p).itr(), info); pos = p instanceof Pos ? (Pos) p : null; last = p.isFunction(Function.LAST); preds[0] = p; } return pos != null || last; }
@Override public Expr comp(final QueryContext ctx) throws QueryException { for (final Expr p : pred) checkUp(p, ctx); Expr e = this; for (int p = 0; p < pred.length; ++p) { Expr pr = pred[p].comp(ctx).compEbv(ctx); pr = Pos.get(CmpV.Op.EQ, pr, pr, input); if (pr.value()) { if (!pr.ebv(ctx, input).bool(input)) { ctx.compInfo(OPTREMOVE, desc(), pr); e = Empty.SEQ; break; } ctx.compInfo(OPTREMOVE, desc(), pr); pred = Array.delete(pred, p--); } else { pred[p] = pr; } } return e; }
/** Get node's position attribute converted to Pos enumeration values. */ private static Pos getPosition(Node n) { Node posNode = n.getAttributes().getNamedItem("position"); if (posNode == null) return null; String posString = posNode.getTextContent(); return Pos.fromString(posString); }
// returns string representation of the row of val - human represented so from bottom to top // ["1"-"8"] public static String rowToString(final int val) { return "" + (8 - Pos.row(val)); }
public void move() { if (_toEat.getEaten()) { _toEat = null; _targetPos = null; _toExecute = "arret"; } else { if (_targetPos.getX() == _actualPos.getX() && _targetPos.getY() == _actualPos.getY()) { System.out.println("Trying to eat"); _toEat.eat(); } else { // On change la position du pigeon // on v�rifie sur l'axe x if (_actualPos.getX() != _targetPos.getX()) { if (_actualPos.getX() < _targetPos.getX()) { this._position = "droite"; this._actualPos.setX(_actualPos.getX() + 1); } else { this._position = "gauche"; this._actualPos.setX(_actualPos.getX() - 1); } } // on v�rifie sur l'axe y if (_actualPos.getY() != _targetPos.getY()) { if (_actualPos.getY() < _targetPos.getY()) { this._actualPos.setY(_actualPos.getY() + 1); } else { this._actualPos.setY(_actualPos.getY() - 1); } } } } }
// returns string representation of the column. ["a"-"h"] public static String colToString(final int val) { return "" + ((char) (Pos.col(val) + (int) 'a')); }
private void parseRect() { // Список символов List<List<Dot>> dotvv = new ArrayList<List<Dot>>(); for (int i = 0; i < tc.getSymbols().size(); i++) { List<Dot> dotv = new ArrayList<Dot>(); // Список определений символов // Нарисовать элементы Symbol // Нарисовать строки из полей Field for (int j = 0; j < tc.getSymbols().get(i).getField2s().size(); j++) { if (tc.getSymbols().get(i).getField2s().get(j).getShow() == 1) { Dot dd1 = new Dot( (tc.getSymbols().get(i).getPos().getX() + tc.getSymbols().get(i).getField2s().get(j).getPos().getX()), (tc.getSymbols().get(i).getPos().getY() + tc.getSymbols().get(i).getField2s().get(j).getPos().getY())); dotv.add(dd1); if (ModelDSN.debug >= 2) System.out.println("0.Added x-" + dd1.getX() + ", y-" + dd1.getY()); } } for (int j = 0; j < tc.getSymbolDefs().size(); j++) { if (tc.getSymbols().get(i).getId() == tc.getSymbolDefs().get(j).getId()) { // Координаты правого нижнего угла for (int k = 0; k < tc.getSymbolDefs().get(j).getTinyCadSymbol().getRectangles().size(); k++) { Dot dd1 = new Dot( tc.getSymbols().get(i).getPos().getX() + tc.getSymbolDefs() .get(j) .getTinyCadSymbol() .getRectangles() .get(k) .getA() .getX(), tc.getSymbols().get(i).getPos().getY() + tc.getSymbolDefs() .get(j) .getTinyCadSymbol() .getRectangles() .get(k) .getA() .getY()); Dot dd2 = new Dot( tc.getSymbols().get(i).getPos().getX() + tc.getSymbolDefs() .get(j) .getTinyCadSymbol() .getRectangles() .get(k) .getB() .getX(), tc.getSymbols().get(i).getPos().getY() + tc.getSymbolDefs() .get(j) .getTinyCadSymbol() .getRectangles() .get(k) .getB() .getY()); dotv.add(dd1); dotv.add(dd2); } // Наристовать строки for (int k = 0; k < tc.getSymbolDefs().get(j).getTinyCadSymbol().getTexts().size(); k++) { Dot dd1 = new Dot( tc.getSymbols().get(i).getPos().getX() + tc.getSymbolDefs() .get(j) .getTinyCadSymbol() .getTexts() .get(k) .getDp() .getX(), tc.getSymbols().get(i).getPos().getY() + tc.getSymbolDefs() .get(j) .getTinyCadSymbol() .getTexts() .get(k) .getDp() .getY()); Dot dd2 = new Dot( tc.getSymbols().get(i).getPos().getX() + tc.getSymbolDefs() .get(j) .getTinyCadSymbol() .getTexts() .get(k) .getDp() .getX() + tc.getSymbolDefs() .get(j) .getTinyCadSymbol() .getTexts() .get(k) .getStr() .length(), tc.getSymbols().get(i).getPos().getY() + tc.getSymbolDefs() .get(j) .getTinyCadSymbol() .getTexts() .get(k) .getDp() .getY() + 3); if (ModelDSN.debug >= 2) System.out.println("1.Added x-" + dd1.getX() + ", y-" + dd1.getY()); if (ModelDSN.debug >= 2) System.out.println("2.Added x-" + dd2.getX() + ", y-" + dd2.getY()); if (ModelDSN.debug >= 1) System.out.println( "Str - " + tc.getSymbolDefs().get(j).getTinyCadSymbol().getTexts().get(k).getStr()); dotv.add(dd1); dotv.add(dd2); } // Нарисовать круги for (int k = 0; k < tc.getSymbolDefs().get(j).getTinyCadSymbol().getEllipses().size(); k++) { int x1 = Math.round( (tc.getSymbols().get(i).getPos().getX() + tc.getSymbolDefs() .get(j) .getTinyCadSymbol() .getEllipses() .get(k) .getA() .getX())); int y1 = Math.round( (tc.getSymbols().get(i).getPos().getY() + tc.getSymbolDefs() .get(j) .getTinyCadSymbol() .getEllipses() .get(k) .getA() .getY())); int x2 = Math.round( (tc.getSymbols().get(i).getPos().getX() + tc.getSymbolDefs() .get(j) .getTinyCadSymbol() .getEllipses() .get(k) .getB() .getX())); int y2 = Math.round( (tc.getSymbols().get(i).getPos().getY() + tc.getSymbolDefs() .get(j) .getTinyCadSymbol() .getEllipses() .get(k) .getB() .getY())); Dot dd1 = new Dot(Math.min(x1, x2), Math.min(y1, y2)); Dot dd2 = new Dot( Math.min(x1, x2) + (Math.max(x1, x2) - Math.min(x1, x2)), Math.min(y1, y2) + (Math.max(y1, y2) - Math.min(y1, y2))); dotv.add(dd1); dotv.add(dd2); } // Нарисовать POLYGON линии for (int k = 0; k < tc.getSymbolDefs().get(j).getTinyCadSymbol().getPolygons().size(); k++) { Pos dp = tc.getSymbolDefs().get(j).getTinyCadSymbol().getPolygons().get(k).getDp(); for (int l = 0; l < tc.getSymbolDefs() .get(j) .getTinyCadSymbol() .getPolygons() .get(k) .getDpointv() .size(); l++) { Dot dd1 = new Dot( tc.getSymbols().get(i).getPos().getX() + dp.getX(), tc.getSymbols().get(i).getPos().getY() + dp.getY()); Dot dd2 = new Dot( tc.getSymbols().get(i).getPos().getX() + dp.getX() + tc.getSymbolDefs() .get(j) .getTinyCadSymbol() .getPolygons() .get(k) .getDpointv() .get(l) .getDp() .getX(), tc.getSymbols().get(i).getPos().getY() + dp.getY() + tc.getSymbolDefs() .get(j) .getTinyCadSymbol() .getPolygons() .get(k) .getDpointv() .get(l) .getDp() .getY()); dotv.add(dd1); dotv.add(dd2); } } } } dotvv.add(dotv); } // Отсортировать список dotvv по координатам x for (int i = 0; i < dotvv.size(); i++) { Collections.sort(dotvv.get(i), new DotXComparator()); tc.getModules() .add( new Module( new Dot(dotvv.get(i).get(0).getX(), 0), new Dot(dotvv.get(i).get(dotvv.get(i).size() - 1).getX(), 0))); } // Отсортировать список dotvv по координатам y for (int i = 0; i < dotvv.size(); i++) { Collections.sort(dotvv.get(i), new DotYComparator()); String val = "No name"; List<Field2> allFields = new ArrayList<Field2>(); for (int j = 0; j < tc.getSymbols().get(i).getField2s().size(); j++) { if (tc.getSymbols().get(i).getField2s().get(j).getDescription().equals("Ref")) { val = tc.getSymbols().get(i).getField2s().get(j).getValue(); } allFields.add(tc.getSymbols().get(i).getField2s().get(j)); } tc.getModules() .set( i, new Module( new Dot(tc.getModules().get(i).getA().getX(), dotvv.get(i).get(0).getY()), new Dot( tc.getModules().get(i).getB().getX(), dotvv.get(i).get(dotvv.get(i).size() - 1).getY()), val, allFields)); if (ModelDSN.debug >= 2) { System.out.println( "X1-" + tc.getModules().get(i).getA().getX() + ", Y1-" + tc.getModules().get(i).getA().getX() + ", X2-" + tc.getModules().get(i).getB().getX() + ", Y2-" + tc.getModules().get(i).getB().getY()); } } }
private static int contaZeroEmTorno(Pos p, Pos exclusao) { int cont = 0; for (Pos pe : emTorno(p, null)) if (!pe.equals(exclusao) && estado[pe.i][pe.j] == 0) cont++; return cont; }
public void flood(Pos pos) { flood(pos.getX(), pos.getY(), true); Minesweeper.getGame().checkWin(); }
public Tile getTile(Pos pos) { return getTile(pos.getX(), pos.getY()); }
// returns string representation of the value; ie "d5" // @val positional value [0-63] - no check on valid range public static String toString(final int val) { return "" + ((char) (Pos.col(val) + (int) 'a')) + "" + (8 - Pos.row(val)); }
public void move_randomly() { Random r = new Random(); int valeur = r.nextInt(8); switch (valeur) { case 0: if (_actualPos.getX() + 4 < 800) { _position = "droite"; _actualPos.setX(_actualPos.getX() + 4); } break; case 1: if (_actualPos.getX() + 4 < 800 && _actualPos.getY() + 4 < 500) { _position = "droite"; _actualPos.setX(_actualPos.getX() + 4); _actualPos.setY(_actualPos.getY() + 4); } break; case 2: if (_actualPos.getY() + 4 < 500) { _actualPos.setY(_actualPos.getY() + 4); } break; case 3: if (_actualPos.getX() - 4 > 0 && _actualPos.getY() + 4 < 500) { _position = "gauche"; _actualPos.setX(_actualPos.getX() - 4); _actualPos.setY(_actualPos.getY() + 4); } break; case 4: if (_actualPos.getX() - 4 > 0) { _position = "gauche"; _actualPos.setX(_actualPos.getX() - 4); } break; case 5: if (_actualPos.getX() - 4 > 0 && _actualPos.getY() - 4 > 0) { _position = "gauche"; _actualPos.setX(_actualPos.getX() - 4); _actualPos.setY(_actualPos.getY() - 4); } break; case 6: if (_actualPos.getY() - 4 > 0) { _actualPos.setY(_actualPos.getY() - 4); } break; case 7: if (_actualPos.getX() + 4 < 800 && _actualPos.getY() - 4 > 0) { _position = "droite"; _actualPos.setX(_actualPos.getX() + 4); _actualPos.setY(_actualPos.getY() - 4); } break; default: System.out.println("NOT SUPPOSED TO HAPPEN AHDHGSGSDFHDFGHDFH"); } }