ruby fibs versions and tests for them
This commit is contained in:
parent
9bcead4c1a
commit
da4003c30a
@ -117,4 +117,32 @@ class Integer < Value
|
||||
int mod4()
|
||||
return self & 3
|
||||
end
|
||||
|
||||
int fibr( )
|
||||
if_plus( self - 2 )
|
||||
int tmp
|
||||
tmp = self - 1
|
||||
int a = tmp.fibr( )
|
||||
tmp = self - 2
|
||||
int b = tmp.fibr( )
|
||||
return a + b
|
||||
else
|
||||
return self
|
||||
end
|
||||
end
|
||||
|
||||
int fibw( )
|
||||
int result = 1
|
||||
int a = 0
|
||||
int b = 1
|
||||
int i = 2
|
||||
while_plus( self - i )
|
||||
result = a + b
|
||||
a = b
|
||||
b = result
|
||||
i = i + 1
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -172,4 +172,35 @@ five.putstring()"
|
||||
@stdout = " 12345678"
|
||||
check 12345678
|
||||
end
|
||||
|
||||
def test_fibr8
|
||||
@main = "int fib = 8.fibr( )
|
||||
return fib.puti()"
|
||||
@stdout = " 21"
|
||||
check 21
|
||||
end
|
||||
|
||||
def test_fibw8
|
||||
@main = "int fib = 8.fibw( )
|
||||
return fib.puti()"
|
||||
@stdout = " 21"
|
||||
check 21
|
||||
end
|
||||
def test_fibw20
|
||||
@main = "int fib = 20.fibw( )
|
||||
return fib.puti()"
|
||||
@stdout = " 6765"
|
||||
check 6765
|
||||
end
|
||||
|
||||
def test_fib40_1000000
|
||||
@main = "int count = 999424
|
||||
count = count + 576
|
||||
while_plus( count - 1)
|
||||
40.fibw( )
|
||||
count = count - 1
|
||||
end
|
||||
return count"
|
||||
check 0
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user