Seletiva = []
class Saco:
def __init__(self, valor):
[Link] = valor
[Link] = None
[Link] = None
class CaminhaoDeLixo:
def __init__(self):
[Link] = None
[Link] = None
def inserir_inicio(self, valor):
novo_no = Saco(valor)
novo_no.proximo = [Link]
if [Link]:
[Link] = novo_no
else:
[Link] = novo_no
[Link] = novo_no
def inserir_meio(self, posicao, valor):
if posicao == 0:
self.inserir_inicio(valor)
return
novo_no = Saco(valor)
atual = [Link]
for i in range(posicao - 1):
if atual is None:
raise Exception("Posição inválida")
atual = [Link]
novo_no.proximo = [Link]
novo_no.anterior = atual
if [Link]:
[Link] = novo_no
else:
[Link] = novo_no
[Link] = novo_no
def inserir_final(self, valor):
novo_no = Saco(valor)
if not [Link]:
[Link] = novo_no
[Link] = novo_no
return
[Link] = novo_no
novo_no.anterior = [Link]
[Link] = novo_no
def deletar_inicio(self):
if not [Link]:
return
if [Link]:
[Link] = None
else:
[Link] = None
[Link] = [Link]
def deletar_meio(self, posicao):
if posicao == 0:
self.deletar_inicio()
return
atual = [Link]
for i in range(posicao):
if atual is None:
raise Exception("Posição inválida")
atual = [Link]
if [Link]:
[Link] = [Link]
if [Link]:
[Link] = [Link]
else:
[Link] = [Link]
def deletar_final(self):
if not [Link]:
return
if not [Link]:
[Link] = None
[Link] = None
return
[Link] = None
[Link] = [Link]
def buscar(self, valor):
atual = [Link]
while atual:
if [Link] == valor:
return True
atual = [Link]
return False
def travessia(self):
atual = [Link]
while atual:
print([Link])
atual = [Link]
def SepararLixo(self):
atual = [Link]
while atual:
[Link]([Link])
atual = [Link]
class LixosPares:
def __init__(self):
[Link] = None
[Link] = None
def JogaPar(self, valor):
novo_no = Saco(valor)
if not [Link]:
[Link] = novo_no
[Link] = novo_no
return
[Link] = novo_no
novo_no.anterior = [Link]
[Link] = novo_no
def travessia(self):
atual = [Link]
while atual:
print([Link])
atual = [Link]
def buscar(self, valor):
atual = [Link]
while atual:
if [Link] == valor:
return True
atual = [Link]
return False
class LixosImpares:
def __init__(self):
[Link] = None
[Link] = None
def JogaImpar(self, valor):
novo_no = Saco(valor)
if not [Link]:
[Link] = novo_no
[Link] = novo_no
return
[Link] = novo_no
novo_no.anterior = [Link]
[Link] = novo_no
def travessia(self):
atual = [Link]
while atual:
print([Link])
atual = [Link]
def buscar(self, valor):
atual = [Link]
while atual:
if [Link] == valor:
return True
atual = [Link]
return False
class LixosPrimos:
def __init__(self):
[Link] = None
[Link] = None
def JogaPrimo(self, valor):
novo_no = Saco(valor)
if not [Link]:
[Link] = novo_no
[Link] = novo_no
return
[Link] = novo_no
novo_no.anterior = [Link]
[Link] = novo_no
def travessia(self):
atual = [Link]
while atual:
print([Link])
atual = [Link]
def buscar(self, valor):
atual = [Link]
while atual:
if [Link] == valor:
return True
atual = [Link]
return False
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
while i < len(lefthalf):
lis[k]=lefthalf[i]
i=i+1
k=k+1
while j < len(righthalf):
lis[k]=righthalf[j]
j=j+1
k=k+1
return lis
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):
[Link](i)
if i % 2 == 0:
[Link](i)
if i % 2 != 0:
[Link](i)
print("Olá, esse programa foi realizado para separar o seu lixo.")
print("Para inserir o seu lixo basta colocar o seu número e nós iremos cuidar da
organização para você, quando você terminar de inserir basta digitar FIM.")
lixoinput = input()
while lixoinput != "FIM":
[Link](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()
while retirainput != "FIM":
if int(retirainput) == 0:
Caminhao.deletar_inicio()
[Link](0)
elif int(retirainput) == (len(Seletiva)-1) :
Caminhao.deletar_final()
[Link](int(retirainput))
else:
Caminhao.deletar_meio(int(retirainput))
[Link](int(retirainput))
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":
[Link]()
elif BT == "Pap":
[Link]()
elif BT == "Pla":
[Link]()
else:
if [Link](int(BT)):
print("O lixo", BT, "esta no lixo organico!")
elif [Link](int(BT)):
print("O lixo", BT, "esta no lixo de papel!")
elif [Link](int(BT)):
print("O lixo", BT, "esta no lixo de plastico!")
else:
print("O lixo", BT, "não esta em nenhuma lixeira. ;-;")
BT = input()