Levenshtein distance/Alignment: Difference between revisions

Content added Content deleted
(+ D entry)
(Simpler D entry)
Line 19:
immutable s1 = "rosettacode";
immutable s2 = "raisethysword";
const dd = levenshteinDistanceAndPath(s1, s2);
 
// EditOp Key:
// n = none. Current items are equal, no editing is necessary.
// s = substitute current target item with current source item.
// i = insert current item from the source into the target.
// r = remove current item from the target.
writeln("Levenshtein distance and edit operations:\n", dd, "\n");
 
string s1b, s2b;
size_t pos1, pos2;
 
foreach (immutable c; ddlevenshteinDistanceAndPath(s1, s2)[1]) {
final switch (c) with (EditOp) {
case none, substitute:
Line 48 ⟶ 40:
}
 
writeln("Alignments:\n", s1b, "\n", s2b);
}</lang>
{{out}}
<pre>r_oset_tacode
<pre>Levenshtein distance and edit operations:
const(Tuple!(uint, EditOp[]))(8, nisnnnisssnss)
 
Alignments:
r_oset_tacode
raisethysword</pre>