permute

Generate all unique permutations of the inner content’s characters as separate lines. If the number of permutations exceeds a safe threshold, display an error or warning message instead.

Created by: hackvertor
Installed 1 times

Viewed: 0

Category: Math

Created on: Friday, September 5, 2025 at 8:12:55 PM

Updated on: Friday, September 5, 2025 at 8:12:55 PM

This is a built in tag
Tag arguments
[
   {
      "type": "number",
      "help": "Maximum number of permutations to generate (default: 720)",
      "defaultValue": "720"
   }
]
Code
class permute {
  encode(input, maxPerms) {
    maxPerms = maxPerms || 720;
    const arr = input.split("");
    const results = new Set();

    function generate(prefix, remaining) {
      if (results.size >= maxPerms) return;
      if (remaining.length === 0) {
        results.add(prefix);
      } else {
        for (let i = 0; i < remaining.length; i++) {
          generate(
            prefix + remaining[i],
            remaining.slice(0, i) + remaining.slice(i + 1),
          );
          if (results.size >= maxPerms) return;
        }
      }
    }

    generate("", arr.join(""));

    if (results.size >= maxPerms && arr.length > 1) {
      throw new Error(
        `Too many permutations (${results.size}); limit is ${maxPerms}`,
      );
    }

    return Array.from(results).join("\n");
  }
}