-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathoptimal_code.py
More file actions
62 lines (56 loc) · 1.71 KB
/
optimal_code.py
File metadata and controls
62 lines (56 loc) · 1.71 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
# OPTIMAL TECHNIQUE
def check(element, string, j):
var = None
for x in range(j, len(string)):
if element == string[x]:
var = x
break
else:
pass
return var
def optimal_c(data, frames):
string = list(map(int, data.split()))
len_str = len(string)
hit = 0
frame_index = 0
memory = []
for i in range(len_str):
if frame_index < frames:
if string[i] in memory:
hit += 1
else:
memory.append(string[i])
frame_index += 1
else:
break
# print(memory)
val = 0
index = 0
for j in range(i, len_str - 1):
if string[j] in memory:
hit += 1
else:
val = 0
for frame_index in range(0, len(memory)):
var = check(memory[frame_index], string, j)
if var == None:
index = frame_index
break
elif val < var:
val = var
index = frame_index
memory[index] = string[j]
# print(memory)
miss = len(string) - hit
hit_ratio = hit / len(string)
return hit, miss, memory, hit_ratio
"""
# DRIVER CODE
string = list(map(int, input("Enter all string val::").split()))
frames = int(input("No. of Frames: "))
memory, hit = optimal(frames, string)
print('\n{:<20}{}{}'.format('Cache Memory',': ',memory))
print('{:<20}{}{}'.format('Total no. of HITS',': ', hit))
print('{:<20}{}{}'.format('Total no. of Miss',': ', len(string) - hit))
print('{:<20}{}{:.2f}'.format('HIT ratio',': ', hit/len(string)))
"""