This commit is contained in:
Alexander Heldt
2025-11-08 14:31:07 +01:00
parent 05a0ab003b
commit 74e8c6d6dc
10 changed files with 360 additions and 0 deletions

32
go/src/go.gleam Normal file
View File

@@ -0,0 +1,32 @@
import gleam/result
pub type Player {
Black
White
}
pub type Game {
Game(
white_captured_stones: Int,
black_captured_stones: Int,
player: Player,
error: String,
)
}
pub fn apply_rules(
game: Game,
rule1: fn(Game) -> Result(Game, String),
rule2: fn(Game) -> Game,
rule3: fn(Game) -> Result(Game, String),
rule4: fn(Game) -> Result(Game, String),
) -> Game {
case rule2(game) |> rule1 |> result.try(rule3) |> result.try(rule4) {
Error(err) -> Game(..game, error: err)
Ok(g) ->
case g.player {
Black -> Game(..g, player: White)
White -> Game(..g, player: Black)
}
}
}