OFFSET
1,3
COMMENTS
SNUSP is a programming language where each command is an individual letter. The four of concern here are +, -, @ and #. + increments the current data value, - decrements it, @ is a "subroutine call" and # is a "return". When an @ is encountered, a record of the location is put on a stack and execution continues. When a # is encountered, if there is a return point on the stack, the execution continues at that a single character beyond that return point. If there is no return point on the stack, execution terminates.
Thus "@@++#" would put the first two "@" return points on the stack, increment data twice, return from the second "@" to the last "+", increment the data once more, return from the first "@" to the first "+", increment the data two more times and finally terminate when it hits the "#" with no return points on the stack. The data is always initialized to zero so this effectively puts 5 into the data. In order to place a particular value into the data, there are one or more minimal strings of these characters. The i-th term of the sequence is the number of minimal SNUSP programs using only these characters. After 2, all sequences end in either +++ or @++, which are equivalent, so all values above a(2) are even.
EXAMPLE
There are 12 minimal programs which yield 10: +@+++++# @@-++++# -@@++++# -@+@+++# +@-@+++# ++@@+++# +@++@++# @@-+@++# -@@+@++# -@+@@++# +@-@@++# ++@@@++#. Thus a(10) = 12.
PROG
(Other) See A172005.
CROSSREFS
KEYWORD
nonn
AUTHOR
Darrell Plank (jar_czar(AT)msn.com), Jan 22 2010
STATUS
approved