#! /usr/bin/gawk -f # Last edited on 1999-07-22 14:12:40 by stolfi # Usage: enum-perms -v elems="XxYyZz..." # # Enumerates all valid permutations of a given list of letters "elems". BEGIN { abort = -1; if (elems == "") { error("must define \"elems\""); } s = elems; split("", f); nf = length(s); for (i=0; i "/dev/stderr" if (nf == 0) { print_perm(); return; } if (nh > 0) { # Fold in the last hanging folio: nh--; p[np] = h[nh]; np++; recurse(); np--; h[nh] = p[np]; nh++; } if (nf > 0) { # Place each unused element in turn: for (i=0; i "/dev/stderr"; abort = 1; exit 1; }