use of core.mino.MinoShifter in project solution-finder by knewjade.
the class LockedNeighborCandidateTest method testField.
@ParameterizedTest
@ArgumentsSource(FieldTestCase.class)
void testField(Field field, Piece piece) {
Injector injector = Guice.createInjector(new BasicModule());
int maxClearLine = 4;
LockedCandidate candidate1 = createLockedCandidate(injector, maxClearLine);
LockedNeighborCandidate candidate2 = createLockedNeighborCandidate(injector, maxClearLine);
MinoShifter minoShifter = injector.getInstance(MinoShifter.class);
// LockedCandidate
Set<Action> search1 = candidate1.search(field, piece, maxClearLine);
// LockedNeighborCandidate
Set<Neighbor> neighbors = candidate2.search(field, piece, maxClearLine);
Set<Action> search2 = neighbors.stream().map(Neighbor::getPiece).map(this::createMinimalAction).map(action -> minoShifter.createTransformedAction(piece, action)).collect(Collectors.toSet());
assertThat(search2).isEqualTo(search1);
}
use of core.mino.MinoShifter in project solution-finder by knewjade.
the class LockedNeighborCandidateTest method createLockedCandidate.
private LockedCandidate createLockedCandidate(Injector injector, int maxClearLine) {
MinoFactory minoFactory = injector.getInstance(MinoFactory.class);
MinoShifter minoShifter = injector.getInstance(MinoShifter.class);
MinoRotation minoRotation = injector.getInstance(MinoRotation.class);
return new LockedCandidate(minoFactory, minoShifter, minoRotation, maxClearLine);
}
use of core.mino.MinoShifter in project solution-finder by knewjade.
the class LockedNeighborReachableTest method createLockedReachable.
private LockedReachable createLockedReachable(Injector injector, int maxClearLine) {
MinoFactory minoFactory = injector.getInstance(MinoFactory.class);
MinoShifter minoShifter = injector.getInstance(MinoShifter.class);
MinoRotation minoRotation = injector.getInstance(MinoRotation.class);
return new LockedReachable(minoFactory, minoShifter, minoRotation, maxClearLine);
}
use of core.mino.MinoShifter in project solution-finder by knewjade.
the class MoveEntryPoint method run.
@Override
public void run() throws FinderException {
output("# Setup Field");
// Setup field
Field field = settings.getField();
Verify.field(field);
int maxClearLine = settings.getMaxClearLine();
output(FieldView.toString(field, maxClearLine));
// Setup max depth
// パフェに必要なミノ数
int maxDepth = Verify.maxDepth(field, maxClearLine);
output();
// ========================================
output("Searching patterns:");
// Setup patterns
List<String> patterns = settings.getPatterns();
PatternGenerator generator = Verify.patterns(patterns);
// Output patterns
for (String pattern : patterns) output(" " + pattern);
output();
// ========================================
// baseファイル
MyFile base = new MyFile(settings.getOutputBaseFilePath());
base.mkdirs();
MinoFactory minoFactory = new MinoFactory();
MinoShifter minoShifter = new MinoShifter();
MinoRotation minoRotation = new MinoRotation();
ColorConverter colorConverter = new ColorConverter();
PerfectValidator perfectValidator = new PerfectValidator();
PutterNoHold<Action> putter = new PutterNoHold<>(minoFactory, perfectValidator);
output("# Calculate");
try (BufferedWriter bw = base.newBufferedWriter()) {
List<Pieces> pieces = generator.blocksStream().collect(Collectors.toList());
for (Pieces piece : pieces) {
String using = piece.blockStream().map(Piece::getName).collect(Collectors.joining());
output(" -> " + using);
TreeSet<Order> first = putter.first(field, piece.getPieceArray(), new LockedCandidate(minoFactory, minoShifter, minoRotation, maxClearLine), maxClearLine, maxDepth);
for (Order order : first) {
Stream<Operation> operationStream = order.getHistory().getOperationStream();
List<MinoOperationWithKey> operationWithKeys = OperationTransform.parseToOperationWithKeys(field, new Operations(operationStream), minoFactory, maxClearLine);
BlockField blockField = OperationTransform.parseToBlockField(operationWithKeys, minoFactory, maxClearLine);
String encodeColor = encodeColor(field, minoFactory, colorConverter, blockField);
String encodeGray = encodeGray(order.getField(), minoFactory, colorConverter);
bw.write(String.format("%s,%s,%s", using, encodeColor, encodeGray));
bw.newLine();
}
}
bw.flush();
} catch (IOException e) {
throw new FinderExecuteException("Failed to output file", e);
}
}
use of core.mino.MinoShifter in project solution-finder by knewjade.
the class MinoFieldComparatorTest method createSeparableMinos.
private SeparableMinos createSeparableMinos() {
MinoFactory minoFactory = new MinoFactory();
MinoShifter minoShifter = new MinoShifter();
SizedBit sizedBit = new SizedBit(3, 4);
return SeparableMinos.createSeparableMinos(minoFactory, minoShifter, sizedBit);
}
Aggregations