| ... | @@ -15,7 +15,7 @@ const range = @import("range").range; | ... | @@ -15,7 +15,7 @@ const range = @import("range").range; |
| 15 | // ); | 15 | // ); |
| 16 | // } | 16 | // } |
| 17 | | 17 | |
| 18 | pub fn leven(comptime T: type, alloc: *std.mem.Allocator, a: []const T, b: []const T) !usize { | 18 | pub fn leven(comptime T: type, alloc: *std.mem.Allocator, a: []const T, b: []const T, max: ?usize) !usize { |
| 19 | if (std.mem.eql(T, a, b)) return 0; | 19 | if (std.mem.eql(T, a, b)) return 0; |
| 20 | | 20 | |
| 21 | var left = a; | 21 | var left = a; |
| ... | @@ -29,6 +29,10 @@ pub fn leven(comptime T: type, alloc: *std.mem.Allocator, a: []const T, b: []con | ... | @@ -29,6 +29,10 @@ pub fn leven(comptime T: type, alloc: *std.mem.Allocator, a: []const T, b: []con |
| 29 | var ll = left.len; | 29 | var ll = left.len; |
| 30 | var rl = right.len; | 30 | var rl = right.len; |
| 31 | | 31 | |
| | 32 | if (max != null and rl - ll >= max.?) { |
| | 33 | return max.?; |
| | 34 | } |
| | 35 | |
| 32 | { | 36 | { |
| 33 | const sl = suffixLen(T, a, b); | 37 | const sl = suffixLen(T, a, b); |
| 34 | ll -= sl; | 38 | ll -= sl; |
| ... | @@ -67,6 +71,7 @@ pub fn leven(comptime T: type, alloc: *std.mem.Allocator, a: []const T, b: []con | ... | @@ -67,6 +71,7 @@ pub fn leven(comptime T: type, alloc: *std.mem.Allocator, a: []const T, b: []con |
| 67 | } | 71 | } |
| 68 | } | 72 | } |
| 69 | | 73 | |
| | 74 | if (max != null and result >= max.?) return max.?; |
| 70 | return result; | 75 | return result; |
| 71 | } | 76 | } |
| 72 | | 77 | |