6 string[*] get_one(file in) {
7 string l = File::fgets(in);
8 return String::wordsplit(l, "\t");
11 string[*][*] get_all(file in) {
12 string[...][*] l = {};
13 while (!File::end(in))
14 l[dim(l)] = get_one(in);
18 int[*] find_widths(string[*][*] lines) {
20 for (int r = 0; r < dim(lines); r++) {
21 for (int c = 0; c < dim(lines[r]); c++) {
22 int len = String::length(lines[r][c]);
26 w[c] = max(w[c], len);
32 void print_one(string s, int w) {
33 int l = String::length(s);
41 void print_line(string[*] line) {
42 for (int c = 0; c < dim(line); c++)
43 print_one(line[c], widths[c]);
48 for (int r = 0; r < dim(lines); r++)
53 lines = get_all(stdin);
54 widths = find_widths(lines);