Bob is a lackadaisical teenager. In conversation, his responses are very limited.
Bob answers 'Sure.' if you ask him a question, such as "How are you?".
He answers 'Whoa, chill out!' if you YELL AT HIM (in all capitals).
He answers 'Calm down, I know what I'm doing!' if you yell a question at him.
He says 'Fine. Be that way!' if you address him without actually saying anything.
He answers 'Whatever.' to anything else.
Bob's conversational partner is a purist when it comes to written communication and always follows normal rules regarding sentence punctuation in English.
Inspired by the 'Deaf Grandma' exercise in Chris Pine's Learn to Program tutorial. http://pine.fm/LearnToProgram/?Chapter=06
This exercise has been tested on Julia versions >=1.0.
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
In [ ]:
# submit
function bob(stimulus)
end
In [ ]:
# canonical data version: 1.4.0
using Test
# include("bob.jl")
questions = (
"Does this cryogenic chamber make me look fat?",
"You are, what, like 15?",
"fffbbcbeab?",
"4?", ":) ?",
"Wait! Hang on. Are you going to be OK?",
"Okay if like my spacebar quite a bit? ",
)
yells = (
"WATCH OUT!",
"FCECDFCAAB",
"1, 2, 3 GO!",
"ZOMG THE %^*@#\$(*^ ZOMBIES ARE COMING!!11!!1!",
"I HATE YOU",
)
silences = (
"",
" ",
"\t\t\t\t\t\t\t\t\t\t",
"\n\r \t",
)
miscs = (
"Tom-ay-to, tom-aaaah-to.",
"Let's go make out behind the gym!",
"It's OK if you don't want to go to the DMV.",
"1, 2, 3",
"Ending with ? means a question.",
"\nDoes this cryogenic chamber make me look fat?\nno",
" hmmmmmmm...",
"This is a statement ending with whitespace ",
)
response = Dict(
:question => "Sure.",
:yelling => "Whoa, chill out!",
:silence => "Fine. Be that way!",
:misc => "Whatever."
)
@testset "questions" begin
@testset "$question" for question in questions
@test bob(question) == response[:question]
end
end
@testset "yelling" begin
@testset "$yell" for yell in yells
@test bob(yell) == response[:yelling]
end
end
@testset "silence" begin
@testset "$silence" for silence in silences
@test bob(silence) == response[:silence]
end
end
@testset "misc" begin
@testset "$misc" for misc in miscs
@test bob(misc) == response[:misc]
end
end
@testset "forceful question" begin
@test bob("WHAT THE HELL WERE YOU THINKING?") == "Calm down, I know what I'm doing!"
end
In [ ]:
# using Pkg; Pkg.add("Exercism")
# using Exercism
# Exercism.create_submission("bob")