Texto autodescriptivo, prueba 1 (y 0)

Saturday, February 18th, 2012

Este párrafo habla sobre este párrafo. ¿Qué puede decir un texto sobre sí mismo? Puede describirse. Por ejemplo, aquí en total hay 455 caracteres, de los cuales 79 son espacios. Están escritas 333 letras: 149 vocales y 184 consonantes. El caracter más repetido es “e” porque aparece 55 veces, y hay 27 dígitos que sumados dan 100. Este texto fue escrito por Sejo el 18 de febrero de 2012 con ayuda de una computadora. Sí, toda la información es verdadera.

Digamos que la prueba 0 fue:

Este tuit tiene doce vocales.

Todo empezó hace rato en el coche cuando generaba de esas frases que me gustan, “Nunca encontrará la respuesta a la pregunta de por qué nunca le encontrará respuesta”, “Solo tiene un tema de interés: El hecho de que solo tenga un tema de interés”.

Pensé que estaría rifado tener una tesis doctoral cuyo tema fuera ella misma, un texto autoreferente que además explicara cómo se logró esa autoreferencia, algo así.

Pero bueno, decidí empezar por lo simple. La prueba 0 la hice escribiendo a mano, para la prueba 1 decidí ayudarme de un programa.

La principal complicación surgió cuando quise agregar el dato de cuánto sumaban los dígitos presentes. Fue bonito (?) observar oscilaciones, i.e. la suma daba cierto número que hacía que la suma diera otro número que hacía que diera otro número que en algún momento era el número que ya había dado al principio. Hubo que echarle un poco de reflexión. (Como dato curioso, el 100 que quedó en la versión final puede cambiarse por cualquier entero entre 100 y 109 y sigue siendo verdadero)

Las siguientes pruebas deben incluir la complicación de expresar las cantidades de letras usando palabras, para que suceda lo mismo que sucede en la prueba 1 con el número de caracteres, el número de dígitos, la suma de esos dígitos, y el caracter más repetido (su presencia hace que ellos mismos cambien).

No pongo el código que usé porque no quiero spoilearlos. Pero más o menos hace lo mismo que yo hice en la Prueba 0: escribir la frase, medir la(s) variable(s) requeridas para actualizar la frase, y repetir hasta que se estabilice (ya sea solo o con ayuda externa). Extra hint: usé C y la función sprintf de stdio.h (claro que eso solo concierne a la implementación del algoritmo y es para nada fundamental…)

Por último, el comic de XKCD al respecto del tema: http://xkcd.com/688/

🙂