-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path3
More file actions
95 lines (81 loc) · 2.49 KB
/
3
File metadata and controls
95 lines (81 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import random
import time
# random guess (between updated x and y)
def guess_rand(x, y, num):
run = True
counter = 0
while run is True:
guess = random.randint(x, y)
counter += 1
if guess > num:
y = guess-1
guess = random.randint(x, y)
elif guess < num:
x = guess+1
guess = random.randint(x, y)
elif guess == num:
run = False
return counter
# binary guess (middle between x and y)
def guess_binary(x, y, num):
counter = 0
run = True
while run is True:
guess = int((x + y) / 2)
counter += 1
if guess < num:
x = guess+1
elif guess > num:
y = guess-1
elif guess == num:
run = False
return counter
# guess binary recursive
def binary_recursive_search(x, y, num, counter):
guess = int((x + y) / 2)
counter += 1
if guess < num:
x = guess+1
binary_recursive_search(x, y, num, counter)
elif guess > num:
y = guess-1
binary_recursive_search(x, y, num, counter)
if guess == num:
guesses_bin_rec.append(counter)
numbers_range = 1000 # range of numbers to guess from
repetitions = 100 # repeat
# list of numbers to guess
num_list = []
for i in range(int(repetitions)):
num = random.randint(0, numbers_range)
num_list.append(num)
# random guess loop
guesses_rand = []
start = time.time()
for i in range(int(repetitions)):
guesses_rand.append(guess_rand(0, numbers_range, num_list[i]))
average_guesses_rand = float(sum(guesses_rand) / len(guesses_rand))
end = time.time()
time_elapsed = end - start
print('Average guesses random search:', average_guesses_rand)
print('Time elapsed:', time_elapsed)
# binary guess loop
guesses_binary = []
start = time.time()
for i in range(int(repetitions)):
guesses_binary.append(guess_binary(0, numbers_range, num_list[i]))
average_guesses_binary = float(sum(guesses_binary) / len(guesses_binary))
end = time.time()
time_elapsed = end - start
print('Average guesses binary search:', average_guesses_binary)
print('Time elapsed:', time_elapsed)
# binary recursive guess loop
guesses_bin_rec = []
start = time.time()
for i in range(int(repetitions)):
binary_recursive_search(0, numbers_range, num_list[i], 0)
avrg_bin_rec = float(sum(guesses_bin_rec) / len(guesses_bin_rec))
end = time.time()
time_elapsed = end - start
print('Average guesses binary recursive search:', avrg_bin_rec)
print('Time elapsed:', time_elapsed)