Skip to content

Commit 1143660

Browse files
committed
- nicer variable names for dimensions and number of divisions
1 parent 9cf36d9 commit 1143660

File tree

1 file changed

+21
-18
lines changed

1 file changed

+21
-18
lines changed

nimplex.nim

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,38 +5,41 @@ import std/sugar
55
import arraymancer
66
import strutils
77

8-
proc simplex_grid*(m: int,
9-
n: int): Tensor[int] =
10-
let L: int = binom(n+m-1, m-1)
11-
result = newTensor[int]([L, m])
12-
var x = zeros[int](m)
13-
x[m-1] = n
14-
for j in 0..m-1:
8+
proc simplex_grid*(dim: int,
9+
ndiv: int): Tensor[int] =
10+
11+
let L: int = binom(ndiv+dim-1, dim-1)
12+
result = newTensor[int]([L, dim])
13+
var x = zeros[int](dim)
14+
x[dim-1] = ndiv
15+
for j in 0..dim-1:
1516
result[0, j] = x[j]
16-
var h = m
17+
var h = dim
1718
for i in 1..L-1:
1819
h -= 1
1920
let val = x[h]
2021
x[h] = 0
21-
x[m-1] = val - 1
22+
x[dim-1] = val - 1
2223
x[h-1] += 1
23-
for j in 0..m-1:
24+
for j in 0..dim-1:
2425
result[i, j] = x[j]
2526
if val != 1:
26-
h = m
27+
h = dim
2728
return result
2829

29-
proc simplex_grid_fractional*(m: int,
30-
n: int): Tensor[float] =
31-
result = simplex_grid(m, n).asType(float)
32-
result = result.map(x => x / float(n))
30+
31+
proc simplex_grid_fractional*(dim: int,
32+
ndiv: int): Tensor[float] =
33+
34+
result = simplex_grid(dim, ndiv).asType(float)
35+
result = result.map(x => x / float(ndiv))
3336
return result
3437

3538

3639
echo "Simplex dimensions:"
37-
let m = readLine(stdin).parseInt()
40+
let dim = readLine(stdin).parseInt()
3841

3942
echo "N divisions:"
40-
let n = readLine(stdin).parseInt()
43+
let ndiv = readLine(stdin).parseInt()
4144

42-
echo simplex_grid_fractional(m, n)
45+
echo simplex_grid(dim, ndiv)

0 commit comments

Comments
 (0)