Fibonacci n-step number sequences: Difference between revisions

Added solution for Action!
m (Updated description and link for Fōrmulæ solution)
(Added solution for Action!)
Line 227:
> (n-bonacci '(2 1) 10)
(1 3 4 7 11 18 29 47 76 123)</pre>
 
=={{header|Action!}}==
<lang Action!>DEFINE MAX="15"
 
PROC GenerateSeq(CARD ARRAY init BYTE nInit CARD ARRAY seq BYTE nSeq)
CARD next
BYTE i,j,n
 
IF nInit<nSeq THEN
n=nInit
ELSE
n=nSeq
FI
 
FOR i=0 TO n-1
DO
seq(i)=init(i)
OD
 
FOR i=n TO nSeq-1
DO
next=0
FOR j=i-nInit TO i-1
DO
next==+seq(j)
OD
seq(i)=next
OD
RETURN
 
PROC PrintSeq(CHAR ARRAY name CARD ARRAY seq BYTE n)
BYTE i
 
PrintF("%S=[",name)
FOR i=0 TO n-1
DO
PrintC(seq(i))
IF i<n-1 THEN
Print(" ")
ELSE
PrintE("]")
FI
OD
RETURN
 
PROC SetInverseVideo(CHAR ARRAY text)
BYTE i
 
FOR i=1 TO text(0)
DO
text(i)=text(i) OR $80
OD
RETURN
 
PROC Test(CHAR ARRAY name CARD ARRAY init CARD ARRAY nInit BYTE nSeq)
CARD ARRAY seq(MAX)
 
SetInverseVideo(name)
GenerateSeq(init,nInit,seq,nSeq)
PrintSeq(name,seq,nSeq)
RETURN
 
PROC Main()
CARD ARRAY fibInit=[1 1 2 4 8 16 32 64 128 256 512]
CARD ARRAY lucInit=[2 1]
 
Test("lucas",lucInit,2,MAX)
Test("fibonacci",fibInit,2,MAX)
Test("tribonacci",fibInit,3,MAX)
Test("tetranacci",fibInit,4,MAX)
Test("pentanacci",fibInit,5,MAX)
Test("hexanacci",fibInit,6,MAX)
Test("heptanacci",fibInit,7,MAX)
Test("octanacci",fibInit,8,MAX)
Test("nonanacci",fibInit,9,MAX)
Test("decanacci",fibInit,10,MAX)
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Fibonacci_n-step_number_sequences.png Screenshot from Atari 8-bit computer]
<pre>
lucas=[2 1 3 4 7 11 18 29 47 76 123 19 9 322 521 843]
fibonacci=[1 1 2 3 5 8 13 21 34 55 89 144 233 377 610]
tribonacci=[1 1 2 4 7 13 24 44 81 149 274 504 927 1705 3136]
tetranacci=[1 1 2 4 8 15 29 56 108 208 401 773 1490 2872 5536]
pentanacci=[1 1 2 4 8 16 31 61 120 236 464 912 1793 3525 6930]
hexanacci=[1 1 2 4 8 16 32 63 125 248 492 976 1936 3840 7617]
heptanacci=[1 1 2 4 8 16 32 64 127 253 504 1004 2000 3984 7936]
octanacci=[1 1 2 4 8 16 32 64 128 255 509 1016 2028 4048 8080]
nonanacci=[1 1 2 4 8 16 32 64 128 256 511 1021 2040 4076 8144]
decanacci=[1 1 2 4 8 16 32 64 128 256 512 1023 2045 4088 8172]
</pre>
 
=={{header|Ada}}==
Anonymous user