Data update
This commit is contained in:
parent
4d5544505c
commit
4924dd0264
3073 changed files with 55820 additions and 4408 deletions
42
Task/Hamming-numbers/FutureBasic/hamming-numbers.basic
Normal file
42
Task/Hamming-numbers/FutureBasic/hamming-numbers.basic
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
include "NSLog.incl"
|
||||
|
||||
NSUInteger local fn Minimum( a as NSUInteger, b as NSUInteger )
|
||||
return (a < b) ? a : b
|
||||
end fn = 0
|
||||
|
||||
UInt64 local fn HammingNumberAtPosition( position as NSUInteger )
|
||||
if (position == 0) then return 0
|
||||
CFMutableArrayRef hammingNumbers = fn MutableArrayWithCapacity( position )
|
||||
MutableArrayAddObject( hammingNumbers, @1 )
|
||||
|
||||
NSUInteger i2 = 0, i3 = 0, i5 = 0
|
||||
for NSUInteger i = 1 to position - 1
|
||||
NSUInteger nxt2 = fn NumberUnsignedLongLongValue( hammingNumbers[i2] ) * 2
|
||||
NSUInteger nxt3 = fn NumberUnsignedLongLongValue( hammingNumbers[i3] ) * 3
|
||||
NSUInteger nxt5 = fn NumberUnsignedLongLongValue( hammingNumbers[i5] ) * 5
|
||||
NSUInteger nxt = fn Minimum( nxt2, fn Minimum( nxt3, nxt5 ) )
|
||||
|
||||
NSUInteger nextHamming = fn Minimum( nxt2, fn Minimum( nxt3, nxt5 ) )
|
||||
MutableArrayAddObject( hammingNumbers, @(nextHamming) )
|
||||
|
||||
if (nxt == nxt2) then i2++
|
||||
if (nxt == nxt3) then i3++
|
||||
if (nxt == nxt5) then i5++
|
||||
next
|
||||
|
||||
return fn NumberUnsignedLongLongValue( hammingNumbers[position - 1] )
|
||||
end fn = 0
|
||||
|
||||
local fn RunHammingNumberTests
|
||||
CFMutableArrayRef mutArr = fn MutableArrayNew
|
||||
|
||||
for NSUInteger i = 1 to 20
|
||||
MutableArrayAddObject( mutArr, @(fn HammingNumberAtPosition(i)) )
|
||||
next
|
||||
NSLog( @"First 20 Hamming Numbers: %@", fn ArrayComponentsJoinedByString( mutArr, @" " ) )
|
||||
NSLog( @" 1691st Hamming Number: %llu", fn HammingNumberAtPosition( 1691 ) )
|
||||
end fn
|
||||
|
||||
fn RunHammingNumberTests
|
||||
|
||||
HandleEvents
|
||||
Loading…
Add table
Add a link
Reference in a new issue