Post Reply 
(50g) Boustrophedon Transform
03-20-2019, 07:21 PM (This post was last modified: 08-22-2021 04:47 PM by John Keith.)
Post: #1
(50g) Boustrophedon Transform
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.

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.
Find all posts by this user
Quote this message in a reply
08-22-2021, 04:56 PM
Post: #2
RE: (50g) Boustrophedon Transform
Here is a version of the boustrophedon transform program for the HP48G/GX. As above, replacing the OVER + with OVER - will make the program return the inverse boustrophedon transform of the list.

Code:

\<< DUP SIZE \-> n
  \<< DUP HEAD SWAP OVER 1 \->LIST 2 n
    FOR k REVLIST OVER k GET SWAP 1
      \<< OVER +
      \>> DOLIST + DUP k GET NEWOB ROT ROT
    NEXT DROP2 n \->LIST
  \>>
\>>

Also, the HP 50g program in the first post has been replaced with a shorter version.
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)