|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alex Dedul 2:450/82 06 Oct 2002 09:54:31 To : Vladimir Fonarev Subject : the perl review -------------------------------------------------------------------------------- Помню когда-то , 05 Oct 02 в 16:24, Vladimir Fonarev напиcал для Alex Dedul нижecлeдyющee: AD>> map!s/ AD>> ^/ /m|//||print,sort%0for map$0{0,sort/./g}.=$_,sort<> VF> Я так понимаю, что это эквивалентно (поправьте, если неправ): VF> @a = sort<>; VF> map $b{0,sort/./g}.=$_,@a; VF> map{!s/^/ /m|//||print} sort %b; Hе совсем, for выкидывать нельзя, с помощью него делается вывод всех пар анаграмм в порядке возрастания количества слов. VF> Можно пояснить для чайника несколько моментов. VF> Во-первых, зачем "!s/^/ /m | //"? Зря в одну строку слепил s///. Должно быть именно !s/^ / /m | // Или же !s/^\n/ /m | //. В 2-хстрочном же варианте экономим один символ. VF> Я так понимаю, что "print $_" все равно не будет вызван (разве что VF> для отладки?) И print будет вызван, как же иначе оно печает на экран результат ? ж) VF> т.е. вообще получается, что последняя строка эквивалентна VF> map 1, sort %b; Hе так. Регэкспы составляют пары анаграмм и контролируют вывод строки с этими парами. VF> Во-вторых, зачем sort хэша фактически столько раз, сколько слов VF> передано на вход (или этот цикл только для того, чтобы все записать в VF> одну строку, но ведь это неэффективно)? Так и есть, тут главное не эффективность, а наименьший размер и элегантность программы. Hа эффектиность наверное есть другие конкурсы, не столь интересные ж). VF> И, в-третьих, на кой нам массив на выходе, если он состоит из одних VF> единичек? scalar(keys %0) не менее информативно. Думаю что map тут только потому, что в такой записи надо употребить наименьшее кол-во символов для изменения хэша и вывода результата. Результат его нам не нужен как видишь. WBR, Alex winamp$ Summoning'96 'Dol Guldur' - Khazad dum --- GoldED+/W32 1.1.4.7 * Origin: Iron Hills Lab. (2:450/82) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/14343da05ce7.html, оценка из 5, голосов 10
|