Welcome To Darwinbots > Newbie

Eyes

(1/2) > >>

Darwin226:
I've made a code that determines which eye has the greatest value and sets it as a focus eye.
This is it:

[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']cond
*.mode 1 =
start
-4 .focuseye store
stop

cond
*.mode 1 =
*.eye2 *.eye1 >
start
-3 .focuseye store
stop

cond
*.mode 1 =
*.eye3 *.eye2 >
start
-2 .focuseye store
stop

cond
*.mode 1 =
*.eye4 *.eye3 >
start
-1 .focuseye store
stop

cond
*.mode 1 =
*.eye5 *.eye4 >
start
0 .focuseye store
stop

cond
*.mode 1 =
*.eye6 *.eye5 >
start
1 .focuseye store
stop

cond
*.mode 1 =
*.eye7 *.eye6 >
start
2 .focuseye store
stop

cond
*.mode 1 =
*.eye8 *.eye7 >
start
3 .focuseye store
stop

cond
*.mode 1 =
*.eye9 *.eye8 >
start
4 .focuseye store
stop

The problem:
It's 9 genes. Has anyone thought of something that has the same effect but it less genes?

If someone has, can I use it?


As usual, thanks in advance =)

bacillus:
Even better, I did it in one store   :

--- Code: --- -4 *.eye1 *.eye9 sub sgn 0 floor mult *.eye1 *.eye8 sub sgn 0 floor mult *.eye1 *.eye7 sub sgn 0    floor mult *.eye1 *.eye6 sub sgn 0 floor mult *.eye1 *.eye5 sub sgn 0 floor mult *.eye1 *.eye4 sub   sgn 0 floor mult *.eye1 *.eye3 sub sgn 0 floor mult *.eye1 *.eye2 sub sgn 0 floor mult 4 *.eye9     *.eye8 sub sgn 0 floor mult *.eye9 *.eye7 sub sgn 0 floor mult *.eye9 *.eye6 sub sgn 0 floor mult
 *.eye9 *.eye5 sub sgn 0 floor mult *.eye9 *.eye4 sub sgn 0 floor mult *.eye9 *.eye3 sub sgn 0 floor  mult *.eye9 *.eye2 sub sgn 0 floor mult *.eye9 *.eye1 sub sgn ++ sgn mult add -3 *.eye2 *.eye9 sub   sgn ++ sgn mult *.eye2 *.eye8 sub sgn 0 floor mult *.eye2 *.eye7 sub sgn 0 floor mult *.eye2 *.eye6  sub sgn 0 floor mult *.eye2 *.eye5 sub sgn 0 floor mult *.eye2 *.eye4 sub sgn 0 floor mult *.eye2    *.eye3 sub sgn 0 floor mult *.eye2 *.eye1 sub sgn ++ sgn mult add 3 *.eye8 *.eye9 sub sgn ++ sgn     mult *.eye8 *.eye7 sub sgn 0 floor mult *.eye8 *.eye6 sub sgn 0 floor mult *.eye8 *.eye5 sub sgn 0   floor mult *.eye8 *.eye4 sub sgn 0 floor mult *.eye8 *.eye3 sub sgn 0 floor mult *.eye8 *.eye2 sub   sgn ++ sgn mult *.eye8 *.eye1 sub sgn ++ sgn mult add -2 *.eye3 *.eye9 sub sgn ++ sgn mult *.eye3    *.eye8 sub sgn ++ sgn mult *.eye3 *.eye7 sub sgn 0 floor mult *.eye3 *.eye6 sub sgn 0 floor mult
 *.eye3 *.eye5 sub sgn 0 floor mult *.eye3 *.eye4 sub sgn 0 floor mult *.eye3 *.eye2 sub sgn ++ sgn   mult *.eye3 *.eye1 sub sgn ++ sgn mult add 2 *.eye7 *.eye9 sub sgn ++ sgn mult *.eye7 *.eye8 sub     sgn ++ sgn mult *.eye7 *.eye7 sub sgn 0 floor mult *.eye7 *.eye6 sub sgn 0 floor mult *.eye7 *.eye5  sub sgn 0 floor mult *.eye7 *.eye4 sub sgn ++ sgn mult *.eye7 *.eye2 sub sgn ++ sgn mult *.eye7     *.eye1 sub sgn ++ sgn mult add -1 *.eye4 *.eye9 sub sgn ++ sgn mult *.eye4 *.eye8 sub sgn ++ sgn mult *.eye4 *.eye7 sub sgn ++ sgn mult *.eye4 *.eye6 sub sgn 0 floor mult *.eye4 *.eye5 sub sgn 0    floor mult *.eye4 *.eye3 sub sgn ++ sgn mult *.eye4 *.eye2 sub sgn ++ sgn mult *.eye4 *.eye1 sub     sgn ++ sgn mult add 1 *.eye4 *.eye9 sub sgn ++ sgn mult *.eye4 *.eye8 sub sgn ++ sgn mult *.eye4    *.eye7 sub sgn ++ sgn mult *.eye4 *.eye6 sub sgn ++ sgn mult *.eye4 *.eye5 sub sgn 0 floor mult
 *.eye4 *.eye3 sub sgn ++ sgn mult *.eye4 *.eye2 sub sgn ++ sgn mult *.eye4 *.eye1 sub sgn ++ sgn     mult add 0 *.eye5 *.eye9 sub sgn ++ sgn mult *.eye5 *.eye8 sub sgn ++ sgn mult *.eye5 *.eye7 sub     sgn ++ sgn mult *.eye5 *.eye6 sub sgn ++ sgn mult *.eye5 *.eye4 sub sgn ++ sgn mult *.eye5 *.eye3   sub sgn ++ sgn mult *.eye5 *.eye2 sub sgn ++ sgn mult *.eye5 *.eye1 sub sgn ++ sgn mult add .focuseye store
--- End code ---
Sorry about the indentations.

Darwin226:
OH MEH GAWD!!!

Whaaaa....
How?

*runs away*

Though I'm a little scared to ask, could you explain how it works?

If it's too long to explain or something you don't need to.

bacillus:
PART 1


--- Code: ----4 *.eye1 *.eye9 sub sgn 0 floor mult
--- End code ---

subtracting *.eye9 from *.eye1 returns 0 if equal, positive if .eye1 is greater, and negative if .eye9 is greater. (sgn simple reduces this difference to -1, 0 or 1.)
0 floor makes both -1 and 0 equal to 0.
the resultant is multiplied by -4, the focuseye value for eye1.
repeat this process for each of the eye pairings with .eye1:
 

--- Code: ----4 *.eye1 *.eye9 sub sgn 0 floor mult
 *.eye1 *.eye8 sub sgn 0 floor mult
 *.eye1 *.eye7 sub sgn 0 floor mult
 *.eye1 *.eye6 sub sgn 0 floor mult
 *.eye1 *.eye5 sub sgn 0 floor mult
 *.eye1 *.eye4 sub sgn 0 floor mult
 *.eye1 *.eye3 sub sgn 0 floor mult
 *.eye1 *.eye2 sub sgn 0 floor mult
--- End code ---
(Looks so much neater that way, but not as impressive   )

and voila, you know whether .eye1 should be selected or not!
This process is repeated for each eye.
Sometimes, you have to use ++ sgn instead of 0 floor. This makes -1 to 0, and 0 and 1 to 1. This gives certain eyes priority over others when there's a clash eg. both eyes have same readings.

PART 2
Because of the priority setting bit, only one number will equate to a nonzero value (unless each eye is equal to 0 or eye5 takes priority). However, there's still a whole lot of zeros on the stack. To get rid of these, simply add them all together. This will leave you with one nice number to finish it all off:

.focuseye store

This code is practically unreadable unless you know how it works, and I had to remind myself (believe me, I found a glitch in it and it took me forever to find it   )
Anyways, that's about as simple as I can make it.  

Darwin226:
Great! I understand everything. (not sarcastic)

Thanks =)

Navigation

[0] Message Index

[#] Next page

Go to full version