-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
78 lines (69 loc) · 2.75 KB
/
main.py
File metadata and controls
78 lines (69 loc) · 2.75 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
from argparse import ArgumentParser
def main():
arg = option() #arg.length
#要素の配列、HIT回数の配列、更新確認の配列を定義
list = [""] * int(arg.length)
count = [0] * int(arg.length)
update = [0] * int(arg.length)
loop_count = 0
hit = 0
path = 'sample1.txt'
f = open(path, "r")
with open('./sample4.txt') as f:
#insert is sample1.txt ~ sample4.txt
for line in f:
num1_count = 0 #for内部でのループ回数の定義
tmp = 0
insert = line.replace('\n' , '')
for i in range(int(arg.length)):
tmp = list[num1_count]
if str(tmp) == "":
#listへの入力
#countの上書き
count[num1_count] = int(count[num1_count]) + 1
#updateの上書き
update[num1_count] = 0
#listの上書き
list[num1_count] = insert
break
elif str(tmp) == str(insert):
#list一致時のカウント
num2_count = num1_count #更新確認のループ
#breakがはしるので、そのためのupdateの例外処理
for j in range(int(arg.length) - num1_count):
update[num2_count] = int(update[num2_count]) + 1
num2_count = num2_count + 1
#countの上書き
count[num1_count] = int(count[num1_count]) + 1
update[num1_count] = 0
hit = hit + 1
break
elif str(tmp) not in "" and "" not in list and insert not in list:
#listの上書き
tmp = count.index(min(count))
list[tmp] = insert
update[tmp] = 0
num3_count = 0
for j in range(int(arg.length) - num1_count):
update[num3_count] = int(update[num3_count]) + 1
num3_count = num3_count + 1
break
else:
#ループの処理
#updateの上書き
update[num1_count] = int(update[num1_count]) + 1
num1_count = num1_count + 1
print(insert, "->", list)
loop_count = loop_count + 1
print("Hit率は", hit/loop_count, "です。")
#コマンドライン引数の定義
def option():
argument = ArgumentParser()
argument.add_argument(
'-l', '--length', type=int,
required=True,
help='Change cache capacity'
)
return argument.parse_args()
if __name__ == "__main__":
main()