-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 に答える