- 论坛徽章:
- 1
|
你问题没有说明清楚,满足$a[0] >= $i && $a[0] < $i + 10的前提下,第二列字符串去重复的个数
而你代码中 $temp是在 $i 变动时重置,这样第38个要跟41比吗?
而且LZ条件if ($a[0] >= $i && $a[0] < $i + 10) {if ($a[1] ne $temp){$num++;}}
这样第10 20 30 … 都不会去比对
我照着代码意思练习了一下,代码中不会比较38 与41这种跨过10的,并且比较的范围区间是0-9 10-19 20-29 ……
- my ($num, $loop, $tmp) = (undef, 0, '');
- open IN, 'work.txt';
- while(<IN>){
- chomp $_;
- my @data = split;
- $tmp = '' if $data[0] > $loop * 10 + 10;
- $loop++ if $data[0] > $loop * 10 + 10;
- $num->{$loop} ++ if $tmp ne $data[1];
- $tmp = $data[1];
- }
- close (IN);
- open W, '>output.txt';
- for(sort keys %$num){
- print W "$_\t", $num->{$_} - 1, "\n";
- }
- close(W);
复制代码 |
|