Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Matrix (https://www.delphipraxis.net/200840-matrix.html)

psygonis 30. Mai 2019 14:24

Matrix
 
Gleich vornweg, ich habe kaum Ahnung von Delphi. Komme von PHP. Aber ich will mich jetzt mal etwas mehr damit befassen. Zur Zeit habe ich meine Delphi Sachen immer von jemanden anders erledigen lassen. Da gab es paar Probleme. Belassen wir es dabei. Folgendes habe ich zu erledigen.
Ausgangssituation:

Ein Array mit mehreren Einträgen. Diese stellen Farb-Codes dar und deren Vorkommen in einem Bild.

Array1 -> Vorgaben der Farbcodes
Array1 = (B01 B02 B03 B04 B05 B06 B07 B08 B09 B10 B11 B12 B13 B14 B15 B16 B17 B18 B19 B20 B21 B22 B23 B24 B25 B26 B27 B28 B29 B30 B31

Array2 und folgende sind die Daten aus den Bildern

Array2 (0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0)

Array3 (0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0)

Array4 (0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0)

Array5 (0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0)


Eine 0 an dem betreffendem Index bedeutet, die Farbe ist in dem Bild nicht enthalten, eine 1 bedeutet, ist enthalten.
Es kann bis zu 1000 Bilder geben, die so definiert sind und jedes Bild kann bis zu 256 Farben (Indexe) enthalten.
Array2 ist meine Referenzmatrix.

Ich möchte jetzt schnell festsellen:
1. welche Bilder haben die gleichen Werte, egal ob Referenzmatrix oder nicht?
2. welche Bilder sind in der Referenz-Matrix enthalten?

In dem obigen Beispiel wären also Array3 und Array4 gleich und in der Referenz enthalten. Array4 wäre weder gleich mit irgend etwas noch in der Referenz enthalten.
Gibt es da Funktionen oder DLL, die das bereits so lösen können, oder hilft da nur for in for in for und so weiter?

Uwe Raabe 30. Mai 2019 14:45

AW: Matrix
 
Wenn ich das richtig sehe, ist Array1 für die Beantwortung deiner Anfragen 1 und 2 nicht relevant.

Was die Arrays und die Art der Abfragen betrifft, würde ich bei völliger Freiheit keine Arrays sondern Sets nehmen. Das geht aber nur deshalb, weil die Begrenzung auf 256 Elemente bei deiner Problematik eingehalten wird. Damit wird der Test auf Gleichheit und "in Referenz enthalten" zum Kinderspiel.

Delphi-Quellcode:
type
  TByteSet = set of 0..255;
var
  Ref: TByteSet;
  Set3: TByteSet;
  Set4: TByteSet;
  Set5: TByteSet;
begin
  Ref := [7,8,11,16,20,21,28];
  Set3 := [7,8,11,16,28];
  Set4 := [7,8,11,16,28];
  Set5 := [7,8,10,11,16,17,28];

  if Set3 = Set4 then; // ist Set3 gleich Set4?
  if Set3 <= Ref then; // ist Set3 in Ref enthalten
end;

Luckie 30. Mai 2019 14:48

AW: Matrix
 
Bitte gib deinen Thema ein aussagekräftigeren Titel. Der jetzige ist eher nichts sagend.

psygonis 30. Mai 2019 17:41

AW: Matrix
 
OK, werde ich tun. Das mit den Sets checke ich auch mal. Danke für die Hinweise.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz