junio 10, 2025
mayo 22, 2024
El Juego de la Vida de Conway: Un Universo de Matemáticas y Complejidad
El Juego de la Vida de Conway: Un Universo de Matemáticas y Complejidad
El Juego de la Vida, creado por el matemático británico John Horton Conway en 1970, es un fascinante ejemplo de cómo reglas simples pueden generar comportamientos extraordinariamente complejos. Este autómata celular se ha convertido en una herramienta invaluable para el estudio de la teoría de la complejidad, sistemas dinámicos y simulaciones computacionales.¿Qué es el Juego de la Vida?
El Juego de la Vida se desarrolla en una cuadrícula bidimensional infinita donde cada celda puede estar en uno de dos estados: viva o muerta. Las celdas evolucionan a través de generaciones discretas según un conjunto fijo de reglas:- Supervivencia: Una célula viva con dos o tres vecinos vivos continúa viva.
- Muerte por soledad: Una célula viva con menos de dos vecinos vivos muere.
- Muerte por sobrepoblación: Una célula viva con más de tres vecinos vivos muere.
- Nacimiento: Una célula muerta con exactamente tres vecinos vivos se convierte en una célula viva.
Comportamientos y Patrones
Los patrones en el Juego de la Vida pueden clasificarse en varias categorías:- Estables: Patrones que no cambian de una generación a otra, como el "bloque" o la "colmena".
- Osciladores: Patrones que repiten una secuencia de estados en un número fijo de generaciones, como el "parpadeador" o la "rana".
- Naves espaciales: Patrones que se trasladan por la cuadrícula, como el famoso "planeador".
Importancia Académica
El Juego de la Vida es más que una curiosidad matemática; es una herramienta poderosa en la investigación de sistemas complejos. Al estudiar las interacciones y evoluciones dentro del juego, los investigadores pueden obtener insights sobre fenómenos naturales y sistemas biológicos. Por ejemplo, la autoorganización y la formación de patrones en el Juego de la Vida reflejan procesos similares observados en la naturaleza, desde la propagación de incendios forestales hasta el crecimiento de cristales.Experimentos y Descubrimientos
A lo largo de los años, los entusiastas del Juego de la Vida han dedicado tiempo y esfuerzo a explorar y descubrir una vasta colección de patrones y estructuras, revelando un universo de complejidad fascinante y a menudo sorprendente. Estos descubrimientos no solo son asombrosos por su diversidad y belleza, sino que también tienen implicaciones profundas para nuestra comprensión de la vida, la inteligencia artificial y la naturaleza misma del universo.Debates Filosóficos en Torno al Juego de la Vida de Conway
El Juego de la Vida de Conway, más allá de su relevancia matemática y computacional, ha suscitado una serie de debates filosóficos profundos. Estas discusiones abordan cuestiones fundamentales sobre la naturaleza de la vida, la complejidad, el determinismo, y el significado de la existencia. A continuación, exploraremos algunos de los principales temas filosóficos que han emergido alrededor de este fascinante autómata celular.Determinismo y Libre Albedrío
Una de las preguntas filosóficas más provocativas relacionadas con el Juego de la Vida es la del determinismo versus el libre albedrío. En el contexto del Juego de la Vida, cada estado futuro del sistema está completamente determinado por su estado actual, siguiendo un conjunto de reglas fijas y predeterminadas. Esto significa que, dado un estado inicial, todas las evoluciones subsecuentes del sistema están ya determinadas y son predecibles. Este aspecto del juego plantea la cuestión de si nuestro propio universo es igualmente determinista, operando bajo leyes físicas inmutables que, en principio, podrían predecir el comportamiento de todas las partículas y, por extensión, de todos los seres vivos.Emergencia y Complejidad
El concepto de emergencia es crucial en los debates filosóficos sobre el Juego de la Vida. La emergencia se refiere a cómo patrones y comportamientos complejos pueden surgir de reglas simples y aparentemente triviales. Este fenómeno es de gran interés no solo en matemáticas y ciencias de la computación, sino también en campos como la filosofía, la biología y la física, ya que proporciona un ejemplo claro de cómo la complejidad puede surgir de la simplicidad.Vida Artificial y Simulación
El Juego de la Vida, también ha alimentado debates significativos sobre la posibilidad de vida artificial y la simulación. Algunos filósofos y científicos han utilizado este juego como un modelo para explorar cómo podrían formarse y evolucionar sistemas vivos artificiales. La simplicidad y la elegancia de las reglas del Juego de la Vida, combinadas con la complejidad emergente que se observa, proporcionan un marco intrigante para considerar las condiciones bajo las cuales la vida artificial podría surgir.Identidad y Continuidad
Otra área de debate filosófico se centra en la identidad y la continuidad de los patrones en el Juego de la Vida, lo que nos lleva a cuestionar la naturaleza misma de la entidad y su persistencia a lo largo del tiempo en un entorno dinámico y cambiante. Cuando un patrón complejo, como un planeador, se mueve o se transforma debido a las reglas del juego, surge la pregunta de si podemos considerarlo la misma entidad a lo largo del tiempo o si, de alguna manera, se ha transformado en algo diferente. Este cuestionamiento nos lleva directamente a problemas de identidad personal en filosofía, donde se debate si una persona sigue siendo la misma a lo largo del tiempo a pesar de los cambios físicos y psicológicos que experimenta.abril 18, 2023
Desarrollo de aplicaciones web más fácil y rápido con CodeIgniter
Si eres un desarrollador web, probablemente estés buscando una manera más fácil y rápida de crear aplicaciones web. CodeIgniter es un framework de PHP que te puede ayudar a lograrlo. En este post, te explicaremos qué es CodeIgniter y por qué deberías considerar usarlo para tus proyectos.
¿Qué es CodeIgniter?
CodeIgniter es un framework de PHP que se utiliza para el desarrollo de aplicaciones web. Fue desarrollado por EllisLab, pero ahora es mantenido por la comunidad de desarrolladores de CodeIgniter. Es un framework ligero, rápido y fácil de usar, que te permite escribir código de manera más eficiente y rápida.
¿Por qué deberías usar CodeIgniter?
Hay varias razones por las que deberías considerar usar CodeIgniter para tus proyectos de desarrollo web:
1. Es fácil de aprender
CodeIgniter es un framework muy fácil de aprender y usar. Tiene una documentación detallada y una comunidad activa de desarrolladores que pueden ayudarte a resolver cualquier problema que tengas. Si ya sabes PHP, no deberías tener problemas para empezar a trabajar con CodeIgniter.
2. Es rápido
CodeIgniter es un framework muy rápido. Utiliza una arquitectura MVC (Modelo-Vista-Controlador) que te permite separar la lógica de tu aplicación de la presentación. Esto hace que la aplicación sea más rápida y fácil de mantener.
3. Es seguro
CodeIgniter tiene muchas características de seguridad integradas, como la protección contra ataques CSRF (Cross-Site Request Forgery) y la validación de formularios. Esto hace que sea más fácil y seguro desarrollar aplicaciones web con CodeIgniter.
4. Es escalable
CodeIgniter es un framework muy escalable. Te permite agregar nuevas funcionalidades a tu aplicación sin tener que hacer grandes cambios en el código existente. Esto hace que sea más fácil escalar tu aplicación a medida que tu negocio crece.
Conclusión
Si estás buscando una manera más fácil y rápida de desarrollar aplicaciones web, CodeIgniter es una excelente opción. Es fácil de aprender, rápido, seguro y escalable, lo que lo convierte en un framework de PHP muy popular entre los desarrolladores web. Prueba CodeIgniter en tu próximo proyecto y experimenta por ti mismo lo fácil y eficiente que puede ser el desarrollo web.
diciembre 10, 2013
Usar la instancia de Codeigniter desde nuestras propias clases automáticamente
Generalmente tenemos que hacer algo como: $CI = &get_instance(); para después usar ese objeto en la forma: $CI->db->get(); lo cual pues no se ve tan bien, como cuando hacemos las llamadas al puro estilo de CodeIgniter.
Para resolver esto (si es que contamos con la versión de PHP 5.0 o superior), podemos utilizar el método mágico __get() para poder incluir las funcionalidades de la instancia de CodeIgniter en nuestra propia clase de manera transparente, del siguiente modo:
Solo hay que agregar este método en nuestra clase y ya podremos hacer llamadas a las diferentes funciones de CodeIgniter de manera tradicional, como $this->load->view() ó $this->db->get()
Los métodos mágicos en PHP son una gran herramienta y te invito a que los descubras y te enteres de la clase de cosas que pueden hacer por ti... por algo son "mágicos" =:-)
septiembre 18, 2012
Redirigir por JQuery usando el método POST
Es muy común necesitar redirigir al usuario por javascript desde nuestro sitio web a otra página, lo cual es muy simple de hacer simplemente cambiando la propiedad window.location.href o bien abriendo una nueva pestaña en el navegador con la función window.open()
El problema está en si lo que se desea es redirigir el navegador a otra dirección web y además incluir en esa solicitud variables que viajen por el método POST, esto suele ser necesario cuando se consume alguna API, se desea autenticar automáticamente al usuario en algún sitio enviando sus credenciales, se desea consumir un servicio REST "especial", o simplemente enviar a una nueva página información que no sea visible en la dirección URL. Esta al parecer es una duda muy común en el sitio de stackoverflow y a menudo se confunde el problema con una solicitud AJAX (lo cual es muy simple de resolver usando JQuery), pero en este caso se requiere redirigir al usuario a otra página, no cargar contenido en segundo plano.
La función redirect_by_post(purl, pparameters, in_new_tab) recibe 3 parámetros muy sencillos, el primero es una cadena con la dirección url de la página a abrir, el segundo es un objeto javascript con las variables a enviar, y el tercero es un valor booleano que de ser verdadero indica que se desea abrir la página en una nueva pestaña del navegador y en caso de ser un valor falso se abre en la misma pestaña activa.
Se puede ver un ejemplo de su uso aquí:
La función simplemente crea un formulario dentro del cuerpo de la página; lo inicializa para que trabaje tal como se le ha indicado a la función que debe comportarse, y una vez enviado el formulario lo elimina del DOM, esto permite trabajar dinámicamente el número de variables a enviar y funciona bien con los principales navegadores.
Si le hacen alguna mejora a esta función pueden postearla en el repositorio de GitHub donde está alojada.
Un saludo y espero les sirva =:-)
mayo 04, 2012
Como ha cambiado la educación en la era digital
Esto me recuerda una vieja anécdota de cuando estudiaba el sexto grado de primaria en un modesto municipio del estado de Chiapas:
Estando un día en clase, leíamos conjuntamente y en voz alta por turnos, una lección del libro de lecturas proporcionado por la secretaría de educación pública para los estudiantes de sexto grado.
Esta lección trataba de un escrito que hacía un niño que decía vivir en un lugar llamado "Kenya"; y ahí se suscitó el primer debate, ya que el maestro, no sabía a ciencia cierta si dicha palabra se debía leer como "Ken-ia" o como "Ken-lla"... el caso es que en un momento de la clase parecíamos resignados a quedarnos con esa interrogante y bueno, podíamos vivir con esa duda de cualquier modo, (ninguno de mis compañeros planeaba viajar para ese país en esos tiempos).
Pero más adelante en esa misma lectura el niño relataba que vivía "a la sombra del kilimanjaro", y pues no faltó la inocente alma que preguntó:
Maestro, ¿Qué es el Kilimanjaro?El maestro peló tamaños ojotes y tuvo que admitir que no tenía ni la más pálida idea de que demonios era eso... no sabía si era un árbol o edificio, o algún otro artefacto que diera sombra; así que como es costumbre de los maestros, pues se quedó de tarea investigar cada quien por su cuenta que era el famoso Kilimanjaro;... en aquellos tiempos mi único material de consulta era un muy humilde diccionario donde no figuraba la palabreja, así que tuve que ir a la biblioteca municipal y hurgar entre montones de libros sin ningún éxito; incluso organizamos una excursión colectiva a los diferentes acervos académicos de nuestro pueblo, pero en ninguno de ellos había una referencia clara sobre que era lo que significaba esa palabreja, y al terminar el año escolar aún no habíamos aclarado esa duda.
Pero hoy en día...
El día de hoy en cuestión de minutos se pueden responder inquietudes como esta y con un esfuerzo mínimo, con solo poner en el buscador de Google la palabreja se pueden encontrar miles de referencias, fotografías, videos, visitas virtuales al lugar, etc!, hoy un niño de la edad que yo tenía en aquel entonces, puede resolver en unos segundos la duda que a mi me aquejó por varios meses; y pasar a lo que sigue y preguntarse cosas aún más complejas como "¿Como se llamaba la mama de Rasputín?" y contestarse el solo en unos minutos.Para mí que me ha tocado vivir esa transición y esta revolución de la información, de verdad que no dejo de sorprenderme día con día...
¿Alguien más tiene una anécdota parecida?
abril 24, 2012
Estaré en la CONISOFT 2012
Estaré presentando un proyecto personal muy, muy interesante que espero que se llegue a convertir en algo realmente grande.
Por si alguien quiere pasar a saludar, platicar, o enterarse de este proyecto, por allá nos vemos!!
abril 03, 2012
Mis proyectos en GitHub
Este proyecto lo encuentran en esta dirección: http://cgarciagl.github.com/Delphi-FPS/
Algunos proyectos como este mostrado aquí, son códigos que desarrollé en mis ratos de ocio, para aprender algunas nuevas técnicas de programación y para poner a prueba algunas teorías; pero bien podrían servirle a alguien como base para iniciar algún proyecto más elaborado.
Poco a poco iré agregando más proyectos de los que espero tener retronalimentación y espero que les hagan Forks y participen aquellos a los que les llegue a interesar algún tema en particular...
Mi cuenta de GitHub es: https://github.com/cgarciagl y ahí podrán encontrar los proyectos que les comparto, principalmente encontrarán proyectos desarrollados en Delphi y de PHP y Javascript; particularmente para los frameworks: CodeIgniter y JQuery...
Saludos
noviembre 23, 2010
septiembre 21, 2010
Mas humor de ingeniería de software =:-)
Con motivo de la clase de hoy de mi maestría sobre métricas de calidad ahora aquí van estas tiras
estas son brillantes;
Cuando las métricas se mal-versan:
Lo que realmente sucede en una reunión de RTF (Revisión Técnica Formal)
En la misma reunión, al determinar las metas del proyecto:
Y cuando las estadísticas están cuchareadas (para recordar que correlación no indica causalidad):
agosto 30, 2010
Humor Agil
Aprovechando que ahora estoy tomando clases sobre Metodologías Ágiles algo de la filosofía de Dilbert:
Pair Programming:
Usuarios comprensivos:
Jefes comprensivos:
octubre 21, 2009
Richard Stallman en Xalapa este 26 de Nov 2009
El Tour será un evento de 3 días en 3 ciudades: el 26 en Xalapa, Veracruz; el 27 en Puebla, Puebla; y el 28 en Guanajuato, Guanajuato.
En Xalapa, el evento será en el Museo del Transporte. Para más información visite la página del evento.
octubre 20, 2009
Holly shit, soy un nerd!
Ahora que no tenía mucho que hacer, bagabundeando por ahí llegué a esta encuesta que evalua que tan Nerd eres; y santos héroes del fobaproa Batman!! saqué 94% !!!
Ya tenia yo conciencia de tener cierto nivel de frikismo, ¿pero tanto??, si llega a ser preocupante. Esta calificación me pone como un kaiosama de los nerds.
Ahora que en una introspectiva exhaustiva, debo confesar que si soy fan de algunas series de anime, he coleccionado algunos comics alguna vez en mi vida, me gustan mucho los juegos de video, paso muchas horas al día pegado a la computadora, soy super fan del universo de star wars (no asi de star trek), y tengo varias figuras de acción de superheroes en la casa, puedo pasarme toda una tarde viendo documentales en el animal planet, y en el toilet hay una pila de libros de diferentes temáticas que van desde algoritmos genéticos hasta de modelos estocásticos. Solo puedo alegar en mi defensa que nada de esto me enajena y que en realidad prefiero mil veces pasar una buena noche bohemia con vino y guitarras que una noche de halo multiplayer online. Aunque, si lleva su buena tajada de razón la susodicha encuesta.
Por cierto, ¿conocen ya la nueva forma de jugar piedra, papel o tijera al estilo nerd?, en la serie "The big bang theory" proponen que se agreguen 2 elementos nuevos al juego, de modo que el juego quedaría en "piedra, papel, tijeras, lagarto, spock", y las reglas pues son muy simples:
- Las tijeras cortan el papel
- El papel cubre a la piedra
- La piedra aplasta al lagarto
- El lagarto envenena a Spock
- Spock destroza las tijeras
- Las tijeras decapitan al lagarto
- El lagarto se come el papel
- El papel refuta a Spock
- Spock vaporiza la piedra
- y, como siempre ha sido... La piedra aplasta las tijeras

Esto con el fin de minimizar el riesgo de empates en el juego... claro que es preferente que esta versión se juegue en el idioma klingon, sino, pues es igual pero pierde parte del encanto =:-)
Que tengan una larga y prospera vida...
octubre 04, 2009
Esquema de colores para PsPad
PsPad es un editor de texto gratuito para programadores que por lo menos para mi se ha convertido en herramenta indispensable para el trabajo día a día.
junio 20, 2009
¿es que se acabó el encanto?
julio 31, 2008
¿Sabes lo que es un hashmap?
Un hashmap es una estructura de datos que permite crear un mapa en memoria para la rápida identificación de elementos a partir de un dato usado como llave. Puedes decir: ok si conozco muchas estructuras de datos que permiten hacer eso, ¿cual es la diferencia con los hashmaps?; bien, la principal es que los hashmaps son verdaderamente rápidos.
La librería JCL incluye varias clases para la implementación de diferentes tipos de hashmaps, aquí mostraré una de estas para poder encontrar una cadena a partir de el valor de otra:
Y una vez hecho esto, encontrar una aguja dentro de ese gran pajar se reduce a una simple instrucción:
ShowMessage (Map.GetValue ('Llave5670'));En este caso hemos ejemplificado usando cadenas (que incluso usando hashmaps se gana mucha velocidad respecto a utilizar los clásicos derivados de TStrings, TStringList), pero las posibilidades se multiplican si te das cuenta de que puedes mapear grandes cantidades de objetos usando esta técnica. Estos pequeños grandes tips hacen la diferencia entre lo que puede parecer un lento cacharro, o un veloz jet a la hora de trabajar con cantidades de datos muy considerables.
julio 11, 2008
¿Y tu que tan Espartano eres?
No, no se trata de un concurso para ver quien grita mas fuerte "This is Spartaaa!", Se trata de un estilo de programación de hecho. Me he enterado hace poco de este estilo, y como ven en el enlace tiene que ver con la austeridad en todos los sentidos.
Particularmente yo no soy tan espartano, me gusta anteponer la reutilización de código y la mantenibilidad por encima de la austeridad, por ejemplo siempre prefiero llamar a una variable: MediaAritmeticadelaMuestra, que simplemente M, lo mismo para las funciones y procedimientos. Aunque si dedico muy buena parte de mi tiempo de trabajo a optimizar y simplificar procesos ya hechos; no me preocupa demasiado el aprovechar hasta el más infimo bit de memoria; prefiero aprovechar las jerarquías de la VCL, y usar patrones de diseño a diestra y siniestra.
¿A cuantos aquí el estilo de programación se les parecería a esto si fuera uno de los 300?:
junio 29, 2008
Instalar Zeos 6.6.2 rc en Delphi 2007
Hay algunos detallitos para instalar este paquete de componentes particularmente en Delphi 2007 pero te comparto como puedes instalarlos sin problemas ajustando solo una línea de código.
En primera se debe abrir el archivo ZeosDbo.groupproj de la carpeta Delphi11 que se encuentra en la carpeta packages y compilar uno a uno los paquetes que aparecen en el Project Manager.
De estos, el paquete a instalar es el que se llama ZComponentDesign.dproj, pero al instalarlo así nada mas solo da el mensaje de que el paquete ha instalado pero no registra ningún componente, para corregir esto solo hay que editar el código fuente del paquete, esto es dar click con el botón derecho del ratón sobre este paquete y seleccionar la opción View Source desde el Project Manager, y agregar la siguiente línea de código justo antes del end. final:
contains
ZComponentReg in '..\..\src\component\ZComponentReg.pas';
Una vez hecho esto es solo Guardar los cambios y volver a seleccionar Install y esta vez si estarán todos los componentes registrados.
junio 02, 2008
Fable 2 para finales de año
Me gustan los RPG's, (bueno, no tanto los de combates por turnos) existen 2 títulos que me han gustado bastante, el primero es el "Ocarina of Time" de la serie de Zelda (un clásico de clásicos), creación del gran Shigeru Miyamoto, y el segundo fué Fable The Lost Chapters de LionHead, creado por Peter Moulineaux.
Este último me gustó mucho por la ambientación y lo bien cuidado de ciertos detalles, como la excelente música, hasta donde llegó incluso el talento de el gran Danny Elfman.
Consecuentemente me encuentro entre los miles de fans que esperan el lanzamiento de la secuela Fable 2, que ya ha sido anunciado para el otoño de este año 2008. Para que vean mas o menos de que va el asunto vean este avance del juego:
¿¿Que tal?? ¿¿se ve bueno no??, hay muchos detalles muy interesantes , el señor Moulineaux es muy buen diseñador de video juegos y ha prometido una serie de características que destacarán a este juego de entre los demás de su tipo; una de estas muchas cosas que per-se ya es una gran mejora, es la utilización del motor físico de Havok, que es uno de los mejores y muy utilizado en otras recientes publicaciones de mucho éxito.
El encanto que ha caracterizado las creaciones de Peter Moulineaux es el involucramiento de las emociones y la moral del jugador en la trama de la historia, el poder jugar y llegar a sentirte bien o mal por haber tomado cierta decisión, la sensación de tristeza por la perdida de un compañero, o la humillación que otros personajes hacen al protagonista por la derrota sufrida y que terminan por tocar el animo mismo del que juega el rol. Esto amigos es un todo un arte y existen muchos libros y artículos que hablan al respecto, de hecho tengo un libro electrónico muy bueno, que aborda este tema desde diferentes perspectivas y es estupendo, si a alguien le interesa este tema le puedo enviar una copia, solo tiene que solicitarlo.
mayo 29, 2008
¿Porque Delphi 2007?
Cuando me preguntan si he cambiado a Delphi 2007 solo por seguir la moda geek o cuales son mis razones para haber dejado Delphi 6, les contesto:
Bueno!!... son tantas cosas, que es difícil enumerarlas en orden de importancia, pero para muestra unos cuantos ejemplos:
