#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
