-
Notifications
You must be signed in to change notification settings - Fork 1
/
rps.erl
38 lines (32 loc) · 975 Bytes
/
rps.erl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
-module(rps).
-export([play/1
]).
-define(MOVES, [rock, paper, scissors]).
computer_play() ->
lists:nth(random:uniform(length(?MOVES)), ?MOVES).
play(Move) ->
ComputerMove = computer_play(),
play(ComputerMove, Move).
play(ComputerMove, Move) ->
case {ComputerMove, Move} of
{rock, rock} ->
{[{computer, rock}, {player, rock}], tie};
{rock, paper} ->
{[{computer, rock}, {player, paper}], player};
{rock, scissor} ->
{[{computer, rock}, {player, scissor}], computer};
{paper, rock} ->
{[{rock, paper}, {player, rock}], computer};
{paper, paper} ->
{[{rock, paper}, {player, paper}], tie};
{paper, scissor} ->
{[{rock, paper}, {player, scissor}], player};
{scissors, rock} ->
{[{rock, scissors}, {player, rock}], player};
{scissors, paper} ->
{[{rock, scissors}, {player, paper}], computer};
{scissors, scissor} ->
{[{rock, scissors}, {player, scissor}], tie};
_ ->
dontcheat
end.