Já temos o mestre de cerimônias, que fizemos no artigo anterior, agora precisamos de um convidado para escolher qual porta abrir.
Vamos começar com um cabeçalho bastante simples:
-module(mh_guest).
-export([choose/0, change/2]).
-include("mh.hrl").
-spec choose() -> door().
-spec change(Original :: door(), Alternative :: door()) -> door().
A função para escolher a porta:
choose() -> lists:nth(random:uniform(3), [a, b, c]).
E a função para mudar de porta:
-ifdef(change).
change(_Original, Alternative) -> Alternative.
-else.
change(Original, _Alternative) -> Original.
-endif.
Com isso, a função change/2
sempre retornará a porta originalmente escolhida, a menos que o arquivo mh_guest.erl
seja compilado com a
flag -Dchange
.
E já temos como simular o convidado!
No último artigo colocaremos tudo junto, executando diversas vezes para calcular quantas vezes o convidado ganha o carro.
Erlang | Functional | Logical