def algoritmo_estrela_solitaria(nome, cartoletas, conteudo_csv, formacao,
                                info):
    time_convocado = []
    jogadores_por_setor = formacao.split("-")
    posicoes = [1, 2, 3, 4, 5, 6]
    num_jogadores_pos = util.get_num_jogadores_pos(formacao)
    custo_jogadores_pos = {}

    logging.debug("Length posicoes: {0}".format(len(posicoes)))
    posicao_sorteada_estrela = random.randint(1, len(posicoes) - 1)

    while num_jogadores_pos[posicao_sorteada_estrela] == 0:
        posicao_sorteada_estrela = random.randint(1, len(posicoes) - 1)

    jogador_convocado = convoca_por_posicao(cartoletas, conteudo_csv, 1,
                                            posicao_sorteada_estrela, info)[0]
    num_jogadores_pos[posicao_sorteada_estrela] -= 1

    cartoletas_estrela = jogador_convocado[info["preco"]]
    cartoletas_restantes = cartoletas - cartoletas_estrela
    logging.debug("Jogador convocado: {0}".format(jogador_convocado))
    logging.debug("Cartoletas restantes: {0}".format(cartoletas_restantes))

    cartoletas_por_jogador = cartoletas_restantes / 11.0

    for p in posicoes:
        custo_jogadores_pos[p] = num_jogadores_pos[p] * cartoletas_por_jogador
        if num_jogadores_pos[p] != 0:
            jogadores_convocados_pos = convoca_por_posicao(
                custo_jogadores_pos[p] / num_jogadores_pos[p], conteudo_csv,
                num_jogadores_pos[p], p, info)
            time_convocado.append(jogadores_convocados_pos)
        else:
            time_convocado.append([0])

    setor_jogador_estrela = time_convocado[posicao_sorteada_estrela - 1]
    logging.debug(
        "Setor do jogador estrela: {0}".format(setor_jogador_estrela))
    if len(setor_jogador_estrela) == 1 and setor_jogador_estrela[0] == 0:
        setor_jogador_estrela[0] = jogador_convocado
    else:
        setor_jogador_estrela.append(jogador_convocado)
    time_convocado[posicao_sorteada_estrela - 1] = setor_jogador_estrela

    logging.debug(
        "Time_convocado por Estrela Solitaria: {0}".format(time_convocado))

    logging.debug("Custo do time {0}".format(
        mat_cartola.get_valor_indice_acumulado_time(time_convocado, info,
                                                    "preco")))
    logging.debug("Media do time {0}".format(
        mat_cartola.get_valor_indice_acumulado_time(time_convocado, info,
                                                    "media")))

    return time_convocado
def algoritmo_estrela_solitaria(nome, cartoletas, conteudo_csv, formacao, info):
	time_convocado = []
	jogadores_por_setor = formacao.split("-")
	posicoes = [1, 2, 3, 4, 5, 6]
	num_jogadores_pos = util.get_num_jogadores_pos(formacao)
	custo_jogadores_pos = {}

	logging.debug ("Length posicoes: {0}".format(len(posicoes)))
	posicao_sorteada_estrela = random.randint(1, len(posicoes) - 1)

	while num_jogadores_pos[posicao_sorteada_estrela] == 0:
		posicao_sorteada_estrela = random.randint(1, len(posicoes) - 1)

	jogador_convocado = convoca_por_posicao (cartoletas, conteudo_csv, 1, posicao_sorteada_estrela, info)[0]
	num_jogadores_pos[posicao_sorteada_estrela] -= 1

	cartoletas_estrela = jogador_convocado[info["preco"]]
	cartoletas_restantes = cartoletas - cartoletas_estrela
	logging.debug("Jogador convocado: {0}".format(jogador_convocado))
	logging.debug("Cartoletas restantes: {0}".format(cartoletas_restantes))

	cartoletas_por_jogador = cartoletas_restantes / 11.0

	for p in posicoes:
		custo_jogadores_pos[p] = num_jogadores_pos[p] * cartoletas_por_jogador
		if num_jogadores_pos[p] != 0:
			jogadores_convocados_pos = convoca_por_posicao(custo_jogadores_pos[p] / num_jogadores_pos[p], conteudo_csv, num_jogadores_pos[p], p, info)
			time_convocado.append(jogadores_convocados_pos)
		else:
			time_convocado.append([0])
		

	setor_jogador_estrela = time_convocado[posicao_sorteada_estrela - 1]
	logging.debug("Setor do jogador estrela: {0}".format(setor_jogador_estrela))
	if len(setor_jogador_estrela) == 1 and setor_jogador_estrela[0] == 0:
		setor_jogador_estrela[0] = jogador_convocado
	else:
		setor_jogador_estrela.append(jogador_convocado)
	time_convocado[posicao_sorteada_estrela - 1] = setor_jogador_estrela
	
	logging.debug("Time_convocado por Estrela Solitaria: {0}".format(time_convocado))

	logging.debug("Custo do time {0}".format(mat_cartola.get_valor_indice_acumulado_time(time_convocado, info, "preco")))
	logging.debug("Media do time {0}".format(mat_cartola.get_valor_indice_acumulado_time(time_convocado, info, "media")))

	return time_convocado
