gpt4 book ai didi

algorithm - 使用 Perl 脚本计算目录的距离

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:43:53 24 4
gpt4 key购买 nike

我是 perl 的新手,我想计算目录距离。

下面是一个目录距离计算的例子。

假设我有这个目录列表:

 abc/a.h                
abc/clipboard/b.cc
abc/gfx/d.cc
abc/gfx/e.cc
abc/gfx/gl/f.cc
abc/gfx/gl/h.cc
abc/gfx/gl/tr/aq/i.cc

结果表如下:

       file1              |  file2                    |  Dir. distance
--------------------------+---------------------------+-----------------
abc/a.h | abc/clipboard/b.cc | 1
abc/a.h | abc/gfx/d.cc | 1
abc/a.h | abc/gfx/e.cc | 1
abc/a.h | abc/gfx/gl/f.cc | 2
abc/a.h | abc/gfx/gl/h.cc | 2
abc/a.h | abc/gfx/gl/tr/aq/i.cc | 4
abc/clipboard/b.cc | abc/gfx/d.cc | 2
abc/clipboard/b.cc | abc/gfx/e.cc | 2
abc/clipboard/b.cc | abc/gfx/gl/f.cc | 3
abc/clipboard/b.cc | abc/gfx/gl/h.cc | 3
abc/clipboard/b.cc | abc/gfx/gl/tr/aq/i.cc | 5
abc/gfx/d.cc | abc/gfx/e.cc | 0
abc/gfx/d.cc | abc/gfx/gl/f.cc | 1
abc/gfx/d.cc | abc/gfx/gl/h.cc | 1
abc/gfx/d.cc | abc/gfx/gl/tr/aq/i.cc | 3
abc/gfx/e.cc | abc/gfx/gl/f.cc | 1
abc/gfx/e.cc | abc/gfx/gl/h.cc | 1
abc/gfx/e.cc | abc/gfx/gl/tr/aq/i.cc | 3
abc/gfx/gl/f.cc | abc/gfx/gl/h.cc | 0
abc/gfx/gl/f.cc | abc/gfx/gl/tr/aq/i.cc | 2
abc/gfx/gl/h.cc | abc/gfx/gl/tr/aq/i.cc | 2

我相信使用 Perl 是可行的,但我不确定我应该使用什么代码方法。

你们中有人知道实现它的方法吗?

问候,

最佳答案

子距离 应该可以帮助您入门。使用 Math::Combinatorics 调用它 nC2 次你会得到你想要的。

#!/usr/bin/perl 

use strict;
use warnings;

distance('abc/clipboard/b.cc','abc/gfx/gl/tr/aq/i.cc');#5

sub distance
{
my ($path1,$path2)=@_;
my @levels1=split(/\//,$path1);
my @levels2=split(/\//,$path2);
my $depth=0;
for my $i (0..$#levels1)
{
if($levels1[$i] eq $levels2[$i])
{
$depth++;
}
}
printf("$path1 $path2 %d\n",scalar(@levels1)+scalar(@levels2)-(2*$depth)-2);
}

关于algorithm - 使用 Perl 脚本计算目录的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19011406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com