Skip to content

Instantly share code, notes, and snippets.

@glesica
Last active August 29, 2015 13:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save glesica/9945196 to your computer and use it in GitHub Desktop.
Save glesica/9945196 to your computer and use it in GitHub Desktop.
type Attr
vals
data
end
function cart_prod(sets...)
result_size = length(sets)
result_elems = reduce(*, 1, map(length, sets))
result = zeros(result_elems, result_size)
scale_factor = result_elems
for j = 1:result_size
set = sets[j]
set_elems = length(set)
scale_factor = div(scale_factor, set_elems)
for i = 1:result_elems
pos = div(i, scale_factor) % set_elems + 1 |> int
result[i, j] = set[pos]
end
end
return result
end
function cart_prod(attrs::Attr...)
vals_list = [a.vals for a = attrs]
return cart_prod(vals_list...)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment