From 36572e610340fbdd259b30c42cb6dca376ba3e8c Mon Sep 17 00:00:00 2001 From: Charles Kawczynski Date: Sun, 27 Aug 2023 15:06:55 -0700 Subject: [PATCH] Support more chip math --- Project.toml | 2 +- src/chips.jl | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 4948ca76..42a5febe 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "TexasHoldem" uuid = "6cef90fc-eb55-4a2a-97d0-7ecce2b738fe" authors = ["Charles Kawczynski "] -version = "0.4.0" +version = "0.4.1" [deps] Logging = "56ddb016-857b-54e1-b83d-db4d58db5568" diff --git a/src/chips.jl b/src/chips.jl index 2a681da0..51aedd2a 100644 --- a/src/chips.jl +++ b/src/chips.jl @@ -14,10 +14,15 @@ end Base.:(+)(x::Int, y::SimpleRatio) = SimpleRatio(x*y.den + y.num, y.den) Base.:(-)(x::Int, y::SimpleRatio) = SimpleRatio(x*y.den - y.num, y.den) +Base.:(+)(x::SimpleRatio, y::Int) = SimpleRatio(y*x.den + x.num, x.den) +Base.:(-)(x::SimpleRatio, y::Int) = SimpleRatio(y*x.den - x.num, x.den) +Base.:(+)(x::SimpleRatio) = x +Base.:(-)(x::SimpleRatio) = SimpleRatio(-x.num, x.den) Base.:(+)(x::SimpleRatio, y::SimpleRatio) = x.den == y.den ? SimpleRatio(x.num + y.num, x.den) : SimpleRatio(x.num*y.den + x.den*y.num, x.den*y.den) +Base.abs(x::SimpleRatio) = SimpleRatio(Base.abs(x.num), Base.abs(x.den)) Base.:(-)(x::SimpleRatio, y::SimpleRatio) = x.den == y.den ? SimpleRatio(x.num - y.num, x.den) : SimpleRatio(x.num*y.den - x.den*y.num, x.den*y.den) @@ -85,6 +90,11 @@ Base.:(+)(a::Chips, b::Chips) = Chips(a.n+b.n, a.frac+b.frac) Base.:(-)(a::Chips, b::Chips) = Chips(a.n-b.n, a.frac-b.frac) Base.:(+)(a::Chips, b::Int) = Chips(a.n+b, a.frac) Base.:(-)(a::Chips, b::Int) = Chips(a.n-b, a.frac) +Base.:(+)(a::Int, b::Chips) = Chips(a+b.n, b.frac) +Base.:(-)(a::Int, b::Chips) = Chips(a-b.n, -b.frac) +Base.:(+)(a::Chips) = a +Base.:(-)(a::Chips) = Chips(-a.n, -a.frac) +Base.abs(a::Chips) = Chips(abs(a.n), abs(a.frac)) Base.:(==)(x::Chips, y::Chips) = x.n == y.n && x.frac == y.frac Base.:(==)(x::Chips, y::Int) = x.n == y && x.frac == 0