defmodule Grains.Type do @nr_types 2 @nr_colors 255 @nr_saturations 50 def select_type(uuid) do Integer.mod(parse(uuid), @nr_types) end # returns a tuple for hue / saturation def select_color(uuid) do i = parse(uuid) h = Integer.mod(i, @nr_colors); s = 50 + Integer.mod(i, @nr_saturations); {h, s} end def parse(uuid) do {i, _} = Integer.parse(uuid, 16) i end end