Programming Gems::Erlang

Материал из NNLUG Wiki.

Перейти к: навигация, поиск

Erlang

-module (factorial).
-export ([fac/1]).

% Поиск факториала числа
% в данном примере продемонстрирована "хвостовая рекурсия"

fac (N) ->
    fac (N, 1).

fac (0, Acc) ->
    Acc;

fac (N, Acc) ->
    fac (N - 1, Acc * N).

% пример использования

factorial:fac(5).
120
-module (quicksort).
-export ([myqsort/1]).

% Быстрая сортировка

myqsort ([]) ->
    [];

myqsort ([Head | Tail]) ->
    myqsort ([Elements || Elements <- Tail, Elements < Head])
    ++ [Head] ++
    myqsort ([Elements || Elements <- Tail, Elements >= Head]).

% пример использования

quicksort:myqsort([3, 2, 12, 6, 43]).
[2,3,6,12,43]
-module (pythagor).
-export (pythfun/1).

% Функция выдаёт всевозможные варианты троек чисел (A, B, C),
% удовлетворяющих уравнению A^2 + B^2 = C^2,
% при этом ни сами числа, ни их сумма не должны превосходить
% заданного N
% решаем теорему Пифагора :)

pythfun(N) ->
    [{A, B, C} ||
      A <- lists:seq (1, N),
      B <- lists:seq (1, N),
      C <- lists:seq (1, N),
      A + B + C =< N,
      A * A + B * B =:= C * C].

% примеры использования

pythagor:pythfun(16).
[{3,4,5},{4,3,5}]

pythagor:pythfun(30).
[{3,4,5},{4,3,5},{5,12,13},{6,8,10},{8,6,10},{12,5,13}]
Личные инструменты