[00:18] Hiya flyduck
[00:29] whats up andrew
[00:30] not much, getting into this whole core wars thing. there are so many complex ways to utilize the instructions that I'm a little bit overwhelmed. I've used assembly before, but I guess I'm going to have to take it a little bit at a time.
[00:30] What's up with you?
[00:30] i just started a few weeks ago myself :P
[00:31] nice :)
[00:31] I was under the impression that I was a decade or so late to the party. heh.
[00:31] ive done a few warriors but right now im working on a genetic program for warrior evolution : )
[00:31] ahh
[00:31] heh
[00:31] yeah, I've heard of things like that.
[00:32] genetic algorithms are actually a pretty simple concept
[00:32] do go on :)
[00:32] they're really just manipulating strings of bits
[00:33] the magic comes in when you get to optimization, good methods of crossbreeding and mutation, and etc
[00:34] what? :)
[00:34] but in its simplest form a genetic algorithm is pretty simple !
[00:35] this page is pretty good http://www.obitko.com/tutorials/genetic-algorithms/
[00:35] basically a genetic algorithm works on the principle that a chromosome is just a bit-string
[00:36] so if you can translate something into a bit string, like for instance a corewars warrior
[00:36] you just need to be able to write a) a fitness function, b) a crossbreeding function, c) a mutation function
[00:36] crossbreeding is just taking one part of chromosome A, one part from chromosome B, and making a new chromosome out of it
[00:36] mutation is just flipping bits
[00:37] fitness is just deciding how good it is :P
[00:38] all of these can be really simple or fairly complex !
[00:38] sounds complex to me
[00:38] I'm still trying to wrap my head around all the redcode instructions
[00:39] what have you tried writing so far?
[00:40] well, the thing that I got stymied on most recently is a dwarf that bombs in both directions
[00:41] probably because relative positions and essentially the unsigned nature of it
[00:42] ah, but you know that offsets can have a negative sign in front of them right? :o
[00:42] hrm, yeah, but when I do a mov to -1, it ends up being 7998 if there are 8000 addresses
[00:45] well that would be both directions, would it?
[00:45] no, it would move it to position 7998
[00:45] like if the mov instruction is at core location 0 and it specifies -1, it'd bomb 7999
[00:46] it moves it to 7999 no matter what
[00:46] maybe I should pastebin the code
[00:46] ok
[00:46] keep in mind the core is essentially wrapped around
[00:46] so it's like a circle rather than a line
[00:46] location 0 == location 8000 in an 8000 location core
[00:47] hrm, hold on
[00:49] http://pastebin.com/m7db4e959
[00:49] Dissect at will
[00:50] Hrm, what the deuce, I must have changed that recently
[00:51] woah! I got it working
[00:51] haha
[00:52] er, and now I killed it
[00:52] oops
[00:53] Here's what I have now
[00:53] http://pastebin.com/m3db52efd
[00:53] This works, but a little oddly
[00:54] ah, I know why
[00:55] Hey! Great idea!
[00:59] What was happening was the multiplication by the negative, of course
[00:59] took advantage of that in this one, to alternate between front and back bombinb
[01:00] bombing
[01:00] http://pastebin.com/m2d352430
[01:00] however, multiplying by 2 every time leads to predictable and increasingly spaced out bombing
[01:00] not good
[01:00] -2, rather
[01:01] yeah.. from what ive gathered, offsets become a big deal
[01:01] as in, to avoid them, or use them?
[01:02] i mean like, what offsets you use for various operations drastically affect your warriors performance
[01:02] yeah
[01:04] at least it does well against a single imp
[01:05] What's the usual warrior's size?
[01:05] well optimization is quite important
[01:05] nano warriors cant exceed 5 lines
[01:05] i think the average warrior might run around 12 lines
[01:05] nano warriors?
[01:07] yeah, warriors of a small size that fight in a small core
[01:07] ah
[01:07] people have special koth hills for just nano's
[01:08] neat
[01:19] MSG: Quit: This computer has gone to sleep
[01:55] Join: baudchan joined #corewars
[04:09] Bah, my first submitted warrior on nano didn't do so well
[04:10] hzhz
[04:10] haha* : )
[04:11] whatd you submit, and where, out of curiosity ?
[04:11] KOTH@SAL nano
[04:11] Twenty Four Too Late
[04:11] i didnt know you could submit stuff and watch it in real-time
[04:11] well, it was email
[04:11] ah i see
[04:12] can i see it?
[04:12] the warrior i mean
[04:12] sure
[04:12] incoming paste :D
[04:12] ---
[04:12] MOV 4, @3
[04:12] MUL #-2, -1
[04:12] JMP -2
[04:12] DAT 0, 0
[04:13] ---
[04:14] hm
[04:17] did you test that out?
[04:20] yeah
[04:20] I'm kind of stumped as to how to incrementally bomb both ways without multiplying by something every time
[04:21] (as this leads to increasingly greater spaces between bombs, which is bad for stationary enemies)
[04:21] I mean, I could do it, but it'd be a bit less elegant
[04:22] here's my first shot at a nano war
[04:22] ptr DAT ptr, step
[04:22] start MOV }ptr, >ptr
[04:22] jump DJN start, #length
[04:22] ADD #2, $(step-1)
[04:22] JMP step+start
[04:23] wha
[04:23] yours actually beats it : D
[04:23] ?!
[04:23] Every time or... ?
[04:23] well, it scores better than it the majority of the time
[04:23] crazy
[04:23] I can't even tell what's going on with yours
[04:24] i wasnt rly trying to make a competitive warrior with it, i was trying to make a 'redcode quine,' something like that
[04:24] all it does it reproduce itself in different areas of the core :P
[04:24] ah
[04:24] the DAT instruction just holds 2 values
[04:25] the MOV does the moving and increments both values, the first of which specifies the place in its code its moving and the second of which specifies the place in the core to move to
[04:25] the DJN is for the loop
[04:25] the ADD modifies the moved DJN so the counter is adjusted back to its original value
[04:25] and then the JMP jumps to the newly created code
[04:25] its pretty damn inefficient for what it does
[04:26] say all that out now i realize how bad it is !
[04:26] it won't compile for me :/
[04:26] the interesting thing, though, is that depending on the step size, it can fare well vs. some classic successful warriors, like rave
[04:26] add these lines
[04:26] step EQU 101
[04:26] length EQU 5
[04:26] org start
[04:26] those are just 'preprocessor' lines
[04:27] ah
[04:27] EQU is pmars only i think
[04:27] otherwise just replace the identifier with the value
[04:28] interesting
[04:28] I can kind of see how it's working
[04:28] using CoreWin
[04:29] wow, my bomber bombs so predictably :/
[04:30] I like how yours works, that's interesting
[04:30] I didn't realize that was possible
[04:32] Hmmm, if I could get mine to bomb in the fashion that yours is choosing new spots, that would be cool
[04:33] how many of these preprocessor declarations can we have on a nano hill?
[04:33] and, I'm assuming those have something to do with how you're choosing new places to copy to
[04:33] as many as you want i think
[04:33] woah, crazy
[04:33] it doesnt change the compiled cod
[04:34] nice
[04:34] it just makes it easier to read, precompiled
[05:06] my poor little brain
[05:42] Hmmmm, I think I have an improvement
[05:42] though it's a little weird
[05:42] I'm still not sure exactly how it's working
[05:43] try this one out
[05:43] ----------
[05:43] fwd EQU 5
[05:43] bck EQU -2
[05:43]
[05:43] splode1 MOV bomb1, >fwd
[05:43] splode2 MOV bomb2, JMP splode1
[05:43] bomb1 DAT #24, #1
[05:43] bomb2 DAT #24, #0
[05:43] -----
[05:43] * AndrewBC sits on flyduck, in the mean time
[05:44] It's problem is that it only makes one pass before it overwrites itself, I think
[05:44] let's see how it actually does on the hill
[05:47] Hmmmm
[05:48] that's odd
[05:48] the results are different in the email that I got than the webpage
[05:49] 45.4% wins is better than 18.8%
[05:50] http://sal.math.ualberta.ca/hill.php?login=794&key=nano
[05:50] yeah :o
[05:50] looks pretty good !
[05:51] it looks like you got a 23.3% win on that page?
[05:51] still though, thats pretty good
[05:51] well, if you click the warrior name, the challenge page shows 45.4
[05:52] which 45.4 is what I got in the email
[05:52] I dunno what the 23.3% is from
[05:53] my guess is bad PHP programming
[05:53] (I would know, being a former PHP programmer)
[05:53] well, can't say know in this case
[05:54] but oh well
[05:54] I have an idea
[05:55] bah, no, bad idea
[05:56] took out the incrementors/decrementors to make a double-sided imp gate
[05:56] might as well submit it just to be sure
[05:59] ouch.
[06:00] mostly tied
[06:00] 97.3% tied, 1.5% loss, 1.2% win
[06:00] well, that's interesting then, but I'm worn out. Time to go to sleep and forget half of what I've learned today, only to relearn it tomorrow.
[06:01] Thanks for being a soundboard to bounce ideas off of! And thanks for the chitchat, flyduck, as well as the idea sharing :)
[06:01] see you :P
[06:04] MSG: Quit: This computer has gone to sleep
[06:12] arg
[06:12] why do i keep getting errors from KOTH@SAL when i try to submit my warriors via gmail
[06:27] Join: baudchan joined #corewars
[06:30] MSG: Client Quit
[06:59] Join: baudchan joined #corewars
[07:32] MSG: Quit: flyduck
[08:16] MSG: Quit: This computer has gone to sleep
[08:28] Morning all...
[09:06] Join: flyduck joined #corewars
[10:04] MSG: Read error: Operation timed out
[12:23] Join: yoR joined #corewars
[12:23] Hi yoR!
[12:25] hi Met
[12:27] Hi miz (I'm completing the circle)
[12:28] Hi Mizcu (now I've either messed up the circle or again!)
[14:05] Join: Neogryzor joined #corewars
[14:15] Hi Neo
[14:16] I just have to go into town before the shops close, back in 30 mins.
[15:16] Has anyone got any suggestions how to tell if a program is running on ARES or exMARS?
[15:23] Sorry mate, no idea what the difference between them is
[15:32] MSG:
[15:42] Join: bvowk joined #corewars
[15:42] hrm.
[15:42] it appears I have been unseated on nano
[15:45] :-)
[15:48] it's quite disheartening met.
[15:48] corewars has given me a sad xmas present!
[15:48] :-(
[15:49] I figured how to tell the difference between pMARS and ARES
[15:49] VERSION returns 0 for ARES
[15:49] oh?
[15:50] ARES has character output via a screen buffer
[15:51] Now I can tell the difference I can write code which detects whether the mars is exMARS Streams or ARES and use the appropriate code
[15:55] Come on bvowk, fight for a new spot, its not too late
[15:55] yor: I will.. :)
[15:56] Join: John joined #corewars
[15:56] MSG: Client Quit
[16:13] Join: flyduck joined #corewars
[16:18] MSG: Read error: Operation timed out
[17:03] bvowk, who unseated you?
[17:04] nobody.. it seems I'm back on top ;)
[17:04] what!
[17:04] http://sal.math.ualberta.ca/hill.php?key=nano
[17:04] so quickly
[17:04] heh
[17:04] no.. same warrior.. someone just changed the hill
[17:06] wow, number 1...
[17:06] I feel intimidated :P
[17:06] The warrior's name is ugly though :-)
[17:08] it's lovely.
[17:11] Dave Hillis has evolved warriors with lovely names. You don't.
[17:11] no.. the name is lovely!
[17:11] all my children are lovely ;)
[17:11] * bvowk tells the warriors to stop listening to met.
[17:13] are they hashes of lovely names?
[17:13] because they don't look lovely in their current form
[17:14] they're actually hashes of the warriors themselves.
[17:14] oh, hey, that's nifty
[17:14] I wonder if it can be reversed :P
[17:15] yup.
[17:15] I suck at breaking ciphers though
[17:15] so as long as the names of my warriors survive.. my warriors will be published eventually ;)
[17:15] which is why my names are lovely.
[17:15] it's an interesting idea, for certain
[17:15] I must give you that
[17:15] unfortunately, I have to go to work soon!
[17:16] Are you in BC andrew?
[17:16] so, fare well, hope we chat again soon, so I can pester you.
[17:16] Nah, those are my middle and last initial
[17:16] aww.. I thought there might be a fellow canuckistanian.
[17:16]