Escolar Documentos
Profissional Documentos
Cultura Documentos
class Saco:
def __init__(self, valor):
self.valor = valor
self.proximo = None
self.anterior = None
class CaminhaoDeLixo:
def __init__(self):
self.cabeca = None
self.cauda = None
novo_no = Saco(valor)
atual = self.cabeca
for i in range(posicao - 1):
if atual is None:
raise Exception("Posição inválida")
atual = atual.proximo
novo_no.proximo = atual.proximo
novo_no.anterior = atual
if atual.proximo:
atual.proximo.anterior = novo_no
else:
self.cauda = novo_no
atual.proximo = novo_no
def deletar_inicio(self):
if not self.cabeca:
return
if self.cabeca.proximo:
self.cabeca.proximo.anterior = None
else:
self.cauda = None
self.cabeca = self.cabeca.proximo
def deletar_meio(self, posicao):
if posicao == 0:
self.deletar_inicio()
return
atual = self.cabeca
for i in range(posicao):
if atual is None:
raise Exception("Posição inválida")
atual = atual.proximo
if atual.anterior:
atual.anterior.proximo = atual.proximo
if atual.proximo:
atual.proximo.anterior = atual.anterior
else:
self.cauda = atual.anterior
def deletar_final(self):
if not self.cabeca:
return
if not self.cabeca.proximo:
self.cabeca = None
self.cauda = None
return
self.cauda.anterior.proximo = None
self.cauda = self.cauda.anterior
def travessia(self):
atual = self.cabeca
while atual:
print(atual.valor)
atual = atual.proximo
def SepararLixo(self):
atual = self.cabeca
while atual:
Seletiva.append(atual.valor)
atual = atual.proximo
class LixosPares:
def __init__(self):
self.cabeca = None
self.cauda = None
def travessia(self):
atual = self.cabeca
while atual:
print(atual.valor)
atual = atual.proximo
class LixosImpares:
def __init__(self):
self.cabeca = None
self.cauda = None
def travessia(self):
atual = self.cabeca
while atual:
print(atual.valor)
atual = atual.proximo
class LixosPrimos:
def __init__(self):
self.cabeca = None
self.cauda = None
def travessia(self):
atual = self.cabeca
while atual:
print(atual.valor)
atual = atual.proximo
def mergeSort(lis):
if len(lis)>1:
mid = len(lis)//2
lefthalf = lis[:mid]
righthalf = lis[mid:]
mergeSort(lefthalf)
mergeSort(righthalf)
i=0
j=0
k=0
while i < len(lefthalf) and j < len(righthalf):
if lefthalf[i] < righthalf[j]:
lis[k]=lefthalf[i]
i=i+1
else:
lis[k]=righthalf[j]
j=j+1
k=k+1
def TestePrimo(num):
if num <= 1:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
Caminhao = CaminhaoDeLixo()
LixoPar = LixosPares()
LixoImpar = LixosImpares()
LixoPrimo = LixosPrimos()
def Separação():
for i in Seletiva:
if TestePrimo(i):
LixoPrimo.JogaPrimo(i)
if i % 2 == 0:
LixoPar.JogaPar(i)
if i % 2 != 0:
LixoImpar.JogaImpar(i)
Seletiva.append(int(lixoinput))
lixoinput = input()
Seletiva = mergeSort(Seletiva)
for i in Seletiva:
Caminhao.inserir_final(i)
print("Agora você poderá remover o lixo caso algum erro tenha sido cometido durante
a inserção, quando acabar coloque FIM.")
print("Para você retirar um valor coloque a posição dele. Obs: as posições podem
mudar quando você remover algum valor. E não tente remover algo que você não
colocou.")
print(*Seletiva)
retirainput = input()
print(*Seletiva)
retirainput = input()
Separação()
print("Agora todo o lixo que você jogou se encontra separado e em seu devido
lugar.")
print("Para ver em qual lixeira seu lixo foi posicionado basta digitar:")
print("Org: lixos orgânicos (pares)")
print("Pap: papéis (ímpares)")
print("Pla: plásticos (primos)")
print("Se quiser buscar um lixo específico: digite o número do lixo que almeja
encontrar a localização.")
print("Para encerrar o programa digite FIM.")
BT = input()
while BT != 'FIM':
if BT == "Org":
LixoPar.travessia()
elif BT == "Pap":
LixoImpar.travessia()
elif BT == "Pla":
LixoPrimo.travessia()
else:
if LixoPar.buscar(int(BT)):
print("O lixo", BT, "esta no lixo organico!")
elif LixoImpar.buscar(int(BT)):
print("O lixo", BT, "esta no lixo de papel!")
elif LixoPrimo.buscar(int(BT)):
print("O lixo", BT, "esta no lixo de plastico!")
else:
print("O lixo", BT, "não esta em nenhuma lixeira. ;-;")
BT = input()