typestar

Ó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

  1. { $a <=> $b } compara numéricamente; intercambiar $b y $a invierte el orden.
  2. El orden por defecto es ASCII-bético; lc a ambos lados de cmp ignora mayúsculas y minúsculas.
  3. Cualquier expresión sirve de clave: comparar length($a) con length($b) pone primero la más corta.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 3 en Listas y contexto; paso 12 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →