Percolation/Mean cluster density: Difference between revisions
Content added Content deleted
(→{{header|Haskell}}: added solution) |
Alextretyak (talk | contribs) (Added 11l) |
||
Line 21: | Line 21: | ||
;See also |
;See also |
||
* [http://mathworld.wolfram.com/s-Cluster.html s-Cluster] on Wolfram mathworld. |
* [http://mathworld.wolfram.com/s-Cluster.html s-Cluster] on Wolfram mathworld. |
||
=={{header|11l}}== |
|||
{{trans|Nim}} |
|||
<lang 11l>UInt32 seed = 0 |
|||
F nonrandom() |
|||
:seed = (1664525 * :seed + 1013904223) [&] FFFF'FFFF |
|||
R (:seed >> 16) / Float(FF'FF) |
|||
V nn = 15 |
|||
V tt = 5 |
|||
V pp = 0.5 |
|||
V NotClustered = 1 |
|||
V Cell2Char = ‘ #abcdefghijklmnopqrstuvwxyz’ |
|||
V NRange = [4, 64, 256, 1024, 4096] |
|||
F newGrid(n, p) |
|||
R (0 .< n).map(i -> (0 .< @n).map(i -> Int(nonrandom() < @@p))) |
|||
F walkMaze(&grid, m, n, idx) -> N |
|||
grid[n][m] = idx |
|||
I n < grid.len - 1 & grid[n + 1][m] == NotClustered |
|||
walkMaze(&grid, m, n + 1, idx) |
|||
I m < grid[0].len - 1 & grid[n][m + 1] == NotClustered |
|||
walkMaze(&grid, m + 1, n, idx) |
|||
I m > 0 & grid[n][m - 1] == NotClustered |
|||
walkMaze(&grid, m - 1, n, idx) |
|||
I n > 0 & grid[n - 1][m] == NotClustered |
|||
walkMaze(&grid, m, n - 1, idx) |
|||
F clusterCount(&grid) |
|||
V walkIndex = 1 |
|||
L(n) 0 .< grid.len |
|||
L(m) 0 .< grid[0].len |
|||
I grid[n][m] == NotClustered |
|||
walkIndex++ |
|||
walkMaze(&grid, m, n, walkIndex) |
|||
R walkIndex - 1 |
|||
F clusterDensity(n, p) |
|||
V grid = newGrid(n, p) |
|||
R clusterCount(&grid) / Float(n * n) |
|||
F print_grid(grid) |
|||
L(row) grid |
|||
V n = L.index |
|||
print(n % 10, end' ‘) ’) |
|||
L(cell) row |
|||
print(‘ ’Cell2Char[cell], end' ‘’) |
|||
print() |
|||
V grid = newGrid(nn, 0.5) |
|||
print(‘Found ’clusterCount(&grid)‘ clusters in this ’nn‘ by ’nn" grid\n") |
|||
print_grid(grid) |
|||
print() |
|||
L(n) NRange |
|||
V sum = 0.0 |
|||
L 0 .< tt |
|||
sum += clusterDensity(n, pp) |
|||
V sim = sum / tt |
|||
print(‘t = #. p = #.2 n = #4 sim = #.5’.format(tt, pp, n, sim))</lang> |
|||
{{out}} |
|||
<pre> |
|||
Found 25 clusters in this 15 by 15 grid |
|||
0) a a b c d |
|||
1) e e d d d d d d |
|||
2) e e e e d d d d |
|||
3) e e e e e e e e d d d d |
|||
4) e e e e e e e e d d d |
|||
5) e e e e e f d |
|||
6) g e h e i d |
|||
7) g j k k d d |
|||
8) l m k k k k k |
|||
9) n l m o k k k k p |
|||
0) n k k k k k q |
|||
1) n r r s k t u |
|||
2) r k k k u |
|||
3) v r r w k k k x |
|||
4) v r r w w w y |
|||
t = 5 p = 0.50 n = 4 sim = 0.17500 |
|||
t = 5 p = 0.50 n = 64 sim = 0.07300 |
|||
t = 5 p = 0.50 n = 256 sim = 0.06823 |
|||
t = 5 p = 0.50 n = 1024 sim = 0.06618 |
|||
t = 5 p = 0.50 n = 4096 sim = 0.06590 |
|||
</pre> |
|||
=={{header|C}}== |
=={{header|C}}== |