// Ruby version num_rows = ARGV[0].to_i row = rows = [] num_rows.times do row = (rows << (-1 ... row.size).map do |i| next 1 if i == -1 next row[i] + (row[i + 1] or 0) end).last end digit_space = rows.last.max.to_s.size formatted_rows = rows.map{|row| row.map{|i| i.to_s.center(digit_space)}.join(" ")} line_space = formatted_rows.last.size puts (formatted_rows.map{|row| row.center(line_space)}).join("\n") // Io version numRows := Lobby args at(1) asNumber rows := list row := rows numRows repeat( row := (rows push((-1) to(row size - 1) map(i, if(i == -1, 1, row at(i) + row at(i + 1) ifNilEval(0)) ))) last ) digitSpace := rows last max asString size formattedRows := rows map(map(i, i asString alignCenter(digitSpace)) join(" ")) lineSpace := formattedRows last size formattedRows map(row, row alignCenter(lineSpace)) join("\n") println