Issue #10882 has been updated by Robert A. Heiler.


I would like to see this too - Levensthein distance is used a lot in Bioinformatics to calculate the edit distance between two sequences (in ruby, thus, two strings) - three operations are Edit, Replace, Delete (+1, -1, change information at that position).

I have no particular strong feeling about the name (e. g. distance) though perhaps it should be

require 'math/distance'

or something like that?

----------------------------------------
Feature #10882: Provide Levenshtein distance implementation as part of stdlib
https://bugs.ruby-lang.org/issues/10882#change-51680

* Author: Yuki Nishijima
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
[Levenshtein distance algorithm](http://en.wikipedia.org/wiki/Levenshtein_distance) has been used by Rubygems, Bundler, did_you_mean and Rails and I think it's popular enough to provide it as part of Ruby's stdlib. It still seems a bit too high-level though, but definitely useful (e.g. [adding "did you mean?" to rake](https://github.com/ruby/rake/pull/29)).

API-wise, I would like to propose something like the following, but I'm totally open to hear the core team's opinions as I'm not sue if this is great.

```ruby
require 'distance'

Distance.levenshtein(str1, str2)
```

It would also be interesting to have `#distance` method on `String`:

```ruby
"word".distance("other")
```

which is implemented as:

```ruby
def distance(str, algorithm = :levenshtein)
  # calculate the distance here.
end
```

so it can allow to change the algorythm when we add more (e.g. [JaroWinkler distance](http://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance)).




-- 
https://bugs.ruby-lang.org/