# ErikSchierboom's solution

## to Bob in the Nim Track

Published at Sep 06 2020 · 0 comments
Instructions
Test suite
Solution

#### Note:

This exercise has changed since this solution was written.

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.

## Running the tests

To compile and run the tests, just run the following in your exercise directory:

``````\$ nim c -r bob_test.nim
``````

## Submitting Exercises

Note that, when trying to submit an exercise, make sure the solution is in the `\$EXERCISM_WORKSPACE/nim/bob` directory.

You can find your Exercism workspace by running `exercism debug` and looking for the line that starts with `Exercises Directory`.

## Source

Inspired by the 'Deaf Grandma' exercise in Chris Pine's Learn to Program tutorial. http://pine.fm/LearnToProgram/?Chapter=06

## Submitting Incomplete Solutions

It's possible to submit an incomplete solution so you can see how others have completed the exercise.

### bob_test.nim

``````import unittest
import bob

# version 1.6.0

suite "Bob":
test "stating something":
check hey("Tom-ay-to, tom-aaaah-to.") == "Whatever."

test "shouting":
check hey("WATCH OUT!") == "Whoa, chill out!"

test "shouting gibberish":
check hey("FCECDFCAAB") == "Whoa, chill out!"

check hey("Does this cryogenic chamber make me look fat?") == "Sure."

check hey("You are, what, like 15?") == "Sure."

check hey("fffbbcbeab?") == "Sure."

test "talking forcefully":
check hey("Hi there!") == "Whatever."

test "using acronyms in regular speech":
check hey("It's OK if you don't want to go work for NASA.") == "Whatever."

test "forceful question":
check hey("WHAT'S GOING ON?") == "Calm down, I know what I'm doing!"

test "shouting numbers":
check hey("1, 2, 3 GO!") == "Whoa, chill out!"

test "no letters":
check hey("1, 2, 3") == "Whatever."

test "question with no letters":
check hey("4?") == "Sure."

test "shouting with special characters":
check hey("ZOMG THE %^*@#\$(*^ ZOMBIES ARE COMING!!11!!1!") == "Whoa, chill out!"

test "shouting with no exclamation mark":
check hey("I HATE THE DENTIST") == "Whoa, chill out!"

test "statement containing question mark":
check hey("Ending with ? means a question.") == "Whatever."

test "non-letters with question":
check hey(":) ?") == "Sure."

test "prattling on":
check hey("Wait! Hang on. Are you going to be OK?") == "Sure."

test "silence":
check hey("") == "Fine. Be that way!"

test "prolonged silence":
check hey("          ") == "Fine. Be that way!"

test "alternate silence":
check hey("\t\t\t\t\t\t\t\t\t\t") == "Fine. Be that way!"

test "multiple line question":
check hey("\nDoes this cryogenic chamber make me look fat?\nNo.") == "Whatever."

test "starting with whitespace":
check hey("         hmmmmmmm...") == "Whatever."

test "ending with whitespace":
check hey("Okay if like my  spacebar  quite a bit?   ") == "Sure."

test "other whitespace":
check hey("\n\r \t") == "Fine. Be that way!"

test "non-question ending with whitespace":
check hey("This is a statement ending with whitespace      ") == "Whatever."``````
``````import strutils

proc isShouting(sentence: string): bool =
sentence.toUpperAscii == sentence and sentence.contains(Letters)

proc isQuestion(sentence: string): bool =
sentence.strip.endsWith('?')

proc isSilence(sentence: string): bool =
sentence.isEmptyOrWhitespace

proc hey*(sentence: string): string =
if sentence.isSilence:
"Fine. Be that way!"
elif sentence.isShouting and sentence.isQuestion:
"Calm down, I know what I'm doing!"
elif sentence.isShouting:
"Whoa, chill out!"
elif sentence.isQuestion:
"Sure."
else:
"Whatever."``````