diff --git a/config.json b/config.json index e89cb8bb..abeca950 100644 --- a/config.json +++ b/config.json @@ -24,6 +24,18 @@ ], "uuid": "0c231a1c-55f7-47b6-8a54-ccae4ab0c65b" }, + { + "core": false, + "difficulty": 2, + "slug": "reverse-string", + "topics": [ + "loops", + "for", + "strings" + ], + "unlocked_by": "leap", + "uuid": "553a6be7-eecb-45dc-9cea-05126c525f1b" + }, { "core": true, "difficulty": 1, diff --git a/exercises/reverse-string/README.md b/exercises/reverse-string/README.md new file mode 100644 index 00000000..d6d75bb9 --- /dev/null +++ b/exercises/reverse-string/README.md @@ -0,0 +1,36 @@ +# Reverse String + +For example: +input: "cool" +output: "looc" + + +## Setup + +Go through the setup instructions for JavaScript to +install the necessary dependencies: + +http://exercism.io/languages/javascript + +## Making the Test Suite Pass + +Execute the tests with: + + jasmine .spec.js + +Replace `` with the name of the current exercise. E.g., to +test the Reverse String exercise: + + jasmine reverse-string.spec.js + +In many test suites all but the first test have been skipped. + +Once you get a test passing, you can unskip the next one by +changing `xit` to `it`. + +## Source + +This is an exercise to introduce users to using Exercism and arrays and strings [https://medium.freecodecamp.org/how-to-reverse-a-string-in-javascript-in-3-different-ways-75e4763c68cb](https://medium.freecodecamp.org/how-to-reverse-a-string-in-javascript-in-3-different-ways-75e4763c68cb) + +## Submitting Incomplete Solutions +It's possible to submit an incomplete solution so you can see how others have completed the exercise. diff --git a/exercises/reverse-string/example.js b/exercises/reverse-string/example.js new file mode 100644 index 00000000..b19b8d8d --- /dev/null +++ b/exercises/reverse-string/example.js @@ -0,0 +1,11 @@ +'use strict'; + +function reverseString(string) { + var revString = ''; + for (var i = string.length - 1; i >= 0; i--) { + revString += string[i]; + } + return revString; +} + +module.exports = reverseString; diff --git a/exercises/reverse-string/reverse-string.spec.js b/exercises/reverse-string/reverse-string.spec.js new file mode 100644 index 00000000..c6d6327c --- /dev/null +++ b/exercises/reverse-string/reverse-string.spec.js @@ -0,0 +1,33 @@ +var reverseString = require('./reverse-string'); + +describe('ReverseString', function () { + it('empty string', function () { + var expected = ''; + var actual = reverseString(''); + expect(actual).toEqual(expected); + }); + + xit('a word', function () { + var expected = 'tobor'; + var actual = reverseString('robot'); + expect(actual).toEqual(expected); + }); + + xit('a capitalized word', function () { + var expected = 'nemaR'; + var actual = reverseString('Ramen'); + expect(actual).toEqual(expected); + }); + + xit('a sentence with punctuation', function () { + var expected = '!yrgnuh ma I'; + var actual = reverseString('I am hungry!'); + expect(actual).toEqual(expected); + }); + + xit('a palindrome', function () { + var expected = 'racecar'; + var actual = reverseString('racecar'); + expect(actual).toEqual(expected); + }); +});