Skip to content

Latest commit

 

History

History
188 lines (151 loc) · 3.85 KB

naming_numbers.livemd

File metadata and controls

188 lines (151 loc) · 3.85 KB

Naming Numbers

Mix.install([
  {:youtube, github: "brooklinjazz/youtube"},
  {:hidden_cell, github: "brooklinjazz/hidden_cell"},
  {:tested_cell, github: "brooklinjazz/tested_cell"},
  {:utils, path: "#{__DIR__}/../utils"}
])

Navigation

Return Home Report An Issue

Setup

Ensure you type the ea keyboard shortcut to evaluate all Elixir cells before starting. Alternatively you can evaluate the Elixir cells as you read.

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
Loading
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.

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
Loading
flowchart
  Zero --> 0
  One --> 1
  Two --> 2
  Three --> 3
  Four --> 4
  Five --> 5
  Six --> 6
  Seven --> 7
  Eight --> 8
  Nine --> 9
Loading
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

Commit Your Progress

Run the following in your command line from the beta_curriculum folder to track and save your progress in a Git commit.

$ git add .
$ git commit -m "finish naming numbers exercise"

Up Next

Previous Next
Control Flow Rock Paper Scissors