How to use fib method in fMBT

Best Python code snippet using fMBT_python

fibonacci.py

Source:fibonacci.py Github

copy

Full Screen

1# fibonacci.py2"""3Calculates the Fibonacci sequence using iteration, recursion, memoization,4and a simplified form of Binet's formula5NOTE 1: the iterative, recursive, memoization functions are more accurate than6the Binet's formula function because the Binet formula function uses floats7NOTE 2: the Binet's formula function is much more limited in the size of inputs8that it can handle due to the size limitations of Python floats9RESULTS: (n = 20)10fib_iterative runtime: 0.0055 ms11fib_recursive runtime: 6.5627 ms12fib_memoization runtime: 0.0107 ms13fib_binet runtime: 0.0174 ms14"""15from math import sqrt16from time import time17def time_func(func, *args, **kwargs):18 """19 Times the execution of a function with parameters20 """21 start = time()22 output = func(*args, **kwargs)23 end = time()24 if int(end - start) > 0:25 print(f"{func.__name__} runtime: {(end - start):0.4f} s")26 else:27 print(f"{func.__name__} runtime: {(end - start) * 1000:0.4f} ms")28 return output29def fib_iterative(n: int) -> list[int]:30 """31 Calculates the first n (0-indexed) Fibonacci numbers using iteration32 >>> fib_iterative(0)33 [0]34 >>> fib_iterative(1)35 [0, 1]36 >>> fib_iterative(5)37 [0, 1, 1, 2, 3, 5]38 >>> fib_iterative(10)39 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]40 >>> fib_iterative(-1)41 Traceback (most recent call last):42 ...43 Exception: n is negative44 """45 if n < 0:46 raise Exception("n is negative")47 if n == 0:48 return [0]49 fib = [0, 1]50 for _ in range(n - 1):51 fib.append(fib[-1] + fib[-2])52 return fib53def fib_recursive(n: int) -> list[int]:54 """55 Calculates the first n (0-indexed) Fibonacci numbers using recursion56 >>> fib_iterative(0)57 [0]58 >>> fib_iterative(1)59 [0, 1]60 >>> fib_iterative(5)61 [0, 1, 1, 2, 3, 5]62 >>> fib_iterative(10)63 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]64 >>> fib_iterative(-1)65 Traceback (most recent call last):66 ...67 Exception: n is negative68 """69 def fib_recursive_term(i: int) -> int:70 """71 Calculates the i-th (0-indexed) Fibonacci number using recursion72 """73 if i < 0:74 raise Exception("n is negative")75 if i < 2:76 return i77 return fib_recursive_term(i - 1) + fib_recursive_term(i - 2)78 if n < 0:79 raise Exception("n is negative")80 return [fib_recursive_term(i) for i in range(n + 1)]81def fib_memoization(n: int) -> list[int]:82 """83 Calculates the first n (0-indexed) Fibonacci numbers using memoization84 >>> fib_memoization(0)85 [0]86 >>> fib_memoization(1)87 [0, 1]88 >>> fib_memoization(5)89 [0, 1, 1, 2, 3, 5]90 >>> fib_memoization(10)91 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]92 >>> fib_iterative(-1)93 Traceback (most recent call last):94 ...95 Exception: n is negative96 """97 if n < 0:98 raise Exception("n is negative")99 # Cache must be outside recursuive function100 # other it will reset every time it calls itself.101 cache: dict[int, int] = {0: 0, 1: 1, 2: 1} # Prefilled cache102 def rec_fn_memoized(num: int) -> int:103 if num in cache:104 return cache[num]105 value = rec_fn_memoized(num - 1) + rec_fn_memoized(num - 2)106 cache[num] = value107 return value108 return [rec_fn_memoized(i) for i in range(n + 1)]109def fib_binet(n: int) -> list[int]:110 """111 Calculates the first n (0-indexed) Fibonacci numbers using a simplified form112 of Binet's formula:113 https://en.m.wikipedia.org/wiki/Fibonacci_number#Computation_by_rounding114 NOTE 1: this function diverges from fib_iterative at around n = 71, likely115 due to compounding floating-point arithmetic errors116 NOTE 2: this function doesn't accept n >= 1475 because it overflows117 thereafter due to the size limitations of Python floats118 >>> fib_binet(0)119 [0]120 >>> fib_binet(1)121 [0, 1]122 >>> fib_binet(5)123 [0, 1, 1, 2, 3, 5]124 >>> fib_binet(10)125 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]126 >>> fib_binet(-1)127 Traceback (most recent call last):128 ...129 Exception: n is negative130 >>> fib_binet(1475)131 Traceback (most recent call last):132 ...133 Exception: n is too large134 """135 if n < 0:136 raise Exception("n is negative")137 if n >= 1475:138 raise Exception("n is too large")139 sqrt_5 = sqrt(5)140 phi = (1 + sqrt_5) / 2141 return [round(phi**i / sqrt_5) for i in range(n + 1)]142if __name__ == "__main__":143 num = 20144 time_func(fib_iterative, num)145 time_func(fib_recursive, num)146 time_func(fib_memoization, num)...

Full Screen

Full Screen

recomb.js

Source:recomb.js Github

copy

Full Screen

...11 12 // define the standard factorial function to compare with13 fact = function(n){ return n <= 1 ? 1 : n * fact(n - 1); },14 // define the standard fibonacci function to compare with15 fib = function(n){ return n <= 1 ? 1 : fib(n - 1) + fib(n - 2); },16 17 // prepare the sequence of arguments for comparison18 seq = df.listcomp("i for(i = 0; i < 15; ++i)"),19 20 // build a set of results for our argument list using the standard factorial function21 factTable = df.map(seq, fact),22 // build a set of results for our argument list using the standard fibonacci function23 fibTable = df.map(seq, fib);24 25 tests.register("dojox.lang.tests.recomb", [26 function testFactLinrec1(t){27 var fact = df.linrec("<= 1", "1", "[n - 1]", "a * b[0]");28 t.assertEqual(df.map(seq, fact), factTable);29 },...

Full Screen

Full Screen

1029.js

Source:1029.js Github

copy

Full Screen

1/**2 * FUNC | CALLS | VALUE |3 * fib( 0) = 0 calls = 04 * fib( 1) = 0 calls = 15 * fib( 2) = 2 calls = 16 * fib( 3) = 4 calls = 27 * fib( 4) = 8 calls = 38 * fib( 5) = 14 calls = 59 * fib( 6) = 24 calls = 810 * fib( 7) = 40 calls = 1311 * fib( 8) = 66 calls = 2112 * fib( 9) = 108 calls = 3413 * fib(10) = 176 calls = 5514 */15/**16 * Call FIB function:17 * * C(n) = [ (n - 2 > 0) ? ( C(n - 2) + 1 ) : (return 0) ) ] + [ (n - 1 > 0) ? C(n - 1) + 1 : (return 0) ]18 * * F(n) = F(n - 2) + F(n - 1)19 */20const { format } = require("util")21const { readFileSync } = require("fs")22const [numLines, ...input] = readFileSync("/dev/stdin", "utf8").split("\n")23/** @typedef {{ calls: number, value: number }} countableFibProp */24/** @type { Map<number, countableFibProp> } */25const FibonacciList = new Map([26 [0, { calls: 0, value: 0 }],27 [1, { calls: 0, value: 1 }],28 [2, { calls: 2, value: 1 }]29])30function recusiveFibonacciWithCallsCounter(nth = 0) {31 nth = Math.floor(Math.max(0, nth)) // is nth leq 0? So set nth to 032 if (FibonacciList.has(nth) === false) {33 // If not included, set it34 const fibA = recusiveFibonacciWithCallsCounter(nth - 2)35 const fibB = recusiveFibonacciWithCallsCounter(nth - 1)36 FibonacciList.set(nth, {37 calls: (fibA.calls + 1) + (fibB.calls + 1),38 value: fibA.value + fibB.value39 })40 }41 return FibonacciList.get(nth)42}43function main() {44 const output = new Array(Number.parseInt(numLines, 10))45 for (let index = 0; index < output.length; index += 1) {46 const nth = Number.parseInt(input[index])47 const { calls, value } = recusiveFibonacciWithCallsCounter(nth)48 output[index] = format("fib(%d) = %d calls = %d", nth, calls, value)49 }50 console.log(output.join("\n"))51}...

Full Screen

Full Screen

RecursiveD5.py

Source:RecursiveD5.py Github

copy

Full Screen

1# Fibonacci sequence calculations23# n: 0 1 2 3 4 5 6 7 8 94# fib(n): 0 1 1 2 3 5 8 13 21 3456# A non-recursive function for calculating the nth Fibonacci number:7def fib(n):8 if n < 2:9 return n10 prev = 011 curr = 112 for i in range(2,n+1):13 new_curr = prev + curr14 prev = curr15 curr = new_curr16 return curr1718# Calculating the ratios of pairs of Fibonacci numbers -- like fib(6)/fib(5)19def CalcFibRatios(low,high):20 for i in range(low,high+1):21 print(timeit(i)/timeit(i-1))22 23# The recursive function for Fibonacci24def fib_r(n):25 if n < 2:26 return n27 return fib_r(n-1) + fib_r(n-2)2829# Timing how long it takes to calculate fib_r(n)30def timeit(n):31 import time32 start = time.time()33 fibr2(n)34 end = time.time()35 return end - start3637# Recursive Fib:38# 1 = fib(2)[2 calculation] = fib(1)[1 calculation] + fib(0)[1 calculation]39# 2 = fib(3)[3 c] = fib(2)[2 c] + fib(1)[1 c]40# 3 = fib(4)[5 c] = fib(3)[3 c] + fib(2)[2 c]41# 5 = fib(5)[8 p] = fib(4)[5 p] + fib(3)[3 c]42# So, for Recursive Fib, Fib(n) requires fib(n) calculations to occur43#44# Explicit Fib:45# 1 = fib(2)[3 c]46# 2 = fib(3)[6 c]47# 3 = fib(4)[9 c]48# 5 = fib(5)[12 c]49# So, for Explicit Fib, Fib(n) required 3n calculations5051def fibr2(n):52 return fibr2h(0, 1, 1, n)5354def fibr2h(pv, cv, i, t):55 if i == t:56 return cv57 if i - 1 == t:58 return pv59 hc = pv + cv60 hi = i + 161 hp = cv62 return fibr2h(hp, hc, hi, t) ...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run fMBT automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful