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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : vilfred                              2:5020/400     30 Sep 2002  22:43:52
 To : All
 Subject : подскажите рекурсивный алгоритм, запарился...
 -------------------------------------------------------------------------------- 
 
 
 Привет всем!!
 
 есть текстовый файл
 из собсвенных кодов и кодов родителей
 
 1 2 a
 2 3 b
 4 1 c
 2 4 d
  
 и т.п.
 
 рекурсивно такую хрень я сделать могу, т.е. оно выведет все сразу, но 
 вот сделать так, чтобы выводило до нужной позиции(кликаю мышкой по 
 ссылке, которая директория и выводить до такого-то уровня вложенности, 
 на который кликнул). Т.е. как папки выводятся в виндузе, на какую 
 кликнул, та и вывелась... но не глубже.
 
 алгоритм такой
 
 циклом определяю те диры, которые имеют верхний уровень. т.е. индекс 1. 
 Получаю список этих дирок, далее кликаю на дирку, получаю список 
 поддирок для этого уровня. и т.п.
 
 насамом деле нужно структуру таблицы рекурсивно вывести.
 
 скрипт такой:
 
 $url="lesenka.pl";
 
 sub show_base{
   @row=@_; my @l=split /\|/ => $pr;
   #step1#
   @m = sort grep {!$_{$_}++} map {/^.*?#.*?#(.*?)#/} @row;
   #step2#
   foreach my $l(@row){ $l=~s!(\s)\1+|(\t)+|[\cM\cJ\n]!!g;
     my @tmp1= split /#/ => $l;
     do{print qq~<a href=$url?id_self=$tmp1[0]&path=\|$tmp1[0]>$tmp1[7]
 </a><br>\n~
    if $tmp1[3] == 1;
       print qq~$tmp1[7]~ if $tmp1[3] == 0;
       &view($tmp1[0], "  ") if $tmp1[3] == 1 and $id_self 
 ne '';
     } if $tmp1[2]==$m[0];
   }
   sub view{ my $self=$_[0]; $t=$_[1]; my @l=split /\|/ => $pr;
     foreach my $k(@row){
       my @tmp = split /#/ => $k;
       do{print qq~$t<a href=$url?id_self=$tmp[0]&path=$pr|$tmp[0]>$tmp
 [7]</a><br>\n~
     if $tmp[3] == 1;
   &view($l[$#l]) if $l[$#l] != $id_self;
   #print "<b>!$tmp[1] = $l[$#l]!</b>";
       } if $self eq $tmp[1] and $self eq $l[$#l];
     }
   }
 }
 глубин вложенности собираюсь отследить при помощи переменной path:
 lesenka.pl?id_self=2815&path=|23|2815
 
 т.е. запускать рекурсию до глубины последней цифры, например |2815...
 первый цикл фореач выводит самые верхние две ссылки. Я уже офигел это 
 делать, могд не едет... как тут быть? 
 
 Спасибо!
 
 Дима
 -- 
 TEAM [Маньяки]
 Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
 --- ifmail v.2.15dev5
  * Origin: Talk.ru (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 подскажите рекурсивный алгоритм, запарился...   vilfred   30 Sep 2002 22:43:52 
 вот более конкретно...   vilfred   30 Sep 2002 23:27:21 
 Re: вот более конкретно...   vilfred   01 Oct 2002 19:31:53 
Архивное /ru.perl/6488aec2c5d5.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional