Vectores, Velocidad, y Aceleración (NC2)

Esta es la segunda entrada en la serie de artículos sobre el libro The Nature of Code. No es una traducción, sino una discusión breve sobre las ideas y una reimplementación de los algoritmos. En vez de usar Java usaré Javsascript con la librería p5.js.

El primer capítulo trata sobre vectores y cómo utilizarlos en animaciones. Normalmente uno representa por medio de vectores la posición, velocidad, y aceleración de un objeto.

Read more...

Caminantes Aleatorios (NC1)

Desde hace unos años he tenido la intención de leer el libro The nature of code escrito por Daniel Shiffman. Es un libro que se enfoca en crear animaciones para simular de forma aproximada cosas como movimiento, inercia y fuerzas actuando sobre un cuerpo. Lo que más me gusta del libro es lo gratificante que resulta el ver tu código «vivo» en la pantalla.

En esta serie de artículos hablaré un sobre las ideas presentadas en el libro conforme lo vaya leyendo. Implementaré los ejercicios y ejemplos en Javascript, por medio de p5.js. En el libro Shiffman trabaja con Processing, un dialecto de Java que corre en su propio interprete.

En esta entrada revisaré la introducción del libro, que trata sobre caminantes aleatorios y distribuciones de probabilidad.

Read more...

Semillas en espirales

Uno de los ejemplos más populares en matemática divulgativa es el crecimiento en espiral de algunos elementos en la naturaleza. Las semillas de girasol son tal vez el caso más común. Se nos dice que la espiral de alguna manera está relacionada con la razón dorada y la sucesión de Fibonacci.

Por supuesto hay muchos otros ejemplo de plantas y hojas que crecen en un patrón similar. Pero, ¿por qué?.

Read more...

FizzBuzz recursivo

El problema de FizzBuzz es un problema clásico que se usa como pregunta en entrevistas para programadores. Por la naturaleza del problema, aún cuando un programador tenga algo de experiencia escribiendo código puede ser que se le complique implementar la solución correctamente.

El problema es muy simple, se basa en un ejercicio de aritmética elemental que ayuda a los niños a practicar la división.

La idea básica es decir (o imprimir) los números del 1 al 100 excepto en tres casos:

  • Cuando alguno de los números sea divisible entre 3 debes decir la palabra «Fizz».
  • Cuando el número sea múltiplo de 5, debes decir la palabra «Buzz».
  • Finalmente, cuando el número es múltiplo de ambos, 5 y 3, debes decir la palabra «FizzBuzz».

Read more...

Recursive FizzBuzz

The FizzBuzz problem is a classical interview question used to quickly discard candidates that want to work as programmers but can’t actually write code. It is very simple and is based on an old mental exercise to help kids practice division.

The idea is to say (or print) the numbers from 1 to 100, except in three special cases:

  • If the number is divisible by 3, then you must say «Fizz».
  • If the number is divisible by 5, then you have to say «Buzz».
  • Finally, if the number happens to be a multiple of both 5 and 3, then the word to say is «FizzBuzz».

Read more...

The classic Snake with a twist

I had the idea for this minigame a long time ago, when I played Yoshi Island on my cousin’s Gameboy Advanced. I finally have a chance to do it.

Read more...

Algoritmo para generar laberintos

En términos muy generales, un algoritmo para generar laberintos inicia con un grafo plano en el que cada arista representa una pared, y el objetivo final de dicho algoritmo es encontrar un subgrafo. Dependiendo del grafo inicial y el algoritmo empleado el subgrafo final puede ser un laberinto muy intrincado o uno muy simple.

Read more...

Conjuntos de Julia

Los conjuntos de Julia, nombrados así en honor al matemático Gaston Julia, son una familia de fractales que se obtienen al estudiar los conjuntos invariantes bajo iteraciones de una función compleja. Al complemento de un conjunto de Julia se le llama conjunto de Fatou en honor al matemático Pierre Fatou.

En términos muy generales se puede decir que el conjunto de Julia de una función racional compleja son aquellos puntos cuyo comportamiento es caótico, es decir que pequeñas perturbaciones provocan cambios drásticos. Mientras que el conjunto de Fatou contiene aquellos puntos cuyo comportamiento es regular.

Read more...

Estructuras de datos en R

En R como en cualquier otro lenguaje existen diversas estructuras de Datos, pero a diferencia de otros lenguajes en R la estructura básica son los vectores. Incluso los números y las cadenas de texto se de hecho vectores de un solo elemento. En este artículo explicaré algunas estructuras de datos y como manipularlas.

Read more...

Introducción a R

R es un popular lenguaje de programación especialmente útil para análisis estadístico. Este artículo explican algunos conceptos básicos para empezar a usar R.

Read more...