Пример #1
0
 private void display() {
   final StringBuilder s = new StringBuilder();
   int ql = 0;
   int fl = 0;
   int sl = 0;
   int sql = 0;
   for (int i = 0; i < stackASize; i++) {
     final Turn t = stackA[i].userTurn;
     ql += Metric.QUARTER.length(t);
     fl += Metric.FACE.length(t);
     sl += Metric.SLICE.length(t);
     sql += Metric.SLICE_QUARTER.length(t);
     s.append(t.toString()).append(' ');
   }
   if (stackBSize > 0) s.append(". ");
   for (int i = 0; i < stackBSize; i++) { // print out Phase B part
     final Turn t = stackB[i].userTurn;
     ql += Metric.QUARTER.length(t);
     fl += Metric.FACE.length(t);
     sl += Metric.SLICE.length(t);
     sql += Metric.SLICE_QUARTER.length(t);
     s.append(t.toString()).append(' ');
   }
   reporter.sequenceFound(s.substring(0, max(s.length() - 1, 0)), ql, fl, sl, sql);
 }
Пример #2
0
    public void check_DialogueGame_invariant() {

      Player playerProponent = DialogueGame.this.getProponent();
      Set setTurn = playerProponent.getTurn();
      // evaluate 'forAll(getNumber()/2=1)':
      boolean bForAll = true;
      final Iterator iter = setTurn.iterator();
      while (bForAll && iter.hasNext()) {
        final Turn iter1 = (Turn) iter.next();
        int nGetNumber = iter1.getNumber();
        float fDivide = nGetNumber / 2;
        boolean bEquals = fDivide == 1;

        bForAll = bEquals;
      }
      Player playerOpponent = DialogueGame.this.getOpponent();
      Set setTurn0 = playerOpponent.getTurn();
      // evaluate 'forAll(getNumber()/2=0)':
      boolean bForAll0 = true;
      final Iterator iter0 = setTurn0.iterator();
      while (bForAll0 && iter0.hasNext()) {
        final Turn iter1 = (Turn) iter0.next();
        int nGetNumber0 = iter1.getNumber();
        float fDivide0 = nGetNumber0 / 2;
        boolean bEquals0 = fDivide0 == 0;

        bForAll0 = bEquals0;
      }
      boolean bAnd = bForAll && bForAll0;
      if (!bAnd) {
        System.err.println("invariant 'invariant' failed for object " + DialogueGame.this);
      }
    }
Пример #3
0
 public List<GameStateCard> getGameStateInPlay() {
   List<GameStateCard> gameStateCards = new ArrayList<GameStateCard>();
   for (Object card : cards) {
     gameStateCards.add(Turn.cardToGameStateCard(((Card) card)));
   }
   return gameStateCards;
 }
Пример #4
0
 private void searchB(final int maxALength, final int maxBLength) {
   stackB[0].length = 0;
   stackB[0].turnIndex = 0;
   int d = 0;
   do {
     while (stackB[d].length < maxBLength) {
       final BNode node = stackB[d];
       if (node.turnIndex >= node.turns.length) {
         if (--d < 0) return;
       } else {
         final Turn userTurn = node.turns[node.turnIndex++];
         node.userTurn = userTurn;
         final Turn cubeTurn = SymTransform.getTurn(userTurn, node.symmetry);
         node.cubeTurn = cubeTurn;
         final int length = node.length + metric.length(userTurn);
         if (cubeTurn.isB() && maxALength + length <= maxSearchLength && length <= maxBLength) {
           final BNode nextNode = stackB[d + 1];
           final int mep = transformB.mEdgePosTable.turn(cubeTurn, node.mEdgePos);
           final int cp = transformB.cornerPosTable.turn(cubeTurn, node.cornerPos);
           bprn++;
           if (bprn % CYCLES_BETWEEN_USER_CHECK == 0 && (isInterrupted = reporter.shouldStop()))
             return;
           final int mep_cp_d =
               pruneB.get_mEdgePos_cornerPos_dist(node.mEdgePos_cornerPos_dist, mep, cp);
           if (mep_cp_d <= maxBLength - length) {
             final int udep = transformB.udEdgePosTable.turn(cubeTurn, node.udEdgePos);
             final int mep_udep_d =
                 pruneB.get_mEdgePos_udEdgePos_dist(node.mEdgePos_udEdgePos_dist, mep, udep);
             if (mep_udep_d <= maxBLength - length) {
               nextNode.setCubeState(mep, cp, udep);
               nextNode.setDists(mep_cp_d, mep_udep_d);
               nextNode.setTurnState(node, userTurn, turnListB);
               nextNode.length = length;
               d++;
             } else bpry++;
           } else bpry++;
         }
       }
     }
     stackBSize = d--;
     display();
     maxSearchLength = maxALength + maxBLength - (findAll ? 0 : 1);
   } while (!isInterrupted && d >= 0);
 }
Пример #5
0
  @Property(name = PROPERTY_TURN)
  public boolean setTurn(Turn value) {
    boolean changed = false;

    if (this.turn != value) {

      Turn oldValue = this.turn;
      Player source = this;
      if (this.turn != null) {
        this.turn = null;
        oldValue.setPlayer(null);
      }
      this.turn = value;

      if (value != null) {
        value.setPlayer(this);
      }
      changed = true;
    }
    return changed;
  }
Пример #6
0
 public static void main(String[] args) throws IOException {
   try (BufferedReader br =
       new BufferedReader(
           new InputStreamReader(Day01.class.getResourceAsStream("/01-input.txt")))) {
     Position pos = new Position(), firstVisitedTwice = null;
     Direction direction = Direction.NORTH;
     Set<Position> visited = new HashSet<>();
     visited.add(pos);
     for (String move : br.readLine().split(", ")) {
       direction = direction.turn(Turn.valueOf(String.valueOf(move.charAt(0))));
       for (int i = 0; i < Integer.parseInt(move.substring(1)); i++) {
         pos = direction.move(pos);
         if (firstVisitedTwice == null && visited.contains(pos)) {
           firstVisitedTwice = pos;
         }
         visited.add(pos);
       }
     }
     System.out.println(pos.distance());
     System.out.println(firstVisitedTwice.distance());
   }
 }
Пример #7
0
  public void addTurn(List<Road> via, Road.End to) {
    assert equals(to.getJunction());

    Relation existing = null;
    for (Turn t : to.getTurns()) {
      if (t.getFrom().getOutgoingRoadEnd().equals(getOutgoingRoadEnd()) && t.getVia().equals(via)) {
        if (t.getFrom().equals(this)) {
          // was already added
          return;
        }

        existing = t.getRelation();
      }
    }

    final Relation r;
    if (existing == null) {
      r = new Relation();
      r.put("type", Constants.TYPE_TURNS);

      r.addMember(new RelationMember(Constants.TURN_ROLE_FROM, getOutgoingRoadEnd().getWay()));
      if (via.isEmpty()) {
        r.addMember(new RelationMember(Constants.TURN_ROLE_VIA, getOutgoingJunction().getNode()));
      } else {
        for (Way w :
            Utils.flattenVia(getOutgoingJunction().getNode(), via, to.getJunction().getNode())) {
          r.addMember(new RelationMember(Constants.TURN_ROLE_VIA, w));
        }
      }
      r.addMember(new RelationMember(Constants.TURN_ROLE_TO, to.getWay()));

      getOutgoingJunction().getNode().getDataSet().addPrimitive(r);
    } else {
      r = existing;
    }

    final String key = isExtra() ? Constants.TURN_KEY_EXTRA_LANES : Constants.TURN_KEY_LANES;
    final List<Integer> lanes = Turn.indices(r, key);
    lanes.add(getIndex());
    r.put(key, Turn.join(lanes));
  }
Пример #8
0
 /** End the Game. */
 public void endGame(Turn turn) {
   System.out.println("Player " + turn.getWinner().name + " won!");
 }
Пример #9
0
 public Set<Turn> getTurns() {
   return Turn.load(getContainer(), Constants.TURN_ROLE_FROM, getOutgoingRoadEnd().getWay());
 }