APL2 kann ja so schnell sein. Das liegt auch daran, dass die Rechner inzwischen immer leistungsfähiger geworden sind. Wenn ich Folgendes Anfang der 80er - als ich meine ersten APL-Schritte unternahm - auch nur ansatzweise einer 5120 zugemutet hätte, hätte selbige mir die APL-Funktion um die Ohren geschlagen.
Ich habe 9 9x9-Matrizen mit booleschen Werten, organisiert als 9x9x9-Array. Die Aufgabe lässt sich so formulieren:
Finde die Spalten in jeder der 9x9-Matrizen, die mit der entsprechenden Spalte einer anderen Matrix identisch ist. Für zwei Matrizen A und B ist das genau
^/[1]A=B (oder ^⌿A=B)
Dies soll paarweise mit den Ebenen der 9x9x9-Matrix S geschehen:
^/[1]S[i;;]=S[j;;]
Dies kann ich mit einem APL der 2.Generation schnell erledigen:
^/[1]¨(⊂[2 3]S)∘.=(⊂[2 3]S)
Freaks würden das evtl. auch so schreiben:
^/[1]¨↑∘.=/2⍴⊂⊂[2 3]S
Das Ergebnis ist eine 9x9-Matrix mit 9-elementigen booleschen Vektoren als Elemente. Letztere entsprechen dem Ergebnis der paarweisen Vergleiche. Man kann diese geschachtelte Struktur früher oder später "auspacken", was zu einem 9x9x9-Ergebnis führt.
Ja, ich weiß: Ich treibe mit dieser Operation mehr als doppelt soviel Aufwand wie nötig.
Ja, ich weiß: Ich treibe mit dieser Operation mehr als doppelt soviel Aufwand wie nötig. Denn S[i;;]=S[j;;] genau dann,wenn S[j;;]=S[i;;]. Und die Information, dass jede Spalte mit sich selbst identisch ist, ist auch nichts Neues. Die gewünschte Inf
Aufgenommen: Apr 02, 23:46