Esempio n. 1
0
  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;
  }
Esempio n. 2
0
 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);
   }
 }
Esempio n. 3
0
 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;
  }
Esempio n. 5
0
 @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;
 }
Esempio n. 8
0
    @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.
    }
Esempio n. 9
0
 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;
 }
Esempio n. 10
0
 /**
  * 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;
 }
Esempio n. 11
0
  @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;
  }
Esempio n. 12
0
 /** 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);
 }
Esempio n. 13
0
 // 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));
 }
Esempio n. 14
0
 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);
         }
       }
     }
   }
 }
Esempio n. 15
0
 // returns string representation of the column. ["a"-"h"]
 public static String colToString(final int val) {
   return "" + ((char) (Pos.col(val) + (int) 'a'));
 }
Esempio n. 16
0
 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());
     }
   }
 }
Esempio n. 17
0
 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;
 }
Esempio n. 18
0
 public void flood(Pos pos) {
   flood(pos.getX(), pos.getY(), true);
   Minesweeper.getGame().checkWin();
 }
Esempio n. 19
0
 public Tile getTile(Pos pos) {
   return getTile(pos.getX(), pos.getY());
 }
Esempio n. 20
0
 // 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));
 }
Esempio n. 21
0
  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");
    }
  }