Thread Immer hälftig einfügen? (18 answers)
Opened by bianca at 2012-02-15 11:01

rosti
 2012-02-15 23:16
#156163 #156163
User since
2011-03-19
3212 Artikel
BenutzerIn
[Homepage]
user image
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)

View full thread Immer hälftig einfügen?