----- Original Message ----
> From: John Randall <[EMAIL PROTECTED]>
>
> I am trying to write code for the Fibonacci shift, a monotonic
> function N->N that takes the nth Fibonacci number to the (n+1)th
> Fibonacci number.
>
> The idea is to write a positive integer n as a (greedy) sum of
> Fibonacci numbers
>
> n=F[i_1]+F[i_2]+...+F[i_m]
>
> Then shift(n) is defined by
>
> shift(n)=F[i_1+1]+F[i_2+1]+...+F[i_m+1]
>
> I am using the following code from
>
> http://www.jsoftware.com/jwiki/Essays/Fibonacci_Index
>
> fib=: 3 : 0 " 0
> mp=. +/ .*
> {.{: mp/ mp~^:(I.|.#:y) 2 2$0 1 1 1x
> )
> phi=: -:1+%:5
> fi =: 3 : 'n - y.(1=y)-~>.(phi^.%:5)+phi^.y'
>
> My code has the verb z where
>
> z(n)=i_1,i_2,...,i_m
>
> its inverse zi, and the shift operator.
>
> z =:|.@:fi@:(2 -~/\ ])@:(-(- [EMAIL PROTECTED])^:*^:a:)
> zi=:+/@:fib
> k=:z :. zi
> shift=:>:&.k
>
> shift"0 >:i.10
> 1 3 5 6 8 9 11 13 14 16
> ]f=:fib 4 5 6
> 3 5 8
> shift"0 f
> 5 8 13
>
> Any suggestions for improvement would be appreciated.
]phi=: -:1+%:5
1.61803
fc=: <.@((%:5) + phi&*) - 2:
fc >:i.10
1 3 5 6 8 9 11 13 14 16
fc 3 5 8
5 8 13
(shift"0 -: fc) 10000 [EMAIL PROTECTED] 1e6
1
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm