Descripción
Ordena los elementos de un vector según una relación de orden especificada
Cadena de entrada
ordcomp
Cadena de salida
ordcomp
Uso
ordcomp(<vector>,<comparador>)
Parámetros | |||
---|---|---|---|
# | Parámetro | Descripción | Valor por defecto |
1 | vector | Vector de datos a ordenar | |
2 | comparador |
Expresión que devuelve el valor de la comparación y depende de dos variables internas, _t1_, _t2_, que representan dos elementos a comparar.
|
Ejemplos
ordenar por tamaño del vector:
ordcomp([[1,2],[],[6,nan,-1,ui],[0,0,0,0,0,0,0],[inf]],elsif(dim(_t1_)<dim(_t2_),-1,dim(_t1_)>dim(_t2_),1,0))
VectorEvaluado: [[],[Infinity],[1,2],[6,NaN,-1,I],[0,0,0,0,0,0,0]]
ordcomp([[1,2],[],[6,nan,-1,ui],[0,0,0,0,0,0,0],[inf]],dim(_t1_)-dim(_t2_)) forma más concisa
VectorEvaluado: [[],[Infinity],[1,2],[6,NaN,-1,I],[0,0,0,0,0,0,0]]
ordenar por suma del vector:
ordcomp([[100,0,-1],[1e100],[-2,0,-1,3],[2,2]],suma(_t1_)-suma(_t2_))
VectorEvaluado: [[-2,0,-1,3],[2,2],[100,0,-1],[1.0E100]]
ordenar números naturales por su suma alícuota:
ordcomp([4,6,270,32,14,35,37,12,110,0,100],alisum(_t1_)-alisum(_t2_))
VectorEvaluado: [0,37,4,6,14,35,12,32,110,100,270]
ordenar números naturales por su última cifra primero, y por su orden natural en caso de empate después, usando eval:
ordcomp(sucesion(randint(1,1000),_,1,100),eval(if(unidades1=unidades2,_t1_-_t2_,unidades1-unidades2),[unidades1,unidades2],[_t1_%10,_t2_%10]))
VectorEvaluado: [10,50,80,180,610,630,700,840,930,201,201,481,491,501,521,571,631,751,931,961,991,12,652,672,772,782,792,842,43,213,233,253,573,633,653,673,853,953,973,4,84,104,134,154,284,354,354,354,384,454,704,714,784,804,814,85,245,335,355,465,565,645,765,885,86,146,366,666,666,796,826,846,866,996,107,727,747,28,28,128,198,278,408,418,458,608,878,898,928,49,319,559,579,699,739,809,869,909,969,999]
ordenar números naturales con primos primero y compuestos después, cada grupo ordenado por orden natural:
ordcomp(shuffle(rango(101)),elsif(primo(_t1_)=primo(_t2_),_t1_-_t2_,primo(_t1_),-1,1))
VectorEvaluado: [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,0,1,4,6,8,9,10,12,14,15,16,18,20,21,22,24,25,26,27,28,30,32,33,34,35,36,38,39,40,42,44,45,46,48,49,50,51,52,54,55,56,57,58,60,62,63,64,65,66,68,69,70,72,74,75,76,77,78,80,81,82,84,85,86,87,88,90,91,92,93,94,95,96,98,99,100]
Véase también…