Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Levenshtein solution in Clear category for [old] String Conversion by DaveDiFranco
"use strict";
//Levenshtein algorithm
function stepsToConvert(a, b) {
if (a.length==0) return b.length
if (b.length==0) return a.length
return Math.min(
stepsToConvert(a.slice(0,-1), b) + 1,
stepsToConvert(a, b.slice(0,-1)) + 1,
stepsToConvert(a.slice(0,-1), b.slice(0,-1)) + ((a[a.length-1]!=b[b.length-1])?1:0))
}
var assert = require('assert');
if (!global.is_checking) {
assert.equal(stepsToConvert('line1', 'line1'), 0, "eq")
assert.equal(stepsToConvert('line1', 'line2'), 1, "2")
assert.equal(stepsToConvert('line', 'line2'), 1, "none to 2")
assert.equal(stepsToConvert('ine', 'line2'), 2, "need two more")
assert.equal(stepsToConvert('line1', '1enil'), 4, "everything is opposite")
assert.equal(stepsToConvert('', ''), 0, "two empty")
assert.equal(stepsToConvert('l', ''), 1, "one side")
assert.equal(stepsToConvert('', 'l'), 1, "another side")
console.log("You are good to go!");
}
April 2, 2017