PU2213/src/js/puzzles/sequencepuzzle.js

31 lines
1.1 KiB
JavaScript

import { MersenneTwister } from "../mersennetwister.js";
export class SequencePuzzle {
constructor( puzzleData ) {
this.puzzleData = puzzleData;
this.mersennetwister = new MersenneTwister( this.puzzleData.seed );
this.operators = [
"ADD"
];
this.length = Math.round( this.mersennetwister.randomRange( 30, 70 ) / 10 );
this.answerposition = ( Math.floor( this.mersennetwister.randomRange( 15, this.length * 500 ) / 10 ) - 1 ) % this.length;
this.operator = this.operators[ ( Math.floor( this.mersennetwister.randomRange( 15, this.length * 500 ) / 10 ) - 1 ) % this.operators.length ];
this.factor = Math.round( this.mersennetwister.randomRange( 10, 100 ) / 10 );
this.start = Math.round( this.mersennetwister.randomRange( 10, 97 ) / 10 );
this.parts = new Array( this.length );
this.parts[ 0 ] = this.start;
for ( var i = 1; i < this.length; i++ ) {
this.parts[ i ] = this.parts[ i - 1] + this.factor;
}
this.answer = this.parts[ this.answerposition ];
this.parts[ this.answerposition ] = "?";
console.log( "Puzzle id: " + this.puzzleData.id + " (seed: " + this.puzzleData.seed + ")" );
console.log( this.parts.join( " " ) );
}
}