Portál AbcLinuxu, 22. října 2025 17:42

Mizerná knížka, ale dobré cvičení

25.9.2007 22:26 | Přečteno: 1533× | erlang | Výběrový blog | poslední úprava: 25.9.2007 23:34

O víkendu jsem si vzal do vlaku na čtení Algoritmy, Datové struktury a programovací techniky od Computer Pressu. Ta kniha je plná chyb, popisky v textu nesouhlasí s obrázky, na mnoha místech nesmyslně přeložená a spousta dalších podobných nepříjemností. Část z toho vzniklo zjevně při překladu, ale dost hodně je také věcí velmi mizerné redakce. To je ale u Computer Pressu celkem obvyklé, skoro by se dalo říct, norma. Nicméně mě to přimělo si některé příklady zkusit vyřešit jen tak cvičně.

Ke kapitole 2:

-module(exer2).
-compile(export_all).
-define(DO8(X), X, X, X, X, X, X, X, X).
-define(DO64(X), ?DO8(?DO8(X))).

%%% 2.1
% reverse jako přirozená rekurze
% Stupid and ineffective of course (čistě jen jako test)
reverse_natural([]) -> [];
reverse_natural([H|T]) -> reverse_natural(T) ++ [H].

% reverze s pomocnou proměnou
% With Acc - realy fast
reverse(L) when list(L) -> reverse(L, []).

reverse([], L) -> L;
reverse([H|T], L) -> reverse(T, [H|L]).

%%% 2.2
% binární prohledávání seřazeného pole, nemaje pole, použito na tuple
% udělat si seřazené tuple lze například:
% list_to_tuple(lists:sort(
%       lists:map(fun(_)->random:uniform(100) end, lists:seq(1,10))
% )).
binSearch(T, N) when tuple(T)-> binSearch(T, N, 1, size(T)).

binSearch(T, N, P, P) -> N == element(P, T);	% only speed up
binSearch(T, N, S, E) when S < E ->
	P = (E+S) div 2,
	M = element(P, T),
	if	M == N -> true;
		M < N -> binSearch(T, N, P+1, E);
		true -> binSearch(T, N, S, P-1)
	end;
binSearch(_, _, _, _) -> false.

%%% 2.3
% převod čísla do binární soustavy
integerToBin(N) when integer(N) -> integerToBin(N, []).

integerToBin(0, []) -> "0";
integerToBin(0, L) -> L;
integerToBin(N, L) -> integerToBin(N div 2, [ N rem 2 +$0 | L ]).

%%% 2.5
% největší společný dělitel
% (elegantní, ale na dc verzi '?[dSarLa%d0<a]dsax+p' to stále nemá)
bcd(A,0) -> A;
bcd(A,B) -> bcd(B, A rem B).

%%% Benchmarking
% pár funkciček na měření časové náročnosti
timeIt(X) -> timeIt(X, 1000).

timeIt(X, N) ->
	statistics(runtime),
	for(1, N, X),
	element(2, statistics(runtime))/N/1000.

for(S, E, F) when S < E-64 -> ?DO64(F()), for(S+64, E, F);
for(S, E, F) when S < E -> F(), for(S+1, E, F);
for(S, S, F) -> F().

% funkce na změření kolik zabere for
% exer2:timeIt(fun exer2:empty/0, 10000000).
% cca 60 ns na AMD Athlon 1.2
empty()->ok.

       

Hodnocení: 60 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

