コード例 #1
0
 def index(self):
     miGenerador = Generador()
     pagina = ""
     template = Template()
     pagina = template.TEMPLATE.replace("[1]",
                                        miGenerador.generarTab("Destroyer"))
     pagina = pagina.replace("[2]",
                             miGenerador.generarTitulo("h1", "Game Score"))
     pagina = pagina.replace("[3]", miGenerador.generarTabla())
     return pagina
コード例 #2
0
def main():

    try:
        parser = argparse.ArgumentParser()

        parser.add_argument("min",
                            help="Longitud mínima de combinaciones",
                            type=enteroValido)
        parser.add_argument("max",
                            help="Longitud máxima de combinaciones",
                            type=enteroValido)

        parser.add_argument("-p",
                            "--palabras",
                            required=True,
                            help="Lista de cadenas de entrada",
                            type=lambda x: archivoValido(parser, x))
        parser.add_argument("-d",
                            "--destino",
                            help="Directorio del diccionario generado",
                            default="diccionario.txt")

        args = parser.parse_args()

        if args.min > args.max:
            raise argparse.ArgumentTypeError(
                "valor mínimo %i y máximo %i no válidos" %
                (args.min, args.max))

        generador = Generador(args.palabras)
        print("Datos cargados del fichero: " + args.palabras)

        numeroCombinaciones = generador.calcularNumeroCombinaciones(
            args.min, args.max)
        print("Número de combinaciones: " + str(numeroCombinaciones) + "\n")

        generador.generarDiccionario(args.min, args.max, args.destino)
        print("Diccionario generado: " + args.destino)

    except argparse.ArgumentTypeError as ate:
        print(ate)

    except Exception as e:
        print(e)
コード例 #3
0
    def __init__(self, rutaVector, semilla):

        self.rutaVector = rutaVector

        self.imagenPIL = None
        self.tipo = None
        self.modo = None
        self.pixelesVector = None

        self.formatosSoportados = ["PNG", "TIFF", "TIF", "BMP", "ICO"]
        self.modosSoportados = ["L", "RGB", "RGBA"]

        self.utilidad = Utilidad()
        self.__semilla = semilla
        self.__generador = Generador(self.__semilla)

        self.__analizarImagen()

        self._ruido = False
コード例 #4
0
    def __init__(self):
        """
        Constructora per defecte
        """
        self.generador = Generador()
        self.area_espera1 = 0
        self.area_espera2 = 0
        self.area_espera3 = 0
        self.agrupador1 = Agrupador(1)
        self.traza.append(self.agrupador1.presentacio())
        self.agrupador2 = Agrupador(2)
        self.traza.append(self.agrupador2.presentacio())
        self.agrupador3 = Agrupador(3)
        self.traza.append(self.agrupador3.presentacio())
        self.traza.append("")
        self.esdevenimentsPendents = []
        self.currentTime = 0
        self.cnt_capses = [0, 0, 0]
        self.mitjana_temps_omplir_capsa = [0.0, 0.0, 0.0]
        self.temps_inici_capsa = [0, 0, 0]

        self.inicialitzaLlistaEsdeveniments()
コード例 #5
0
def main():

    # Intervalo de tiempo en el que vamos a medir
    tiempo_inicial = datetime.datetime(2016, 3, 5, 1)
    tiempo_final = datetime.datetime(2016, 3, 5, 10)
    import math
    # parametros del generador de senales
    amplitud = 0.2
    fase = 1
    frecuencia = 20 * math.pi

    #Construir un nuevo genrador de senales

    Gen = Generador(amplitud, fase, frecuencia)

    #Construir un detector

    detector = Detector()

    #construir un nuevo radar

    radar = Radar(Gen, detector)

    # parametros para un blanco

    amplitud_de_frecuencia_del_blanco = amplitud + 100
    tiempo_inicial_b = datetime.datetime(2016, 3, 5, 2)
    tiempo_final_b = datetime.datetime(2016, 3, 5, 6)

    # Construir un nuevo blanco

    blanco = Blanco(amplitud_de_frecuencia_del_blanco, tiempo_inicial_b,
                    tiempo_final_b)

    lista_blancos = [blanco]

    #Construir un medio

    medio = Medio(lista_blancos)

    #Hago funcionar el radar

    radar.detectar(medio, tiempo_inicial, tiempo_final)
    radar.graficar(medio, tiempo_inicial, tiempo_final)
コード例 #6
0
class goodAndDevil(object):
    @cherrypy.expose
    def index(self):
		html = '''
	<!DOCTYPE html>
	<html lang="en">
	<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">
    <title>G&D</title>
    <link href="static/css/bootstrap.min.css" rel="stylesheet">
    <link href="static/css/stylish-portfolio.css" rel="stylesheet">
    <link href="static/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
    <link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">
	</head>

	<body>
    <a id="menu-toggle" href="#" class="btn btn-dark btn-lg toggle"><i class="fa fa-bars"></i></a>
    <nav id="sidebar-wrapper">
        <ul class="sidebar-nav">
            <a id="menu-close" href="#" class="btn btn-light btn-lg pull-right toggle"><i class="fa fa-times"></i></a>
            <li class="sidebar-brand">
                <a href="#top" onclick=$("#menu-close").click();>Good and Devil</a>
            </li>
            <li>
                <a href="#top" onclick=$("#menu-close").click();>Home</a>
            </li>
        </ul>
    </nav>

    <!-- Header -->
    <header id="top" class="header">
        <div class="text-vertical-center">
            <h1>GOOD &amp; DEVIL</h1>
            <!-- <h3>A Game for known your Real Personality</h3> -->
            <br>
            <a href="#about" class="btn btn-dark btn-lg">Coming soon</a>
        </div>
    </header>

        
	'''
        html1 = """<!-- About -->
        <section id="about" class="about">
            <div class="container">
                <div class="row">
                    <div class="col-lg-12 text-center">
                        <h2>Stylish Portfolio is the perfect theme for your next project!</h2>
                        <p class="lead">This theme features some wonderful photography courtesy of <a target="_blank" href="http://join.deathtothestockphoto.com/">Death to the Stock Photo</a>.</p>
                    </div>
                </div>
                <!-- /.row -->
            </div>
            <!-- /.container -->
        </section>




    <!-- jQuery -->
	<script src="static/js/jquery.js"></script>

	<!-- Bootstrap Core JavaScript -->
	<script src="static/js/bootstrap.min.js"></script>

	<!-- Custom Theme JavaScript -->
	<script>
	// Closes the sidebar menu
	$("#menu-close").click(function(e) {
    e.preventDefault();
    $("#sidebar-wrapper").toggleClass("active");
	});
	// Opens the sidebar menu
	$("#menu-toggle").click(function(e) {
    e.preventDefault();
		$("#sidebar-wrapper").toggleClass("active");
	});
	// Scrolls to the selected menu item on the page
	$(function() {
    $('a[href*=#]:not([href=#],[data-toggle],[data-target],[data-slide])').click(function() {
        if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') || location.hostname == this.hostname) {
            var target = $(this.hash);
            target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
            if (target.length) {
                $('html,body').animate({
                    scrollTop: target.offset().top
                }, 1000);
                return false;
            }
        }
    });
	});
	//#to-top button appears after scrolling
	var fixed = false;
	$(document).scroll(function() {
    if ($(this).scrollTop() > 250) {
        if (!fixed) {
            fixed = true;
            // $('#to-top').css({position:'fixed', display:'block'});
            $('#to-top').show("slow", function() {
                $('#to-top').css({
                    position: 'fixed',
                    display: 'block'
                });
            });
        }
    } else {
        if (fixed) {
            fixed = false;
            $('#to-top').hide("slow", function() {
                $('#to-top').css({
                    display: 'none'
                });
            });
        }
    }
	});
	// Disable Google Maps scrolling
	// See http://stackoverflow.com/a/25904582/1607849
	// Disable scroll zooming and bind back the click event
	var onMapMouseleaveHandler = function(event) {
    var that = $(this);
    that.on('click', onMapClickHandler);
    that.off('mouseleave', onMapMouseleaveHandler);
    that.find('iframe').css("pointer-events", "none");
	}
	var onMapClickHandler = function(event) {
        var that = $(this);
        // Disable the click handler until the user leaves the map area
        that.off('click', onMapClickHandler);
        // Enable scrolling zoom
        that.find('iframe').css("pointer-events", "auto");
        // Handle the mouse leave event
        that.on('mouseleave', onMapMouseleaveHandler);
    }
		// Enable map zooming with mouse scroll when the user clicks the map
	$('.map').on('click', onMapClickHandler);
	</script>

	</body>

	</html>

	"""
		miGenerador = Generador()
コード例 #7
0
    reglas, baseConocimiento, conclucion = parametros
    while (not comp(conclucion, baseConocimiento)):
        skip = False
        for regla in reglas:
            if comp(regla.getPremisas(), baseConocimiento) and not comp(regla.getConcluciones(), baseConocimiento):
                print "Se aplico Regla:", (regla.getPremisas(), regla.getConcluciones())
                baseConocimiento = baseConocimiento + regla.getConcluciones()
                skip = True
            if skip:
                break
    return

# Se fija si la Lista 1 esta dentro de la Lista2#
def comp(list1, list2):
    for val in list1:
        if val not in list2:
            return False
    return True







if __name__ == "__main__":
    generador = Generador()
    print "Encadenamiento hacia Adelante"
    EncadenamientoHaciaAdelante([generador.GenerarReglas2(), generador.GenerarBC2(), generador.GenerarConclucion2()])
    print "Encadenamiento hacia Atras"
    EncadenamientoHaciaAtras([generador.GenerarReglas2(), generador.GenerarBC2(), generador.GenerarConclucion2()])
コード例 #8
0
class Imagen(object):
    def __init__(self, rutaVector, semilla):

        self.rutaVector = rutaVector

        self.imagenPIL = None
        self.tipo = None
        self.modo = None
        self.pixelesVector = None

        self.formatosSoportados = ["PNG", "TIFF", "TIF", "BMP", "ICO"]
        self.modosSoportados = ["L", "RGB", "RGBA"]

        self.utilidad = Utilidad()
        self.__semilla = semilla
        self.__generador = Generador(self.__semilla)

        self.__analizarImagen()

        self._ruido = False

    def establecerRuido(self, añadirRuido):
        self._ruido = añadirRuido

    def __analizarImagen(self):
        try:
            self.imagenPIL = imgPil.open(self.rutaVector)

            self.tipo = self.rutaVector.split(".")[-1]

            if self.tipo.upper() not in self.formatosSoportados:
                print("Error: Formato", self.tipo.upper(), "no soportado")
                exit(0)

            self.modo = "".join(self.imagenPIL.getbands())

            self.numeroPixelesVector = self.imagenPIL.size[
                0] * self.imagenPIL.size[1]
        except Exception as e:
            print(e)

    def __calcularTamañoMaximoBytes(self, numeroPixelesVector, bitUsados,
                                    numeroCanales):
        bytesMaximos = (numeroPixelesVector * bitUsados * numeroCanales) // 8
        return bytesMaximos

    def __calcularNumeroPixelesNecesarios(self, numeroBytesTotales, bitUsados,
                                          numeroCanales):
        pixelesNecesarios = ceil(
            (numeroBytesTotales * 8) / (bitUsados * numeroCanales))
        return pixelesNecesarios

    def __determinarNumeroCanales(self, modo):
        if self.modo == "1": return 1
        elif self.modo == "L": return 1
        elif self.modo == "RGB": return 3
        elif self.modo == "RGBA": return 4
        else: print("Error")

    def __determinarExtension(self, formato):

        formato = formato.lower()

        if formato in ["jpg", "jpeg"]:
            return "jpeg"
        elif formato in ["tif", "tiff"]:
            return "tiff"
        elif formato == "png":
            return "png"
        elif formato == "bmp":
            return "bmp"
        elif formato == "ico":
            return "ico"

    def enmascarar(self, rutaSecreto):

        if self.modo == "1":
            print("Modo:", self.modo, "no es posible enmascarar")
        elif self.modo in self.modosSoportados:
            self.__enmascarar(rutaSecreto)
        else:
            print("Modo:", self.modo, "no soportado")

    def __enmascarar(self, rutaSecreto):

        print("\nRuta vector:", self.rutaVector)
        print("Imagen vector:", self.imagenPIL.format, self.imagenPIL.size,
              self.imagenPIL.mode, "\n")

        # Obtener el tamaño del archivo a ocultar
        print("Ruta archivo:", rutaSecreto)
        numeroBytesSecreto = getsize(rutaSecreto)
        print("Tamaño secreto:", numeroBytesSecreto, "Bytes")

        # Obtener el tamaño total de la cabecera con el archivo a ocultar
        numeroBytesTotalesSecreto = self.utilidad.calcularBytesTotalesSecreto(
            rutaSecreto)
        print("Tamaño secreto (con cabecera):", numeroBytesTotalesSecreto,
              "Bytes\n")

        # Obtener el numero de canales en función del modo
        numeroCanales = self.__determinarNumeroCanales(self.imagenPIL.mode)

        # Bytes máximos teoricos que se pueden enmascarar
        bytesMaximos = self.__calcularTamañoMaximoBytes(
            self.numeroPixelesVector, 1, numeroCanales)
        print("Tamaño límite enmascarable:", bytesMaximos, "Bytes")

        # Número de píxeles necesarios = numero bits del secreto / numero de bits que caben por pixel
        pixelesNecesarios = self.__calcularNumeroPixelesNecesarios(
            numeroBytesTotalesSecreto, 1, numeroCanales)
        print("Píxeles necesarios para enmascarar:", pixelesNecesarios, "\n")

        # Si la imagen vector no tiene suficientes píxeles
        if numeroBytesTotalesSecreto > bytesMaximos:
            print("Error: El archivo secreto debe ser menor de", bytesMaximos,
                  "bytes")
            exit(0)

        # Crear los mapas de píxeles para vector
        print("Cargando imagen vector")
        pixelesVector = self.imagenPIL.load()

        # Cargar mapa de bits del secreto
        print("Cargando mapa de bits del secreto")
        mapaBitsSecreto = self.utilidad.leerBytes(rutaSecreto)

        # Crear una nueva imagen resultante y cargar su mapa de bits
        print("Creado imagen resultante")
        imagenGenerada = imgPil.new(
            self.imagenPIL.mode,
            (self.imagenPIL.size[0], self.imagenPIL.size[1]), "black")
        print("Cargando imagen resultante\n")
        pixelesGenerada = imagenGenerada.load()

        # Posiciones de píxeles aleatorias
        posiciones = self.__generador.generarListaPosicionesAleatorias(
            self.numeroPixelesVector)
        # print("Posiciones aleatorias imagen vector =", len(posiciones))
        print("Semilla:", self.__semilla)
        print("Generando", self.numeroPixelesVector, "posiciones aleatorias")

        # Lista de posicones modificadas y sin modificar
        posicionesMezclado = posiciones[:pixelesNecesarios]
        posicionesRuido = posiciones[pixelesNecesarios:]

        # Mezclado y ruido píxeles
        print("Modificando píxeles")
        if self._ruido: print("Añadiendo ruido")
        self.__modificarPixeles(
            (mapaBitsSecreto, posicionesMezclado, posicionesRuido,
             pixelesVector, pixelesGenerada))

        # Guardamos la imagen resultante
        nombreArchivo = basename(self.rutaVector)
        nom, _ = splitext(nombreArchivo)
        nombre = nom + "_vector." + self.__determinarExtension(
            self.imagenPIL.format)

        # Guardamos la imagen
        imagenGenerada.save(nombre,
                            format=self.imagenPIL.format,
                            mode=self.imagenPIL.mode,
                            compress_level=9)
        print("\nImagen resultante:", nombre, "\n")

    def __modificarPixeles(self, argumentos):
        if self.modo == "L":
            self.__modificarPixelesL(*argumentos)
        elif self.modo == "RGB":
            self.__modificarPixelesRGB(*argumentos)
        elif self.modo == "RGBA":
            self.__modificarPixelesRGBA(*argumentos)

    def __modificarPixelesL(self, mapaBitsSecreto, posicionesMezclado,
                            posicionesRuido, pixelesVector, pixelesGenerada):

        # Iterador sobre la cadena de bits del archivo a enmascarar
        flujoBits = iter(mapaBitsSecreto)

        # Fase de mezclado pixeles
        for numeroPixelSecreto in posicionesMezclado:

            # Transformar la posición 1D del vector aplanado a 2D
            iVector = numeroPixelSecreto // self.imagenPIL.size[0]
            jVector = numeroPixelSecreto % self.imagenPIL.size[0]

            # Convertimos de decimal a binario el pixel
            pixelVectorBinario = self.utilidad.decimalBinario(
                pixelesVector[jVector, iVector])

            # Fusionamos el bit menos significativo
            l = self.utilidad.fusionarLSB(pixelVectorBinario, next(flujoBits))

            # Convertimos de binario a decimal el pixel
            pixelMezcladoBinario = (l)
            pixelesGenerada[jVector, iVector] = self.utilidad.binarioDecimal(
                pixelMezcladoBinario)

        self.__generador.establecerSemilla(None)

        if self._ruido:
            # Fase adición ruido
            for numeroPixelVectorRestante in posicionesRuido:

                # Transformar la posición 1D del vector aplanado a 2D
                iVector = numeroPixelVectorRestante // self.imagenPIL.size[0]
                jVector = numeroPixelVectorRestante % self.imagenPIL.size[0]

                pixelVectorBinario = self.utilidad.decimalBinario(
                    pixelesVector[jVector, iVector])

                # Mezclar pixel del vector menos significativo aleatorio
                pixelMezcladoBinario = self.utilidad.fusionarLSB(
                    pixelVectorBinario, self.__generador.obtenerBitAleatorio())

                # Ponemos el pixel generado en la imagen resultante
                pixelesGenerada[jVector,
                                iVector] = self.utilidad.binarioDecimal(
                                    pixelMezcladoBinario)
        else:
            for numeroPixelVectorRestante in posicionesRuido:
                # Transformar la posición 1D del vector aplanado a 2D
                iVector = numeroPixelVectorRestante // self.imagenPIL.size[0]
                jVector = numeroPixelVectorRestante % self.imagenPIL.size[0]
                pixelesGenerada[jVector, iVector] = pixelesVector[jVector,
                                                                  iVector]

    def __modificarPixelesRGB(self, mapaBitsSecreto, posicionesMezclado,
                              posicionesRuido, pixelesVector, pixelesGenerada):

        # Iterador sobre la cadena de bits del archivo a enmascarar
        flujoBits = iter(mapaBitsSecreto)

        # Fase de mezclado pixeles
        for numeroPixelSecreto in posicionesMezclado:

            # Transformar la posición 1D del vector aplanado a 2D
            iVector = numeroPixelSecreto // self.imagenPIL.size[0]
            jVector = numeroPixelSecreto % self.imagenPIL.size[0]

            # Convertimos de decimal a binario los canales del pixel
            pixelVectorBinario = (self.utilidad.decimalBinario(
                pixelesVector[jVector, iVector][0]),
                                  self.utilidad.decimalBinario(
                                      pixelesVector[jVector, iVector][1]),
                                  self.utilidad.decimalBinario(
                                      pixelesVector[jVector, iVector][2]))

            # Fusionamos el bit menos significativo
            try:
                r = self.utilidad.fusionarLSB(pixelVectorBinario[0],
                                              next(flujoBits))
                g = self.utilidad.fusionarLSB(pixelVectorBinario[1],
                                              next(flujoBits))
                b = self.utilidad.fusionarLSB(pixelVectorBinario[2],
                                              next(flujoBits))
            except StopIteration:
                b = pixelVectorBinario[2]

            # Convertimos de binario los canales del pixel
            pixelesGenerada[jVector, iVector] = (
                self.utilidad.binarioDecimal(r),
                self.utilidad.binarioDecimal(g),
                self.utilidad.binarioDecimal(b),
            )

        self.__generador.establecerSemilla(None)

        if self._ruido:
            # Fase adición ruido
            for numeroPixelVectorRestante in posicionesRuido:

                # Tranformar la posicion 1D del vector aplanado a 2D
                iVector = numeroPixelVectorRestante // self.imagenPIL.size[
                    0]  # formulas con ANCHO
                jVector = numeroPixelVectorRestante % self.imagenPIL.size[0]

                # Fase de añadido de ruido
                # Convertir tripleta de decimal a binario
                pixelVectorBinario = (self.utilidad.decimalBinario(
                    pixelesVector[jVector, iVector][0]),
                                      self.utilidad.decimalBinario(
                                          pixelesVector[jVector, iVector][1]),
                                      self.utilidad.decimalBinario(
                                          pixelesVector[jVector, iVector][2]))

                # Mezclar pixel del vector menos significativo aleatorio
                pixelMezcladoBinario = (
                    self.utilidad.fusionarLSB(
                        pixelVectorBinario[0],
                        self.__generador.obtenerBitAleatorio()),
                    self.utilidad.fusionarLSB(
                        pixelVectorBinario[1],
                        self.__generador.obtenerBitAleatorio()),
                    self.utilidad.fusionarLSB(
                        pixelVectorBinario[2],
                        self.__generador.obtenerBitAleatorio()))

                # Ponemos el pixel generado en la imagen resultante
                pixelesGenerada[jVector, iVector] = (
                    self.utilidad.binarioDecimal(pixelMezcladoBinario[0]),
                    self.utilidad.binarioDecimal(pixelMezcladoBinario[1]),
                    self.utilidad.binarioDecimal(pixelMezcladoBinario[2]),
                )
        else:
            for numeroPixelVectorRestante in posicionesRuido:
                # Transformar la posición 1D del vector aplanado a 2D
                iVector = numeroPixelVectorRestante // self.imagenPIL.size[0]
                jVector = numeroPixelVectorRestante % self.imagenPIL.size[0]
                pixelesGenerada[jVector, iVector] = pixelesVector[jVector,
                                                                  iVector]

    def __modificarPixelesRGBA(self, mapaBitsSecreto, posicionesMezclado,
                               posicionesRuido, pixelesVector,
                               pixelesGenerada):

        # Iterador sobre la cadena de bits del archivo a enmascarar
        flujoBits = iter(mapaBitsSecreto)

        for numeroPixelSecreto in posicionesMezclado:

            # Transformar la posición 1D del vector aplanado a 2D
            iVector = numeroPixelSecreto // self.imagenPIL.size[0]
            jVector = numeroPixelSecreto % self.imagenPIL.size[0]

            # print(pixelesVector[0, 0])

            # Convertimos de decimal a binario los canales del pixel
            pixelVectorBinario = (self.utilidad.decimalBinario(
                pixelesVector[jVector, iVector][0]),
                                  self.utilidad.decimalBinario(
                                      pixelesVector[jVector, iVector][1]),
                                  self.utilidad.decimalBinario(
                                      pixelesVector[jVector, iVector][2]),
                                  self.utilidad.decimalBinario(
                                      pixelesVector[jVector, iVector][3]))

            # Fusionamos el bit menos significativo
            r = self.utilidad.fusionarLSB(pixelVectorBinario[0],
                                          next(flujoBits))
            g = self.utilidad.fusionarLSB(pixelVectorBinario[1],
                                          next(flujoBits))
            b = self.utilidad.fusionarLSB(pixelVectorBinario[2],
                                          next(flujoBits))
            a = self.utilidad.fusionarLSB(pixelVectorBinario[3],
                                          next(flujoBits))

            # Ponemos el pixel generado en la imagen resultante
            pixelesGenerada[jVector, iVector] = (
                self.utilidad.binarioDecimal(r),
                self.utilidad.binarioDecimal(g),
                self.utilidad.binarioDecimal(b),
                self.utilidad.binarioDecimal(a),
            )

        self.__generador.establecerSemilla(None)

        if self._ruido:
            # Fase adición ruido
            for numeroPixelVectorRestante in posicionesRuido:

                # Tranformar la posicion 1D del vector aplanado a 2D
                iVector = numeroPixelVectorRestante // self.imagenPIL.size[
                    0]  # formulas con ANCHO
                jVector = numeroPixelVectorRestante % self.imagenPIL.size[0]

                # Fase de añadido de ruido
                # Convertir tripleta de decimal a binario
                pixelVectorBinario = (self.utilidad.decimalBinario(
                    pixelesVector[jVector, iVector][0]),
                                      self.utilidad.decimalBinario(
                                          pixelesVector[jVector, iVector][1]),
                                      self.utilidad.decimalBinario(
                                          pixelesVector[jVector, iVector][2]),
                                      self.utilidad.decimalBinario(
                                          pixelesVector[jVector, iVector][3]))

                # Mezclar pixel del vector menos significativo aleatorio
                pixelMezcladoBinario = (
                    self.utilidad.fusionarLSB(
                        pixelVectorBinario[0],
                        self.__generador.obtenerBitAleatorio()),
                    self.utilidad.fusionarLSB(
                        pixelVectorBinario[1],
                        self.__generador.obtenerBitAleatorio()),
                    self.utilidad.fusionarLSB(
                        pixelVectorBinario[2],
                        self.__generador.obtenerBitAleatorio()),
                    self.utilidad.fusionarLSB(
                        pixelVectorBinario[3],
                        self.__generador.obtenerBitAleatorio()))

                # Ponemos el pixel generado en la imagen resultante
                pixelesGenerada[jVector,
                                iVector] = (self.utilidad.binarioDecimal(
                                    pixelMezcladoBinario[0]),
                                            self.utilidad.binarioDecimal(
                                                pixelMezcladoBinario[1]),
                                            self.utilidad.binarioDecimal(
                                                pixelMezcladoBinario[2]),
                                            self.utilidad.binarioDecimal(
                                                pixelMezcladoBinario[3]))
        else:
            for numeroPixelVectorRestante in posicionesRuido:
                # Transformar la posición 1D del vector aplanado a 2D
                iVector = numeroPixelVectorRestante // self.imagenPIL.size[0]
                jVector = numeroPixelVectorRestante % self.imagenPIL.size[0]
                pixelesGenerada[jVector, iVector] = pixelesVector[jVector,
                                                                  iVector]

    def extraer(self):
        if self.modo == "1":
            print("No se puede")
        elif self.modo in self.modosSoportados:
            self.__extraer()
        else:
            print("Modo:", self.modo, "no soportado")

    def __extraer(self):

        # Cargar la imagen
        print("\nRuta vector:", self.rutaVector)
        print("Imagen vector:", self.imagenPIL.format, self.imagenPIL.size,
              self.imagenPIL.mode)

        # Crear el mapa de pixeles del vector
        print("Cargando imagen vector\n")
        pixelesVector = self.imagenPIL.load()

        # Posiciones de pixeles aleatorias (Generador)
        print("Semilla:", self.__semilla)
        print("Generando", self.numeroPixelesVector, "posiciones aleatorias\n")
        posiciones = self.__generador.generarListaPosicionesAleatorias(
            self.numeroPixelesVector)

        # Extrar bits enmascarados en la imagen vector
        print("Extrayendo bits")
        listaBits = self.__extraerBits((posiciones, pixelesVector))

        # Convertir cadena de bits a cadena de bytes
        print("Convirtiendo a bytes")
        bytes = self.utilidad.convertirBytes(listaBits)

        print("Cabecera:", bytes[:25], "\n")

        # Escribir los bytes resultantes
        nombre = self.utilidad.escribirBytes(bytes)
        print("Generando archivo:", nombre, "\n")

    def __extraerBits(self, argumentos):
        if self.modo == "L":
            return self.__extraerBitsL(*argumentos)
        elif self.modo == "RGB":
            return self.__extraerBitsRGB(*argumentos)
        elif self.modo == "RGBA":
            return self.__extraerBitsRGBA(*argumentos)

    def __extraerBitsL(self, posiciones, pixelesVector):

        listaBits = ""
        for numeroPixelSecreto in posiciones:

            iVector = numeroPixelSecreto // self.imagenPIL.size[0]
            jVector = numeroPixelSecreto % self.imagenPIL.size[0]

            pixelVectorBinario = self.utilidad.decimalBinario(
                pixelesVector[jVector, iVector])
            listaBits += pixelVectorBinario[-1]

        return listaBits

    def __extraerBitsRGB(self, posiciones, pixelesVector):

        listaBits = ""
        for numeroPixelSecreto in posiciones:

            iVector = numeroPixelSecreto // self.imagenPIL.size[0]
            jVector = numeroPixelSecreto % self.imagenPIL.size[0]

            pixelVectorBinario = (self.utilidad.decimalBinario(
                pixelesVector[jVector, iVector][0]),
                                  self.utilidad.decimalBinario(
                                      pixelesVector[jVector, iVector][1]),
                                  self.utilidad.decimalBinario(
                                      pixelesVector[jVector, iVector][2]))

            listaBits += pixelVectorBinario[0][-1]
            listaBits += pixelVectorBinario[1][-1]
            listaBits += pixelVectorBinario[2][-1]

        return listaBits

    def __extraerBitsRGBA(self, posiciones, pixelesVector):

        listaBits = ""
        for numeroPixelSecreto in posiciones:

            iVector = numeroPixelSecreto // self.imagenPIL.size[0]
            jVector = numeroPixelSecreto % self.imagenPIL.size[0]

            pixelVectorBinario = (self.utilidad.decimalBinario(
                pixelesVector[jVector, iVector][0]),
                                  self.utilidad.decimalBinario(
                                      pixelesVector[jVector, iVector][1]),
                                  self.utilidad.decimalBinario(
                                      pixelesVector[jVector, iVector][2]),
                                  self.utilidad.decimalBinario(
                                      pixelesVector[jVector, iVector][3]))

            listaBits += pixelVectorBinario[0][-1]
            listaBits += pixelVectorBinario[1][-1]
            listaBits += pixelVectorBinario[2][-1]
            listaBits += pixelVectorBinario[3][-1]

        return listaBits
コード例 #9
0
class Motor:
    """
    Motor de simulacio, s'encarrega de crear els primers esdeveniments que encadenaren la resta.
    """
    # Esdeveniments no processats
    esdevenimentsPendents = None

    # Temps actual de simulacio
    currentTime = 0

    #Elements del sistema
    generador = None
    agrupador1 = None
    agrupador2 = None
    agrupador3 = None
    area_espera1 = 0
    area_espera2 = 0
    area_espera3 = 0

    #Traça dels esdeveniments del sistema
    traza = []

    #Estadistics de l'execució del sistema
    cnt_capses = [0, 0, 0]
    mitjana_temps_omplir_capsa = [0.0, 0.0, 0.0]
    temps_inici_capsa = [0, 0, 0]

    def __init__(self):
        """
        Constructora per defecte
        """
        self.generador = Generador()
        self.area_espera1 = 0
        self.area_espera2 = 0
        self.area_espera3 = 0
        self.agrupador1 = Agrupador(1)
        self.traza.append(self.agrupador1.presentacio())
        self.agrupador2 = Agrupador(2)
        self.traza.append(self.agrupador2.presentacio())
        self.agrupador3 = Agrupador(3)
        self.traza.append(self.agrupador3.presentacio())
        self.traza.append("")
        self.esdevenimentsPendents = []
        self.currentTime = 0
        self.cnt_capses = [0, 0, 0]
        self.mitjana_temps_omplir_capsa = [0.0, 0.0, 0.0]
        self.temps_inici_capsa = [0, 0, 0]

        self.inicialitzaLlistaEsdeveniments()

    def inicialitzaLlistaEsdeveniments(self):
        self.generador.changeState()
        esd = Esdeveniment(self.generador.nextArrival(),
                           estats.AlimentRecaptat, self.generador)
        self.esdevenimentsPendents.append(esd)
        self.traza.append("0")
        self.traza.append(esd.programat())

    # Arranca la simulacio
    def run(self):
        continuar = True  #TODO mirar de treure-ho
        while len(self.esdevenimentsPendents) and continuar:
            esdeveniment = self.esdevenimentsPendents.pop(0)
            continuar = self.tractarEsdeveniment(esdeveniment)

        self.generador.changeState()
        self.generar_traça()
        self.generar_estadistics()
        self.mostrar_estadistics()

    # Controla el temps de simulacio i gestiona l'execucio de la rutina associada a cada esdeveniment
    def tractarEsdeveniment(self, esdeveniment):
        self.currentTime = esdeveniment.timestamp

        self.traza.append(esdeveniment.executat())
        if esdeveniment.tipus == estats.AlimentRecaptat:
            nextTime = self.generador.nextArrival()
            if nextTime >= 0:
                self.programar_esdeveniment_arribada(nextTime)

            if esdeveniment.tipus_aliment == 1:
                if self.agrupador1.isFree():
                    nextTime = self.agrupador1.nextEndService()
                    nextTime += self.currentTime
                    self.traza.append(
                        self.agrupador1.iniciServei(self.currentTime))
                    esd2 = Esdeveniment(nextTime, estats.AlimentProcessat,
                                        self.agrupador1)
                    esd2.set_tipus_aliment(1)
                    self.agrupador1.changeState(estats.AgrupadorProcessant)
                    self.esdevenimentsPendents.append(esd2)
                    if self.agrupador1.get_cnt_aliments() == 0:
                        self.temps_inici_capsa[0] = self.currentTime
                    self.traza.append(esd2.programat())
                else:
                    self.area_espera1 += 1
                    self.traza.append(esdeveniment.encuar(self.area_espera1))

            elif esdeveniment.tipus_aliment == 2:
                if self.agrupador2.isFree():
                    nextTime = self.agrupador2.nextEndService()
                    nextTime += self.currentTime
                    self.traza.append(
                        self.agrupador2.iniciServei(self.currentTime))
                    esd2 = Esdeveniment(nextTime, estats.AlimentProcessat,
                                        self.agrupador2)
                    esd2.set_tipus_aliment(2)
                    self.agrupador2.changeState(estats.AgrupadorProcessant)
                    self.esdevenimentsPendents.append(esd2)
                    if self.agrupador2.get_cnt_aliments() == 0:
                        self.temps_inici_capsa[1] = self.currentTime
                    self.traza.append(esd2.programat())
                else:
                    self.area_espera2 += 1
                    self.traza.append(esdeveniment.encuar(self.area_espera2))

            else:
                if self.agrupador3.isFree():
                    nextTime = self.agrupador3.nextEndService()
                    nextTime += self.currentTime
                    self.traza.append(
                        self.agrupador3.iniciServei(self.currentTime))
                    esd2 = Esdeveniment(nextTime, estats.AlimentProcessat,
                                        self.agrupador3)
                    esd2.set_tipus_aliment(3)
                    self.agrupador3.changeState(estats.AgrupadorProcessant)
                    self.esdevenimentsPendents.append(esd2)
                    if self.agrupador3.get_cnt_aliments() == 0:
                        self.temps_inici_capsa[2] = self.currentTime
                    self.traza.append(esd2.programat())
                else:
                    self.area_espera3 += 1
                    self.traza.append(esdeveniment.encuar(self.area_espera3))

        if esdeveniment.tipus == estats.AlimentProcessat:
            if esdeveniment.tipus_aliment == 1:
                self.tractar_esdeveniment_alimentProcessat(
                    self.agrupador1, esdeveniment)
            elif esdeveniment.tipus_aliment == 2:
                self.tractar_esdeveniment_alimentProcessat(
                    self.agrupador2, esdeveniment)
            else:
                self.tractar_esdeveniment_alimentProcessat(
                    self.agrupador3, esdeveniment)

        self.esdevenimentsPendents.sort()

        return True

    def programar_esdeveniment_arribada(self, nextTime):
        nextTime += self.currentTime
        esd = Esdeveniment(nextTime, estats.AlimentRecaptat, self.generador)
        self.esdevenimentsPendents.append(esd)
        self.traza.append(esd.programat())

    def tractar_esdeveniment_alimentProcessat(self, agrupador, esdeveniment):
        if agrupador.augmentar_cnt_aliments():
            esd2 = Esdeveniment(self.currentTime, estats.AlimentFinalitzat,
                                agrupador)
            esd2.decr_cnt()
            self.traza.append(esd2.finalitzat())
            if agrupador.name() == "Agrupador1":
                self.actualitzar_estadistics(0)
            elif agrupador.name() == "Agrupador2":
                self.actualitzar_estadistics(1)
            else:
                self.actualitzar_estadistics(2)

        esdeveniment.element.Free()
        if esdeveniment.tipus_aliment == 1 and self.area_espera1 > 0:
            self.area_espera1 -= 1
            nextTime = esdeveniment.element.nextEndService()
            nextTime += self.currentTime
            self.traza.append(
                esdeveniment.element.iniciServei(self.currentTime))
            esd3 = Esdeveniment(nextTime, estats.AlimentProcessat,
                                esdeveniment.element)
            esd3.set_tipus_aliment(1)
            self.esdevenimentsPendents.append(esd3)
            if self.agrupador1.get_cnt_aliments() == 0:
                self.temps_inici_capsa[0] = self.currentTime
            self.traza.append(esd3.programat())
        elif esdeveniment.tipus_aliment == 2 and self.area_espera2 > 0:
            self.area_espera2 -= 1
            nextTime = esdeveniment.element.nextEndService()
            nextTime += self.currentTime
            self.traza.append(
                esdeveniment.element.iniciServei(self.currentTime))
            esd3 = Esdeveniment(nextTime, estats.AlimentProcessat,
                                esdeveniment.element)
            esd3.set_tipus_aliment(2)
            self.esdevenimentsPendents.append(esd3)
            if self.agrupador2.get_cnt_aliments() == 0:
                self.temps_inici_capsa[1] = self.currentTime
            self.traza.append(esd3.programat())
        elif esdeveniment.tipus_aliment == 3 and self.area_espera3 > 0:
            self.area_espera3 -= 1
            nextTime = esdeveniment.element.nextEndService()
            nextTime += self.currentTime
            self.traza.append(
                esdeveniment.element.iniciServei(self.currentTime))
            esd3 = Esdeveniment(nextTime, estats.AlimentProcessat,
                                esdeveniment.element)
            esd3.set_tipus_aliment(3)
            self.esdevenimentsPendents.append(esd3)
            if self.agrupador3.get_cnt_aliments() == 0:
                self.temps_inici_capsa[2] = self.currentTime
            self.traza.append(esd3.programat())

    def actualitzar_estadistics(self, tipus):
        self.cnt_capses[tipus] += 1
        if self.cnt_capses[tipus] == 1:
            mitjana = (self.currentTime -
                       self.temps_inici_capsa[tipus]) / self.cnt_capses[tipus]
        elif self.cnt_capses[tipus] == 2:
            mitjana = (self.mitjana_temps_omplir_capsa[tipus] +
                       self.currentTime -
                       self.temps_inici_capsa[tipus]) / self.cnt_capses[tipus]
        else:
            mitjana = (self.mitjana_temps_omplir_capsa[tipus] *
                       (self.cnt_capses[tipus] - 1) +
                       (self.currentTime - self.temps_inici_capsa[tipus])
                       ) / self.cnt_capses[tipus]
        self.mitjana_temps_omplir_capsa[tipus] = mitjana

    def generar_estadistics(self):
        f = open("estadistics.txt", "w")
        f.write("Capses generades per l'Agrupador1: " +
                str(self.cnt_capses[0]) + "\n")
        f.write("Capses generades per l'Agrupador2: " +
                str(self.cnt_capses[1]) + "\n")
        f.write("Capses generades per l'Agrupador3: " +
                str(self.cnt_capses[2]) + "\n")
        f.write("\n")
        f.write("Mitjana del temps en omplir una capsa de l'Agrupador1: " +
                str(round(self.mitjana_temps_omplir_capsa[0], 2)) + "\n")
        f.write("Mitjana del temps en omplir una capsa de l'Agrupador2: " +
                str(round(self.mitjana_temps_omplir_capsa[1], 2)) + "\n")
        f.write("Mitjana del temps en omplir una capsa de l'Agrupador3: " +
                str(round(self.mitjana_temps_omplir_capsa[2], 2)) + "\n")
        f.close()

    def mostrar_estadistics(self):
        plt.figure(figsize=(5, 7))

        plt.subplot(2, 1, 1)
        plt.xlabel("Tipus d'aliment")
        plt.ylabel("Numero capses")
        noms1 = ['Pasta', 'Arros', 'Llegums']
        plt.bar(noms1, self.cnt_capses, width=0.5)

        plt.subplot(2, 1, 2)
        plt.xlabel("Tipus d'aliment")
        plt.ylabel("Temps mitjà en omplir")
        noms2 = ['Pasta', 'Arros', 'Llegums']
        plt.bar(noms2, self.mitjana_temps_omplir_capsa, width=0.5)
        plt.show()

    def generar_traça(self):
        f = open("sortida.txt", "w")
        for i in range(0, len(self.traza)):
            f.write(self.traza[i] + "\n")
        f.close()
コード例 #10
0
    def index(self):
        text = '''
	<!DOCTYPE html>
	<html lang="en">
	<head>

	<script src="static/js/jav.js"></script>
	<link rel="stylesheet" href="static/css/st.css">
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">
    <title>G&D</title>

    <link href="static/css/bootstrap.min.css" rel="stylesheet">
    <link href="static/css/stylish-portfolio.css" rel="stylesheet">
    <link href="static/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
    <link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">
	</head>

	<body>


    
    <script language="javascript">
        function doSearch()
        {
            var tableReg = document.getElementById('tabla');
            var searchText = document.getElementById('searchTerm').value.toLowerCase();
            var cellsOfRow="";
            var found=false;
            var compareWith="";
 
            for (var i = 1; i < tableReg.rows.length; i++)
            {
                cellsOfRow = tableReg.rows[i].getElementsByTagName('td');
                found = false;
                
                for (var j = 0; j < cellsOfRow.length && !found; j++)
                {
                    compareWith = cellsOfRow[j].innerHTML.toLowerCase();
                    if (searchText.length == 0 || (compareWith.indexOf(searchText) > -1))
                    {
                        found = true;
                    }
                }
                if(found)
                {
                    tableReg.rows[i].style.display = '';
                } else {
                    
                    tableReg.rows[i].style.display = 'none';
                }
            }
        }
    </script>



    <a id="menu-toggle" href="#" class="btn btn-dark btn-lg toggle"><i class="fa fa-bars"></i></a>
    <nav id="sidebar-wrapper">
        <ul class="sidebar-nav">
            <a id="menu-close" href="#" class="btn btn-light btn-lg pull-right toggle"><i class="fa fa-times"></i></a>
            <li class="sidebar-brand">
                <a href="#top" onclick=$("#menu-close").click();>Good and Devil</a>
            </li>
            <li>
                <a href="#top" onclick=$("#menu-close").click();>Home</a>
            </li>
        </ul>
    </nav>

    <!-- Header -->
    <header id="top" class="header">
        <div class="text-vertical-center">
            <h1>GOOD &amp; DEVIL</h1>
            <!-- <h3>A Game for known your Real Personality</h3> -->
            <br>
            <a href="#about" class="btn btn-dark btn-lg">Coming soon</a>
        </div>
    </header>

        
	'''
        text1 = """<!-- About -->
        <section id="about" class="about">
            <div >
                <div>
                    <div class="col-lg-12 text-center">
					
                    """
        text2 = """				
					
                      
                    </div>
						
                </div>
                <!-- /.row -->
            </div>
            <!-- /.container -->
        </section>
		
	 <div id="demo"	class="demo">
	 <li>
		<ul> Estadisticas </>
		<ul> Partidas Jugadas : 10 </ul>
		<ul> Experiencia : 1500 xp </ul>
		<ul> Nivel: Destrozador </ul>
		<ul> Tiempo Jugado : 10 Horas </ul>
		<ul> Logros Conseguidos : 75/200 </ul>
		<ul> Estrellas encontradas : 4/5</ul>
		<ul> <img src="/static/img/rey3.png" style="width:250px;height:250px;"></ul>
	</li>	
		
	<div id="cerrar" class="cerrar" onclick="clic1()"> 	x </div>
	</div>
	
		 <div id="demo1"	class="demo1">	 <li>
		<ul> Estadisticas </>
		<ul> Partidas Jugadas : 8 </ul>
		<ul> Experiencia : 1300 xp </ul>
		<ul> Nivel: Fulminante </ul>
		<ul> Tiempo Jugado : 10 Horas </ul>
		<ul> Logros Conseguidos : 40/200 </ul>
		<ul> Estrellas encontradas : 3/5</ul>
		<ul> <img src="/static/img/rey1.png" style="width:250px;height:250px;"></ul>
	</li> 
	
	<div id="cerrar1" class="cerrar1" onclick="clic4()"> 	x </div>
	</div>
	
	
		 <div id="demo2"	class="demo2">	
			 <li>
		<ul> Estadisticas </>
		<ul> Partidas Jugadas : 7 </ul>
		<ul> Experiencia : 1250 xp </ul>
		<ul> Nivel: Arrasador </ul>
		<ul> Tiempo Jugado : 11 Horas </ul>
		<ul> Logros Conseguidos : 37/200 </ul>
		<ul> Estrellas encontradas : 3/5</ul>
		<ul> <img src="/static/img/rey.png" style="width:250px;height:250px;"></ul>
	</li> 
	<div id="cerrar2" class="cerrar2" onclick="clic5()"> 	x </div>
	</div>

	<div id="img1" class="log1" > <img src="/static/img/espadas.png" style="width:260px;height:260px;"></div>
	<div id="img2" class="log2" > <img src="/static/img/espada1.png" style="width:260px;height:260px;"></div>
	<div id="img3" class="log3" ><img src="/static/img/toma.png" style="width:260px;height:260px;"></div>
	<div id="imgc" class="logc" ><img src="/static/img/cupido.png" style="width:260px;height:260px;"></div>

    <!-- jQuery -->
	<script src="static/js/jquery.js"></script>

	<!-- Bootstrap Core JavaScript -->
	<script src="static/js/bootstrap.min.js"></script>

	<!-- Custom Theme JavaScript -->
	<script>
	// Closes the sidebar menu
	$("#menu-close").click(function(e) {
    e.preventDefault();
    $("#sidebar-wrapper").toggleClass("active");
	});
	// Opens the sidebar menu
	$("#menu-toggle").click(function(e) {
    e.preventDefault();
		$("#sidebar-wrapper").toggleClass("active");
	});
	// Scrolls to the selected menu item on the page
	$(function() {
    $('a[href*=#]:not([href=#],[data-toggle],[data-target],[data-slide])').click(function() {
        if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') || location.hostname == this.hostname) {
            var target = $(this.hash);
            target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
            if (target.length) {
                $('html,body').animate({
                    scrollTop: target.offset().top
                }, 1000);
                return false;
            }
        }
    });
	});
	//#to-top button appears after scrolling
	var fixed = false;
	$(document).scroll(function() {
    if ($(this).scrollTop() > 250) {
        if (!fixed) {
            fixed = true;
            // $('#to-top').css({position:'fixed', display:'block'});
            $('#to-top').show("slow", function() {
                $('#to-top').css({
                    position: 'fixed',
                    display: 'block'
                });
            });
        }
    } else {
        if (fixed) {
            fixed = false;
            $('#to-top').hide("slow", function() {
                $('#to-top').css({
                    display: 'none'
                });
            });
        }
    }
	});
	// Disable Google Maps scrolling
	// See http://stackoverflow.com/a/25904582/1607849
	// Disable scroll zooming and bind back the click event
	var onMapMouseleaveHandler = function(event) {
    var that = $(this);
    that.on('click', onMapClickHandler);
    that.off('mouseleave', onMapMouseleaveHandler);
    that.find('iframe').css("pointer-events", "none");
	}
	var onMapClickHandler = function(event) {
        var that = $(this);
        // Disable the click handler until the user leaves the map area
        that.off('click', onMapClickHandler);
        // Enable scrolling zoom
        that.find('iframe').css("pointer-events", "auto");
        // Handle the mouse leave event
        that.on('mouseleave', onMapMouseleaveHandler);
    }
		// Enable map zooming with mouse scroll when the user clicks the map
	$('.map').on('click', onMapClickHandler);
	</script>

	</body>

	</html>

	"""
        migenerador = Generador()
        archivo = open("nombres.txt", "r")
        tabla = migenerador.Tabla(archivo)
        return text + text1 + tabla + text2