-module(tictactoe). -export([winner/1]). is_full(Board) -> lists:all(fun (A) -> A == x orelse A == o end, tuple_to_list(Board)). winner({A, A, A, _, _, _, _, _, _}) -> A; winner({_, _, _, A, A, A, _, _, _}) -> A; winner({_, _, _, _, _, _, A, A, A}) -> A; winner({A, _, _, A, _, _, A, _, _}) -> A; winner({_, A, _, _, A, _, _, A, _}) -> A; winner({_, _, A, _, _, A, _, _, A}) -> A; winner({A, _, _, _, A, _, _, _, A}) -> A; winner({_, _, A, _, A, _, A, _, _}) -> A; winner(Board) -> case is_full(Board) of true -> cat; false -> no_winner end.