使用任何脚本语言perl、python或shell scrip查找范围中缺少的值

2024-04-26 00:28:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了一个问题,即在一个范围内查找缺失的值,而且该范围对于连续的行也是可变的。在

输入

673 673 673 676 676 680
2667 2667 2668 2670 2671 2674

输出应该是这样的

^{pr2}$

这只是一部分,行值也可以更多 如果你需要澄清,请告诉我。在


Tags: pr2行值
3条回答

在Python中:

def report_missing_numbers(f):
    for line in f:
        numbers = [int(n) for n in line.split()]
        all_numbers = set(range(numbers[0], numbers[-1]))
        missing = all_numbers - set(numbers)
        yield missing

注意:all_numbers是一个谎言,因为范围不包括最后一个数,但是由于这个数字被保证在集合中,它不会影响算法的正确性。在

注意:我从原来的答案中删除了[-1],因为int(n)不关心后面的{}。在

Perl语言:

use Modern::Perl;

for my $line (<DATA>) {
    chomp $line;
    my @numbers     = split /\s+/, $line;
    my ($min, $max) = (sort { $a <=> $b } @numbers)[0, -1];
    my @missing     = grep { not $_ ~~ @numbers } $min .. $max;
    say join " ", @missing;
}

__DATA__
673 673 673 676 676 680
2667 2667 2668 2670 2671 2674

纯粹的狂欢。在

使用两个子shell并运行diff,然后清理结果。在

diff <(cat my_range_with_holes) <(seq 1 1000) | grep '>' | cut -c 3-

相关问题 更多 >