Julio Biason
4 years ago
5 changed files with 72 additions and 0 deletions
@ -0,0 +1 @@
|
||||
{"track":"clojure","exercise":"reverse-string","id":"1d0e36bea1fa400a9423fa17ba1a04fe","url":"https://exercism.io/my/solutions/1d0e36bea1fa400a9423fa17ba1a04fe","handle":"JBiason","is_requester":true,"auto_approve":false} |
@ -0,0 +1,17 @@
|
||||
# Reverse String |
||||
|
||||
Reverse a string |
||||
|
||||
For example: |
||||
input: "cool" |
||||
output: "looc" |
||||
|
||||
## Restrictions |
||||
You can not use the `reverse` function, but you can use any of the other core functions. |
||||
|
||||
## Source |
||||
|
||||
Introductory challenge to reverse an input string [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. |
@ -0,0 +1,4 @@
|
||||
(defproject reverse-string "0.1.0-SNAPSHOT" |
||||
:description "reverse-string exercise." |
||||
:url "https://github.com/exercism/clojure/tree/master/exercises/reverse-string" |
||||
:dependencies [[org.clojure/clojure "1.10.0"]]) |
@ -0,0 +1,21 @@
|
||||
(ns reverse-string |
||||
; (:require [clojure.string :as str]) |
||||
) |
||||
|
||||
; This is the easy/cheating way |
||||
; (defn reverse-string [s] ;; <- arglist goes here |
||||
; (str/reverse s) |
||||
; ) |
||||
|
||||
; This is the real way :p |
||||
(defn reverse-string [s] |
||||
(loop [content s |
||||
reversed ""] |
||||
(let [[head & tails] content] |
||||
(if (= tails nil) |
||||
(str head reversed) |
||||
(recur tails (str head reversed)) |
||||
) |
||||
) |
||||
) |
||||
) |
@ -0,0 +1,29 @@
|
||||
(ns reverse-string-test |
||||
(:require [clojure.test :refer [deftest is]] |
||||
reverse-string)) |
||||
|
||||
(deftest empty-string-test |
||||
(is (= "" (reverse-string/reverse-string "")))) |
||||
|
||||
(deftest a-letter-test |
||||
(is (= "I" (reverse-string/reverse-string "I")))) |
||||
|
||||
(deftest a-word-test |
||||
(is (= "tobor" (reverse-string/reverse-string "robot")))) |
||||
|
||||
(deftest capitalised-word-test |
||||
(is (= "nemaR" (reverse-string/reverse-string "Ramen")))) |
||||
|
||||
(deftest sentence-with-punctuation-test |
||||
(is (= "!yrgnuh m'I" (reverse-string/reverse-string "I'm hungry!")))) |
||||
|
||||
(deftest palindrome-test |
||||
(is (= "racecar" (reverse-string/reverse-string "racecar")))) |
||||
|
||||
(deftest even-sized-word-test |
||||
(is (= "reward" (reverse-string/reverse-string "drawer")))) |
||||
|
||||
(deftest long-string-test |
||||
(let [s (reduce str (repeat 1000 "overflow?")) |
||||
rs (reduce str (repeat 1000 "?wolfrevo"))] |
||||
(is (= rs (reverse-string/reverse-string s))))) |
Loading…
Reference in new issue