#! 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__ #### C:\test>1179307-3 chems: 61 flows:406 C001 : total: 28973 requires: 1 machines C002 : total: 90027 requires: 2 machines C003 : total: 41827 requires: 1 machines C004 : total: 4534 requires: 1 machines C005 : total: 10415 requires: 1 machines C008 : total: 14094 requires: 1 machines C009 : total: 53928 requires: 1 machines C010 : total: 14980 requires: 1 machines C011 : total: 174279 requires: 3 machines C012 : total: 142552 requires: 2 machines C013 : total: 61747 requires: 1 machines C014 : total: 64160 requires: 1 machines C015 : total: 99940 requires: 2 machines C016 : total: 154115 requires: 2 machines C017 : total: 26431 requires: 1 machines C018 : total: 27339 requires: 1 machines C019 : total: 31297 requires: 1 machines C020 : total: 47061 requires: 1 machines C021 : total: 15559 requires: 1 machines C022 : total: 28242 requires: 1 machines C023 : total: 89116 requires: 2 machines C024 : total: 5849 requires: 1 machines C025 : total: 114277 requires: 2 machines C026 : total: 64940 requires: 1 machines C027 : total: 224536 requires: 3 machines C028 : total: 50540 requires: 1 machines C029 : total: 6377 requires: 1 machines C030 : total: 18461 requires: 1 machines C032 : total: 7803 requires: 1 machines C033 : total: 20790 requires: 1 machines C036 : total: 26358 requires: 1 machines C037 : total: 9812 requires: 1 machines C038 : total: 10748 requires: 1 machines C039 : total: 1143 requires: 1 machines C041 : total: 10822 requires: 1 machines C042 : total: 19757 requires: 1 machines C043 : total: 52357 requires: 1 machines C044 : total: 6781 requires: 1 machines C045 : total: 30224 requires: 1 machines C046 : total: 32096 requires: 1 machines C047 : total: 48541 requires: 1 machines C048 : total: 27570 requires: 1 machines C050 : total: 29900 requires: 1 machines C054 : total: 8274 requires: 1 machines C055 : total: 31052 requires: 1 machines C056 : total: 22770 requires: 1 machines C057 : total: 923 requires: 1 machines C058 : total: 18493 requires: 1 machines C059 : total: 62858 requires: 1 machines C060 : total: 16173 requires: 1 machines C061 : total: 19757 requires: 1 machines C062 : total: 24930 requires: 1 machines C063 : total: 13365 requires: 1 machines C064 : total: 20018 requires: 1 machines C065 : total: 40595 requires: 1 machines C066 : total: 12721 requires: 1 machines C067 : total: 2336 requires: 1 machines C068 : total: 25561 requires: 1 machines C069 : total: 2802 requires: 1 machines C070 : total: 33950 requires: 1 machines C071 : total: 59932 requires: 1 machines Total: 71 machines. Capacity: 6035000 (2456835.3312)