lentejanumerica/src/danzasistemas-tag.gmo

79 lines
2.9 KiB
Plaintext

# danzasistemas-tag
una compudanza basada en máquina abstracta (tag systems, o bien, máquina de post)
=> ./compudanzas.gmi {compudanzas}
# descripción
las danzasistemas-tag consisten en "batallas" de baile en las que alternamos recibiendo y respondiendo secuencias de movimiento.
las secuencias que respondemos son producto de procesar elementos de la secuencia que recibimos.
# indicaciones
necesitamos los siguientes elementos:
* A: alfabeto finito de símbolos/movimientos identificables y replicables
* P: las reglas de producción: qué símbolos/movimientos hay que agregar al final de la nueva secuencia, de acuerdo al primer símbolo/movimiento de la secuencia recibida.
* m: número de eliminación: cuántos símbolos/movimientos hay que eliminar del inicio de la secuencia recibida.
al recibir una secuencia de movimiento, hemos de poner atención y realizar lo siguiente para construir nuestra respuesta:
* notar el primer símbolo/movimiento, que nos indica qué regla de producción seguir al final de la secuencia.
* descartar la cantidad de símbolos/movimientos del inicio de la secuencia de acuerdo al número de eliminación. (esto incluye al primer símbolo/movimiento).
* memorizar y replicar la secuencia recibida a partir de ese punto, en orden y hasta el final.
* agregar el o los símbolos/movimientos al final de la secuencia, de acuerdo a la regla de producción.
según la danzasistema-tag, la dinámica de respuestas continúa hasta llegar al símbolo/movimiento que indique detenerse, o hasta que la secuencia de movimiento quede vacía.
# ejemplo
cómputo de secuencias de collatz, tomado de wikipedia
=> https://en.wikipedia.org/wiki/Tag_system#Example:_Computation_of_Collatz_sequences Tag system - Example: Computation of Collatz sequences (web)
los elementos de nuestra danzasistema-tag serían los siguientes:
## A: alfabeto finito de símbolos/movimientos
tres símbolos/movimientos: a, b, c
## P: reglas de producción
si primer símbolo/movimiento es 'a', agrega 'bc' al final.
si primer símbolo/movimiento es 'b', agrega 'a' al final.
si primer símbolo/movimiento es 'c', agrega 'aaa' al final.
nota cómo cada regla de producción agrega una cantidad distinta de símbolos/movimientos al final.
## m: número de eliminación
en este caso, siempre descartaremos 2 símbolos/movimientos del inicio de la secuencia.
## desarrollo
partiendo de una secuencia inicial 'aaa'...
```
inicio: aaa
respuesta: abc
respuesta: cbc
respuesta: caaa
respuesta: aaaaa
respuesta: aaabc
respuesta: abcbc
respuesta: cbcbc
etc...
```
siempre se descartan los 2 símbolos/movimientos del inicio, pero la cantidad de símbolos/movimientos que se agregan al final cambian de acuerdo a la regla de producción.
esta dinámica de respuestas a partir de esa secuencia inicial, eventualmente termina descartando a la secuencia completa.
## llega(n) aquí
=> ./compudanzas.gmi {compudanzas}