Sha256: 69145574c747b97ccd10bed4d2fb92dc7de32de6822d312fe9e20d4f46347e28
Contents?: true
Size: 1.19 KB
Versions: 327
Compression:
Stored size: 1.19 KB
Contents
defmodule Series do @spec digits(String.t) :: [non_neg_integer] defp digits("") do [] end defp digits(number_string) do String.split(number_string, "", trim: true) |> Enum.reduce([], fn(char, acc) -> [String.to_integer(char)|acc] end) |> Enum.reverse end @spec slices(String.t, non_neg_integer) :: [list(non_neg_integer)] defp slices(number_string, size) do digits = digits(number_string) chunk(digits, size, 1) end @doc """ Finds the largest product of a given number of consecutive numbers in a given string of numbers. """ @spec largest_product(String.t, non_neg_integer) :: non_neg_integer def largest_product(_, 0) do 1 end def largest_product(number_string, size) do unless Enum.member?(Range.new(0, String.length(number_string)), size) do raise ArgumentError end slices = slices(number_string, size) Enum.map(slices, &Enum.reduce(&1, fn(x, acc) -> x * acc end)) |> Enum.max end # Handle Enum.chunks -> Enum.chunk renaming. if not { :chunk, 3 } in Enum.__info__(:functions) do defp chunk(coll, n, step), do: Enum.chunks(coll, n, step) else defp chunk(coll, n, step), do: Enum.chunk(coll, n, step) end end
Version data entries
327 entries across 327 versions & 1 rubygems