Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 the perl review   Alex Dedul   04 Oct 2002 16:02:42 
 Re: the perl review   Vladimir Fonarev   05 Oct 2002 17:24:39 
 the perl review   Alex Dedul   06 Oct 2002 09:54:31 
 Re: the perl review   Vladimir Fonarev   08 Oct 2002 01:53:48 
 the perl review   Alex Dedul   08 Oct 2002 12:54:47 
Архивное /ru.perl/14343da05ce7.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional