这个想法是得到产生这个数字的7个字符长的字符串:3552907293224这个脚本:
sub hash {
my $nr = 13;
for (split //, shift) {
$nr = $nr * 43 + index("acdegijmnoprstuw", $_);
}
return $nr;
}
我设法弄清楚它是“eddigjo”的字符串(手动尝试),但是我需要一个能够反转跟踪可能产生上述数字的函数的函数。
答案 0 :(得分:3)
即使您没有付出任何努力来解决问题,我也会咬人:
use strict;
use warnings;
use feature qw(say);
my @alphabet = split //, "acdegijmnoprstuw"; #/
sub reverse_hash {
my ($n) = @_;
my @letters;
while ( $n > 43 ) {
unshift @letters, $alphabet[$n % 43];
$n /= 43;
}
return join '', @letters;
}
say reverse_hash(3552907293224);
# eddigjo