From 0e588651bf125f55e9042be0834b6f248409ccb8 Mon Sep 17 00:00:00 2001 From: TiiJay Date: Sat, 30 Nov 2024 10:06:51 +0100 Subject: [PATCH] v.2.0.1 doBacktracking @Query('starting-position'...) --- apps/n-dame-problem/src/n-dame-backtracker.ts | 7 +++++-- apps/n-dame-problem/src/n-dame-model.ts | 15 ++++++++++++++- .../src/n-dame-problem.controller.ts | 6 ++++-- apps/n-dame-problem/src/n-dame-problem.service.ts | 8 ++++---- package.json | 2 +- 5 files changed, 28 insertions(+), 10 deletions(-) diff --git a/apps/n-dame-problem/src/n-dame-backtracker.ts b/apps/n-dame-problem/src/n-dame-backtracker.ts index 31e5c84..ae53e67 100644 --- a/apps/n-dame-problem/src/n-dame-backtracker.ts +++ b/apps/n-dame-problem/src/n-dame-backtracker.ts @@ -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() { diff --git a/apps/n-dame-problem/src/n-dame-model.ts b/apps/n-dame-problem/src/n-dame-model.ts index 7f7a7a7..9fac7cb 100644 --- a/apps/n-dame-problem/src/n-dame-model.ts +++ b/apps/n-dame-problem/src/n-dame-model.ts @@ -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++) { diff --git a/apps/n-dame-problem/src/n-dame-problem.controller.ts b/apps/n-dame-problem/src/n-dame-problem.controller.ts index d9afcad..09e0135 100644 --- a/apps/n-dame-problem/src/n-dame-problem.controller.ts +++ b/apps/n-dame-problem/src/n-dame-problem.controller.ts @@ -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' : '.'))); } } diff --git a/apps/n-dame-problem/src/n-dame-problem.service.ts b/apps/n-dame-problem/src/n-dame-problem.service.ts index 9c9b085..85846b3 100644 --- a/apps/n-dame-problem/src/n-dame-problem.service.ts +++ b/apps/n-dame-problem/src/n-dame-problem.service.ts @@ -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 = []; diff --git a/package.json b/package.json index 513786b..8618184 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "backtracking", - "version": "2.0.0", + "version": "2.0.1", "description": "", "author": "", "private": true,