Órdenes a medida con sort en Perl
sort acepta un bloque comparador: <=> para números, cmp para cadenas y lo que tú calcules.
use strict;
use warnings;
my @nums = (10, 2, 33, 4);
my @words = ("pear", "Fig", "apple");
my @asc = sort { $a <=> $b } @nums;
my @desc = sort { $b <=> $a } @nums;
print "@asc\n";
print "@desc\n";
my @alpha = sort { lc($a) cmp lc($b) } @words;
print "@alpha\n";
my @by_len = sort { length($a) <=> length($b) } @words;
print "@by_len\n";
Cómo funciona
{ $a <=> $b }compara numéricamente; intercambiar$by$ainvierte el orden.- El orden por defecto es ASCII-bético;
lca ambos lados decmpignora mayúsculas y minúsculas. - Cualquier expresión sirve de clave: comparar
length($a)conlength($b)pone primero la más corta.
Palabras clave y builtins usados aquí
lclengthmyprintsortuse
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 340
- Tokens
- 116
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 99 segundos.
Paso 3 de 3 en Listas y contexto; paso 12 de 27 en Fundamentos del lenguaje.