class Size { constructor(l, d, r) { this.left = l; this.dot = d; this.right = r; } updateMax(size) { this.left = max(this.left, size.left); this.dot = max(this.dot, size.dot); this.right = max(this.right, size.right); } } function getSize(s) { p = pos(s, "."); if (p == 0) { return new Size(len(s), 0, 0); } return new Size(p - 1, 1, len(s) - p); } maxSize = new Size(0, 0, 0); for (y = 1; y <= Bottom; y++) { maxSize.updateMax(getSize([x,y])); } zeros = ""; for (i = 0; i < max(maxSize.left, maxSize.right); i++) { zeros = zeros + "0"; } for (y = 1; y <= Bottom; y++) { size = getSize([x,y]); [x,y] = left(zeros, maxSize.left - size.left) + [x,y] + left(".", maxSize.dot - size.dot) + left(zeros, maxSize.right - size.right); }