Что возвращает спорно, так как она уничтожается. Это делает его странным использованием map
. Можно было бы нормально написать
for (<File>) { chomp; $isword{uc join "", sort /./g}.= "$_+"; }
который тратой памяти по сравнению с
while (<File>) { chomp; $isword{uc join "", sort /./g} .= "$_+"; }
Для каждой линии он сталкивается, он нормализуется символы, которые образуют линию.
apple becomes AELPP
orange becomes AEGNOR
art becomes ART
rat becomes ART
tar becomes ART
etc
Он использует эту нормированную форму как ключ к хешу и сохраняет линию на этом ключе.
$isword{AELPP} = 'apple+';
$isword{AEGNOR} = 'orange+';
$isword{ART} = 'art+rat+tar+';
Предполагая, что каждая строка является словом, это позволяет быстро найти анаграммы слова.
sub find_anagrams { split /\+/, $isword{uc join "", sort /./g} // '' }
У вас есть вопрос? – 2013-02-16 04:31:58