Schrift
[thread]12352[/thread]

Zeilen einlesen und nach dritter Spalte sortieren (Seite 4)

Leser: 5


<< |< 1 2 3 4 5 >| >> 49 Einträge, 5 Seiten
Ronnie
 2008-08-24 20:13
#113953 #113953
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
LanX-+2008-08-24 17:39:26--
@leo: Wer weiß ob Ronnies Ideen deine Ideen sind ...

@Rolf: Richtig! Das Beispiel macht (natürlich) nur bedingt das was Leo möchte - sondern das was ich aus seiner Beschreibung herausgelesen habe. Und es macht es so, wie es mir sinnvoll erschien. Das kann völlig falsch sein, aber ist womöglich trotzdem hilfreich weil es Konzepte transportiert die genutzt werden können.

EDIT: Interpunktion geändert.
LanX-
 2008-08-24 20:51
#113954 #113954
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
@Ronnie: ja aber wenn er nix damit anfangen kann ärgerst du dich. oder?
leo11
 2008-08-24 21:47
#113956 #113956
User since
2008-08-14
250 Artikel
BenutzerIn
[default_avatar]
@LanX
Ich finde es ausgesprochen freundlich, wie du versucht mir möglichst pädagogisch sinnvoll weiter zu helfen. Du hast recht, ich kann nicht komplett etwas damit anfagen, Ronnie aber auch. Wie er selbst sagt macht das Bsp. nur bedingt was ich möchte, aber es transportiert Konzepte. Ich weiß jetzt wie man mit virtuellen Dateien arbeitet, wie man Subroutinen erstellt, und deren Parameter übernimmt. Ich habe bewußt nicht genau geschrieben was eigentlich mein Ziel ist, da ich selbst aud die Lösung kommen möchte. Ich werde sie dann hier zeigen und fragen was ihr davon haltet. Glaub aber nicht dass das heut noch etwas wird, und unter der Woche hab ich wenig Zeit, daher kann es nächstes We werden.

VG
leo
Ronnie
 2008-08-24 21:53
#113957 #113957
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
LanX-+2008-08-24 18:51:16--
@Ronnie: ja aber wenn er nix damit anfangen kann ärgerst du dich. oder?

Das ist schwer zu beantworten. Als ich hier angefangen habe zu posten, habe ich mir auch erstmal mit einer Teilmenge der Sprache arbeiten müssen. Viele Dinge habe ich erst im Laufe der Zeit verstanden. Dennoch glaube ich mich zu erinnern, dass mir die Beispiele von pq, Dubu u.a. geholfen haben, auch wenn Sprachelemente genutzt wurden, die ich damals nur bedingt verstanden habe. Deshalb neige ich auch dazu Snippets zu präsentieren, die komplett lauffähig sind - mit denen ein Fragesteller experimentieren kann. Natürlich kann es sein, dass man einen wirklich zu komplexen Lösungsansatz aufzeigt und dieser deshalb erstmal unter den Tisch fällt. Aber evtl. ist er für dritte Leser interessant.

Allerdings muss ich auch eingestehen, dass ich nicht mehr so häufig präsent bin wie früher. Da ist zum einen das Tagesgeschäft, das Vorrang hat, zum anderen hat man viele Fragen schon sehr oft gesehen und nur bedingt Interesse wiederholt Zeit zu investieren. Deshalb ist es auch wichtig, dass immer mal wieder neue Leute zu einem Forum dazu kommen. Dennoch muss ich großen Respekt denen gegenüber zollen, die hier schon lange aktiv sind - genauso wie denen die lange aktiv waren und jetzt hier inaktiv sind. Von vielen konnte ich etwas lernen, manchmal indem meine Fragestellungen beantwortet wurden, manchmal indem ich Fragen beantworten konnte - zuweilen indem ich einfach mitgelesen habe.

Eine Lücke die das Forum lässt, die zusammenhängende Darstellung von (neuen) Themengebieten, wird durch Renée mit dem $foo-Magazin geschlossen oder zumindest teilweise ausgefüllt. Auch davor habe ich großen Respekt und kann nur jeden ermuntern vieleicht mal einen Beitrag beizusteuern.
leo11
 2008-08-24 22:17
