gradingProblem.frink

View or download gradingProblem.frink in plain text format


/* This is a proposed solution for Patrick Honner's question about scoring the
  "correctness" of an ordered list.  It uses the Levenshtein-Damerau edit
  distance (eliminating outright replacements) to calculate how many
  insertions, deletions, and adjacent character swaps it would take to turn
  one sequence into the "right" one.

  The arguments are:
 editDistanceDamerau[str1, str2, deleteCost, insertCost, replaceCost, swapCost]

  In this sample, replaceCost is set very high to eliminate replacements.

  See:
    http://mrhonner.com/archives/10229
*/


opts = ["A","B","C","D"]
correct = join["", opts]

// Generate all permutations of the list in lexicographic order.
for p = opts.lexicographicPermute[]
{
   // Turn the permuted array back into a string.
   alt = join["", p]
   
   // The 1000 here is the replacement cost, made to be higher than the length
   // of the string, effectively making the algorithm ignore replacements.
   score = editDistanceDamerau[alt, correct, 1, 1, 1000, 1]
   println["$alt\t$score"]
}


View or download gradingProblem.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 17780 days, 13 hours, 14 minutes ago.