Difference between revisions of "Inc/dec"
Line 49: | Line 49: | ||
.ploc inc | .ploc inc | ||
stop | stop | ||
+ | |||
+ | ===Operators=== | ||
+ | * [[store]] | ||
+ | * [[rnd]] | ||
+ | * [[add]] | ||
+ | * [[sub]] | ||
+ | * [[mult]] | ||
+ | * [[div]] | ||
+ | * [[inc/dec]] |
Revision as of 01:17, 22 September 2005
Increase/Decrease These operators, inc(increase) and dec(decrease), are some of the most useful but are infrequently used. They work by either decreasing or increasing a memory location by 1.
For example:
50 inc
adds 1 to *50. When more are used simultaneously the effects are cumulative.
For Example:
50 dec
50 dec
50 dec
Subtracts 3 from *50. One of the more popular uses of this is for birth tie removal.
cond
start
.tie *.robage 1000 mult add inc
.deltie *.robage 1 sub 1000 mult add inc
stop
It has also been used effectivly as an inter-gene signal and method to "freeze" values.
Pre 2.4 Not all locations can be handled with them, memlocs 1-8(more?) can not be inc/dec. This is to ensure that the bots are required to expend some energy. (Note: being changed in new version)
Post 2.4 All memory locations can be modified with inc/dec, but inc/dec now cost nrg. I believe it's equal to the cost of a store.
Value freezing using inc/dec
This technique allows you to "freeze" values or to raise/lower a number to a value and then keep it there. This is best used for when you need a value at a constant number, but without the cost of continously storing it.
' Basic method to demonstrate freezing ' Will keep .tieloc at -1 permanently cond start .tieloc *.tieloc dup div mult inc .tieloc dec stop 'More complex method demonstrates freezing 'at a value with .ploc=7 cond start 'When *.ploc = 7 dec by 1 .ploc *.ploc 7 sub 1000 mult add dec .ploc inc stop