Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Perl Copenhagen > =?ISO-8859-1?Q?...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 1 of 2 Topic 175 of 276
Post > Topic >>

=?ISO-8859-1?Q?Man_er_vel_ikke_lavet_af_tr=E6=3F_-_::Simple=3F?=

by jonasbn@[EMAIL PROTECTED] (Jonas B. Nielsen) Apr 4, 2006 at 09:34 AM

Hej,

Jeg sidder og leger lidt med Tree::Simple til en simpel kode generator.

Jeg har dog nogen problemer og jeg vil h=F8re om der er nogen der har =20=

erfaringer med 'Tree' moduler og om der er nogen der har nogen =20
anbefalinger.

Problemet er at sammenligningen og inds=E6ttelsen af nye top-noder ikke
=20=

helt virker som jeg gerne vil have denog istedet for at bruger =20
un=F8dvendig energi, s=E5 t=E6nke jeg at listen m=E5ske kunne hj=E6lpe.

Her er min prototype:

#!/usr/bin/perl -w

use strict;
use Data::Dumper;
use Tree::Simple;

my $tree =3D Tree::Simple->new("HEST", Tree::Simple->ROOT);

my @[EMAIL PROTECTED]
 =3D qw(1234 1235 2345 2346);

my $oldtree =3D $tree;

foreach my $number (@[EMAIL PROTECTED]
) {
	print STDERR "We have number: $number\n";
	my @[EMAIL PROTECTED]
 =3D split(//, $number, 4);
=09
	LOOP1:
	for(my $i =3D 0; $i < scalar(@[EMAIL PROTECTED]
); $i++) {

		if ($i =3D=3D 0) {
			print STDERR "We are resetting to oldtree\n";
			$tree =3D $oldtree;
		}
	=09
		my $subtree =3D Tree::Simple->new($digits[$i]);
		if (my @[EMAIL PROTECTED]
 =3D $tree->getAllChildren()) {
			LOOP2:	=09
			foreach my $child (@[EMAIL PROTECTED]
) {			=09=

				if ($child->getNodeValue eq =
$subtree->getNodeValue) {
					print STDERR "We are resetting =
to child ".$subtree-=20
 >getNodeValue."\n";
					$subtree =3D $child;
					last LOOP2;
			=09
				} elsif ($child->getNodeValue ne =
$subtree->getNodeValue) {	=09
					print STDERR "We are adding =
child ".$subtree->getNodeValue."\n";
					$tree->addChild($subtree);
					last LOOP2;
				=09
				} else {
					print STDERR "We are adding =
sibling ".$subtree->getNodeValue."\n";
					$tree->addSibling($subtree);
					last LOOP2;				=
=09
				}
			}
		} else {
			print STDERR "We are adding firstborn =
".$subtree->getNodeValue."\n";
			$tree->addChild($subtree);
		}
		$tree =3D $subtree;
	}
}
$tree =3D $oldtree;

$tree->traverse(sub {
	  my ($_tree) =3D @[EMAIL PROTECTED]
  print (("->" x $_tree->getDepth()), $_tree->getNodeValue(), =
"\n");
});

Her er outputtet:

1
->2
->->3
->->->4
->->->5
2
->3
->->4
->->->5
2
->3
->->4
->->->6

Ville gerne have det var:

1
->2
->->3
->->->4
->->->5
2
->3
->->4
->->->5
->->->6

jonasbn
 




 2 Posts in Topic:
=?ISO-8859-1?Q?Man_er_vel_ikke_lavet_af_tr=E6=3F_-_::Simple=3F?=
jonasbn@[EMAIL PROTECTED]  2006-04-04 09:34:17 
Re: Man er vel ikke lavet af
e_bachmann@[EMAIL PROTECT  2006-04-05 05:35:30 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Sun Sep 7 6:41:51 CDT 2008.