Skip to content

Latest commit

 

History

History
69 lines (50 loc) · 1.48 KB

007-contando.livemd

File metadata and controls

69 lines (50 loc) · 1.48 KB

7 - Contando Palabras

CONTANDO PALABRAS

Enunciado

Crea un programa que cuente cuantas veces se repite cada palabra y que muestre el recuento final de todas ellas.

  • Los signos de puntuación no forman parte de la palabra.
  • Una palabra es la misma aunque aparezca en mayúsculas y minúsculas.
  • No se pueden utilizar funciones propias del lenguaje que lo resuelvan automáticamente.

Solución

defmodule WordCounter do
  def count(string) do
    string
    |> String.downcase()
    |> String.replace([".", ";", ",", "?", "¿", "!", "¡", ":", "'", "\""], "")
    |> String.split()
    |> Enum.reduce(%{}, fn word, acc ->
      count = Map.get(acc, word, 0) + 1
      Map.put(acc, word, count)
    end)
  end
end
{:module, WordCounter, <<70, 79, 82, 49, 0, 0, 8, ...>>, {:count, 1}}
defmodule Solution do
  def run() do
    WordCounter.count("Hola, mundo hola mundo !! hola hola !!! mundo ;; mundo?")
  end
end
{:module, Solution, <<70, 79, 82, 49, 0, 0, 6, ...>>, {:run, 0}}
Solution.run()
%{"hola" => 4, "mundo" => 4}