Skip to content

Instantly share code, notes, and snippets.

@bigomega
Created April 16, 2016 11:42
Show Gist options
  • Select an option

  • Save bigomega/8164e9da5bf03b6916f2040e05bc8dd5 to your computer and use it in GitHub Desktop.

Select an option

Save bigomega/8164e9da5bf03b6916f2040e05bc8dd5 to your computer and use it in GitHub Desktop.

Revisions

  1. bigomega created this gist Apr 16, 2016.
    39 changes: 39 additions & 0 deletions chain.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,39 @@
    dict = ['cat','cot','cog','bog','bat','bap','map', 'mat'];
    start = 'cat';
    end = 'map';
    isLinked = function(w1, w2){
    var flag = false;
    for (var i = 0; i < w1.length; i++) {
    if(w1[i] != w2[i]){
    if(flag)
    return false;
    flag = true;
    }
    }
    return true;
    }
    myFunc = function(status, dict_copy) {
    var out = [];
    for (var i = dict_copy.length - 1; i >= 0; i--) {
    var dictCopy = dict_copy.slice(0);
    var st = status.slice(0);
    var next = dictCopy[i];
    dictCopy.splice(i, 1);
    if(isLinked(st[st.length - 1], next)){
    st.push(next);
    if(next == end){
    out.push(st);
    } else {
    var zzz = myFunc(st, dictCopy, out);
    out = out.concat(zzz);
    }
    }
    }
    return out;
    }
    if(start == end){
    x = [start];
    } else {
    var dictCopy = dict.filter(function(val){ return val != start;});
    x = myFunc([start], dictCopy);
    }