🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.perl
4 messages
4 total messages Started by Robert Wysocki Thu, 11 Jul 2013 19:29
Ze sciezek do struktury html
#52541
Author: Robert Wysocki
Date: Thu, 11 Jul 2013 19:29
14 lines
1243 bytes
Bry,

Cos mi dzis myslenie nie idzie, moze bedziecie miec jakies pomysly;
mam wiele scalarow postaci:
'grupa/podgrupa/host/wykres.png'
z tym, ze podgrup moze byc [0,inf)

Chce na podstawie tych sciezek wygenerowac zagniezdzona strukture (html) 
taka, ze grupa zawiera wszystkie swoje hosty i podgrupy, podgrupa zawiera 
wszystkie swoje hosty i podgrupy itd a kazdy host zawiera swoje wykresy.

Jakies pomysly na algorytm?

R.
Re: Ze sciezek do struktury html
#52542
Author: Stachu 'Dozzie' K.
Date: Thu, 11 Jul 2013 20:13
67 lines
2752 bytes
On 2013-07-11, Robert Wysocki <rmwpl.spam@gmail.com> wrote:
> Bry,
>
> Cos mi dzis myslenie nie idzie, moze bedziecie miec jakies pomysly;
> mam wiele scalarow postaci:
> 'grupa/podgrupa/host/wykres.png'
> z tym, ze podgrup moze byc [0,inf)
>
> Chce na podstawie tych sciezek wygenerowac zagniezdzona strukture (html) 
> taka, ze grupa zawiera wszystkie swoje hosty i podgrupy, podgrupa zawiera 
> wszystkie swoje hosty i podgrupy itd a kazdy host zawiera swoje wykresy.
>
> Jakies pomysly na algorytm?

1. Rozbić skalar.
2. Rozbity skalar umieścić w drzewiastej strukturze danych.
  * węzeł odpowiadający wykresowi to liść
  * węzeł odpowiadający podgrupie ma dwa pola: listę hostów i hasz grup
3. Powtarzać.

Coś w tym stylu:
#v+
#!/usr/bin/perl

use warnings;
use strict;

my @data = <DATA>;
chomp @data;

my $root_struct = {
  hosts  => [],
  groups => {},
};

for my $d (@data) {
  my @parts = split m[/], $d;
  my $host = pop @parts;

  my $where = $root_struct;
  for my $p (@parts) {
    $where->{groups}{$p} ||= { hosts => [], groups => {} };
    $where = $where->{groups}{$p}
  }
  push @{ $where->{hosts} }, $host;
}

__DATA__
server/mysql/wrmysql01
server/mysql/wrmysql02
server/mysql/krmysql01
server/pgsql/krpgsql01
server/pgsql/krpgsql02
server/www/apache/wawww01
server/www/apache/wawww02
server/www/nginx/wawww03
server/www/gdproxy01
server/www/gdproxy02
server/www/gdproxy03
server/wrgeneric01
server/wrgeneric02
server/wrgeneric03
#v-

-- 
Secunia non olet.
Stanislaw Klekot
Re: Ze sciezek do struktury html
#52543
Author: Robert Wysocki
Date: Thu, 11 Jul 2013 20:37
12 lines
1323 bytes
Dnia Thu, 11 Jul 2013 20:13:24 +0000, Stachu 'Dozzie' K. napisał(a):

> 1. Rozbić skalar.
> 2. Rozbity skalar umieścić w drzewiastej strukturze danych.
>   * węzeł odpowiadający wykresowi to liść * węzeł odpowiadający
>   podgrupie ma dwa pola: listę hostów i hasz grup
> 3. Powtarzać.

Bardzo fajne rozwiazanie, wielkie dzieki.
Gdy patrze na kod, to sie zastanawiam, dlaczego sam na to nie wpadlem :)

R.
Re: Ze sciezek do struktury html
#52544
Author: Stachu 'Dozzie' K.
Date: Thu, 11 Jul 2013 20:54
21 lines
2108 bytes
On 2013-07-11, Robert Wysocki <rmwpl.spam@gmail.com> wrote:
> Dnia Thu, 11 Jul 2013 20:13:24 +0000, Stachu 'Dozzie' K. napisał(a):
>
>> 1. Rozbić skalar.
>> 2. Rozbity skalar umieścić w drzewiastej strukturze danych.
>>   * węzeł odpowiadający wykresowi to liść * węzeł odpowiadający
>>   podgrupie ma dwa pola: listę hostów i hasz grup
>> 3. Powtarzać.
>
> Bardzo fajne rozwiazanie, wielkie dzieki.
> Gdy patrze na kod, to sie zastanawiam, dlaczego sam na to nie wpadlem :)

Może nie robiłeś takich cyrków z perllol? Ja mam tendencję do
przesuwania złożoności programu z instrukcji do struktur danych.
Kiedyś mnie nawet któryś z chłopaków (niestety nie pamiętam który, a nie
mogę się dokopać) po perlgolfie skomplementował, że go zmusiłem do
doczytania o strukturach.

-- 
Secunia non olet.
Stanislaw Klekot
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads