defmodule StringsAndBinaries do def ascii_printable?(char_list) do List.ascii_printable?(char_list) end def custom_ascii_printable?(char_list) do # every character in char list must between 32 and 126 Enum.all?(char_list, &(32 <= &1 and &1 <= 126)) end def anagram?(word1, word2) do # An anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once. Enum.sort(String.to_charlist(word1)) == Enum.sort(String.to_charlist(word2)) end def calculate(expression) do # this might be a bit dirty, but it solves the issue. [a, operator, b] = ~w[ #{expression} ] a = String.to_integer(a) b = String.to_integer(b) case operator do "+" -> add(a, b) "-" -> substract(a, b) "*" -> multiply(a, b) "/" -> divide(a, b) end end defp add(a, b), do: a + b defp substract(a, b), do: a - b defp multiply(a, b), do: a * b defp divide(a, b), do: a / b def center(dqs_list) do longest = Enum.max_by(dqs_list, &String.length/1) Enum.map(dqs_list, &print_centered_string(&1, longest)) end defp print_centered_string(dqs, center_string) do offset = (String.length(center_string) - String.length(dqs)) / 2 max_length = round(String.length(dqs) + Float.floor(offset)) dqs_padding = String.pad_leading(dqs, max_length) IO.puts(dqs_padding) end end