-
Notifications
You must be signed in to change notification settings - Fork 0
/
luanaFunctions.py
126 lines (89 loc) · 4.04 KB
/
luanaFunctions.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
119
120
121
122
123
124
125
126
# c) Exiba os caminhos percorridos por todos os robôs que entraram no terreno de busca, ordenados crescentemente pela distância total percorrida
'''
[(id, instanteAreaAfetada, ponto, vitimasNaVisibilidade)...]
'''
'''
Letra C
Exiba os caminhos percorridos por todos os robôs que entraram no terreno de busca,
ordenados crescentemente pela distância total percorrida;
Preciso de:
distancia de todos os robos com o id
lista com todos os ids & lista completa
retira repetidos da lista com ids
funcao recursiva
'''
'''
FUNCAO AUXILIAR PARAMETRICA DE QUESTAO 'C':
OBJETIVO: Funcao que retorna a distancia e as informacoes de um robo especifico
INPUTS: Id do robo e a lista geral
OUTPUT: A distancia e uma lista com todas as ocorrencias do robo
'''
def retorna_dist_pontos(ID_robo_alvo, lista_geral):
dist = distPercorridaRobo(ID_robo_alvo, lista_geral)
return [gera_lista_robo_alvo(ID_robo_alvo, lista_geral)]
def organiza_saida(ID_robo_alvo, lista_geral, dist):
if lista_geral == []: return []
else: return (get_ID(lista_geral), dist, [get_Locate(lista_geral[0])] + organiza_saida(ID_robo_alvo, lista_geral[1:], dist))
'''
FUNCAO AUXILIAR PARAMETRICA DE QUESTAO 'C':
OBJETIVO: Funcao que ordena
INPUTS: Id do robo e a lista geral
OUTPUT: A lista das distâncias ordenadas
'''
def jordana_sort(lista):
def ajuda_jordana(lista1, lista2):
if not lista1: return lista2
elif not lista2: return lista1
elif lista1[0] <= lista2[0]: return [lista1[0]] + ajuda_jordana(lista1[1:], lista2)
else: return [lista2[0]] + ajuda_jordana(lista1, lista2[1:])
if len(lista) <= 1: return lista
else: return ajuda_jordana(jordana_sort(lista[:len(lista)//2]),jordana_sort(lista[len(lista)//2:]))
# id = lista[0][0]
lista_aa = [('robo3', 1, (7, 7), 3), ('robo3', 3, (5, 4), 3), ('robo3', 4, (8, 1), 4), ('robo3', 8, (7, 2), 3)]
lista_teste = [('robo3', 1, (7, 7), 3), ('robo4', 2, (7, 5), 2), ('robo3', 3, (5, 4), 3), ('robo3', 4, (8, 1), 4), ('robo4', 5, (4, 5), 3), ('robo5', 6, (7, 7), 4), ('robo5', 7, (6, 4), 5), ('robo3', 8, (7, 2), 3), ('robo5', 9, (6, 4), 4)]
# print(retorna_dist_pontos('robo3', lista_teste))
'''
FUNCAO AUXILIAR PARAMETRICA DE QUESTAO 'C':
OBJETIVO: Funcao que retorna todos os pontos de um robo especifico
INPUTS: Lista com as informacoes de um robo especifico
OUTPUT: A distancia e uma lista com todas as ocorrencias do robo
'''
def get_all_Locates(lista):
if lista == []: return []
else: return [get_Locate(lista)] + get_all_Locates(lista[1:])
'''
FUNCAO AUXILIAR PARAMETRICA DE QUESTAO 'C':
OBJETIVO: Funcao que retorna organiza o formato de saida de um robo
INPUTS: Id do robo e a lista geral
OUTPUT: Id do robo, a distancia e a lista de pontos
'''
def organiza_inf_ID(ID_robo_alvo, lista_geral):
dist = distPercorridaRobo(ID_robo_alvo, lista_geral)
lista_pontos = get_all_Locates(gera_lista_robo_alvo(ID_robo_alvo, lista_geral))
return (ID_robo_alvo, dist, lista_pontos)
'''
FUNCAO AUXILIAR PARAMETRICA DE QUESTAO 'C':
OBJETIVO: Funcao que retorna organiza o formato de saida geral
INPUTS: Lista de IDs e a lista geral
OUTPUT: Id do robo, a distancia e a lista de pontos de cada robo
'''
def inf_All_IDs(lista_IDs, lista_geral):
if lista_IDs == []: return []
else: return [organiza_inf_ID(lista_IDs[0], lista_geral)] + inf_All_IDs(lista_IDs[1:], lista_geral)
'''
FUNCAO PRINCIPAL DA QUESTAO A:
OBJETIVO: Ordena de forma crescente os robos e printa os pontos
INPUTS: Uma lista geral
OUTPUT: Retorna uma lista de tuplas em ordem crescente pelo ID.
'''
def aa(lista_geral):
lista_IDs = retira_repetidos(gera_lista_robo(lista_geral))
return inf_All_IDs(lista_IDs, lista_geral)
def jordana_sort(lista):
def ajuda_jordana(n, lista):
if lista == []: return [n]
elif n[1] > lista[0][1]: return [lista[0]] + ajuda_jordana(n, lista[1:])
else: return [n] + lista
if lista == []: return []
else: return ajuda_jordana(lista[0], jordana_sort(lista[1:]))
print(jordana_sort([('luana', 10),('icaro', 7),('ana', 5),('cecilia', 9)]))