OFFSET
1,2
LINKS
MATHEMATICA
f[n_] := Block[{a = {1}, g, b = Range[2, n]}, g[1] = g[2] = 1; g[x_] := g[x] = g[g[x - 1]] + g[x - g[x - 1]]; Do[{AppendTo[a, #[[1, 1]]], Set[b, Last@ #]} &@ If[# > Length@ b, Break[], TakeDrop[b, {#}]] &@ (2 g[#] - # + 1) &@ k, {k, 2, n}]; a]; f@ 97 (* Michael De Vlieger, Dec 29 2015, Version 10.2, based on Harvey P. Dale at A004074 *)
PROG
(Scheme, with defineperm1-macro from Antti Karttunen's IntSeq-library)
(defineperm1 (A266411 n) (if (<= n 1) n (let loop ((i 1) (the-nth-one (A004074 n))) (cond ((not-lte? (A266412 i) n) (if (zero? the-nth-one) i (loop (+ i 1) (- the-nth-one 1)))) (else (loop (+ i 1) the-nth-one))))))
(define (A266412 n) (A266411 (- n))) ;; This returns inverse values of A266411 from its hidden cache that defineperm1-macro has prepared. #f is returned for those n that have not yet been encountered.
;; We consider a > b (i.e. not less than b) also in case a is #f.
;; (Because of the stateful caching system used by defineperm1-macro):
(define (not-lte? a b) (cond ((not (number? a)) #t) (else (> a b))))
CROSSREFS
KEYWORD
nonn
AUTHOR
Antti Karttunen, Dec 29 2015
STATUS
approved