Eam*_*orr 1 algorithm perl gnupg
愚蠢的是,我忘记了我的gpg密码.
我知道密码由六个字符串中的三个组成,由"_"连接.
可能性是(假设)"1","2","3","4","5"和"6".
假设密码实际上是"2_5_3".
如何循环所有组合?应该没有重复项(即"2_2_4"不是有效密码)!
我试图用Perl写这个,但不知道从哪里开始.伪代码很好.
提前谢谢了,
更新:好的,我现在就开始工作了.
不像下面的一些解决方案那么优雅......
#!/usr/bin/perl
use strict;
use warnings;
my @possibilities=("111","222","333","444","555","666","777");
my $size=scalar(@possibilities);
print $size."\n";
for(my $i=0;$i<$size;$i++){
for(my $j=0;$j<$size;$j++){
for(my $k=0;$k<$size;$k++){
if($i==$j || $j==$k || $i==$k){
}else{
print $i."_".$j."_".$k."\n";
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Tot*_*oto 10
这是一种使用perl的方法:
my @l = glob "{1,2,3,4,5,6}_{1,2,3,4,5,6}_{1,2,3,4,5,6}";
@l = grep{!/(\d)[_\d]*\1/}@l;
Run Code Online (Sandbox Code Playgroud)