aboutsummaryrefslogtreecommitdiff
path: root/aoc-2020-gleam/src/util/hex.gleam
blob: 21db192c5ab4ad2f29ee6b5544f924f3f5cd94f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
pub opaque type Hex {
  Hex(q: Int, r: Int, s: Int)
}

pub const zero = Hex(q: 0, r: 0, s: 0)

pub const e = Hex(q: 1, r: 0, s: -1)

pub const se = Hex(q: 0, r: 1, s: -1)

pub const sw = Hex(q: -1, r: 1, s: 0)

pub const w = Hex(q: -1, r: 0, s: 1)

pub const nw = Hex(q: 0, r: -1, s: 1)

pub const ne = Hex(q: 1, r: -1, s: 0)

pub fn add(a: Hex, b: Hex) -> Hex {
  Hex(q: a.q + b.q, r: a.r + b.r, s: a.s + b.s)
}