Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- defmodule BinaryStringGroups do
- def count(string) do
- string
- |> split()
- |> reduce()
- end
- defp split(string) do
- String.graphemes(string)
- end
- defp reduce(list) do
- [last: last_char, count: last_count, result: final_result] = Enum.reduce(list, [], fn
- ("1", []) -> [last: "1", count: 1, result: []]
- ("0", []) -> [last: "0", count: 1, result: []]
- ("1", [last: "1", count: count, result: result]) -> [last: "1", count: count + 1, result: result]
- ("1", [last: "0", count: count, result: result]) -> [last: "1", count: 1, result: [{"0", count} | result]]
- ("0", [last: "1", count: count, result: result]) -> [last: "0", count: 1, result: [{"1", count} | result]]
- ("0", [last: "0", count: count, result: result]) -> [last: "0", count: count + 1, result: result]
- end)
- [{last_char, last_count} | final_result]
- end
- end
- out = BinaryStringGroups.count("11010111011")
- |> Enum.max_by(fn ({_char, count}) -> count end)
- IO.inspect out
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement