Vogel's approximation method: Difference between revisions
Content added Content deleted
m (→{{header|Tcl}}: Add comments) |
(Updated D entry) |
||
Line 78: | Line 78: | ||
enum K { A, B, C, D, E, X, Y, Z, W } |
enum K { A, B, C, D, E, X, Y, Z, W } |
||
immutable int[K][K] costs = cast() // |
immutable int[K][K] costs = cast() //** |
||
[K.W: [K.A: 16, K.B: 16, K.C: 13, K.D: 22, K.E: 17], |
[K.W: [K.A: 16, K.B: 16, K.C: 13, K.D: 22, K.E: 17], |
||
K.X: [K.A: 14, K.B: 14, K.C: 13, K.D: 19, K.E: 15], |
K.X: [K.A: 14, K.B: 14, K.C: 13, K.D: 19, K.E: 15], |
||
Line 84: | Line 84: | ||
K.Z: [K.A: 50, K.B: 12, K.C: 50, K.D: 15, K.E: 11]]; |
K.Z: [K.A: 50, K.B: 12, K.C: 50, K.D: 15, K.E: 11]]; |
||
int[K] demand, supply; |
int[K] demand, supply; |
||
with (K) |
with (K) |
||
demand = [A: 30, B: 20, C: 70, D: 30, E: 60], |
|||
demand = [A: 30, B: 20, C: 70, D: 30, E: 60]; |
|||
supply = [W: 50, X: 60, Y: 50, Z: 50]; |
supply = [W: 50, X: 60, Y: 50, Z: 50]; |
||
} |
|||
immutable cols = demand.keys.sort().release; |
|||
auto res = costs.byKey.zip((int[K]).init.repeat).assocArray; |
auto res = costs.byKey.zip((int[K]).init.repeat).assocArray; |
||
K[][K] g; |
K[][K] g; |
||
foreach (immutable x; supply.byKey) |
foreach (immutable x; supply.byKey) |
||
g[x] = costs[x].keys.schwartzSort!(k => cast()costs[x][k]) |
g[x] = costs[x].keys.schwartzSort!(k => cast()costs[x][k]) //** |
||
.release; |
.release; |
||
foreach (immutable x; demand.byKey) |
foreach (immutable x; demand.byKey) |