#113959 #113959
User since
2008-08-14
250 Artikel
BenutzerIn
[default_avatar]
Ich denke das es Situationen gibt, in denen eine fertige Lösung mehr hilft, und solche in denen das nicht sinnvoll ist. Bspw. kann es sein, dass man die Doku schon durchforstet hat, gegoogelt hat, etc, nichts gefunden, kein Erfolgserlebnis, dann will man einfach mal sehen, wie's geht, so wie bei mir heut morgen.
Auf der anderen Seite kann man auch mal überfordert sein, wenn die Lösung die man gezeigt bekommt vollkommen unklar ist.
Vieleicht ist das auch von Person zu Person anders. Dem einen hilft das mehr, den anderen das. Bei mir ist das so eine Mischung. Manchmal brauch ich eine Lösung um zu verstehen, manchmal macht erstmal eine Doku/einfache Bsp. mehr Sinn. Bei meinem Wissenstand bringt mir der Weg zu Lösung auch sehr viel.

-----------
Auch meinen Respekt, denen die sich hier engagieren und engagiert haben.
LanX-
 2008-08-25 00:44
#113961 #113961
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
hmmm ... also soweit ausholen wollte ich garnicht ... meine denke ist einfach dass man auf Rückfrage eine verbesserte Frage erwarten kann und damit auch dem Fragesteller auf eine sehr effektive Weise hilft, weil die richtige Fragestellung der erste Schritt zur besten Antwort ist. [*] Ich hab in Foren schon Stunden zur Beantwortung von Glaskugelfragen verbracht und Perlen vor die Säue geworfen. Daneben hab ich andere beobachtet die sich bei sowas so abgekämpft haben, dass sie keien Lust mehr hatten zu antworten. Ich sehe eine beantwortete Rückfrage nicht primär als Pädagogisch an, sondern als effektives Mittel um zu erkennen, ob und wieviel man an Zeit investieren möchte. Abzocker die mit möglichst wenig Hirnschmalz möglichst umfassende Lösungen einfordern (HILFE!!! DRINGEND!!! SCHNELL!!!) gibts hier auch recht oft... Leo das ist nicht gegen dich gerichtet, sondern ein allgemeines Problem von Foren. Es kommt nämlich deswegen auch vor das besonders simple Fragen ignoriert werden, weil sie der Community "zu dumm" sind, wo aber eine einfache Rückfrage und ein Dialog viel mehr Akzeptanz brächte. [*] zugegeben nerve ich zuweile meine Umgebung mit Rückfragen was sie gerade genau meinen würden, das sind so die Berufskrankheiten die ein Mathe-Studium mit sich bringt, oder noch treffender als "Déformation professionnelle" bei den Franzosen bezeichnet ; )
leo11
 2008-08-25 01:34
#113962 #113962
User since
2008-08-14
250 Artikel
BenutzerIn
[default_avatar]
Ich habe nun den Code von Ronnie etwas abgewandelt:

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
33
34
35
36
37
38
39
40
my @datei_to_sort = map {chomp; $_} (<DATA>);
my $level_to_sort = 20;
my $spalte_to_sort = 5;

print Dumper in_three_chunks(\@datei_to_sort, $level_to_sort, $spalte_to_sort);

sub in_three_chunks {
    my $datei_ts = shift;
    my $level_ts = shift;
    my $spalte_ts = (shift)-1;

    return unless ref $datei_ts or not $level_ts =~ /^\d+$/;

    my %parted = ( before => [], matching => [], after => [] );

    for my $zeile (@$datei_ts) {
        my $spalte = [split /;/, $zeile];

        push @{$parted{'matching'}}, $zeile, $spalte->[$spalte_ts] and next if $spalte->[2] == $level_ts;

        unless (@{$parted{'matching'}}) {
            push @{$parted{'before'}}, $zeile;
        } else {
            push @{$parted{'after'}}, $zeile;
        }
    }
    #print $parted{'matching'}->[1];
    sort { $a->($parted{'matching'}->[1]) <=> $b->($parted{'matching'}->[1])} %parted;
    return \%parted;
}

