03-20-2019, 07:21 PM
Related to this older thread, the following program implements the boustrophedon transform for a list of integers. Details here and here.
For example, given the list { 1 0 0 0 0 0 } the program will return the first 6 terms of A000111.
For the inverse transform, simply replace the + sign with a - sign.
The next program returns the triangle associated with the transformed sequence.
For example, given the same input list above, the program will return the first 6 rows of A008280.
Both programs require GoferLists.
For example, given the list { 1 0 0 0 0 0 } the program will return the first 6 terms of A000111.
Code:
\<< DUP SIZE \-> n
\<< DUP HEAD SWAP OVER 1. \->LIST 2. n
FOR k REVLIST OVER k GET :: + Scanl DUP Last NEWOB UNROT
NEXT DROP2 n \->LIST
\>>
\>>
For the inverse transform, simply replace the + sign with a - sign.
The next program returns the triangle associated with the transformed sequence.
For example, given the same input list above, the program will return the first 6 rows of A008280.
Code:
\<< DUP SIZE \-> a n
\<< a 1. 1. SUB 2. n
FOR k DUP a k GET
\<< +
\>> k 2. MOD { Scanr } { Scanl } IFTE
NEXT n \->LIST
\>>
\>>
Both programs require GoferLists.