Core War

juego de programación

Core War es un juego de programación en donde combaten entre sí programas escritos en un lenguaje similar al ensamblador con el objetivo de ocupar toda la memoria de la máquina eliminando así a los oponentes.

Partida de Core War ejecutándose en el simulador pMARS 8.5

Historia

editar

El primer sistema de este tipo se denominó Redcode así como el lenguaje empleado.

"Core" (núcleo, en inglés) hace referencia a la memoria de núcleos magnéticos que se utilizaba en los ordenadores antes de la aparición de la memoria RAM. Los programas en lucha, denominados guerreros son ensamblados y ejecutados en multitarea por un programa llamado Memory Array Redcode Simulator (o MARS).

El primer Core War fue idea de Victor Vyssotsky, Robert Morris Sr. que escribieron un programa llamado "Darwin" en 1960. En 1984, A. K. Dewdney y D. G. Jones de Scientific American retomaron la idea y la popularizaron en Core War Guidelines. Se formó la International Core War Society (ICWS) que fueron actualizando las reglas entre 1984 y 1988.

Los guerreros combinan 3 estrategias fundamentales que, por analogía con el juego chino, se les denomina Piedra, papel y tijeras , aunque los programadores tienen plena libertad de programarlos:

  • Un papel hace múltiples copias de sí mismo lo más rápidamente posible, así sacrifica velocidad de ataque por perdurabilidad.

Esta estrategia vence a piedra pero pierde ante tijeras gracias a su gran capacidad de supervivencia aunque tienen una cierta tendencia al empate.

  • Silks son un tipo de papers que empieza inmediatamente la copia mientras ejecuta el resto para ganar velocidad de copia antes de su neutralización.
  • Una piedra directamente bombardea direcciones de memoria a ciegas intentando matar rápidamente al mayor número de enemigos. Su reducido tamaño y sencillez los hace relativamente robustos y difíciles de localizar.

Esta estrategia vence a tijeras pero pierde ante papel.

  • Una tijera es el que comprueba posiciones de memoria a intervalos hasta localizar al guerrero rival. Una vez localizado generalmente sobreescriben su código con instrucciones que les obligan a generar nuevos procesos indefinidamente hasta quedar prácticamente bloqueados. Después proceden a eliminar todos los rivales.

Esta estrategia generalmente vence al papel y pierde contra piedra, puesto que pierde tiempo atacando las posiciones de memoria alteradas por este último.

    • Un vampire o pit-trapper roba procesos a sus oponentes alterando su código en el bombardeo para que pierdan ciclos y frenar su expansión.
  • Un imp es muy pequeño, tan pequeño como "MOV 0,1", que se copia a sí mismo un espacio adelante repetidamente. Su tamaño lo hace difícil de neutralizar.

Generalmente se combina con otras estrategias a fin de aumentar las posibilidades de supervivencia.

Véase también

editar

Enlaces externos

editar