%I #6 Sep 03 2023 08:46:23
%S 1,1,2,2,2,2,2,2,6,12,4,8,2,4,4,10,4,2,12,4,2,6,8,10,2,2,2,2,2,2,10,2,
%T 8,2,14,22,8,2,18,8,4,14,4,12,2,4,2,8,6,2,6,6,10,2,2,4,6,4,4,2,4,2,22,
%U 8,2,4,2,2,4,6,24,6,2,2,12,2,12,4,2,2,6,6,12,18,6,4,6,6,2,2,2,2,8,12,2,2,2
%N Number of minimal SNUSP programs using +, -, @ and # that yield n.
%C 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.
%C 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.
%H <a href="http://www.esolangs.org/wiki/SNUSP">SNUSP - Esolang</a>.
%H <a href="http://c2.com/cgi/wiki?SnuspLanguage">SNUSP Language</a>.
%e There are 12 minimal programs which yield 10: +@+++++# @@-++++# -@@++++# -@+@+++# +@-@+++# ++@@+++# +@++@++# @@-+@++# -@@+@++# -@+@@++# +@-@@++# ++@@@++#. Thus a(10) = 12.
%o (Other) See A172005.
%Y Cf. A172005, A172006, A172007, A172008.
%K nonn
%O 1,3
%A Darrell Plank (jar_czar(AT)msn.com), Jan 22 2010
|