-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpromotion.py
More file actions
73 lines (59 loc) · 2.7 KB
/
Copy pathpromotion.py
File metadata and controls
73 lines (59 loc) · 2.7 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
'''
Given a list "code" (code: List[List]) where code elements represents
group of strings (code[n]: List[str]) and a list "cart" (cart: List[str]).
Write a function that returns 1 if all groups of "code" are inside "cart"
maintaning its order, otherwise return 0.
Note:
- "code" group items can have the string "anything" that can match to any string in cart.
- "anything" needs to match to any string, but its position cannot be skipped.
- if "code" are empty, the return should be 1.
'''
def calculate_winner(code, cart):
"""
>>> code = [["apple", "apple"], ["banana", "anything", "banana"]]
>>> cart = ["orange", "apple", "apple", "banana", "orange", "banana"]
>>> calculate_winner(code, cart)
1
>>> code = [["apple", "apple"], ["banana", "anything", "banana"]]
>>> cart = ["banana", "orange", "banana", "apple", "apple"]
>>> calculate_winner(code, cart)
0
>>> code = [["apple", "apple"], ["apple", "apple", "banana"]]
>>> cart = ["apple", "apple", "apple", "banana"]
>>> calculate_winner(code, cart)
0
>>> code = []
>>> cart = ["orange", "apple", "apple", "banana", "orange", "banana"]
>>> calculate_winner(code, cart)
1
"""
code_index = 0
cart_index = 0
while code_index < len(code) and cart_index < len(cart):
group_index = 0
while group_index < len(code[code_index]) and cart_index < len(cart):
if code[code_index][group_index] == cart[cart_index] or code[code_index][group_index] == 'anything':
group_index += 1
cart_index += 1
else:
group_index = 0
cart_index += 1
if cart_index >= len(cart):
return 0
code_index += 1
if code_index >= len(code):
return 1
return 0
if __name__ == "__main__":
code = [["apple", "apple"], ["banana", "anything", "banana"]]
cart = ["orange", "apple", "apple", "banana", "orange", "banana"]
print(f'code: {code} \ncart: {cart} \nresult: {calculate_winner(code, cart)}\n')
code = [["apple", "apple"], ["banana", "anything", "banana"]]
cart = ["banana", "orange", "banana", "apple", "apple"]
print(f'code: {code} \ncart: {cart} \nresult: {calculate_winner(code, cart)}\n')
code = [["apple", "apple"], ["apple", "apple", "banana"]]
cart = ["apple", "apple", "apple", "banana"]
print(f'code: {code} \ncart: {cart} \nresult: {calculate_winner(code, cart)}\n')
code = []
cart = ["orange", "apple", "apple", "banana", "orange", "banana"]
print(f'code: {code} \ncart: {cart} \nresult: {calculate_winner(code, cart)}\n')