v.2.0.1 doBacktracking @Query('starting-position'...)

This commit is contained in:
TiiJay
2024-11-30 10:06:51 +01:00
parent 63626ce9d0
commit 0e588651bf
5 changed files with 28 additions and 10 deletions

View File

@@ -4,9 +4,12 @@ import { NDameModel } from './n-dame-model';
export class NDameBacktracker extends ABacktracker {
private _model: NDameModel;
constructor(private readonly modelSize: number) {
constructor(
private readonly startingPosition,
private readonly modelSize: number,
) {
super();
this._model = new NDameModel(modelSize);
this._model = new NDameModel(startingPosition, modelSize);
}
get model() {

View File

@@ -17,11 +17,24 @@ export class NDameModel implements IBacktrackingModel {
this._modelSize - 1,
);
constructor(private readonly _modelSize: number) {
constructor(
private readonly _startingPosition,
private readonly _modelSize: number,
) {
this.initNDameField();
}
private initNDameField() {
// haben wir eine StartPosition, das muss die modelPosition expilzit gesetzt werden
// StartPosition darf nicht größer als modelSize sein !
if (
this._startingPosition > 0 &&
this._startingPosition <= this.modelSize
) {
this.modelPosition.col = this._startingPosition - 2;
this.modelPosition.row = 0;
}
for (var zeile = 0; zeile < this._modelSize; zeile++) {
this.nDamesMatrix[zeile] = [];
for (var spalte = 0; spalte < this._modelSize; spalte++) {

View File

@@ -35,9 +35,11 @@ export class NDameProblemController {
doBacktracking(
@Query('model-size', new DefaultValuePipe(5), ParseIntPipe)
modelSize: number,
@Query('starting-position', new DefaultValuePipe(-1), ParseIntPipe)
startingPosition: number,
) {
return this.nDameProblemService
.doBacktracking(modelSize)
.map((row) => row.map((col) => (col ? 'X' : 'O')));
.doBacktracking(startingPosition, modelSize)
.map((row) => row.map((col) => (col ? 'X' : '.')));
}
}

View File

@@ -6,14 +6,14 @@ import { NDameBacktracker } from './n-dame-backtracker';
export class NDameProblemService {
private readonly logger = new Logger(this.constructor.name);
doBacktracking(modelSize: number): boolean[][] {
const nDameBacktracker = new NDameBacktracker(modelSize);
doBacktracking(startingPosition: number, modelSize: number): boolean[][] {
const nDameBacktracker = new NDameBacktracker(startingPosition, modelSize);
return nDameBacktracker.doBacktrack();
}
getBacktracking(): NDameBacktracker {
const backTracker = new NDameBacktracker(5);
const backTracker = new NDameBacktracker(0, 5);
backTracker.model.solved();
@@ -31,7 +31,7 @@ export class NDameProblemService {
}
getModel(field: number, modelSize: number): boolean[][] {
const model = new NDameModel(modelSize);
const model = new NDameModel(-1, modelSize);
const modelFieldCount = model.modelSize * model.modelSize;
const rndFields = [];