Redcode is the language of Corewar, a game in which two or more programs battle to control the memory of a virtual computer. Here's a quick introduction to Corewar. Traditionally programs are coded by hand, but a number of players have risen to the challenge of writing a program to evolve good contenders.
The purpose of a hint is to control the direction of evolution by issuing a score penalty for certain types of code. Here are the hints I've been experimenting with:
- a penalty for three consecutive opcodes the same
- a penalty for the first opcode being a SPL
- a penalty for the a-mode of a SPL being #
This produced some really weird programs to begin with, but after relaxing the penalties stronger programs emerged. Unfortunately TEV still hasn't produced a decent replicator so instead here's the code for the most successful bomber of the latest run, medusa's mirror:
;redcode-nano ;name medusa's mirror ;author John Metcalf ;strategy evolved using TEV12 with hints ;assert CORESIZE==80 mov.i <46, $11 spl.i #-4, {56 mov.i <36, {79 mov.i {79, {54 djn.f $78, {59 end
Next I'm hoping to divide the pool into different regions and implement a different hint in each region. If you have any suggestions for hints, please let me know.