[02:33] MSG: Read error: Connection reset by peer [02:33] Join: Mannerisk joined #corewars [02:42] MSG: Read error: Connection reset by peer [02:43] Join: Mannerisk joined #corewars [03:06] has anyone written a warrior that repairs itself? [03:07] for a 'normal' hill that is [03:19] interesting concept [03:19] for stones? [03:38] i wouldn't think it's a new idea [03:38] not for anything in particular though [03:39] i was thinking something like raidar + airbag + ??? [03:39] you could tell if 1) you got hit or 2) something was coming [03:39] and if you used copies of your own code for the cmp scan for raidar you could guess at what instructions are correct [03:39] (if i'm not the same as one copy and one copy is the same as the other, copy it onto myself) [03:40] or something like that [03:40] haven't played with it though [03:41] it seems like it'd be a good idea to bomb the copy that got broken if the airbag trips [03:41] perhaps even with a and/or b indirect bombing first [03:41] to try and 'kill' off any vamped or extra processes [03:41] then you could recopy and split [03:41] maybe [03:41] i dunno [03:41] that gets long, and long gets bad [03:41] you could have sections of code get hit that youa ren't executing, thus relying on the cmp stuff instead [03:49] you're beyond me, I'm afraid [03:52] more like i don't know whwat i'm talking about [04:03] from what others have told me, stones should be as small as possible. I don't know anything about raidar or airbag though [04:03] they should probably be small too :/ [04:07] airbag detects when its processes get messed up [04:07] raidar detects incoming clears and moves away [04:14] repairing code is always bigger than the code it repairs [04:15] raidar + airbag doesnt work, because if airbag triggers, you are already in trouble and copying yourself elsewhere will not remove the damaga [04:16] -a +e [04:17] you could, maybe use a type of bomb-dodger though [04:17] that's not quite what i was talking about [04:17] with silk style copying you can "rewrite" something, you just need something to rewrite it from [04:17] raidar is constantly checking two sets of data to see if they are the same [04:18] redundancy, bad idea [04:18] if you make the two sets of data valid copies of the code, you can verify that something hasnt' been altered if you have three copies [04:18] first time I've heard those three words together :D [04:18] at least somewhat [04:18] you double the amount of space that can be affected by the attack, even though the chance of hitting doesnt change [04:19] i'm not sure what specifically you are referring to [04:19] i am referring to holding secondary copy of the warrior, and copying the unharmed over damaged [04:21] oh, well yeah.. if you are just sitting it there [04:22] but you might like http://tinyurl.com/5tzstp [04:22] what i was thinking about though was using the techniques together with each other [04:22] for example, you might have three copies in core, and each one is checking the other two for whether they are the same [04:22] * evitable shrugs [04:23] yeah, that's similar to what i was thinking about [04:25] i had an interesting case with bolo where i set it at a step of 4000 [04:25] hehe [04:25] not really different than two dwarves except for the fact that it keeps silk-copying itself [04:26] it scored like 44 with that benchmark lol [04:26] i have to note that i cannot change bolo into a version that makes new copies [04:27] the copying direction has to be reversed, and it might need another instruction to reset pointers in new copy [04:28] i was thinking once about what would be involved in making it train along [04:28] where there was one at the start that keeps launching more forward [04:28] but i don't think i messed with that yet [04:28] i wonder how the benchmark would change if i used 4 copies instead of 2 [04:28] haha [04:28] i could even have each copy on a different instruction at all times [04:28] that would be pretty interesting [04:28] i should try it [04:29] did you see the version with the shitty paper fallthrough? [04:29] nope [04:29] works similar to airbag [04:29] http://www.nomorepasting.com/getpaste.php?pasteid=18964 [04:30] if one gets damaged, the other falls through and starts the mini paper thingy [04:30] i was fooling around with trying to instead recopy and start up the bolo again too, but i don't think it worked very well [04:33] that is more of a checksum than airbag, but it is us to blame since i (and others) are too lazy to fill up the lexicon for the definitions [04:33] like i said, similar [04:33] not exact [04:33] i understand how airbag works :P [04:33] but a checksum would be the wrong term imo [04:34] anyway, changes in the process balance cause it to fall through [04:34] either more or less [04:34] i think [04:35] btw [04:35] sanity-check would be the proper technical term, but thats slightly too large for my taste [04:35] as a corewar vet, do you find my oddball ideas interesting or silly? :P [04:36] oh, i didn't tell you about dwarf with viking hat either :> [04:36] that airbag/dodger was interesting, but it was my own mangling; self-repairing is something that every beginner thinks about, but so far such progs have evaded us [04:37] you need multiple cores so that you can check your siblings in the others [04:37] well i know that it's too inefficient to bother with unless someone comes up with some nice synergy [04:39] lol what [04:39] ideas are always good [04:39] i didn't play with the step sizes in this one [04:39] i don't like pasting my code because i know it's full of inefficiencies and misused terms but meh [04:39] http://www.nomorepasting.com/getpaste.php?pasteid=18965 [04:40] hm i think that's the wrong code [04:40] it fails hard [04:41] there needs to be a dat 0 between gate and bomb1 [04:43] aha [04:43] i know it worked properly before, wonder how i broke it [04:43] hrm nope, still broken [04:44] ah, my pointer was getting bombed [04:47] 3.5 improvements so far in my mind [04:48] this was the quickie i used to kill off the fire away ghosts hehe [04:48] it still owns itself sometimes it seems [04:48] and i'm not sure why [04:48] i just thought the spl/mov bomb was interesting, but perhaps it could be improved [04:48] it definitely needs a useful step [04:49] and i haven't really worked on clears or anything so that could probably use some work [04:49] actually its better simple like that [04:49] since you use djn to determine when to fall into coreclear [04:49] i can do it another way [04:50] i think :> [04:50] i like that kinda rustic.. [04:50] hehe [04:50] but anyway, i bet it could be made a little more rugged and probably optimized [04:50] a) use djn.f instead, change the imp accordingly [04:50] b) the coreclear wipes only once, with single change it can be multi-pass [04:51] bb) could be d-clear as well, without adding more instructions [04:51] (which would probably be a good idea since i'm making imps) [04:52] i don't actually know how to do a multi pass clear [04:52] c) i would use different type of add, but thats a little bit on the funky zone [04:52] i guess one way would be to move a bmb for the clear that contains the numbers to reset [04:52] exactly [04:53] what do you mean by change the imp accordingly? [04:53] oh, i see [04:53] if your clear is a forward-clear , the gate has to be behind you [04:53] so the djn doesn't get messed up [04:54] is backward-clear, in front of you [04:54] is -> if [04:54] * evitable nods [04:54] i don't know the term 'gate' well [04:54] but i assume that's the point where you bomb the pointer [04:54] gate is an instruction that changes every cycle, or almost every cycle [04:55] in jmp 0, <-10 , the instruction at -10 is the gate [04:55] mk [04:55] from imp gate [04:56] how do i make it a d-clear without losing my one process or adding more instructions? [04:56] just use djn.f on an instruction that isn't equal in a and b fields? [04:56] let me finish with the multi-pass first [04:56] hee ok [04:57] nearly all modern coreclears are forward-clears, because then the gate is behind you, at the direction where an imp will always approach [04:57] actually the first warrior i submitted used something similar to the multi pass clear thing [04:58] it had a selection of bombs that kept bombing the pointer so it was sorta like bombing according to a table of offset,step [04:58] multipass requires using a bomb with a number on it; a number larger than the distance between gate and the clear [04:58] * evitable nods [04:58] so when it hits the gate, the next bomb used in the clear goes past the code [04:59] exactly [05:00] so, if you are planning to change the clear into a d-clear [05:00] use the inc-1 as the bomb, and gate as the gate [05:00] put couple dat's after the gate [05:02] (when an imp hits the gate, it doesnt always die, but drops the process into next instruction, which is why the dat. Couple, because forward-gate might mutate an imp into mov 0, 2) [05:02] a proper d-clear requires an spl #0 in front of it; but you already have one in the code, so reuse it [05:03] spl 0 [05:03] mov [05:03] djn -1 [05:03] ? [05:04] yes [05:04] just to prevent falling through the djn [05:11] 90 wilkies, with 4 improvements [05:13] neat [05:13] i'm trying to put it back how i found it now lol [05:13] before messing with it further [05:18] anyway, i gotta get home [05:18] thanks for the tips [05:19] Nice tutoring Miz. [05:20] well, i am the teacher of #corewar [05:21] though i might be closer to an absent-minded professor with all the typos i make [06:41] it's at 92 :> [06:41] i'm gonna let it run in optimax tonight and see if it comes up with any interesting steps [06:41] i just wish i could seed it with ones i already know about [06:42] lemme guess, you are trying random steps from 1-7999 [06:42] yeah, i don't know any better yet [06:42] i mean, it's not like i can tell it [06:43] "choose a step that divides into 8000 and add 1) [06:43] allow me to speed up your optimax-run about 100 times: search between 2-20, anything else wont work [06:43] errr make that a " [06:43] ha [06:43] i have different code [06:43] it bombs itself to put the spl 0 in place [06:43] anything that divides into coresize bombs it properly [06:44] new code if you want to see [06:44] http://www.nomorepasting.com/getpaste.php?pasteid=18972 [06:48] steps over 5 that is [06:49] over mod 5* [06:52] well, thats why i didnt want to suggest self-bombing, multi-component bombs plus self-bombing gets easily ugly [06:52] ya [06:52] but it let me get a smaller step [06:53] it took me some fiddling to make it do what i wanted it to [06:53] but if you see the code, it mov's the spl bomb first [06:53] which replaces the jmp [06:53] and then it doesn't send the second bomb [06:53] i dislike using add #step, #step in a stone, but it works in this case [06:54] you mentioned something about that before [06:54] what would you prefer? [06:54] i did it so i could do the two part bomb simply [06:54] i wouldn't be able to add one number to two mov instructions [06:55] i add straight into the bombing-instruction [06:55] * myndzi nods [06:56] well, here is actually a small trick that would improve that warrior [06:56] or not.. im not on my brightest right now [06:56] hehe [06:57] i should go to bed anyway [06:57] just wanted to share [06:57] i'm gonna submit it and see what happens :) [06:58] mov.i sb, <3 [06:58] add.ab #step+1, 2 [06:58] mov.i imp, @1 [06:58] djn.f -3, *step+1 [06:58] imp: mov.i #xxx, 1 [06:59] what's that.. three part bombs? [06:59] er no [06:59] it'd just dec the imp [06:59] i think [07:00] which isn't really what i want [07:00] i want it to overwrite code [07:00] ;) [07:00] i like the way you phrased the movs/adds much better though [07:00] i couldn't get the math straight so i ended up just screwing with it till i got it [07:00] the djn will not decrement the imp [07:01] mov.i imp (b field of djn) [07:01] djn.f -3, (same location) [07:01] i am confused? [07:01] oh! [07:01] it decs the instruction after the imp [07:01] :> [07:01] hawt [07:01] no, just partially blind, or '88-oriented [07:02] hehe [07:02] i don't want to mess with it atm [07:02] i'm not sure if it'll still bomb right [07:02] but i like that [07:02] ok he's at 10th place before [07:02] * myndzi wonders about after [07:03] MSG: Read error: Connection reset by peer [07:03] Join: Mannerisk joined #corewars [07:03] MSG: Read error: Connection reset by peer [07:03] Join: Mannerisk joined #corewars [07:03] 5 free spots on the b-hill? thats just lame [07:03] yeah, it's not really seeing much action [07:03] i think there were that many before i submitted my first warrior too [07:04] i'm more like fighting myself :( [07:05] excellent! [07:06] o nice! [07:06] that is pretty sweet [07:06] purple death is owning the hell out of it lol [07:06] no stunnin' power [07:07] it probably uses 1,1 -bombs [07:07] ha [07:08] not much i can do about that other than ditch the djns [07:08] but i suppose i could add something for defense [07:08] nothing really [07:09] anyway, i like it.. i don't think i'll change it [07:09] you could switch the clear into paper-killing clear, but they are weaker against imps [07:09] next project should be a scanner [07:09] since i haven't done that yet [07:10] Part: Mannerisk left #corewars [07:22] Join: Mannerisk joined #corewars [08:37] Join: fiveop joined #corewars [09:08] Part: X-Scale left #corewars [14:20] i got one for you miz [14:20] i was reading cw084 [14:20] i've understood quickscans conceptually in just about all forms, but i am trying to "get" the code in my head [14:20] and it sorta glosses over the table mutations [14:20] for example, this line: [14:20] seq er [14:20] for simplicity: [14:20] seq that one instead [14:21] it decs the b-field of t1 [14:21] but t1 is a multiple of FAC [14:21] and it's not being decremented by a factor [14:21] in the decoder, only the a-field of t1 is referenced [14:23] that decrement is supposed to somehow tell the difference between the sne and seq [14:23] but i don't see how [15:55] Join: Metcalf joined #corewars [15:55] Hi :-) [15:59] MSG: Ping timeout: 245 seconds [16:06] Join: Metcalf joined #corewars [16:06] evitable: the value at T1 is multiplied by D [16:06] so D*(value of T1) is a distance away from D*(value of T1 - 1) [16:07] to ensure the scan works properly, D*(value of T1 - 1) has to be equal to (value of T1 - 1) [16:16] MSG: Ping timeout: 245 seconds [16:18] Join: Metcalf joined #corewars [16:20] So it differentiates between the SNE and SEQ scan because if the SNE detects something, the decoder will give location D*(value of T1) [16:20] Otherwise the SEQ decrements the value of T1, and if it detects something the decoder will give location D*(value of T1 - 1) [16:41] hrm. [16:42] oh, duh [16:42] i didn't actually follow to the part of what it was doing with that instruction D: [16:42] thanks [16:51] MSG: Ping timeout: 245 seconds [16:54] Join: Metcalf joined #corewars [16:54] Hmmm... [17:26] MSG: Ping timeout: 245 seconds [21:17] bvowk: http://img296.imageshack.us/img296/5803/reiserxr1.jpg [22:15] MSG: Ping timeout: 245 seconds [22:23] Join: Mizcu joined #corewars [22:25] Join: Miczu joined #corewars [22:25] Part: Miczu left #corewars [22:28] theres still a one improvement i can think for irssi.. [23:01] MSG: Quit: humhum