Skip to content

Commit

Permalink
Add bob (#186)
Browse files Browse the repository at this point in the history
* Add bob

* EOL

Co-authored-by: Victor Goff <[email protected]>

---------

Co-authored-by: Victor Goff <[email protected]>
  • Loading branch information
BNAndras and kotp authored Jan 6, 2025
1 parent 1b958f9 commit f7e32fa
Show file tree
Hide file tree
Showing 9 changed files with 644 additions and 0 deletions.
8 changes: 8 additions & 0 deletions config.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,14 @@
"prerequisites": [],
"difficulty": 3
},
{
"slug": "bob",
"name": "Bob",
"uuid": "362467ef-8ed3-4609-ae07-7395e5512f32",
"practices": [],
"prerequisites": [],
"difficulty": 2
},
{
"slug": "collatz-conjecture",
"name": "Collatz Conjecture",
Expand Down
19 changes: 19 additions & 0 deletions exercises/practice/bob/.docs/instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Instructions

Your task is to determine what Bob will reply to someone when they say something to him or ask him a question.

Bob only ever answers one of five things:

- **"Sure."**
This is his response if you ask him a question, such as "How are you?"
The convention used for questions is that it ends with a question mark.
- **"Whoa, chill out!"**
This is his answer if you YELL AT HIM.
The convention used for yelling is ALL CAPITAL LETTERS.
- **"Calm down, I know what I'm doing!"**
This is what he says if you yell a question at him.
- **"Fine. Be that way!"**
This is how he responds to silence.
The convention used for silence is nothing, or various combinations of whitespace characters.
- **"Whatever."**
This is what he answers to anything else.
10 changes: 10 additions & 0 deletions exercises/practice/bob/.docs/introduction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Introduction

Bob is a [lackadaisical][] teenager.
He likes to think that he's very cool.
And he definitely doesn't get excited about things.
That wouldn't be cool.

When people talk to him, his responses are pretty limited.

[lackadaisical]: https://www.collinsdictionary.com/dictionary/english/lackadaisical
19 changes: 19 additions & 0 deletions exercises/practice/bob/.meta/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"authors": [
"BNAndras"
],
"files": {
"solution": [
"bob.red"
],
"test": [
"bob-test.red"
],
"example": [
".meta/example.red"
]
},
"blurb": "Bob is a lackadaisical teenager. In conversation, his responses are very limited.",
"source": "Inspired by the 'Deaf Grandma' exercise in Chris Pine's Learn to Program tutorial.",
"source_url": "https://pine.fm/LearnToProgram/?Chapter=06"
}
52 changes: 52 additions & 0 deletions exercises/practice/bob/.meta/example.red
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
Red [
description: {"Bob" exercise solution for exercism platform}
author: "BNAndras"
]

response: function [
heyBob
] [
case [
silent? heyBob [ "Fine. Be that way!" ]
loud-question? heyBob [ "Calm down, I know what I'm doing!" ]
loud-statement? heyBob [ "Whoa, chill out!" ]
question? heyBob [ "Sure." ]
true [ "Whatever." ]
]
]

silent?: function [
message
] [
"" == trim message
]

loud-question?: function [
message
] [
and~ loud? message
question? message
]

loud-statement?: function [
message
] [
loud? message
]

question?: function [
message
] [
#"?" == last trim message
]

loud?: function [
message
] [
and~ has-letter? message
message == uppercase copy message
]

has-letter?: func [phrase][
not none? find phrase charset [#"a" - #"z" #"A" - #"Z"]
]
85 changes: 85 additions & 0 deletions exercises/practice/bob/.meta/tests.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# This is an auto-generated file.
#
# Regenerating this file via `configlet sync` will:
# - Recreate every `description` key/value pair
# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications
# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion)
# - Preserve any other key/value pair
#
# As user-added comments (using the # character) will be removed when this file
# is regenerated, comments can be added via a `comment` key.

[e162fead-606f-437a-a166-d051915cea8e]
description = "stating something"

[73a966dc-8017-47d6-bb32-cf07d1a5fcd9]
description = "shouting"

[d6c98afd-df35-4806-b55e-2c457c3ab748]
description = "shouting gibberish"

[8a2e771d-d6f1-4e3f-b6c6-b41495556e37]
description = "asking a question"

[81080c62-4e4d-4066-b30a-48d8d76920d9]
description = "asking a numeric question"

[2a02716d-685b-4e2e-a804-2adaf281c01e]
description = "asking gibberish"

[c02f9179-ab16-4aa7-a8dc-940145c385f7]
description = "talking forcefully"

[153c0e25-9bb5-4ec5-966e-598463658bcd]
description = "using acronyms in regular speech"

[a5193c61-4a92-4f68-93e2-f554eb385ec6]
description = "forceful question"

[a20e0c54-2224-4dde-8b10-bd2cdd4f61bc]
description = "shouting numbers"

[f7bc4b92-bdff-421e-a238-ae97f230ccac]
description = "no letters"

[bb0011c5-cd52-4a5b-8bfb-a87b6283b0e2]
description = "question with no letters"

[496143c8-1c31-4c01-8a08-88427af85c66]
description = "shouting with special characters"

[e6793c1c-43bd-4b8d-bc11-499aea73925f]
description = "shouting with no exclamation mark"

[aa8097cc-c548-4951-8856-14a404dd236a]
description = "statement containing question mark"

[9bfc677d-ea3a-45f2-be44-35bc8fa3753e]
description = "non-letters with question"

[8608c508-f7de-4b17-985b-811878b3cf45]
description = "prattling on"

[bc39f7c6-f543-41be-9a43-fd1c2f753fc0]
description = "silence"

[d6c47565-372b-4b09-b1dd-c40552b8378b]
description = "prolonged silence"

[4428f28d-4100-4d85-a902-e5a78cb0ecd3]
description = "alternate silence"

[66953780-165b-4e7e-8ce3-4bcb80b6385a]
description = "multiple line question"

[5371ef75-d9ea-4103-bcfa-2da973ddec1b]
description = "starting with whitespace"

[05b304d6-f83b-46e7-81e0-4cd3ca647900]
description = "ending with whitespace"

[72bd5ad3-9b2f-4931-a988-dce1f5771de2]
description = "other whitespace"

[12983553-8601-46a8-92fa-fcaa3bc4a2a0]
description = "non-question ending with whitespace"
Loading

0 comments on commit f7e32fa

Please sign in to comment.