2. Текущий код сначала считает ширину столбцов, затем экранирует значения (длина может удвоится, если строка всегда из кавычек), затем (всегда) выравнивает значения.
Я не уверен, что выравнивание вообще может сочетаться с экранированием, как по мне — или-или.
Если совмещать — может, поменять порядок? В смысле, сначала экранировать, затем выравнивать?
UPD: и чтоб два раза не вставать — наш ValueTuple надо в отдельный namespace перетащить, чтоб не было конфликтов с System.ValueTuple<>. CodeJam.Tuples пойдёт наверно.