Schwartzova trfce
Honza Pazdziora
adelton na informatics.muni.cz
Úterý Leden 9 11:54:48 MET 2001
On Tue, Jan 09, 2001 at 10:32:54AM +0100, Ladislav Dobias wrote:
>
> Muzu se zeptat: Co je to Schwartzova transformace?
Perldoc -f sort.
# same thing using a Schwartzian Transform (no temps)
@new = map { $_->[0] }
sort { $b->[1] <=> $a->[1]
||
$a->[2] cmp $b->[2]
} map { [$_, /=(\d+)/, uc($_)] } @old;
V podstate jde o to, ze pokud mate tridit podle nejakeho kriteria,
ktere neni uplne trivialni, tak je lepsi nejprve vstupni seznam
predelat na seznam dvojic (ci viceric), kde budete mit ulozenu puvodni
hodnotu a k ni tu tridici hodnotu, pak setridit, a pak z tohoto
seznamu vzit zase jenom tu puvodni hodnotu. A krasa Perlu je v tom, ze
to zapisete jako jeden prikaz sestavajici z map sort map.
Je to rychlejsi na provadeni nez delat regexp (ci jiny vypocet) pri
kazdem porovnani a je to rychlejsi na zapis nez si vytvaret bokem
pomocna pole (viz. ten priklad v perlfunc).
Hmmm. Doufam, ze jsem to moc nezamlzil. :-)
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, mod_perl, DBI, Oracle, auth. WWW servers, XML/XSL, ...
Petition for a Software Patent Free Europe http://petition.eurolinux.org
------------------------------------------------------------------------
Další informace o konferenci Perl