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