From a4e5615c51b6f426bb013aeaf721a8c6c6d994ec Mon Sep 17 00:00:00 2001 From: Tejas Bubane Date: Tue, 18 Apr 2017 01:04:58 +0530 Subject: [PATCH] Implement the two-fer exercise This is meant to be right after hello-world introducing users to basic programming constructs as well as TDD which will be used in all later exercises. Discussion regarding this is [here](https://github.com/exercism/x-common/issues/548). Closes #757. --- exercises/two-fer/canonical-data.json | 24 +++++++++++++++ exercises/two-fer/description.md | 44 +++++++++++++++++++++++++++ exercises/two-fer/metadata.yml | 4 +++ 3 files changed, 72 insertions(+) create mode 100644 exercises/two-fer/canonical-data.json create mode 100644 exercises/two-fer/description.md create mode 100644 exercises/two-fer/metadata.yml diff --git a/exercises/two-fer/canonical-data.json b/exercises/two-fer/canonical-data.json new file mode 100644 index 0000000000..834efa80ee --- /dev/null +++ b/exercises/two-fer/canonical-data.json @@ -0,0 +1,24 @@ +{ + "exercise": "two-fer", + "version": "1.0.0", + "cases": [ + { + "description": "no name given", + "property": "twoFer", + "input": null, + "expected": "One for you, one for me." + }, + { + "description": "a name given", + "property": "twoFer", + "input": "Alice", + "expected": "One for Alice, one for me." + }, + { + "description": "another name given", + "property": "twoFer", + "input": "Bob", + "expected": "One for Bob, one for me." + } + ] +} diff --git a/exercises/two-fer/description.md b/exercises/two-fer/description.md new file mode 100644 index 0000000000..930c6bdcce --- /dev/null +++ b/exercises/two-fer/description.md @@ -0,0 +1,44 @@ +`Two-fer` or `2-fer` is short for two for one. One for you and one for me. + +This exercise expects you to create a sentence of the form: + +``` +"One for X, one for me." +``` + +When X is a name or "you". + +If the given name is "Alice", the result should be "One for Alice, one for me." +If no name is given, the result should be "One for you, one for me." + + +## Test-Driven Development + +As programmers mature, they eventually want to test their code. + +Here at Exercism we simulate [Test-Driven +Development](http://en.wikipedia.org/wiki/Test-driven_development) (TDD), where +you write your tests before writing any functionality. The simulation comes in +the form of a pre-written test suite, which will signal that you have solved +the problem. + +It will also provide you with a safety net to explore other solutions without +breaking the functionality. + +### A typical TDD workflow on Exercism: + +1. Run the test file and pick one test that's failing. +2. Write some code to fix the test you picked. +3. Re-run the tests to confirm the test is now passing. +4. Repeat from step 1. +5. Submit your solution (`exercism submit /path/to/file`) + +## Instructions + +Submissions are encouraged to be general, within reason. Having said that, it's +also important not to over-engineer a solution. + +It's important to remember that the goal is to make code as expressive and +readable as we can. However, solutions to the hello-world exercise will not be +reviewed by a person, but by rikki- the robot, who will offer an encouraging +word. diff --git a/exercises/two-fer/metadata.yml b/exercises/two-fer/metadata.yml new file mode 100644 index 0000000000..06a51b2f97 --- /dev/null +++ b/exercises/two-fer/metadata.yml @@ -0,0 +1,4 @@ +--- +blurb: 'Create a sentence of the form "One for X, one for me."' +source: "This is an exercise to introduce users to basic programming constructs, just after hello World." +source_url: "https://en.wikipedia.org/wiki/Two-fer"