Schrift
[thread]6489[/thread]

Rekursion ausgeben: Wie gibt man die Stufen aus?



<< >> 10 Einträge, 1 Seite
peggy
 2004-08-12 15:12
#85715 #85715
User since
2004-07-23
29 Artikel
BenutzerIn
[default_avatar]
Huhu!
Ich hab hier was kniffliges! Ich durchforste ein Hash rekursiv. All das speichere ich in einem Array ab. Leider gehen ja dabei die Schichten der Rekursion verloren, die ich gerne bei der Ausgabe dabei hätte. Hat jemand eine Idee wie man dies umsetzen kann?
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
sub process
{

my $name = $_[0];#erwartete variable

if($wortliste{$name}==1)
{
return '';
}


foreach my $temp (split ',', $connected{$name}) # alle mit $name verbundenen ausdrücke
{
$wortliste{$name}=1;
if($wortliste{$temp}==1)
{
next;
}

push (our @results,"\t".$temp);
process($temp);
}
return our $results;


edit: der tab war ein blöder versuch ;)\n\n

<!--EDIT|peggy|1092309623-->
Taulmarill
 2004-08-12 15:20
#85716 #85716
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
am einfachsten eine variable mitgeben die bei der nächsten rekursion immer weiter gezählt wird. in etwa so:
Code: (dl )
1
2
3
my ( $name, $layer ) = @_;
...
process( $temp, $layer + 1 );
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
renee
 2004-08-12 15:36
#85717 #85717
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dann auch dem Array nicht nur $temp hinzufügen, sondern ein Anonymes Array, also
Code: (dl )
push(@results,["\t".$temp,$layer]);

Sonst bringt dir das $layer nix...

Bedenke aber, dass Du dann später anders auf dein gewünschtes Ergebnis zugreifen musst...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
peggy
 2004-08-12 16:08
#85718 #85718
User since
2004-07-23
29 Artikel
BenutzerIn
[default_avatar]
äh wie greif ich denn dann daurauf zu? Hab mit Referenzen noch nicht gearbeiten ;)

Ausgabe:
Code: (dl )
1
2
3
4
5
foreach my $ausgabe(@results)
{
print"Ausgabe: $ausgabe \n";

} print "Das ist i: ",$i,"\n";
\n\n

<!--EDIT|peggy|1092312558-->
peggy
 2004-08-12 16:23
#85719 #85719
User since
2004-07-23
29 Artikel
BenutzerIn
[default_avatar]
Ich versteh die Lösung auch nicht so ganz, da ich so eine Ausgabe haben will. Würde er bei eurer Lösung nicht bei jedem Wort einen weiteren Tab machen?

Ausgabe
Apfel
Banane
oBST
Baum
Grün
Rot
Pflanze
renee
 2004-08-12 16:38
#85720 #85720
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Bsp:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#! /usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my $arrayref = process('test',0);
foreach(@{$arrayref}){
 print "Value: ",$_->[0],"\tLayer: ",$_->[1],"\n";
}

sub process{
 my ($name,$layer) = @_;
 $layer++;
 my @results;
 return \@results if($layer == 4);
 foreach(0..5){
   push(@results,[$_,$layer]);
   push(@results,@{process('name',$layer)}) if($_ == 3);
 }
 return \@results;
}


Das musst Du natürlich noch an Deine Aufgabenstellung anpassen...

Edit: Der Tab in unseren Lösungsvorschlägen kam noch aus Deinem ersten Posting!\n\n

<!--EDIT|renee|1092314463-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Strat
 2004-08-12 23:35
#85721 #85721
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ein bisschen was ueber referenzen steht in meiner Einfuehrung in Perl auf meiner HP -> Vortraege
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Crian
 2004-08-13 15:28
#85722 #85722
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Referenzen von Objekten sind so etwas wie Zugriffspfade zu diesen Objekten. Du hast also nicht das Objekt selbst, aber einen Zugriffspfad zu diesem Objekt, damit weißt Du, wie Du an das Objekt herankommst.

Referenzen sind so etwas ähnliches wie Zeiger / Pointer, falls Du mit solchen Dingen schon mal zu tun gehabt hast.\n\n

<!--EDIT|Crian|1092396537-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
esskar
 2004-08-13 20:22
#85723 #85723
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Crian,13.08.2004, 13:28]Referenzen sind so etwas ähnliches wie Zeiger / Pointer, falls Du mit solchen Dingen schon mal zu tun gehabt hast.[/quote]
unterschied:
* pointer können 0 oder nicht definiert sein
* referenzen "zeigen" immer auf wirklich "benutzbaren" Speicher
Crian
 2004-08-14 06:10
#85724 #85724
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Genau. (Das wollte ich eigentlich erstmal weglassen...)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< >> 10 Einträge, 1 Seite



View all threads created 2004-08-12 15:12.