Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6477[/thread]

mehrdimensionales Array

Leser: 7


<< >> 3 Einträge, 1 Seite
Gast Gast
 2004-08-09 19:02
#85623 #85623
Hallo,
ich habe ein Problem, dass ich selber nicht lösen kann. Es geht um ein mehrdimensionales Array, das 5 Spalten und $i Zeilen hat( $i=0; Si<= #z; $i++) , @{$z[$i]}:
a &–b &–c d &–e
q &–e &–f g &–v
b &–m &–n k
a &–c h &–j
q &–l &–f n w
.
.
.
meine Probleme :

Die Zeilen sollen sortiert werden, danach soll bei der ersten Spalte nach doppelten oder mehrfach vorhandenen Elementen gesucht werden. Ich muss einen direkten Zugriff auf die gefundenen Elemente haben und anhand dieser ersten Elemente von den Zeilen 1 und 4, 2 und 5(vom oben gezeigten Array), in der Lage sein weitere wiederholte Elemente in den entsprechenden Zeilen zu identifizieren und direkten Zugriff auf diese Elemente zu haben. Diese Elemente sollen ein "-" Zeichen am Anfang haben und danach folgendes Element kein "-" Zeichen haben. In unserem Fall, "-c d" in der ersten Zeile und "-c h" in der vierten Zeile, "-f g" in der zweiten und "-f n" in der fünften Zeilen (vom oben gezeigten Array). Am Ende werden bei der ersten Spalte die ersten vorkommenden Elemente zu sehen sein, also "a" von der ersten Zeile und "q" von der zweiten Zeile und "b" von der dritten Zeile(vom oben gezeigten Array)und die wiederholten Elemente mit "-" Zeichen am Anfang gelöscht werden :


Sortiert:
a &–b &–c d &–e
a &–c h &–j
b &–m &–n k
q &–e &–f g &–v
q &–l &–f n w


am Ende sieht das Array so aus:
Code: (dl )
a &–b &–c d &–e

Code: (dl )
           h -j

Code: (dl )
b &–m &–n k

Code: (dl )
q &–e &–f  g &–v

Code: (dl )
   &–l       n w



hat jemand eine Idee?

mfg
Relais
 2004-08-09 19:49
#85624 #85624
User since
2003-08-06
2244 Artikel
ModeratorIn
[Homepage] [default_avatar]
In einem anderen Thread schreibt "Darstellungsfehler (unregistriert)":
Quote
Es tut mir leid, ich kriege es nicht einfach hin, in meinem Beitrag die Quellcods richtig darzustellen.


Mir tut's leid, nicht recht zu verstehen, was Du meinst. Das Sonderzeichen "8211" etwa sagt mir nix, was soll das darstellen?

Zum Beitrag, ich schreib, was ich verstehe und daraus folgere:
[quote=Guest,09.08.2004, 17:02]
Die Zeilen sollen sortiert werden, danach soll bei der ersten Spalte nach doppelten oder mehrfach vorhandenen Elementen gesucht werden. Ich muss einen direkten Zugriff auf die gefundenen Elemente haben[/quote]
...klingt so, als sollten diese zum Key/Schlüssel im Hash werden! Aber da die Keys im Hash eindeutig sein müssen, muß dann der Wert/Value ein Multivalue sein, also wiederum eine Array- oder Hashreferenz sein...

Quote
und anhand dieser ersten Elemente von den Zeilen 1 und 4, 2 und 5(vom oben gezeigten Array), in der Lage sein weitere wiederholte Elemente in den entsprechenden Zeilen zu identifizieren

...hmm, wie ist das mit dem identifizieren gemeint? Weiterlesed... Die geschichte mit den Minuszeichen... die fehlt im Ergebnis. Ist dieser Zwischenschritt von Bedeutung? Wozu? Was soll damit geschehen?

Das "Array" am Ende habe ich auch nicht verstanden.
Was ich verstanden habe: Alle zu einem an erster Stelle vorkommenden Zeichen (a,b,q) werden in der Art uniq, daß ihre zukünftigen Vorkommen verschwinden. In gewisser Weise wird jedoch die Identität einer Zeile erhalten, die Anzahl der anfänglich vorhandenen Zeilen bleibt erhalten.

Kennst Du Perl-Datenstrukturen? Schau mal in perllol und perldsc. Schau Dir auch CPAN:Data::Dumper an.

Wenn ich Dich also recht verstanden habe, könnte Dein Ergebnis so aussehen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
$hahsref = {
a => [ # erste äußere Arrayref
[ 'a', 'b', 'c', 'd', 'e' ], # erste innere Arrayref
[ 'h', 'j' ] # # zweite innere Arrayref
],
b => [ # erste äußere Arrayref
[ 'b', 'm', 'n', 'k' ] # innere Arrayref
],
q => [ # erste äußere Arrayref
[ 'q', 'e', 'f', 'g', 'v' ], # erste innere Arrayref
[ 'n', 'w' ] # # zweite innere Arrayref
],
}; # Ende Hashref


Vielleicht willst Du auch noch leere Felder dort, wo einmal andere Zeichen waren? Oder geht es darum nicht?
Erst denken, dann posten --
26. Deutscher Perl- u. Raku -Workshop 15. bis 17.04.2024 in Frankfurt/M.

Winter is Coming
Crian
 2004-08-09 22:20
#85625 #85625
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Zum Thema Sortieren findest Du einiges auf meiner Perlseite (siehe Signatur). Über mehrdimensionale Arrays lässt sich im Wiki etwas finden: http://wiki.perl-community.de/bin/view/Wissensbasis/AoA
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
<< >> 3 Einträge, 1 Seite



View all threads created 2004-08-09 19:02.