Schrift
[thread]5846[/thread]

differenz zwischen zwei arrays (Seite 2)



<< |< 1 2 3 >| >> 24 Einträge, 3 Seiten
Crian
 2003-10-22 18:45
#66667 #66667
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[quote=betterworld,22.10.2003, 15:17]
Code: (dl )
1
2
3
4
5
6
7
use strict;
my @ar1=qw/1 2 2 3 3 3 4 4 4 4/;
my @ar2=qw/1 2 3 4/;
my %ar2;
$ar2{$_} ++ for @ar2;
my @ar3 = grep {not($ar2{$_} and $ar2{$_}--)} @ar1;
print "$_\n" for @ar3;
[/quote]
Solange Dein Programm bei den beiden Arrays in der Differenz noch eine 1 mit ausgibt, würd ich mich nicht mit Erklärungen aufhalten... es macht keinen Sinn falsche Algorithmen zu erklären ;-)

Edit: Dieses Programm gibt aber immer noch 1 2 3 4 statt 2 3 3 4 4 4 aus...\n\n

<!--EDIT|Crian|1066834017-->
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
betterworld
 2003-10-22 18:48
#66668 #66668
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
[quote=Crian,22.10.2003, 16:45]Solange Dein Programm bei den beiden Arrays in der Differenz noch eine 1 mit ausgibt, würd ich mich nicht mit Erklärungen aufhalten... es macht keinen Sinn falsche Algorithmen zu erklären ;-)

Edit: Dieses Programm gibt aber immer noch 1 2 3 4 statt 2 3 3 4 4 4 aus...[/quote]
Bei mir nicht... probier es noch mal
betterworld
 2003-10-22 18:50
#66669 #66669
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
@Crian: siehe mein Posting ueber Deinem (ich uebersehe auch immer Postings, die gekommen sind, waehrend ich getippt habe)
Crian
 2003-10-22 18:58
#66670 #66670
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Dann vertausch mal die beiden Arrays, dann gibt Dein Programm nichts aus...

Schau Dir mal meinen Code an.
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
Crian
 2003-10-22 19:01
#66671 #66671
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Oder probier mit folgenden Arrays herum:

@a1 = qw/eins eins zwei/
@a2 = qw/eins zwei drei/

Stimmst Du mit mir in der Arraydifferenzdefinition, die ich oben angegeben habe überein? Wenn ja, dann möchtest Du bestimmt auch

qw/eins drei/

als Ergebnis erhalten...
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
betterworld
 2003-10-22 19:06
#66672 #66672
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
[quote=Crian,22.10.2003, 17:01]Stimmst Du mit mir in der Arraydifferenzdefinition, die ich oben angegeben habe überein? Wenn ja, dann möchtest Du bestimmt auch[/quote]
Das symmetrisch zu machen, war eigentlich auch nicht meine Absicht. Ich bin damit einverstanden, dass @a1-@a2 != @a2-@a1 sein kann.
Die Frage ist aber eigentlich, welche Definition andi verfolgt. Es kommt auch auf seine Problemstellung an. Wenn er nur Mengen behandelt, wuerde auch mein allererstes Beispiel gehen.
Crian
 2003-10-22 19:09
#66673 #66673
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Ich denke, dass diese Differenz nicht mit "abziehen" verwechselt werden sollte... sonst müsstest Du ja für Elemente aus der zweiten Menge, die in der erstenm nicht sind, "negative" Elemente haben, die dann in der Ergebnismenge sind.

Wenn unsere Ansätze verschieden sind, dürfen allerdings auch unsere Ergebnisse verschieden sein :-D

Für meine Definition oben leistet mein Programm jedenfalls genau das gewünschte.
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
betterworld
 2003-10-22 19:14
#66674 #66674
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
[quote=Crian,22.10.2003, 17:09]Wenn unsere Ansätze verschieden sind, dürfen allerdings auch unsere Ergebnisse verschieden sein :-D[/quote]
In der Tat :)

Programmiermaessig ist mir bisher allerdings nur die Differenz von Mengen (mathematisch: M1 \ M2 = {m in M1: m not in M2}) vorgekommen. Anwendungen sind sowas wie:
Code: (dl )
@allowed_symbols = diff(\@alphabet, \@reserved_symbols);
Crian
 2003-10-22 20:26
#66675 #66675
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Naja, da ich soetwas immer als Menge 1ohne Menge 2 bezeichnet hätte, stellte ich mir unter der "Differenz" etwas komplizierteres vor.

So etwas wie "was unterscheidet diese beiden Mengen".
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
Dubu
 2003-10-22 22:05
#66676 #66676
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
perldoc -q "difference of two arrays"

Allerdings ebenfalls nur fuer die symmetrische Differenz und eindeutige Elemente.
<< |< 1 2 3 >| >> 24 Einträge, 3 Seiten



View all threads created 2003-10-22 16:36.