纯粹的bash.
使用两个子shell并运行a diff,然后清理结果.
diff <(cat my_range_with_holes) <(seq 1 1000) | grep '>' | cut -c 3-
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
注意: all_numbers有点谎言,因为范围不包括最终数字,但由于该数字保证在集合中,因此不会影响算法的正确性.
注意:我[-1]从原来的答案中删除了,因为int(n)不关心尾随'\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
Run Code Online (Sandbox Code Playgroud)
Python:
for line in open("inputfile.txt"):
vals = set(map(int, line.split()))
minv, maxv = min(vals), max(vals)
missing = [str(v) for v in xrange(minv + 1, maxv) if v not in vals]
print " ".join(missing)
Run Code Online (Sandbox Code Playgroud)