#! perl -slw use strict; use List::Util qw[ sum ]; use Data::Dump qw[ pp ]; $Data::Dump::WIDTH = 1000; $|++; our $MACHMAX //= 85000; my %chems; while( ) { my( $chem, $mach, $flow ) = split ' '; next unless $flow; push @{ $chems{ sprintf "%1s%03d", $chem =~ m[(.)(\d+)] } }, $flow; } my $chems = keys %chems; my $flows = 0; $flows += @$_ for values %chems; print "chems: $chems flows:$flows"; my( $machines, $capacity, $required ) = ( 0 ); for my $chem ( sort keys %chems ) { my $total = 0; $total += $_ for @{ $chems{ $chem } }; $required += $total; my $m = 1+int( $total / $MACHMAX ); $machines += $m; $capacity += $m * $MACHMAX; printf "%s : total: %6d requires: %d machines\n", $chem, $total, $m; } print "Total: $machines machines. Capacity: $capacity ($required)" __DATA__