🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.funkcyjne
Article #360

Re: [Haskell] Lista bez powtórzeń.

#360
From: Paweł 'Pasza' Ostrowski
Date: Sun, 15 Jun 2003 21:20
36 lines
2208 bytes
Dnia Sun, 15 Jun 2003 20:09:33 +0000 (UTC), Marcin Gajda napisał(a):
> Witam,
  
> Tak więc - macie może jakiś pomysł na coś szybszego? Mógłbym posortować w
> O(nlogn) jakimś merdżsortem, ale nie jestem pewien, czy tędy droga...

tak jak Qrczak już napisał sort + przeleciec sie po liscie, mi też nie
przychodzi nic prostszego do głowy
 
> Wszelkie uwagi (krytyczne!) na temat stylu i podejścia miło widziane - dopiero
> się zapoznaję z tym Haskellem :P

Przeczytałem ten kod i nie bardzo rozumiem, po co wyznaczasz tam medianę
ze środkowego i skrajnych elementów listy. Quicksort działa dla 
dowolnego, wybranego do podziału elementu - niekoniecznie środkowego.
W ten sposób parę razy niepotrzebnie biegasz po liście (drop,
reverse). Być może bredzę (czegoś nie zrozumiałem), ale wydaje mi się,
że takie coś również zadziała i to pewnie szybciej:

#v+
rozna_lista2 :: Ord a => [ a ] -> Bool
rozna_lista2 [] = True 
rozna_lista2 l = let m = head l
                     in
                 length ( [a | a <- l, a == m] ) == 1 &&
                 rozna_lista2 [ a | a <- l , a < m ] &&
                 rozna_lista2 [ a | a <- l , a > m ]
#v-

Jest w miarę zwięźle ale biegamy po liście 3 razy. Z akumulatorem byłoby
tylko raz.

-- 
Pasza
JMS dla MIDP - http://jmsme.sf.net
pasza (at) zodiac.mimuw.edu.pl
Technical Details
Message-ID: <bcinv9$s2g$1@pasza.io.waw.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!news.internetia.pl!mimuw.edu.pl!news.mimuw.edu.pl!not-for-mail
References: <bcijpt$1s1$1@kenny.mimuw.edu.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!news.internetia.pl!mimuw.edu.pl!news.mimuw.edu.pl!not-for-mail
From: Paweł 'Pasza' Ostrowski <pasza@acn.waw.pl>
Newsgroups: pl.comp.lang.funkcyjne
Subject: Re: [Haskell] Lista bez powtórzeń.
Date: Sun, 15 Jun 2003 21:20:41 +0000 (UTC)
Organization: independent
Lines: 36
Message-ID: <bcinv9$s2g$1@pasza.io.waw.pl>
References: <bcijpt$1s1$1@kenny.mimuw.edu.pl>
NNTP-Posting-Host: zodiac.mimuw.edu.pl
Mime-Version: 1.0
X-Trace: kenny.mimuw.edu.pl 1055711904 8076 10.1.1.1 (15 Jun 2003 21:18:24 GMT)
X-Complaints-To: abuse@news.mimuw.edu.pl
NNTP-Posting-Date: Sun, 15 Jun 2003 21:18:24 +0000 (UTC)
User-Agent: slrn/0.9.7.4 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit