Skip to content

Instantly share code, notes, and snippets.

@pol
Created September 23, 2014 17:57
Show Gist options
  • Select an option

  • Save pol/a0adc68dcd7112ab7f8b to your computer and use it in GitHub Desktop.

Select an option

Save pol/a0adc68dcd7112ab7f8b to your computer and use it in GitHub Desktop.
Exercise.io Elixir Exercirse

Bob

Bob is a lackadaisical teenager. In conversation, his responses are very limited.

Bob answers 'Sure.' if you ask him a question.

He answers 'Whoa, chill out!' if you yell at him.

He says 'Fine. Be that way!' if you address him without actually saying anything.

He answers 'Whatever.' to anything else.

Instructions

Run the test file, and fix each of the errors in turn. When you get the first test to pass, go to the first pending or skipped test, and make that pass as well. When all of the tests are passing, feel free to submit.

Remember that passing code is just the first step. The goal is to work towards a solution that is as readable and expressive as you can make it.

Please make your solution as general as possible. Good code doesn't just pass the test suite, it works with any input that fits the specification.

Have fun!

Source

Inspired by the 'Deaf Grandma' exercise in Chris Pine's Learn to Program tutorial. view source

defmodule Teenager do
def hey(input) do
case input do
" " ->
"Fine. Be that way!"
_ when "!" in input ->
"Woah, chill out!"
_ when "?" in input ->
"Sure."
_ when not is_string(input) ->
"Whatever."
_ -> "Whatever."
end
end
end
if System.get_env("EXERCISM_TEST_EXAMPLES") do
Code.load_file("example.exs")
else
Code.load_file("bob.exs")
end
ExUnit.start
defmodule TeenagerTest do
use ExUnit.Case, async: true
test "stating something" do
assert Teenager.hey("Tom-ay-to, tom-aaaah-to.") == "Whatever."
end
test "shouting" do
assert Teenager.hey("WATCH OUT!") == "Woah, chill out!"
end
test "asking a question" do
assert Teenager.hey("Does this cryogenic chamber make me look fat?") == "Sure."
end
test "talking forcefully" do
assert Teenager.hey("Let's go make out behind the gym!") == "Whatever."
end
test "talking in capitals" do
assert Teenager.hey("This Isn't Shouting!") == "Whatever."
end
test "shouting numbers" do
assert Teenager.hey("1, 2, 3 GO!") == "Woah, chill out!"
end
test "shouting with special characters" do
assert Teenager.hey("ZOMG THE %^*@#$(*^ ZOMBIES ARE COMING!!11!!1!") == "Woah, chill out!"
end
test "shouting with no exclamation mark" do
assert Teenager.hey("I HATE YOU") == "Woah, chill out!"
end
test "statement containing question mark" do
assert Teenager.hey("Ending with ? means a question.") == "Whatever."
end
test "silence" do
assert Teenager.hey("") == "Fine. Be that way!"
end
test "prolonged silence" do
assert Teenager.hey(" ") == "Fine. Be that way!"
end
test "only numbers" do
assert Teenager.hey("1, 2, 3") == "Whatever."
end
test "question with numbers" do
assert Teenager.hey("4?") == "Sure."
end
test "shouting in Russian" do
# Hopefully this is Russian for "get out"
assert Teenager.hey("УХОДИТЬ") == "Woah, chill out!"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment