Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. defmodule BinaryStringGroups do
  2. def count(string) do
  3. string
  4. |> split()
  5. |> reduce()
  6. end
  7.  
  8. defp split(string) do
  9. String.graphemes(string)
  10. end
  11.  
  12. defp reduce(list) do
  13. [last: last_char, count: last_count, result: final_result] = Enum.reduce(list, [], fn
  14. ("1", []) -> [last: "1", count: 1, result: []]
  15. ("0", []) -> [last: "0", count: 1, result: []]
  16. ("1", [last: "1", count: count, result: result]) -> [last: "1", count: count + 1, result: result]
  17. ("1", [last: "0", count: count, result: result]) -> [last: "1", count: 1, result: [{"0", count} | result]]
  18. ("0", [last: "1", count: count, result: result]) -> [last: "0", count: 1, result: [{"1", count} | result]]
  19. ("0", [last: "0", count: count, result: result]) -> [last: "0", count: count + 1, result: result]
  20. end)
  21.  
  22. [{last_char, last_count} | final_result]
  23. end
  24. end
  25.  
  26. out = BinaryStringGroups.count("11010111011")
  27. |> Enum.max_by(fn ({_char, count}) -> count end)
  28.  
  29. IO.inspect out
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement