Entrada destacada

Distancia media de dos puntos en un cuadrado unitario

martes, 4 de diciembre de 2018

Sucesión de Kolakoski



Se debe al artista norteamericano William Kolakoski (1944-1997) quien tenía como pasatiempo la matemática recreativa, la publicó en la revista American Mathematical Monthly en 1965, aunque ya en 1939 el matemático Rufus Oldenburger había hecho mención de ella.

La Sucesión de Kolakoski tiene como primeros términos:

1 2 2 1 1 2 1 2 2 1 2 2 1 1 2 1 1 2 2 1 2 1 1 2 1 2 2 1 1 2 1 1 2 1 2 2 1 2 2 1 1 . . .

Para entender como se construye primero debemos hablar de la sucesión contadora de otra sucesión dada (sobre la cual publiqué el 20 de Noviembre de 2018 aquí), que es la sucesión formada por los enteros positivos que indican el número de bloques de símbolos consecutivos iguales en la sucesión. Por ejemplo, la sucesión contadora de la sucesión:

a b b a a b b b a b a a b b . . .

es la sucesión:

1 2 2 3 1 1 2 2 . . .

pues empieza con 1 letra a, luego 2 letras b, 2 letras a, 3 letras b y así sucesivamente.

Ahora sí, la principal característica de la Sucesión de Kolakoski es que ella es su propia sucesión contadora.

En Mathematica

ko = {1, 2, 2};
Do[Which[ko[[n]] == 1 && Last[ko] == 1, AppendTo[ko, 2], 
  ko[[n]] == 1 && Last[ko] == 2, AppendTo[ko, 1], 
  ko[[n]] == 2 && Last[ko] == 1, AppendTo[ko, {2, 2}]; 
  ko = Flatten[ko], ko[[n]] == 2 && Last[ko] == 2, 
  AppendTo[ko, {1, 1}]; ko = Flatten[ko]], {n, 3, 20}]
ko

{1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2}

Función contadora

La podemos calcular por medio de:

contadora[list_List] := Module[{j = 1,
   con = {}, len = Length[list]}, lis = Map[ToString, list];
  Do[Which[n == len - 1 && lis[[n]] == lis[[n + 1]], j++; 
    AppendTo[con, j], n == len - 1 && lis[[n]] != lis[[n + 1]], 
    AppendTo[con, {j, 1}], lis[[n]] == lis[[n + 1]], j++, 
    lis[[n]] != lis[[n + 1]], AppendTo[con, j]; j = 1], {n, len - 1}];
   Flatten[con]]

La función contadora[ ] aplicada a la salida de la Sucesión de Kolakoski nos da una sub lista de la Sucesión de Kolakoski compuesta por 20 términos, el número que habíamos puesto para calcularla.

contadora[ko]
{1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1}

Length[%]
20

Para aprender más sobre Mathematica ingrese aquí sitio de aprendizaje de Wolfram o en mi website ustamathematica.wixsite.com/basicas

No hay comentarios.:

Publicar un comentario