143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
# File 'lib/simplex.rb', line 143
def formatted_tableau
if can_improve?
pivot_column = entering_variable
pivot_row = pivot_row(pivot_column)
else
pivot_row = nil
end
num_cols = @c.size + 1
c = formatted_values(@c.to_a)
b = formatted_values(@b.to_a)
a = @a.to_a.map {|ar| formatted_values(ar.to_a) }
if pivot_row
a[pivot_row][pivot_column] = "*" + a[pivot_row][pivot_column]
end
max = (c + b + a + ["1234567"]).flatten.map(&:size).max
result = []
result << c.map {|c| c.rjust(max, " ") }
a.zip(b) do |arow, brow|
result << (arow + [brow]).map {|a| a.rjust(max, " ") }
result.last.insert(arow.length, "|")
end
lines = result.map {|b| b.join(" ") }
max_line_length = lines.map(&:length).max
lines.insert(1, "-"*max_line_length)
lines.join("\n")
end
|