#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11159342 use warnings; my @collapsed = eval ; $_->[0] == 0 && $collapsed[-1][0] == 0 ? ($collapsed[-1][1] += $_->[1]) : $_->[1] == 0 && $collapsed[-1][1] == 0 ? ($collapsed[-1][0] += $_->[0]) : push @collapsed, $_ for map eval, ; printf "[ %d, %d, %d ],\n", @$_ for @collapsed; __DATA__ [ -1, 5, 1 ], [ 0, 5, 1 ], [ 0, 5, 1 ], [ 1, 5, 1 ], [ 3, 4, 1 ], [ 5, 1, 1 ], [ 5, 0, 1 ], [ 5, 0, 1 ], [ 5, 0, 1 ], [ 5, 0, 1 ], [ 5, 0, 1 ], [ 5, 0, 1 ], [ 0, -5, 1 ], [ 0, -5, 1 ], [ 0, -5, 1 ], [ 0, -5, 1 ], [ 0, -5, 1 ], [ 0, -5, 1 ], [ 0, -5, 1 ], [ 0, -5, 1 ], [ 0, -5, 1 ], [ -23, -64, 0 ], [ -5, 0, 1 ], [ -5, 1, 1 ], #### [ -1, 5, 1 ], [ 0, 10, 1 ], [ 1, 5, 1 ], [ 3, 4, 1 ], [ 5, 1, 1 ], [ 30, 0, 1 ], [ 0, -45, 1 ], [ -23, -64, 0 ], [ -5, 0, 1 ], [ -5, 1, 1 ],