- commit
- cc9dd5fe9c74801e7ce141b971fbe382afde1b5d
- parent
- 6f9ae00036ea13601a66aadc067a932bc9f28387
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2020-05-03 14:47
further simplify fuzzy
Diffstat
| M | static/context.js | 45 | +++++---------------------------------------- |
1 files changed, 5 insertions, 40 deletions
diff --git a/static/context.js b/static/context.js
@@ -15,43 +15,16 @@ var applyExact = function(text, [pos, before, after], selection) {
15 15 };
16 16
17 17 var fuzzyMerge = function(s1, s2) {
18 -1 // https://en.wikipedia.org/wiki/Longest_common_subsequence_problem
19 -1
20 18 var ret = '';
21 -1 var m = [];
22 -1 var i;
23 -1 var j;
24 -1
25 -1 for (i = 0; i < s1.length; i++) {
26 -1 m.push([]);
27 -1 for (j = 0; j < s2.length; j++) {
28 -1 m[i].push(-1);
29 -1 }
30 -1 }
-1 19 var i = s1.length - 1;
-1 20 var j = s2.length - 1;
31 21
32 -1 var getM = (ii, jj) => {
33 -1 if (ii < 0 || jj < 0) {
34 -1 return 0;
35 -1 }
36 -1 if (m[ii][jj] === -1) {
37 -1 if (s1[ii] === s2[jj]) {
38 -1 m[ii][jj] = getM(ii - 1, jj - 1) + 1;
39 -1 } else {
40 -1 m[ii][jj] = Math.max(getM(ii, jj - 1), getM(ii - 1, jj));
41 -1 }
42 -1 }
43 -1 return m[ii][jj];
44 -1 };
45 -1
46 -1 i = s1.length - 1;
47 -1 j = s2.length - 1;
48 -1
49 -1 while (i >= 0 && j >= 0) {
50 -1 if (s1[i] === s2[j]) {
-1 22 while (i >= 0 || j >= 0) {
-1 23 if (i >= 0 && j >= 0 && s1[i] === s2[j]) {
51 24 ret = s1[i] + ret;
52 25 i -= 1;
53 26 j -= 1;
54 -1 } else if (getM(i, j - 1) > getM(i - 1, j)) {
-1 27 } else if (i < 0) {
55 28 ret = s2[j] + ret;
56 29 j -= 1;
57 30 } else {
@@ -59,14 +32,6 @@ var fuzzyMerge = function(s1, s2) {
59 32 i -= 1;
60 33 }
61 34 }
62 -1 while (j >= 0) {
63 -1 ret = s2[j] + ret;
64 -1 j -= 1;
65 -1 }
66 -1 while (i >= 0) {
67 -1 ret = s1[i] + ret;
68 -1 i -= 1;
69 -1 }
70 35
71 36 return ret;
72 37 };