-
Notifications
You must be signed in to change notification settings - Fork 0
/
LOJ-1113.py
94 lines (73 loc) · 2.67 KB
/
LOJ-1113.py
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
class Browser:
"""
Responsible for simulating the browser behavior.
Implement the methods as described in the problem.
"""
# Class variable to keep the default page loaded in the browser
DEFAULT_PAGE = 'http://www.lightoj.com/'
def __init__(self):
"""
Initialize your data structures. If needed, keep the DEFAULT page as the initial page.
"""
# Initialize your data structures
self.backstack,self.frontstack=[],[]
self.current=self.DEFAULT_PAGE
def back(self) -> str:
"""
If the backward stack is empty, return 'Ignored'.
Otherwise, push the current page on the top of the forward stack. Also
Pop the page from the top of the backward stack, making it the new current page.
return the new current page.
"""
# Implement the above logic
if self.backstack==[]:
return 'Ignored'
self.frontstack.append(self.current)
self.current=self.backstack.pop()
return self.current
def forward(self) -> str:
"""
If the forward stack is empty, return 'Ignored'.
Otherwise, push the current page on the top of the backward stack. Also
Pop the page from the top of the forward stack, making it the new current page.
return the new current page.
"""
# Implement the above logic
if self.frontstack==[]:
return 'Ignored'
self.backstack.append(self.current)
self.current=self.frontstack.pop()
return self.current
def visit(self, url: str) -> str:
"""
Push the current page on the top of the backward stack, and
make the 'url' specified the new current page.
The forward stack is also emptied.
return the new current page.
"""
# Implement the above logic
self.backstack.append(self.current)
self.current=url
self.frontstack.clear()
return url
def main():
"""
Takes care of input and output.
You don't have to make any changes here.
"""
cases = int(input())
for caseno in range(1, cases + 1):
print('Case {}:'.format(caseno))
browser = Browser()
while True:
command = input()
if command == 'QUIT':
break
if command == 'BACK':
print(browser.back())
elif command == 'FORWARD':
print(browser.forward())
else: # VISIT url
_, url = command.split(' ', 2)
print(browser.visit(url))
main()