v.1.0.0 NDameModel setup

This commit is contained in:
TiiJay
2024-11-29 11:05:41 +01:00
parent c8ef9e7a2c
commit b4ee271fff
10 changed files with 368 additions and 4 deletions

View File

@@ -0,0 +1,7 @@
import { Backtracker } from './backtracker';
describe('Backtracker', () => {
it('should be defined', () => {
expect(new Backtracker()).toBeDefined();
});
});

View File

@@ -0,0 +1,26 @@
import { IBacktracking } from './backtracking.interface';
export class Backtracker {
findSolution = (dataObject: IBacktracking): boolean => {
if (dataObject.solved()) return true;
// nächstes freie Position suchen
dataObject.nextPosition();
dataObject.options().forEach((option) => {
// darf die Option hier eingestellt werden ?
if (dataObject.positionPossible()) {
dataObject.applyPosition();
// Lösung mit dem neu konfigurierten dataObject finden
const solved: boolean = this.findSolution(dataObject);
if (solved) return true;
dataObject.discardPosition();
}
});
return false;
};
}

View File

@@ -1,4 +1,27 @@
import { Injectable } from '@nestjs/common';
/**
* PSEUDO-CODE:
*
void FIND_SOLUTIONS (Parameter):
wenn (gültige Lösung ):
Bewahren Sie die Lösung auf
Zurückkehren (gelöst)
für (alle Auswahlmöglichkeiten ):
wenn (gültige Auswahl ):
ANWENDEN ( Auswahl )
FIND_SOLUTIONS (Parameter)
wenn (gültige Lösung ):
Bewahren Sie die Lösung auf
Zurückkehren (gelöst)
BACKTRACK ( Auswahl entfernen )
Zurückkehren (nicht gelöst)
*/
@Injectable()
export class BacktrackingLibService {}

View File

@@ -0,0 +1,10 @@
import { MatrixPosition } from './matrix-position';
export interface IBacktracking {
options: () => Array<any>;
solved: () => boolean;
nextPosition: () => MatrixPosition;
positionPossible: () => boolean;
applyPosition: () => MatrixPosition;
discardPosition: () => MatrixPosition;
}

View File

@@ -0,0 +1,25 @@
export class MatrixPosition {
constructor(
private _row: number,
private _col: number,
) {}
public get row() {
return this._row;
}
public set row(r: number) {
this._row = r;
}
public get col() {
return this._col;
}
public set col(c: number) {
this._col = c;
}
public toString() {
return `[${this._row},${this._col}]`;
}
}