

A274647


A variation on Recamán's sequence (A005132): to get a(n), we first try to subtract n from a(n1): a(n) = a(n1)n if positive and not already in the sequence; if not then we try to add n: a(n) = a(n1)+n if not already in the sequence; if this fails we try to subtract 2n from a(n1), or to add 2n to a(n1), or to subtract 3n, or to add 3n, etc., until one of these produces a positive number not already in the sequence.


5



0, 1, 3, 6, 2, 7, 13, 20, 12, 21, 11, 22, 10, 23, 9, 24, 8, 25, 43, 62, 42, 63, 41, 18, 66, 91, 65, 38, 94, 123, 93, 124, 92, 59, 127, 162, 126, 89, 51, 90, 50, 132, 174, 131, 87, 177, 223, 176, 128, 79, 29, 80, 28, 81, 27, 82, 26, 83, 141, 200, 140, 201, 139
(list;
graph;
refs;
listen;
history;
text;
internal format)



OFFSET

0,3


COMMENTS

Is this a permutation of the natural numbers?
After 5.4*10^11 terms, the smallest number which has not appeared is 212. There are 177 numbers under 10000 which have not appeared.  Benjamin Chaffin, Sep 29 2016


LINKS

Antti Karttunen, Table of n, a(n) for n = 0..85000
Index entries for sequences related to Recamán's sequence


FORMULA

A276342(a(n)) = n for all n.


MATHEMATICA

f[s_List] := Block[{a = b = 0, k = 1, l = s[[1]], n = Length@ s}, While[ If[l > k*n && !MemberQ[s, l  k*n], a = l  k*n]; If[ !MemberQ[s, l + k*n], b = l + k*n; Break[]]; a == b == 0, k++]; Append[s, If[a > 0, a, b]]]; Nest[f, {0}, 70]
(* Robert G. Wilson v, Sep 09 2016 *)


PROG

(Scheme, with defineperm1macro from Antti Karttunen's IntSeqlibrary)
(defineperm1 (A274647 n) (if (<= n 1) n (let ((prev (A274647 ( n 1)))) (let loop ((k n)) (cond ((and (> ( prev k) 1) (notlte? (A276342 ( prev k)) n)) ( prev k)) ((notlte? (A276342 (+ prev k)) n) (+ prev k)) (else (loop (+ k n))))))))
(define (A276342 n) (A274647 ( n))) ;; This returns inverse values of A274647 from its hidden cache.
;; We consider a > b (i.e. not less than b) also in case a is #f.
;; (Because of the stateful caching system used by defineperm1macro):
(define (notlte? a b) (cond ((not (number? a)) #t) (else (> a b))))
;; Antti Karttunen, Sep 04 2016
(Python)
l=[0]
for n in range(1, 101):
i=1
while True:
a=l[n  1]
x=a  i*n
if x>0 and not x in l:
l+=[x, ]
break
y=a + i*n
if y>0 and not y in l:
l+=[y, ]
break
else : i+=1
print l # Indranil Ghosh, Jun 03 2017


CROSSREFS

Cf. A005132, A064389.
Left inverse: A276342 (also right inverse, if this sequence is a permutation of nonnegative integers).
Cf. A276438 (gives k that was used when computing a(n), with sign).
Cf. A274648 (another variant).
Sequence in context: A064387 A064389 A118201 * A113880 A339192 A171884
Adjacent sequences: A274644 A274645 A274646 * A274648 A274649 A274650


KEYWORD

nonn,nice


AUTHOR

Max Barrentine, Aug 12 2016


STATUS

approved



