Thread Immer hälftig einfügen?
(18 answers)
Opened by bianca at 2012-02-15 11:01
Hi,
mein Ansatz, aber weiter bin ich heute nicht gekommen: Die Basisliste wird mit einer eigenen Tie::Array-Klasse gebunden. Diese eigene Klasse erbt von Tie::StdArray, somit sind alle Methoden schonmal da. Zu Überschreiben, Overload, ist jedoch die Methode PUSH. Hierin hast Du bei jedem push() die Möglichkeit zu handeln, also die Position neu zu berechnen, wohin das einzufügende Element kommen soll. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #!/usr/bin/perl use strict; use warnings; use Data::Dumper; # Basis-Liste my $o = tie my @base, 'Merge'; @base = ('a'..'z'); push @base, 'eins'; # beim ersten push, landet der Wert in den Mitte print Dumper \@base; package Merge; use strict; use warnings; use Tie::Array; use base qw(Tie::StdArray); use integer; sub PUSH{ my $self = shift; my $val = shift; my $i = scalar @$self; my $offset = $i/2; splice @$self, $offset, 0, $val; } 1;######################################################################### Last edited: 2012-02-15 23:21:04 +0100 (CET) |