Skip to content

Instantly share code, notes, and snippets.

@futureperfect
Last active July 18, 2017 06:19
Show Gist options
  • Save futureperfect/bc349be2b5efe46258051aad5d108de6 to your computer and use it in GitHub Desktop.
Save futureperfect/bc349be2b5efe46258051aad5d108de6 to your computer and use it in GitHub Desktop.
Reverse a string, but preserve position of any "special" character
source "https://rubygems.org"
gem "minitest"
def reverse input, special
a = input.split ""
i, j = 0, input.length - 1
while i < j do
if a[i] == special
i += 1
next
end
if a[j] == special
j -= 1
next
end
tmp = a[i]
a[i] = a[j]
a[j] = tmp
i += 1
j -= 1
end
a.join("")
end
require 'minitest/autorun'
require "./reverse.rb"
class ReverseTest < Minitest::Test
def test_reverse_hello
reverse = reverse("Hello", "!")
assert_equal reverse, "olleH"
end
def test_reverse_again
reverse = reverse("Stuff and nonsense", "!")
assert_equal reverse, "esnesnon dna ffutS"
end
def test_reverse_special
reverse = reverse("Hello!", "!")
assert_equal reverse, "olleH!"
end
def test_reverse_stars
reverse = reverse "He**o", "*"
assert_equal reverse, "oe**H"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment