T[][] zip_longest2(T)(T[] a, T[]b){ T[][] res; if (a.length >= b.length){ swap(a,b); } T fillvalue = '-'; foreach(i, ref e; b) { writeln(i, e, fillvalue); if (i >= --a.length ) { res ~= [e, fillvalue]; } else { res~=[e,a[i]]; } } return res; }