v.2.0.1 doBacktracking @Query('starting-position'...)
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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++) {
|
||||
|
||||
@@ -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' : '.')));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 = [];
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "backtracking",
|
||||
"version": "2.0.0",
|
||||
"version": "2.0.1",
|
||||
"description": "",
|
||||
"author": "",
|
||||
"private": true,
|
||||
|
||||
Reference in New Issue
Block a user