From 252d29d5962ffc57780b3e5233fb4c9085a467e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20B=20Nagy?= <20251272+BNAndras@users.noreply.github.com> Date: Fri, 5 Jan 2024 23:29:55 -0800 Subject: [PATCH] Add reverse-string exercise --- config.json | 8 ++++++ .../reverse-string/.docs/instructions.md | 7 +++++ .../practice/reverse-string/.meta/config.json | 19 +++++++++++++ .../reverse-string/.meta/example.coffee | 5 ++++ .../practice/reverse-string/.meta/tests.toml | 28 +++++++++++++++++++ .../reverse-string/reverse-string.coffee | 4 +++ .../reverse-string/reverse-string.spec.coffee | 26 +++++++++++++++++ 7 files changed, 97 insertions(+) create mode 100644 exercises/practice/reverse-string/.docs/instructions.md create mode 100644 exercises/practice/reverse-string/.meta/config.json create mode 100644 exercises/practice/reverse-string/.meta/example.coffee create mode 100644 exercises/practice/reverse-string/.meta/tests.toml create mode 100644 exercises/practice/reverse-string/reverse-string.coffee create mode 100644 exercises/practice/reverse-string/reverse-string.spec.coffee diff --git a/config.json b/config.json index 6f1214a..77cb95a 100644 --- a/config.json +++ b/config.json @@ -191,6 +191,14 @@ "math" ] }, + { + "slug": "reverse-string", + "name": "Reverse String", + "uuid": "1b4c8b0f-a7cc-4db1-a0ad-485dc2b320d7", + "practices": [], + "prerequisites": [], + "difficulty": 2 + }, { "slug": "square-root", "name": "Square Root", diff --git a/exercises/practice/reverse-string/.docs/instructions.md b/exercises/practice/reverse-string/.docs/instructions.md new file mode 100644 index 0000000..039ee33 --- /dev/null +++ b/exercises/practice/reverse-string/.docs/instructions.md @@ -0,0 +1,7 @@ +# Instructions + +Reverse a string + +For example: +input: "cool" +output: "looc" diff --git a/exercises/practice/reverse-string/.meta/config.json b/exercises/practice/reverse-string/.meta/config.json new file mode 100644 index 0000000..61a6e4f --- /dev/null +++ b/exercises/practice/reverse-string/.meta/config.json @@ -0,0 +1,19 @@ +{ + "authors": [ + "BNAndras" + ], + "files": { + "solution": [ + "reverse-string.coffee" + ], + "test": [ + "reverse-string.spec.coffee" + ], + "example": [ + ".meta/example.coffee" + ] + }, + "blurb": "Reverse a string.", + "source": "Introductory challenge to reverse an input string", + "source_url": "https://medium.freecodecamp.org/how-to-reverse-a-string-in-javascript-in-3-different-ways-75e4763c68cb" +} diff --git a/exercises/practice/reverse-string/.meta/example.coffee b/exercises/practice/reverse-string/.meta/example.coffee new file mode 100644 index 0000000..1017f38 --- /dev/null +++ b/exercises/practice/reverse-string/.meta/example.coffee @@ -0,0 +1,5 @@ +class ReverseString + @reverse: (str) -> + str.split("").reverse().join "" + +module.exports = ReverseString diff --git a/exercises/practice/reverse-string/.meta/tests.toml b/exercises/practice/reverse-string/.meta/tests.toml new file mode 100644 index 0000000..0b04c4c --- /dev/null +++ b/exercises/practice/reverse-string/.meta/tests.toml @@ -0,0 +1,28 @@ +# 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. + +[c3b7d806-dced-49ee-8543-933fd1719b1c] +description = "an empty string" + +[01ebf55b-bebb-414e-9dec-06f7bb0bee3c] +description = "a word" + +[0f7c07e4-efd1-4aaa-a07a-90b49ce0b746] +description = "a capitalized word" + +[71854b9c-f200-4469-9f5c-1e8e5eff5614] +description = "a sentence with punctuation" + +[1f8ed2f3-56f3-459b-8f3e-6d8d654a1f6c] +description = "a palindrome" + +[b9e7dec1-c6df-40bd-9fa3-cd7ded010c4c] +description = "an even-sized word" diff --git a/exercises/practice/reverse-string/reverse-string.coffee b/exercises/practice/reverse-string/reverse-string.coffee new file mode 100644 index 0000000..190f2de --- /dev/null +++ b/exercises/practice/reverse-string/reverse-string.coffee @@ -0,0 +1,4 @@ +class ReverseString + @reverse: (str) -> + +module.exports = ReverseString diff --git a/exercises/practice/reverse-string/reverse-string.spec.coffee b/exercises/practice/reverse-string/reverse-string.spec.coffee new file mode 100644 index 0000000..e77fbcc --- /dev/null +++ b/exercises/practice/reverse-string/reverse-string.spec.coffee @@ -0,0 +1,26 @@ +ReverseString = require './reverse-string' + +describe 'ReverseString', -> + it 'An empty string', -> + reversed = ReverseString.reverse("") + expect(reversed).toEqual("") + + xit 'A word', -> + reversed = ReverseString.reverse("robot") + expect(reversed).toEqual("tobor") + + xit 'A capitalized word', -> + reversed = ReverseString.reverse("Ramen") + expect(reversed).toEqual("nemaR") + + xit 'A sentence with punctuation', -> + reversed = ReverseString.reverse("I'm hungry!") + expect(reversed).toEqual("!yrgnuh m'I") + + xit 'A palindrome', -> + reversed = ReverseString.reverse("racecar") + expect(reversed).toEqual("racecar") + + xit 'An even-sized word', -> + reversed = ReverseString.reverse("drawer") + expect(reversed).toEqual("reward")