Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,44 @@
|
|||
import strformat
|
||||
|
||||
const MAX = 12
|
||||
|
||||
var super: seq[char] = @[]
|
||||
var pos: int
|
||||
var cnt: array[MAX, int]
|
||||
|
||||
proc factSum(n: int): int =
|
||||
var s, x = 0
|
||||
var f = 1
|
||||
while x < n:
|
||||
inc x
|
||||
f *= x
|
||||
inc s, f
|
||||
s
|
||||
|
||||
proc r(n: int): bool =
|
||||
if n == 0:
|
||||
return false
|
||||
var c = super[pos - n]
|
||||
dec cnt[n]
|
||||
if cnt[n] == 0:
|
||||
cnt[n] = n
|
||||
if not r(n - 1):
|
||||
return false
|
||||
super[pos] = c
|
||||
inc pos
|
||||
true
|
||||
|
||||
proc superperm(n: int) =
|
||||
pos = n
|
||||
var le = factSum(n)
|
||||
super.setLen(le)
|
||||
for i in 0..n:
|
||||
cnt[i] = i
|
||||
for i in 1..n:
|
||||
super[i-1] = char(i + ord('0'))
|
||||
while r(n):
|
||||
discard
|
||||
for n in 0..<MAX:
|
||||
write(stdout, fmt"superperm({n:2})")
|
||||
superperm(n)
|
||||
writeLine(stdout, fmt" len = {len(super)}")
|
||||
Loading…
Add table
Add a link
Reference in a new issue