Sha256: e00f942297ef536d490b3dfa2d5928555e1752cedc7595b73782cab8cde1a19b

Contents?: true

Size: 706 Bytes

Versions: 69

Compression:

Stored size: 706 Bytes

Contents

defmodule NucleotideCount do
  @nucleotides [?A, ?C, ?G, ?T]

  @doc """
  Counts individual nucleotides in a NucleotideCount strand.

  ## Examples

  iex> NucleotideCount.count('AATAA', ?A)
  4

  iex> NucleotideCount.count('AATAA', ?T)
  1
  """

  def count(strand, nucleotide) when nucleotide in @nucleotides do
    Enum.count(strand, &(&1 == nucleotide))
  end

  def count(_strand, _nucleotide), do: raise(ArgumentError)

  @doc """
  Returns a summary of counts by nucleotide.

  ## Examples

  iex> NucleotideCount.nucleotide_counts('AATAA')
  %{?A => 4, ?T => 1, ?C => 0, ?G => 0}
  """

  def histogram(strand) do
    Enum.map(@nucleotides, &{&1, count(strand, &1)}) |> Enum.into(%{})
  end
end

Version data entries

69 entries across 69 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.179 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.178 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.177 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.176 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.175 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.174 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.173 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.172 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.171 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.170 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.169 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.167 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.166 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.165 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.164 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.163 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.162 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.161 tracks/elixir/exercises/nucleotide-count/example.exs
trackler-2.2.1.160 tracks/elixir/exercises/nucleotide-count/example.exs