-5

这个需要知道

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

想知道这张地图的作用以及它将返回什么......无法理解排序以及为什么 uc 加入“”。

用于该程序的文件包含单词表。

请有人帮忙..

4

1 回答 1

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} // '' }
于 2013-02-16T04:24:07.130 回答