in reply to Summing up duplicate lines

And more TIMTOWTDI. It's only three lines of code if you don't count the 'use's.

#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11159342 use warnings; my @collapsed = eval <DATA>; $_->[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, <DATA>; 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 ],

which outputs:

[ -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 ],