Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 2 KB
% http://prog.berzsenyi.hu:8080/prog/View/szakkor/bdg/0910/29ora
% A 2010.06.01.-i BDG prog.szakkörön elhangzott Erlang példafüggvények gyűjteménye.
% Írta: Fehér Gábor <feherga@gmail.com>
-module(hello).
-export([avg/2, max/2]).
-export([fibo/1, fibo2/1]).
% A segédfüggvényeket is kiexportáljuk, hogy lehessen őket a shellből tesztelni.
-export([negyzetek/1, kisebbek/2, nemkisebbek/2, qsort/1]).
-export([kisebbek2/2, nemkisebbek2/2, negyzetek2/1, qsort2/1]).
% > A = 42.
% > B = 5.
% > C = A+B.
% > A = 6. ERROR
% > f().
% > S = "Hello, ".
% > R = "world! ".
% > Q = S++R.
avg(A, B) ->
Sum = A+B,
Sum / 2.
max(A, B) when A > B ->
A;
max(_, B) ->
B.
fibo(N) when N =:= 0 ->
0;
fibo(N) when N =:= 1 ->
1;
fibo(N) when N > 1 ->
fibo(N-1)+fibo(N-2).
% a = 0; b = 1;
% while (n > 1) {
% c = a+b;
% a = b; b = c;
% n = n - 1;
% }
% output: a
fibo2(N) ->
A = 0, B = 1,
fibo3(N, A, B).
fibo3(N, _, B) when N =:= 1 ->
B;
fibo3(N, A, B) ->
C = A+B,
A2 = B, B2 = C,
fibo3(N-1, A2, B2).
% > L = [42, 3.14, "hello", -1].
% > hd(L).
% > tl(L).
% > hd(tl(tl(L))).
% > [H|T] = L.
% > H.
% > T.
% > H2 = 42.
% > T2 = [43, 44, 45].
% > [H2|T2].
negyzetek([]) ->
[];
negyzetek(L) ->
[H1|T1] = L,
H2 = H1*H1,
T2 = negyzetek(T1),
[H2|T2].
% Második klóz egyszerűbben:
%negyzetek([H|T]) ->
% [H*H|negyzet(T)].
kisebbek([], _) ->
[];
kisebbek([B|L], A) when B < A ->
Tail = kisebbek(L, A),
[B|Tail];
% ez a klóz rövidebben:
%kisebbek([B|L], A) when B < A ->
% [B|kisebbek(L, A)];
kisebbek([_B|L], A) ->
kisebbek(L, A).
nemkisebbek([], _) ->
[];
nemkisebbek([B|L], A) when B >= A ->
Tail = nemkisebbek(L, A),
[B|Tail];
% ez a klóz rövidebben:
%kisebbek([B|L], A) when B >= A ->
% [B|nemkisebbek(L, A)];
nemkisebbek([_B|L], A) ->
nemkisebbek(L, A).
qsort([]) ->
[];
qsort([A|L]) ->
L1 = kisebbek(L, A),
L2 = nemkisebbek(L, A),
qsort(L1)++[A]++qsort(L2).
% -------------------
kisebbek2(L, A) ->
F = fun (X) -> X < A end,
lists:filter(F, L).
nemkisebbek2(L, A) ->
F = fun (X) -> X >= A end,
lists:filter(F, L).
negyzetek2(L) ->
F = fun (X) -> X*X end,
lists:map(F, L).
qsort2([]) ->
[];
qsort2([A|L]) ->
L1 = lists:filter(fun (X) -> X < A end, L),
L2 = lists:filter(fun (X) -> X >= A end, L),
qsort2(L1)++[A]++qsort2(L2).