(perm [base]byte)
| 53 | func Code(perm [base]byte) int { return CodeCopy(perm) } |
| 54 | |
| 55 | func CodeCopy(perm [base]byte) int { |
| 56 | r := 0 |
| 57 | for min := byte(0); min < base-1; min++ { |
| 58 | z := 0 |
| 59 | n := base - min |
| 60 | for i, v := range perm[:n] { |
| 61 | if v == min { |
| 62 | z = i |
| 63 | break |
| 64 | } |
| 65 | } |
| 66 | copy(perm[z:], perm[z+1:n]) |
| 67 | r += z * fact[min] |
| 68 | } |
| 69 | return r |
| 70 | } |
| 71 | |
| 72 | func CodeCopyBit(perm [base]byte) int { |
| 73 | return codebit(uint64(PackNybbleUnroll(perm))) |
no outgoing calls