Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Naming Numbers

exercises/naming_numbers.livemd

Naming Numbers

Mix.install([
  {:jason, "~> 1.4"},
  {:kino, "~> 0.9", override: true},
  {:youtube, github: "brooklinjazz/youtube"},
  {:hidden_cell, github: "brooklinjazz/hidden_cell"}
])

Navigation

Home Report An Issue Control FlowRock Paper Scissors

Naming Numbers

In the Elixir cell below, create a function naming_numbers which accepts a single digit integer and returns its string representation. So 1 would become "one".

flowchart
   0 --> zero
   1 --> one
   2 --> two
   3 --> three
   4 --> four
   5 --> five
   6 --> six
   7 --> seven
   8 --> eight
   9 --> nine
naming_numbers.(1)
"one"

Solution Example

  naming_numbers = fn integer ->
    case integer do
      0 -> "zero"
      1 -> "one"
      2 -> "two"
      3 -> "three"
      4 -> "four"
      5 -> "five"
      6 -> "six"
      7 -> "seven"
      8 -> "eight"
      9 -> "nine"
    end
  end

Enter your solution below.

naming_numbers = fn number -> 
  case number do
    0 -> "zero"
    1 -> "one"
    2 -> "two"
    3 -> "three"
    4 -> "four"
    5 -> "five"
    6 -> "six"
    7 -> "seven"
    8 -> "eight"
    9 -> "nine"
    10 -> "ten"
  end
end

naming_numbers.(2)

Numbering Names

In the Elixir cell below, create a function numbering_names which accepts a number’s name and returns its string representation. So "one" would become 1.

In addition to accepting lowercase name, also accept uppercase names so "One" would become 1.

flowchart
  zero --> 0
  one --> 1
  two --> 2
  three --> 3
  four --> 4
  five --> 5
  six --> 6
  seven --> 7
  eight --> 8
  nine --> 9
flowchart
  Zero --> 0
  One --> 1
  Two --> 2
  Three --> 3
  Four --> 4
  Five --> 5
  Six --> 6
  Seven --> 7
  Eight --> 8
  Nine --> 9

Solution Example

We can brute force the solutione using case.

  numbering_names = fn int_str ->
    case int_str do
      "zero" -> 0
      "one" -> 1
      "two" -> 2
      "three" -> 3
      "four" -> 4
      "five" -> 5
      "six" -> 6
      "seven" -> 7
      "eight" -> 8
      "nine" -> 9
      "Zero" -> 0
      "One" -> 1
      "Two" -> 2
      "Three" -> 3
      "Four" -> 4
      "Five" -> 5
      "Six" -> 6
      "Seven" -> 7
      "Eight" -> 8
      "Nine" -> 9
    end
  end

Or use String.downcase/2 to make the solutione more concise. This has the added benefit of handling mixed case such as "ZeRO".

  numbering_names = fn int_str ->
    case String.downcase(int_str) do
      "zero" -> 0
      "one" -> 1
      "two" -> 2
      "three" -> 3
      "four" -> 4
      "five" -> 5
      "six" -> 6
      "seven" -> 7
      "eight" -> 8
      "nine" -> 9
    end
  end
naming_numbers = fn string -> 
  lower_case = String.downcase(string)
  
  case lower_case do
    "zero" -> 0
    "one" -> 1
    "two" -> 2
    "three" -> 3
    "four" -> 4
    "five" -> 5
    "six" -> 6 
    "seven" -> 7
    "eight" -> 8
    "nine" -> 9
    "ten" -> 10
  end
end

naming_numbers.("Two")

Commit Your Progress

DockYard Academy now recommends you use the latest Release rather than forking or cloning our repository.

Run git status to ensure there are no undesirable changes. Then run the following in your command line from the curriculum folder to commit your progress.

$ git add .
$ git commit -m "finish Naming Numbers exercise"
$ git push

We’re proud to offer our open-source curriculum free of charge for anyone to learn from at their own pace.

We also offer a paid course where you can learn from an instructor alongside a cohort of your peers. We will accept applications for the June-August 2023 cohort soon.

Navigation

Home Report An Issue Control FlowRock Paper Scissors