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)
// Can't define costs here and make it immutable.
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*/ const cols = demand.keys.sort().release;
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)