Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
|
|
@ -0,0 +1,93 @@
|
|||
class Grid {
|
||||
constructor(size, probability) {
|
||||
this.CLUSTERED = -1;
|
||||
this.GRID_CHARACTERS = ".ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
||||
this.grid = [];
|
||||
this._clusterCount = 0;
|
||||
this.createGrid(size, probability);
|
||||
this.countClusters();
|
||||
}
|
||||
|
||||
get clusterCount() {
|
||||
return this._clusterCount;
|
||||
}
|
||||
|
||||
clusterDensity() {
|
||||
return this._clusterCount / (this.grid.length * this.grid.length);
|
||||
}
|
||||
|
||||
display() {
|
||||
for (let row = 0; row < this.grid.length; row++) {
|
||||
let line = "";
|
||||
for (let col = 0; col < this.grid.length; col++) {
|
||||
const value = this.grid[row][col];
|
||||
const ch = value < this.GRID_CHARACTERS.length ? this.GRID_CHARACTERS.charAt(value) : '?';
|
||||
line += " " + ch;
|
||||
}
|
||||
console.log(line);
|
||||
}
|
||||
}
|
||||
|
||||
countClusters() {
|
||||
this._clusterCount = 0;
|
||||
for (let row = 0; row < this.grid.length; row++) {
|
||||
for (let col = 0; col < this.grid.length; col++) {
|
||||
if (this.grid[row][col] === this.CLUSTERED) {
|
||||
this._clusterCount += 1;
|
||||
this.identifyCluster(row, col, this._clusterCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
identifyCluster(row, col, count) {
|
||||
this.grid[row][col] = count;
|
||||
if (row < this.grid.length - 1 && this.grid[row + 1][col] === this.CLUSTERED) {
|
||||
this.identifyCluster(row + 1, col, count);
|
||||
}
|
||||
if (col < this.grid[0].length - 1 && this.grid[row][col + 1] === this.CLUSTERED) {
|
||||
this.identifyCluster(row, col + 1, count);
|
||||
}
|
||||
if (col > 0 && this.grid[row][col - 1] === this.CLUSTERED) {
|
||||
this.identifyCluster(row, col - 1, count);
|
||||
}
|
||||
if (row > 0 && this.grid[row - 1][col] === this.CLUSTERED) {
|
||||
this.identifyCluster(row - 1, col, count);
|
||||
}
|
||||
}
|
||||
|
||||
createGrid(gridSize, probability) {
|
||||
this.grid = Array(gridSize).fill().map(() => Array(gridSize).fill(0));
|
||||
for (let row = 0; row < gridSize; row++) {
|
||||
for (let col = 0; col < gridSize; col++) {
|
||||
if (Math.random() < probability) {
|
||||
this.grid[row][col] = this.CLUSTERED;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function main() {
|
||||
const size = 15;
|
||||
const probability = 0.5;
|
||||
const testCount = 5;
|
||||
|
||||
const grid = new Grid(size, probability);
|
||||
console.log(`This ${size} by ${size} grid contains ${grid.clusterCount} clusters:`);
|
||||
grid.display();
|
||||
|
||||
console.log(`\n p = 0.5, iterations = ${testCount}`);
|
||||
const gridSizes = [10, 100, 1000, 10000];
|
||||
for (const gridSize of gridSizes) {
|
||||
let sumDensity = 0.0;
|
||||
for (let test = 0; test < testCount; test++) {
|
||||
const g = new Grid(gridSize, probability);
|
||||
sumDensity += g.clusterDensity();
|
||||
}
|
||||
const result = sumDensity / testCount;
|
||||
console.log(` n = ${gridSize}, simulation K = ${result.toFixed(6)}`);
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
||||
Loading…
Add table
Add a link
Reference in a new issue