PalindromeAlgo

Build Status Gem Version MIT License

PalindromeAlgo is a simple algorithm to find and return list of palindromes from your text input.

Installation

Add this line to your application's Gemfile:

gem 'palindrome_algo'

And then execute:

$ bundle

Or install it yourself as:

$ gem install palindrome_algo

Usage

1) Add your text to a hash with :text symbol key, then pass the arguments to PalindromeAlgo.parse(args) like the example below. If you don't pass any args, and just run PalindromeAlgo.parse it will return sample data for testing.

args = { text: "My best friend's name is Anna. Don't you love the civic opera? How much is a kayak? My Spanish level is low, but I have fun. Excuse me, Madam?  Is this yours? Where's your mom today? Let's go for lunch at noon. Did you see that racecar? When was the radar invented? Your face is redder than a tomato. So we somehow refer cases to you? How much is it to repaper the living room? The rotator was connected to the log by a rope 6 ft. I heard the tail rotor buzz again. For later versions and adaptations of the sagas see O. His guitar solos are just unbelievable. As a doctor, Kent strongly believes the tenet of never doing any harm. Wow, you made this by yourself?" }

palindrome_hash = PalindromeAlgo.parse(args)

2) The returned data will be in hash format like below:

You can access the data, like so: palindrome_hash[:results] and palindrome_hash[:text]

{
  :results=>
  [
    {:string=>"My best friend's name is Anna", :palindromes=>"anna"},
    {:string=>"Don't you love the civic opera", :palindromes=>"civic"},
    {:string=>"How much is a kayak", :palindromes=>"kayak"},
    {:string=>"My Spanish level is low, but I have fun", :palindromes=>"level"},
    {:string=>"Excuse me, Madam", :palindromes=>"madam"},
    {:string=>"Is this yours", :palindromes=>""},
    {:string=>"Where's your mom today", :palindromes=>"mom"},
    {:string=>"Let's go for lunch at noon", :palindromes=>"noon"},
    {:string=>"Did you see that racecar", :palindromes=>"did, racecar"},
    {:string=>"When was the radar invented", :palindromes=>"radar"},
    {:string=>"Your face is redder than a tomato", :palindromes=>"redder"},
    {:string=>"So we somehow refer cases to you", :palindromes=>"refer"},
    {:string=>"How much is it to repaper the living room", :palindromes=>"repaper"},
    {:string=>"The rotator was connected to the log by a rope 6 ft", :palindromes=>"rotator"},
    {:string=>"I heard the tail rotor buzz again", :palindromes=>"rotor"},
    {:string=>"For later versions and adaptations of the sagas see O", :palindromes=>"sagas"},
    {:string=>"His guitar solos are just unbelievable", :palindromes=>"solos"},
    {:string=>"As a doctor, Kent strongly believes the tenet of never doing any harm", :palindromes=>"tenet"},
    {:string=>"Wow, you made this by yourself", :palindromes=>"wow"}
   ],
 :text=>
  "My best friend's name is Anna. Don't you love the civic opera? How much is a kayak? My Spanish level is low, but I have fun. Excuse me, Madam?  Is this yours? Where's your mom today? Let's go for lunch at noon. Did you see that racecar? When was the radar invented? Your face is redder than a tomato. So we somehow refer cases to you? How much is it to repaper the living room? The rotator was connected to the log by a rope 6 ft. I heard the tail rotor buzz again. For later versions and adaptations of the sagas see O. His guitar solos are just unbelievable. As a doctor, Kent strongly believes the tenet of never doing any harm. Wow, you made this by yourself?"
}

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/4rlm/palindrome_algo. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the PalindromeAlgo project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.