#!/usr/bin/python
import math
import time

#from src.MyNodo import MyNodo
from src.MyMapa import MyMapa


def main():
    txti = """Yo vivo en Granada. Es una ciudad pequeña y tiene monumentos muy importantes, como la Alhambra. Aquí la comida es deliciosa y son famosos el gazpacho, el rebujito o el salmorejo.

    Mi nueva casa está en una calle ancha y tiene muchos árboles. El piso de arriba de mi casa tiene tres dormitorios y un despacho para trabajar. El piso de abajo tiene una cocina muy grande, un comedor con una mesa y seis sillas, un salón con dos sofás verdes, una televisión y cortinas. Además, tiene una pequeña terraza con piscina donde puedo tomar el sol en verano.

    Me gusta mucho mi casa porque puedo invitar a mis amigos a cenar o a ver el fútbol en mi televisión. Además, cerca de mi casa hay muchas tiendas para hacer la compra: panadería, carnicería o pescadería."""


    #txti = "abcdefg"                 #Texto de entrada
    Nivel = 100           #Nivel
    TamTxtGen = 200            #Tamaño de texto generado
    txto = ""                   #Texto generado
    start_time = time.time()    #Tiempo de inicio

    #Incializamos el mapa con el nivel dado
    mapa = MyMapa(Nivel)

    #print("Texto Original ", txti)
    # Para textos de entrada pequeños, duplicamos el texto original según el nivel
    if (len(txti) < mapa.Nivel):
        aux = math.floor(mapa.Nivel/len(txti))
        print(mapa.Nivel / len(txti), aux)
        for i in range(aux):
            txti = txti + txti

    mapa.inicializarMapa(txti)

    # mapa.printLNodos(mapa.LNodos, mapa.Nivel)

    # Generamos el texto de salida a partir del texto original para los primeros caracteres
    txto = txto + txti[0:mapa.Nivel]
    TamTxtGen = TamTxtGen - mapa.Nivel

    #print(txto)
    """i = 0
    while (i < TamTxtGen):
        fin = i + mapa.Nivel
        #print(txto[i:fin])
        txto = txto + mapa.getNextChar(mapa.LNodos, txto[i:fin], mapa.Nivel)
        i = i+1"""

    for i in range(TamTxtGen):
        fin = i + mapa.Nivel
        #print(txto[i:fin])
        txto = txto + mapa.getNextChar(mapa.LNodos, txto[i:fin], mapa.Nivel)

    #print(len(txto))

    print(Nivel, len(mapa.LChar), TamTxtGen, time.time() - start_time)
    print(txto)
    #mapa.printLNodos(mapa.LNodos, mapa.Nivel)


main()
