cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A172009 Number of minimal SNUSP programs using +, -, @ and # that yield n.

Original entry on oeis.org

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, 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, 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
Offset: 1

Views

Author

Darrell Plank (jar_czar(AT)msn.com), Jan 22 2010

Keywords

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.

Examples

			There are 12 minimal programs which yield 10: +@+++++# @@-++++# -@@++++# -@+@+++# +@-@+++# ++@@+++# +@++@++# @@-+@++# -@@+@++# -@+@@++# +@-@@++# ++@@@++#. Thus a(10) = 12.
		

Crossrefs

Programs