#questao 8 def rotacione_caso_simples(s,i): return s[-i:] + s[:-i] #questao 9 def rotacione(s,i): """Rotaciona s de i posições à esquerda; na verdade como i pode ter qualquer tamanho, rotacionamos s de (i % len(s)) posições (cada rotação de len(s) posições é equivalente a não fazer nada, e sobram i%len(s) posições)""" tamanho_da_string = len(s) posicoes_a_rotacionar = i % tamanho_da_string resultado = rotacione_caso_simples(s,posicoes_a_rotacionar) return resultado #questao 11 def colisao(ret1x1,ret1y1,ret1x2,ret1y2,ret2x1,ret2y1,ret2x2,ret2y2): """Testa se os retangulos paralelos aos eixos com coordenadas dadas se colidem ou não. Entradas: 8 ints Saída: bool""" #Comentário: é melhor detectar não-colisão! são 4 casos: #lado dir. de ret1 à esq. do lado esq. de ret2 #ret2 à esquerda de ret1 #ret1 abaixo de ret2 #ret2 abaixo de ret1 if max(ret1x1,ret1x2) < min(ret2x1,ret2x2) or max(ret2x1,ret2x2) < min(ret1x1,ret1x2) or max(ret1y1,ret1y2) < min(ret2y1,ret2y2) or max(ret2y1,ret2y2) < min(ret1y1,ret1y2): return False else: return True