Page 1 of 1

nach letzte Zeichen sortieren

Posted: 13 Oct 2018, 17:40
by songoku
Guten Abend,
habe eine Liste, beispiel:

Code: Select all

xxxxx xxx xx xx 1
xxx xx xx xx 0
xxxx xxx xxx 2
xxx xx xx	3
Nun, möchte die Liste nach letzte Zeichen sortieren, mit Option Pn kann man nach Zeichenposition sortieren, doch die Position des letzte Zeichens ist immer unterschiedlich.
Daher, wie kann ich mit AHK, nach letzte Zeichen sortieren ?

Danke und lieben Gruß

Re: nach letzte Zeichen sortieren

Posted: 13 Oct 2018, 22:08
by divanebaba
Hi.
Ich würde es, mangels besserem Wissen, folgendermaßen machen.
Die letzten Zeichen extrahieren, nach vorne kopieren, sortieren und dann die ersten Zeichen wieder löschen.
Dazu müsstest Du zunächst die gesamte Liste neu aufbauen, aber das macht ja nichts, weil der Computer das macht.

EDIT: Statt "letzte Zeichen", korrigiert nach "letzten Zeichen" lauten, es sei denn, es wird nur bis 9 sortiert. (Eventuell auch inclusive der Null.)

Re: nach letzte Zeichen sortieren

Posted: 13 Oct 2018, 23:04
by swagfag

Code: Select all

Str =
(
Lorem ipsum dolor sit amet
consectetur adipisicing elit
Itaque placeat eaque esse
Aperiam tempora dignissimos explicabo Ipsum
necessitatibus doloremque amet fuga repellendus
aperiam recusandae harum reiciendis veniam magnam
suscipit Hic maxime
Necessitatibus earum maxime optio atque
Numquam accusantium sint ut
)

Sort Str, F MySortFunc
MsgBox % Str

MySortFunc(a, b) {
	a := SubStr(a, 0)
	b := SubStr(b, 0)

	if (a > b)
		return 1

	if (a < b)
		return -1
}

Re: nach letzte Zeichen sortieren

Posted: 14 Oct 2018, 03:52
by just me
Moin,

diese selbstgebastelten Sortfunktionen sind mit einiger Vorsicht zu behandeln. Weil sich hinter den Aufrufen ein Bubblesort verbirgt, kann das Sortieren bei größeren Datenmengen sehr zeitaufwändig werden.

Re: nach letzte Zeichen sortieren

Posted: 14 Oct 2018, 05:37
by nnnik
Lol BubbleSort
Das ist die schlechtmöglichste Entscheidung.
Der einzig schlechtere Sortier Algorithmus wäre RandomSort.
Alles zufällig sortieren, bis dass es die richtige Sortierung erreicht.
Das witzige dabei ist, dass Random Sort manchmal schneller ist als BubbleSort

Re: nach letzte Zeichen sortieren

Posted: 14 Oct 2018, 16:34
by songoku
Es Funktioniert auf jeden Fall, vielen Dank für den Code.
Versuche gerade nachzuvollziehen was es macht:
return 1
return -1

1 und -1 sind doch gar nicht definiert? Was machen die beiden Zeilen?

vielen Dank und lieben Gruß.

PS: Glückwunsch zum neuen Design

Re: nach letzte Zeichen sortieren

Posted: 15 Oct 2018, 02:42
by nnnik
Das ist eine Funktion die eine Sortierung definiert. Der Sort Befehl ruft diese Funktion auf um 2 Werte zu vergleichen.
Dabei erhält die aufgerufene Funktion die beiden Werte die verglichen werden sollen und gibt dann bestimmte Werte zurück um zu bestimmen welcher der beiden größer ist.
Es wird ein Wert kleiner 0 zurückgegeben wenn der erste Wert kleiner ist und ein Wert größer 0 falls der 2. Wert größer.