def algoritmo_balanceado (nome, cartoletas, conteudo_csv, formacao, info):
	cartoletas_por_jogador = cartoletas / (11.0 + 1.0)
	# print ("Voce pode gastar ate {0} por jogador.".format(cartoletas_por_jogador))
	time_convocado = []
	
	# Goleiro, Laterais, Zagueiros, Meias, Atacantes, Tecnico
	posicoes = [1, 2, 3, 4, 5, 6]	
	num_jogadores_pos = util.get_num_jogadores_pos(formacao)
	custo_jogadores_pos = {}
	
	for p in posicoes:
		custo_jogadores_pos[p] = num_jogadores_pos[p] * cartoletas_por_jogador
		if num_jogadores_pos[p] != 0:
			jogadores_convocados_pos = convoca_por_posicao(custo_jogadores_pos[p] / num_jogadores_pos[p], conteudo_csv, num_jogadores_pos[p], p, info)
			time_convocado.append(jogadores_convocados_pos)
		else:
			time_convocado.append([0])
	return time_convocado
def algoritmo_aleatorio (nome, cartoletas, conteudo_csv, formacao, info):
	cartoletas_por_jogador = cartoletas / (11.0 + 1.0)
	time_convocado = []
	jogadores_por_setor = formacao.split("-")
	# Goleiro, Laterais, Zagueiros, Meias, Atacantes, Tecnico
	posicoes = [1, 2, 3, 4, 5, 6]
	num_jogadores_pos = util.get_num_jogadores_pos(formacao)
	custo_jogadores_pos = {}

	for p in posicoes:
		custo_jogadores_pos[p] = num_jogadores_pos[p] * cartoletas_por_jogador
		if num_jogadores_pos[p] != 0:
			jogadores_convocados_pos = convoca_aleatoriamente_por_posicao (custo_jogadores_pos[p] / num_jogadores_pos[p], conteudo_csv, num_jogadores_pos[p], p, info)
			time_convocado.append(jogadores_convocados_pos)
		else:
			time_convocado.append([0])

	return time_convocado
def algoritmo_balanceado(nome, cartoletas, conteudo_csv, formacao, info):
    cartoletas_por_jogador = cartoletas / (11.0 + 1.0)
    # print ("Voce pode gastar ate {0} por jogador.".format(cartoletas_por_jogador))
    time_convocado = []

    # Goleiro, Laterais, Zagueiros, Meias, Atacantes, Tecnico
    posicoes = [1, 2, 3, 4, 5, 6]
    num_jogadores_pos = util.get_num_jogadores_pos(formacao)
    custo_jogadores_pos = {}

    for p in posicoes:
        custo_jogadores_pos[p] = num_jogadores_pos[p] * cartoletas_por_jogador
        if num_jogadores_pos[p] != 0:
            jogadores_convocados_pos = convoca_por_posicao(
                custo_jogadores_pos[p] / num_jogadores_pos[p], conteudo_csv,
                num_jogadores_pos[p], p, info)
            time_convocado.append(jogadores_convocados_pos)
        else:
            time_convocado.append([0])
    return time_convocado
def algoritmo_aleatorio(nome, cartoletas, conteudo_csv, formacao, info):
    cartoletas_por_jogador = cartoletas / (11.0 + 1.0)
    time_convocado = []
    jogadores_por_setor = formacao.split("-")
    # Goleiro, Laterais, Zagueiros, Meias, Atacantes, Tecnico
    posicoes = [1, 2, 3, 4, 5, 6]
    num_jogadores_pos = util.get_num_jogadores_pos(formacao)
    custo_jogadores_pos = {}

    for p in posicoes:
        custo_jogadores_pos[p] = num_jogadores_pos[p] * cartoletas_por_jogador
        if num_jogadores_pos[p] != 0:
            jogadores_convocados_pos = convoca_aleatoriamente_por_posicao(
                custo_jogadores_pos[p] / num_jogadores_pos[p], conteudo_csv,
                num_jogadores_pos[p], p, info)
            time_convocado.append(jogadores_convocados_pos)
        else:
            time_convocado.append([0])

    return time_convocado