2013-02-16 2 views
-4

нужно знать это,Perl Карта Метод

Open File; 
map{ chomp; $isword{uc join "", sort /./g}.= "$_+" } <File>; 

хочет знать, что это карты делает и что он вернется .. Couldnt понять, почему-то и УНЦ присоединиться к «».

Файл, используемый для этой программы содержит список слов.

Некоторые одна помощь пожалуйста ..

+0

У вас есть вопрос? – 2013-02-16 04:31:58

ответ

5

Что возвращает спорно, так как она уничтожается. Это делает его странным использованием 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} // '' } 
+0

спасибо. не могли бы вы объяснить эту часть кода самостоятельно, uc join "", sort /./g. Я не понимаю, как это нормализуется. – user1954210

+0

Верхняя строка, сформированная путем объединения отсортированных символов '$ _'. – ikegami

+1

Вы говорите «странно», я говорю «симптоматическое нездоровое увлечение использованием неправильной конструкции языка, иногда называемой« Lookit », я могу использовать карту для этого!» синдром". '' – darch

Смежные вопросы