# Documentation
## Bitboard
```elixir
use Bitwise
import Bitboard.Bit
board = Bitboard.standard()
IO.puts(board)
```
```elixir
{:ok, board} = board |> Bitboard.put(~b"f5", :black)
IO.puts(board)
```
```elixir
board |> Bitboard.moves_for(:white) |> Bitboard.spread() |> Enum.map(&to_str/1)
```
```elixir
{:ok, board} = board |> Bitboard.put(~b"F4", :white)
{:ok, board} = board |> Bitboard.put(~b"E3", :black)
IO.puts(board)
```
## GameState
```elixir
play_seq = ~B(D3C5D6E3B4C3D2C4F4)
```
```elixir
alias Acaster.GameState
alias Acaster.GameState.NotStartedState
alias Acaster.Game.TimeControl
alias Acaster.Game.NoClock
gs = %NotStartedState{
board: Bitboard.standard(),
tc: %TimeControl{black: %NoClock{}, white: %NoClock{}},
first: :black
}
IO.puts(gs)
play_seq
|> Enum.scan(gs |> GameState.start(), &GameState.emplace(&2, &1))
|> Enum.each(&IO.puts/1)
```
## Glicko
```elixir
%Glicko.Match{o: Glicko.simple(1400.0, 30.0), r: :win}
```
```elixir
r = Glicko.simple(1500.0, 200.0)
r =
r
|> Glicko.update([
%Glicko.Match{o: Glicko.simple(1400.0, 30.0), r: :win},
%Glicko.Match{o: Glicko.simple(1550.0, 100.0), r: :loss},
%Glicko.Match{o: Glicko.simple(1700.0, 300.0), r: :loss}
])
IO.puts(Glicko.rating(r))
IO.puts(Glicko.stdev(r))
```
```elixir
1..10 |> Enum.reduce(MapSet.new(), &MapSet.put(&2, &1))
```
```elixir
alias Acaster.MatcherServer
{:ok, ms} = MatcherServer.start_link([])
```
```elixir
ms |> MatcherServer.register(UUID.uuid4())
ms |> MatcherServer.list()
```
```elixir
ms
|> MatcherServer.unregister(%Acaster.MatcherServer.Ticket{
id: "d2e7c87c-c639-4a30-9db2-a5892c887386",
player: "5b0db865-e2d9-40c9-b832-7c90fd5d5fa8"
})
```
```elixir
ms |> MatcherServer.list()
```
```elixir
ms |> MatcherServer.run_wave()
```
```elixir
ms |> MatcherServer.list()
```