a=['']+[*$<]+[''] ($.+1).times do |i| j = 0 s=a[i][0]==?. ? '|' : ' ' while a[i+1][j] || a[i][j] do b = ' ' b[0]= ?_ if (a[i][j]==?. || a[i+1][j]==?.) && !(a[i][j]==?. && a[i+1][j]==?.) b[1]= ?| if (a[i][j]==?. || a[i][j+1]==?.) && !(a[i][j]==?. && a[i][j+1]==?.) s += b j += 1 end puts s.gsub(/_ (?=_)/,'__').rstrip end