RosettaCodeData/Task/Fibonacci-n-step-number-sequences/FutureBasic/fibonacci-n-step-number-sequences.basic
2026-04-30 12:34:36 -04:00

26 lines
1.5 KiB
Text

include "NSLog.incl"
CFStringRef local fn FibonacciSequences( type as CFStringRef, startSequence as CFArrayRef, count as NSInteger )
CFMutableArrayRef result = fn MutableArrayWithArray( startSequence )
NSInteger n = fn ArrayCount( startSequence )
while ( fn ArrayCount( result ) < count )
CFArrayRef lastNElements = fn ArraySubarrayWithRange( result, fn RangeMake( fn ArrayCount( result ) - n, n ) )
CFNumberRef sumNumber = (CFNumberRef)fn ObjectValueForKeyPath( lastNElements, @"@sum.self" )
NSInteger sum = fn NumberIntegerValue( sumNumber )
MutableArrayAddObject( result, @(sum) )
wend
return fn StringWithFormat( @"%10s: [%@]", fn StringUTF8String( type ), fn ArrayComponentsJoinedByString( result, @", " ) )
end fn = NULL
NSLog( @"%@", fn FibonacciSequences( @"lucas", @[@1,@1], 15 ) )
NSLog( @"%@", fn FibonacciSequences( @"tribonacci", @[@1,@1,@2], 15 ) )
NSLog( @"%@", fn FibonacciSequences( @"tetranacci", @[@1,@1,@2,@4], 15 ) )
NSLog( @"%@", fn FibonacciSequences( @"pentanacci", @[@1,@1,@2,@4,@8], 15 ) )
NSLog( @"%@", fn FibonacciSequences( @"hexanacci", @[@1,@1,@2,@4,@8,@16], 15 ) )
NSLog( @"%@", fn FibonacciSequences( @"heptanacci", @[@1,@1,@2,@4,@8,@16,@32], 15 ) )
NSLog( @"%@", fn FibonacciSequences( @"octonacci", @[@1,@1,@2,@4,@8,@16,@32,@64], 15 ) )
NSLog( @"%@", fn FibonacciSequences( @"nonanacci", @[@1,@1,@2,@4,@8,@16,@32,@64,@128], 15 ) )
NSLog( @"%@", fn FibonacciSequences( @"decanacci", @[@1,@1,@2,@4,@8,@16,@32,@64,@128,@256], 15 ) )
HandleEvents