1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #!/usr/bin/perl use strict; my %hash; while (my $line = <DATA>) { $line =~ s/\s*\z//; my @array = split /,/, $line; # get the key. my $key = shift @array; # see if the key is already seen. if(exists $hash{$key} ) { # get ref to previous record of this key. my $ref = $hash{$key}; # print key. print "$key,"; # a new array. my @new_array; # populate the new array. for(my $i=0;$i<=$#array;$i++) { $new_array[$i] = $array[$i] - $$ref[$i]; } # join the array elements with comma. print join",",@new_array; print "\n"; } # add/replace the current array as value for the current key. $hash{$key} = \@array; } __END__ key1,1,2,3,4 key2,2,3,4,5 key1,11,22,33,44 key2,22,33,44,55 key1,111,222,333,444 key2,222,333,444,555 |
IyEvdXNyL2Jpbi9wZXJsCnVzZSBzdHJpY3Q7Cm15ICVoYXNoOwp3aGlsZSAobXkgJGxpbmUgPSA8REFUQT4pIHsKICAgICAgICAkbGluZSA9fiBzL1xzKlx6Ly87CiAgICAgICAgbXkgQGFycmF5ID0gc3BsaXQgLywvLCAkbGluZTsKCiAgICAgICAgIyBnZXQgdGhlIGtleS4KICAgICAgICBteSAka2V5ID0gc2hpZnQgQGFycmF5OwoKICAgICAgICAjIHNlZSBpZiB0aGUga2V5IGlzIGFscmVhZHkgc2Vlbi4KICAgICAgICBpZihleGlzdHMgJGhhc2h7JGtleX0gKSB7CiAgICAgICAgICAgICAgICAjIGdldCByZWYgdG8gcHJldmlvdXMgcmVjb3JkIG9mIHRoaXMga2V5LgogICAgICAgICAgICAgICAgbXkgJHJlZiA9ICRoYXNoeyRrZXl9OwoKICAgICAgICAgICAgICAgICMgcHJpbnQga2V5LgogICAgICAgICAgICAgICAgcHJpbnQgIiRrZXksIjsKCiAgICAgICAgICAgICAgICAjIGEgbmV3IGFycmF5LgogICAgICAgICAgICAgICAgbXkgQG5ld19hcnJheTsKCiAgICAgICAgICAgICAgICAjIHBvcHVsYXRlIHRoZSBuZXcgYXJyYXkuCiAgICAgICAgICAgICAgICBmb3IobXkgJGk9MDskaTw9JCNhcnJheTskaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRuZXdfYXJyYXlbJGldID0gJGFycmF5WyRpXSAtICQkcmVmWyRpXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGpvaW4gdGhlIGFycmF5IGVsZW1lbnRzIHdpdGggY29tbWEuCiAgICAgICAgICAgICAgICBwcmludCBqb2luIiwiLEBuZXdfYXJyYXk7CiAgICAgICAgICAgICAgICBwcmludCAiXG4iOwogICAgICAgIH0KCiAgICAgICAgIyBhZGQvcmVwbGFjZSB0aGUgY3VycmVudCBhcnJheSBhcyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQga2V5LgogICAgICAgICRoYXNoeyRrZXl9ID0gXEBhcnJheTsKfQpfX0VORF9fCmtleTEsMSwyLDMsNAprZXkyLDIsMyw0LDUKa2V5MSwxMSwyMiwzMyw0NAprZXkyLDIyLDMzLDQ0LDU1CmtleTEsMTExLDIyMiwzMzMsNDQ0CmtleTIsMjIyLDMzMyw0NDQsNTU1
-
upload with new input
-
result: Success time: 0s memory: 4596 kB returned value: 0
key1,10,20,30,40 key2,20,30,40,50 key1,100,200,300,400 key2,200,300,400,500


