TapHome

Sortiranje

Funkcije skripte TapHome za sortiranje — ORDER, ORDERINDEX i njihove varijante STRICT i silazne varijante za sortiranje vrijednosti ili vraćanje indeksa redoslijeda.

Funkcije ORDER sortiraju vrijednosti i vraćaju novu zbirku — sortirane vrijednosti ili, u varijantama ORDERINDEX, izvorne položaje vrijednosti (od nule) u sortiranom redoslijedu.

FunkcijaRedoslijedVraćaNepoznate vrijednosti (Null, NaN)
ORDERuzlaznovrijednostiuklonjene
ORDERSTRICTuzlaznovrijednostizadržane, na početku
ORDERDESCsilaznovrijednostiuklonjene
ORDERDESCSTRICTsilaznovrijednostizadržane, na početku
ORDERINDEXuzlaznoindekseuklonjene
ORDERINDEXSTRICTuzlaznoindeksezadržane, na početku
ORDERINDEXDESCsilaznoindekseuklonjene
ORDERINDEXDESCSTRICTsilaznoindeksezadržane, na početku

Pravila zajednička svim osam funkcija:

  • Primaju 1 do 100 vrijednosti ili točno jednu zbirku. Izvorna zbirka se ne mijenja.
  • Vrijednosti moraju biti usporedive i iste vrste — brojevi, znakovi, nizovi znakova, datetime ili timespan; miješanje brojeva i nizova znakova je pogreška.
  • Nizovi znakova i znakovi sortiraju se prema kodu znaka, pa velika slova dolaze prije malih.
  • Jednake vrijednosti zadržavaju izvorni redoslijed.
  • Varijante STRICT stavljaju nepoznate vrijednosti na početak, i u silaznim varijantama.
  • Prazna zbirka je pogreška: Collection is null or empty.

Primjer — najjeftiniji sat iz popisa cijena

VAR prices := {12.5, 8.1, 20.0, 9.9};
VAR cheapest := GETAT(ORDER(prices), 0);
# cheapest = 8.1
VAR cheapestHour := GETAT(ORDERINDEX(prices), 0);
# cheapestHour = 1

ORDER

ORDER vraća vrijednosti sortirane uzlaznim redoslijedom, bez Null i NaN.

1
2
ORDER(value1, value2, ...)
ORDER(collection)
ORDER(3, 1, 2);
# Result: {1, 2, 3}
ORDER(3, NaN, 2, NaN);
# Result: {2, 3}
ORDER('Z', 'a', 'X');
# Result: {'X', 'Z', 'a'}
ORDER("str1", NULL, "STR2", "stR1");
# Result: {"STR2", "stR1", "str1"}
ORDER(NULL, TIMESPAN(0, 0, 0, 0, 100), TIMESPAN(0, 0, 0, 0, 99));
# Result: {TIMESPAN(0, 0, 0, 0, 99), TIMESPAN(0, 0, 0, 0, 100)}

ORDERSTRICT

ORDERSTRICT vraća vrijednosti sortirane uzlaznim redoslijedom i zadržava Null i NaN na početku.

1
2
ORDERSTRICT(value1, value2, ...)
ORDERSTRICT(collection)
ORDERSTRICT(3, NaN, 2, NaN);
# Result: {NaN, NaN, 2, 3}
ORDERSTRICT("str1", "STR2", "stR1");
# Result: {"STR2", "stR1", "str1"}
ORDERSTRICT(NULL, TIMESPAN(0, 0, 0, 0, 99));
# Result: {NULL, TIMESPAN(0, 0, 0, 0, 99)}

ORDERDESC

ORDERDESC vraća vrijednosti sortirane silaznim redoslijedom, bez Null i NaN.

1
2
ORDERDESC(value1, value2, ...)
ORDERDESC(collection)
ORDERDESC(3, 1, 2);
# Result: {3, 2, 1}
ORDERDESC(3, NaN, 2, NaN);
# Result: {3, 2}
ORDERDESC('Z', 'a', 'X');
# Result: {'a', 'Z', 'X'}
ORDERDESC("str1", NULL, "STR2", "stR1");
# Result: {"str1", "stR1", "STR2"}

ORDERDESCSTRICT

ORDERDESCSTRICT vraća vrijednosti sortirane silaznim redoslijedom i zadržava Null i NaN na početku.

1
2
ORDERDESCSTRICT(value1, value2, ...)
ORDERDESCSTRICT(collection)
ORDERDESCSTRICT(3, NaN, 2, NaN);
# Result: {NaN, NaN, 3, 2}
ORDERDESCSTRICT(NULL, TIMESPAN(0, 0, 0, 0, 99), TIMESPAN(0, 0, 0, 0, 100));
# Result: {NULL, TIMESPAN(0, 0, 0, 0, 100), TIMESPAN(0, 0, 0, 0, 99)}

ORDERINDEX

ORDERINDEX vraća položaje vrijednosti uzlaznim redoslijedom vrijednosti, bez položaja vrijednosti Null i NaN.

1
2
ORDERINDEX(value1, value2, ...)
ORDERINDEX(collection)

Vraća — collection<int> položaja u ulazu, od nule. Prvi element je položaj najmanje vrijednosti.

ORDERINDEX(3, 1, 2);
# Result: {1, 2, 0}
ORDERINDEX(3, NaN, 2, NaN);
# Result: {2, 0}
ORDERINDEX("str1", NULL, "STR2", "stR1");
# Result: {2, 3, 0}

ORDERINDEXSTRICT

ORDERINDEXSTRICT vraća položaje vrijednosti uzlaznim redoslijedom vrijednosti, s položajima vrijednosti Null i NaN na početku.

1
2
ORDERINDEXSTRICT(value1, value2, ...)
ORDERINDEXSTRICT(collection)
ORDERINDEXSTRICT(3, 1, 2);
# Result: {1, 2, 0}
ORDERINDEXSTRICT(3, NaN, 2, NaN);
# Result: {1, 3, 2, 0}
ORDERINDEXSTRICT(NULL, TIMESPAN(0, 0, 0, 0, 99));
# Result: {0, 1}

ORDERINDEXDESC

ORDERINDEXDESC vraća položaje vrijednosti silaznim redoslijedom vrijednosti, bez položaja vrijednosti Null i NaN.

1
2
ORDERINDEXDESC(value1, value2, ...)
ORDERINDEXDESC(collection)
ORDERINDEXDESC(3, 1, 2);
# Result: {0, 2, 1}
ORDERINDEXDESC(3, NaN, 2);
# Result: {0, 2}
ORDERINDEXDESC("str1", NULL, "STR2", "stR1");
# Result: {0, 3, 2}

ORDERINDEXDESCSTRICT

ORDERINDEXDESCSTRICT vraća položaje vrijednosti silaznim redoslijedom vrijednosti, s položajima vrijednosti Null i NaN na početku.

1
2
ORDERINDEXDESCSTRICT(value1, value2, ...)
ORDERINDEXDESCSTRICT(collection)
ORDERINDEXDESCSTRICT(3, 1, 2);
# Result: {0, 2, 1}
ORDERINDEXDESCSTRICT(3, NaN, 2, NaN);
# Result: {1, 3, 0, 2}
ORDERINDEXDESCSTRICT(NULL, TIMESPAN(0, 0, 0, 0, 99));
# Result: {0, 1}