b42 avatar 25.9.2007 22:48 b42 | skóre: 12 | Ostrava/Brno
Rozbalit Rozbalit vše Re: Mizerná knížka, ale dobré cvičení
Odpovědět | Sbalit | Link | Blokovat | Admin
Mohu potvrdit, ta kniha je opravdu hrozna. Bez nejakeho dalsiho zdroje (wikipedie, ...) bych spoustu veci vubec nepochopil. Na druhou stranu, casto to cloveka primeje si to dohledat a pripadne vyzkouset.
26.9.2007 07:51 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Mizerná knížka, ale dobré cvičení
Jojo, wikipedii jsem musel taky navštívit. Bez toho by třeba kapitola o prohledávání textů byla úplně k ničemu.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
Martin Stiborský avatar 25.9.2007 23:24 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Rozbalit Rozbalit vše Re: Mizerná knížka, ale dobré cvičení
Odpovědět | Sbalit | Link | Blokovat | Admin
Hmm, dobrá náhoda .. pozítří si ji hodlám koupit ..
Pokud má někdo tip na jinou publikaci na stejné téma, budu vděčný ...
Kvík ..
|🇵🇸 avatar 25.9.2007 23:25 |🇵🇸 | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: Mizerná knížka, ale dobré cvičení
Taková fialová bichle od nějakého Germána, tuším.
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
25.9.2007 23:28 bodo
Rozbalit Rozbalit vše Re: Mizerná knížka, ale dobré cvičení
Robert Sedgewick - Algoritmy v C :)).
|🇵🇸 avatar 25.9.2007 23:30 |🇵🇸 | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: Mizerná knížka, ale dobré cvičení
Jo, to je ona, ta dobrá.
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
frEon avatar 26.9.2007 14:49 frEon | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Mizerná knížka, ale dobré cvičení
nevite vysel uz druhy dil (presneji receno 5-8 v jednom baleni?)
Talking about music is like dancing to architecture.
26.9.2007 21:33 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: Mizerná knížka, ale dobré cvičení
části 6-8 by měl už být třetí díl :-) První dva se dají sehnat v AJ a první i v ČJ (knihkupectví Neoluxor, Kanzelsberger). Že by třetí vyšel v AJ a druhý byl v ČJ pochybuji. :-)

No a pak je tu ještě (také nedokončená) série od D. Knutha :-) Ono v této oblasti přeci jen asi ještě nebylo řečeno poslední slovo...
26.9.2007 21:36 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: Mizerná knížka, ale dobré cvičení
Ještě doplnění - ty Sedgewickovy knihy jsou ve verzích s C, C++ a Javou. Ty algoritmy se asi moc neliší, nejspíš jde jen o jazyk, ve kterém jsou ukazovány příklady.
26.9.2007 16:57 laco
Rozbalit Rozbalit vše Re: Mizerná knížka, ale dobré cvičení
No, pozdě, já už jsem si ji koupil. Co se tu píše o knize je v podstatě pravda. Ale není to zdaleka jen výsada tohoto vydavatelství.
26.9.2007 21:55 Martin | skóre: 10 | blog: Nádraží Perdido
Rozbalit Rozbalit vše Re: Mizerná knížka, ale dobré cvičení
Pavel Töpfer: Algoritmy a programovací techniky, to je výborná kniha do začátku, která je navíc prakticky zadarmo (nějakých 90 Kč).
29.9.2007 13:52 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Mizerná knížka, ale dobré cvičení
29.9.2007 19:11 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Mizerná knížka, ale dobré cvičení
Tuhle rozhodně nebrat.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
25.10.2007 15:09 dzony
Rozbalit Rozbalit vše Re: Mizerná knížka, ale dobré cvičení
Odpovědět | Sbalit | Link | Blokovat | Admin
Opravdu je to tak spatne? Tedka jak probiha invex tak je sleva 10%(+ dalsich 10 za clenstvi) tak nad ni uvazuji
26.10.2007 13:35 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Mizerná knížka, ale dobré cvičení
Osobně bych si ji nekoupil.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
19.11.2007 08:59 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Mizerná knížka, ale dobré cvičení
Odpovědět | Sbalit | Link | Blokovat | Admin
Inteligentní člověk si koupí nebo stáhne tohle - nevěřím, že dnes existuje něco lepšího. :-) Ale ta knížka je, pravda, docela nová. Bohužel "lepiče v džavě" asi tolik nezaujme... ;-)
Jak moc jsou ábíčkáři inteligentní? ;-)

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.