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 {
|
export class NDameBacktracker extends ABacktracker {
|
||||||
private _model: NDameModel;
|
private _model: NDameModel;
|
||||||
|
|
||||||
constructor(private readonly modelSize: number) {
|
constructor(
|
||||||
|
private readonly startingPosition,
|
||||||
|
private readonly modelSize: number,
|
||||||
|
) {
|
||||||
super();
|
super();
|
||||||
this._model = new NDameModel(modelSize);
|
this._model = new NDameModel(startingPosition, modelSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
get model() {
|
get model() {
|
||||||
|
|||||||
@@ -17,11 +17,24 @@ export class NDameModel implements IBacktrackingModel {
|
|||||||
this._modelSize - 1,
|
this._modelSize - 1,
|
||||||
);
|
);
|
||||||
|
|
||||||
constructor(private readonly _modelSize: number) {
|
constructor(
|
||||||
|
private readonly _startingPosition,
|
||||||
|
private readonly _modelSize: number,
|
||||||
|
) {
|
||||||
this.initNDameField();
|
this.initNDameField();
|
||||||
}
|
}
|
||||||
|
|
||||||
private 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++) {
|
for (var zeile = 0; zeile < this._modelSize; zeile++) {
|
||||||
this.nDamesMatrix[zeile] = [];
|
this.nDamesMatrix[zeile] = [];
|
||||||
for (var spalte = 0; spalte < this._modelSize; spalte++) {
|
for (var spalte = 0; spalte < this._modelSize; spalte++) {
|
||||||
|
|||||||
@@ -35,9 +35,11 @@ export class NDameProblemController {
|
|||||||
doBacktracking(
|
doBacktracking(
|
||||||
@Query('model-size', new DefaultValuePipe(5), ParseIntPipe)
|
@Query('model-size', new DefaultValuePipe(5), ParseIntPipe)
|
||||||
modelSize: number,
|
modelSize: number,
|
||||||
|
@Query('starting-position', new DefaultValuePipe(-1), ParseIntPipe)
|
||||||
|
startingPosition: number,
|
||||||
) {
|
) {
|
||||||
return this.nDameProblemService
|
return this.nDameProblemService
|
||||||
.doBacktracking(modelSize)
|
.doBacktracking(startingPosition, modelSize)
|
||||||
.map((row) => row.map((col) => (col ? 'X' : 'O')));
|
.map((row) => row.map((col) => (col ? 'X' : '.')));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,14 +6,14 @@ import { NDameBacktracker } from './n-dame-backtracker';
|
|||||||
export class NDameProblemService {
|
export class NDameProblemService {
|
||||||
private readonly logger = new Logger(this.constructor.name);
|
private readonly logger = new Logger(this.constructor.name);
|
||||||
|
|
||||||
doBacktracking(modelSize: number): boolean[][] {
|
doBacktracking(startingPosition: number, modelSize: number): boolean[][] {
|
||||||
const nDameBacktracker = new NDameBacktracker(modelSize);
|
const nDameBacktracker = new NDameBacktracker(startingPosition, modelSize);
|
||||||
|
|
||||||
return nDameBacktracker.doBacktrack();
|
return nDameBacktracker.doBacktrack();
|
||||||
}
|
}
|
||||||
|
|
||||||
getBacktracking(): NDameBacktracker {
|
getBacktracking(): NDameBacktracker {
|
||||||
const backTracker = new NDameBacktracker(5);
|
const backTracker = new NDameBacktracker(0, 5);
|
||||||
|
|
||||||
backTracker.model.solved();
|
backTracker.model.solved();
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ export class NDameProblemService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getModel(field: number, modelSize: number): boolean[][] {
|
getModel(field: number, modelSize: number): boolean[][] {
|
||||||
const model = new NDameModel(modelSize);
|
const model = new NDameModel(-1, modelSize);
|
||||||
const modelFieldCount = model.modelSize * model.modelSize;
|
const modelFieldCount = model.modelSize * model.modelSize;
|
||||||
const rndFields = [];
|
const rndFields = [];
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "backtracking",
|
"name": "backtracking",
|
||||||
"version": "2.0.0",
|
"version": "2.0.1",
|
||||||
"description": "",
|
"description": "",
|
||||||
"author": "",
|
"author": "",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
|||||||
Reference in New Issue
Block a user