__DATA__
Zeile1;;10;;;;
Zeile2;;11;;;;
Zeile3;;20;;600;;
Zeile4;;20;;500;;
Zeile5;;20;;800;;
Zeile6;;20;;700;;
Zeile7;;30;;;;
Zeile8;;40;;;;

1.)Die sort-Zeile geht noch nicht. Was muss man schreiben, damit ich folgendem Ergebnis ein Stück näher komme?
Zeile1;;10;;;;
Zeile2;;11;;;;
Zeile4;;20;;500;;
Zeile3;;20;;600;;
Zeile6;;20;;700;;
Zeile5;;20;;800;;
Zeile7;;30;;;;
Zeile8;;40;;;;

2.)Was bewirkt
return unless ref $datei_ts or not $level_ts =~ /^\d+$/;

3.)wie funktioniert
unless (@{$parted{'matching'}}) {
push @{$parted{'before'}}, $zeile;
} else {
push @{$parted{'after'}}, $zeile;
}
Das push verstehe ich, aber die Bedingung für unless ist mir unklar. Was gibt die den zurück? True/false o.ä.? Und wieso?
Struppi
 2008-08-25 11:40
#113968 #113968
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
leo11+2008-08-24 23:34:58--
Das push verstehe ich, aber die Bedingung für unless ist mir unklar. Was gibt die den zurück? True/false o.ä.? Und wieso?
Ich dachte du würdest die Perl Doku verwenden? Was hindert dich daran, mal einen Blick da rein zu werfen?
Ronnie
 2008-08-25 11:59
#113970 #113970
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
leo11+2008-08-24 23:34:58--
1.)Die sort-Zeile geht noch nicht. Was muss man schreiben, damit ich folgendem Ergebnis ein Stück näher komme?
Zeile1;;10;;;;
Zeile2;;11;;;;
Zeile4;;20;;500;;
Zeile3;;20;;600;;
Zeile6;;20;;700;;
Zeile5;;20;;800;;
Zeile7;;30;;;;
Zeile8;;40;;;;

Code (perl): (dl )
@{$parted{'matching'}} = sort { $a->[4] <=> $b->[4] } @{$parted{'matching'}};

leo11+2008-08-24 23:34:58--
2.)Was bewirkt
return unless ref $datei_ts or not $level_ts =~ /^\d+$/;

Das erste Argument der Funktion wird darauf geprüft, ob es eine Referenz ist, das zweite Argument wird darauf geprüft, dass es eine Zahl sein muss. Trifft eines von beiden nicht zu, beendet sich die Funktion ohne irgendwas zu tun. Zumeist ist es sinnvoller an dieser Stelle die zu verwenden um lautstark zu sterben (wenn was schiefgeht).
leo11+2008-08-24 23:34:58--
3.)wie funktioniert
unless (@{$parted{'matching'}}) {
push @{$parted{'before'}}, $zeile;
} else {
push @{$parted{'after'}}, $zeile;
}
Das push verstehe ich, aber die Bedingung für unless ist mir unklar. Was gibt die den zurück? True/false o.ä.? Und wieso?

Kann man beinahe wörtlich übersetzen:
Code: (dl )
1
2
3
4
solange noch nichts gefunden wurde, was dem Suchkriterium entspricht
füge Zeile in die Ergebnissliste "before" ein,
ansonst
füge Zeile in die Ergebnissliste "after" ein.


Ein Array - und um nix anderes geht es hier, auch wenn es aufwendig dereferenziert wird - gibt im skalaren Kontext (im Gegensatz zum Listenkontext) seine Länge zurück. Solange nix drin ist, ist die Länge Null und die Bedingung wird als FALSE ausgewertet.
LanX-
 2008-08-25 13:11
#113971 #113971
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
hmm also ich würde einfach schnell 3 greps schreiben ... das geht so fix dass man keien Unteroutinen bräuchte und es wäre fast selbstdokumentierend ... oder hab ich da was verpasst?
<< |< 1 2 3 4 5 >| >> 49 Einträge, 5 Seiten



View all threads created 2008-08-14 08:06.