-
Notifications
You must be signed in to change notification settings - Fork 0
/
lgis.py
119 lines (87 loc) · 3.38 KB
/
lgis.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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# Given: A positive integer n≤10000 followed by a permutation π of length n.
# Return: A longest increasing subsequence of π, followed by a longest decreasing subsequence of π.
# example: input
# 5
# 5 1 4 2 3
# output:
# 1 2 3
# 5 4 2
def str_to_list(inp: str) -> list:
string_elements = inp.split(" ")
output = []
for i in string_elements:
output.append(int(i))
return output
def longest(inp: list[int]):
# did this wrong bc they don't need to be adjascent
output = []
# for sequence_length in range(len(inp)):
# for number_index in range(len(inp)):
# pass
# start with 1 length check
sequence_length = 3
for number_index in range(len(inp) - sequence_length + 1):
candidate = inp[number_index: number_index + sequence_length]
print(candidate)
if increasing(candidate) and len(candidate) > len(output):
output = candidate
return output
def increasing(inp: list[int]) -> bool:
for num in range(len(inp) - 1):
if inp[num] >= inp[num + 1]:
return False
return True
def att2(ls: list):
longest_increasing = []
longest_decreasing = []
# set first element. end up doing this in loop
current_start_index = 0
longest_increasing.append(ls[current_start_index])
longest_decreasing.append(ls[current_start_index])
for i in range(current_start_index, len(ls)):
if ls[i] > longest_increasing[-1]:
longest_increasing.append(ls[i])
if ls[i] < longest_decreasing[-1]:
longest_decreasing.append(ls[i])
return longest_decreasing, longest_decreasing
def att3(ls: list):
longest_increasing = []
longest_decreasing = []
# set first element. end up doing this in loop
current_start_index = 0
# longest_increasing.append(ls[current_start_index])
# longest_decreasing.append(ls[current_start_index])
ls_increasing_copy = ls[:]
ls_decreasing_copy = ls[:]
# for i in range(current_start_index, len(ls)):
# if len(ls_increasing_copy) > 1:
# # print(ls_increasing_copy)
# max_index = ls_increasing_copy.index(max(ls_increasing_copy))
# p = ls_increasing_copy.pop(max_index)
# print(p)
# longest_increasing.append(p)
i = current_start_index
while i < len(ls):
if len(ls_increasing_copy) > 1:
# print(ls_increasing_copy)
max_index = ls_increasing_copy.index(max(ls_increasing_copy))
p = ls_increasing_copy.pop(max_index)
ls_increasing_copy = ls_increasing_copy[max_index:]
print(ls_increasing_copy)
# print(p)
longest_increasing.append(p)
i = max_index
print(f"i = {i}, max index = {max_index}, lscopy = {ls_increasing_copy}")
if len(ls_decreasing_copy) > 1:
min_index = ls_decreasing_copy.index(min(ls_decreasing_copy))
p = ls_increasing_copy.pop(min_index)
ls_decreasing_copy = ls_decreasing_copy[min_index:]
longest_decreasing.append(p)
i += 1
return longest_increasing
# 6474276001
# go to walk in clinic. buy from pharmacy and then go to walk in clinic and have them send it to them for records
# print(str_to_list("5 1 4 2 3"))
sample_input = "5 1 4 2 3"
# print(longest(str_to_list(sample_input)))
print(att3(str_to_list(sample_input)))