[01:27] MSG: Quit: humhum [02:40] Join: pjwaffle1 joined #corewars [02:40] hi [02:41] h [03:42] uhh is anyone there? I was wondering if anyone knows how to use microgp evolver [03:42] I am willing to write a small amount of code but the amount microgp asks for is insane. [03:43] i dunno, since i modified yace to my own means [04:01] mizcu what modifications did you make to yace? [04:04] not much really [04:05] removed about 30% of the code that i didnt use, switched in to different fitness-function, and different script to create the warriors with [04:09] I have a question [04:09] if you know anything about fitness functions that is [04:10] there is not much to know [04:10] is it possible to have yace or another evolver generate x86 assembly instead of redcode? [04:10] yes [04:10] how? [04:10] by replacing the function that constructs the instructions [04:10] yes however [04:10] in yace that might be a little bit heavy though [04:10] the fitness function [04:11] how do you write that for x86 assembly [04:11] you dont need to change it at all [04:11] unless you try to analyze the warrior, which most dont do [04:11] simple fitness function: [04:11] make a warrior fight other warriors [04:11] calculate the average score [04:12] the warrior(s) with worst average score(s) gets killed, the best get to breed and or mutate [04:12] ok [04:12] but I want the generated program [04:13] to be a bit more generic than corewars [04:13] eg. a word processing program or something [04:13] you might want to use http://en.wikipedia.org/wiki/Avida then [04:13] thanks [04:14] evolving a word-processor wont do with a corewar-evolver, that would take about three times at much framework [04:15] ok [04:15] would avida handle it/ [04:15] ? [04:16] it can evolve a program to have a certain type of response to certain type of input, i dont know how complex stuff has been tried with avida [05:41] I have a question [05:41] how do borgs work [05:55] MSG: Ping timeout: 240 seconds [07:12] Join: myndzi\ joined #corewars [07:13] MSG: Ping timeout: 240 seconds [07:33] MSG: Ping timeout: 240 seconds [07:44] Join: Mannerisk joined #corewars [07:44] http://xkcd.com/534/ - Genetic Algorithms [07:45] should be using MAX_INT though [07:47] ^ is more obscure than most of XKCD and applies quite directly to several people in this room, yet still not all that funny [08:56] MSG: Ping timeout: 240 seconds [10:07] Join: pak21 joined #corewars [10:12] MSG: Ping timeout: 240 seconds [10:20] Join: pak21 joined #corewars [10:37] Join: CwarsV1 joined #corewars [10:38] Hi [12:38] hi [12:42] MSG: Read error: Connection reset by peer [13:00] Join: CwarsV1 joined #corewars [13:51] Somebody on? [13:51] me [13:51] hi :-) [13:52] hi [13:52] copy mov Do you know, what this means? [13:53] probably a line from mice [13:53] src dat #0 target dat #0 length dat #0 start mov #6,length mov #9,src mov #18,target copy mov sry [13:54] mom [13:55] well, that certainly isnt mice.. [13:55] newline test [13:55] 2. line [13:56] well, its an "old-style" paper and with quick look it looks like it should work [13:58] Wow! [13:58] I think you are good! :-) [13:58] can you explain copy mov you know the concept of pointer, or indirect addressing? [13:59] (i dont want to sound like underestimating, but i dont want to give too complicated answers either) [14:00] yes [14:02] < is indirect addressing, which reduces the pointer by one before actually using the value as a pointer [14:02] so a) the instructions reduces the value at (src) by one, and then uses it as a pointer [14:02] the pointer points to last instruction of the warrior, and thus this will be the instruction that will be moved [14:03] hmm [14:03] 1 sec [14:03] b) it reduces the value at (target) by one, and uses the value as pointer, which now points about 10 instructions after the warrior, and moves the instruction moved there [14:04] i see [14:05] src dat #0 means just that src is a (random) address, were the data 0 is stored? [14:06] "random" in this case means that it is the first instruction after the warrior has been loaded to core [14:06] and it will contain the value of #0 as default [14:06] i see [14:07] so let the code segment start at 0x1000 (for example), then ... [14:08] ... the label src stands for 0x1000, and ... [14:08] target would be 0x1001 [14:09] ... (we dont use the hex-intendation here, we just say instruction at cell 100, or instruction at 100, and i tend to use (instruction)+100 sometimes when teaching newbies) [14:10] the warrior is designed to start at the start: -line [14:10] yes, but: [14:11] at address 0x1000 - 1 is no proper data, right? [14:11] so no, you see, mov #9, src moves a value to the src [14:11] so the value at 1000 is reduced from 9 to 8 [14:12] (by the mov no [14:12] or better: are you sure? [14:12] (sry for that) ;-) [14:12] if you do not agree with me, please feel free to check how the program runs in a debugged [14:13] debugger [14:13] Good idea! [14:13] Where can i get one? [14:13] do yo uuse windows? [14:13] linux [14:14] that complicated things a bit, since the most user-friendly simulator is windows-only (friendly since its point n click) [14:14] hihi [14:14] wait 1 sec... [14:15] http://sourceforge.net/project/showfiles.php?group_id=3452 [14:15] pmars is the "corewars official simulator", and its debug-function is annoying to use, but its still better than to guess how things work [14:16] thanks! :-) [14:16] You are nice! :-) [14:18] Can you tell me the effect of: mov <100,200 [14:19] reduces value at (mov+100), uses the value as a pointer (if there wasnt any value before, it is then -1), and moves that instruction to (mov+200) [14:20] i see [14:22] i compiled pmars [14:22] for the previous few years, ive been usually the one to teach the newbies on this channel, with metcalf as the second (he is probably the best redcode-programmer alive, but i have a lot more time) [14:24] run pmars -e , what do you get? [14:24] uses -1 as a pointer. [14:24] i get: [14:24] no warrior file specified. [14:24] 1 sec [14:24] look at the third line [14:25] does it say "server version without debugger", or something else? [14:25] no [14:25] (i dont remember what the default configs were) [14:25] it is ok [14:25] then save that warrior from before as warrior.red , and run pmars -e warrior.red [14:25] i will debug the warrior now [14:25] you will get into the debug-screen [14:25] exactly! ;-) [14:26] q = quit, l = "list", eg l 100, 200 (or l100,200 for the lazy) [14:26] s = run one cycle [14:26] cl = clear [14:26] thanks!!! [14:27] as a starter, you really only need two commands, q and cl~@s~l0,20 (clear the screen, run one round, show the 20 first instructions) [14:27] l100,200 just prints numers from 00100 to 00200 [14:28] since the core has just been loaded, it is full of ( dat $0, $0 ) which the simulator considers "empty" and does not show [14:28] ahh, ok [14:28] this is easier for eyes than 100 lines of DAT DAT DAT DAT DAT MOV JMP DAT DAT DAT [14:28] i see [14:29] i ran one cycle [14:29] i scored 0 [14:29] i forgot to add: [14:30] add a [14:30] end start [14:30] at the end of warrior [14:30] ok [14:30] now it has no starting-location given, and it starts at a 'dat', which will kill the warrior [14:31] ahh [14:31] fine! [14:31] i see output [14:31] (which i do not understand) ;-) [14:31] i just enter s [14:31] s [14:31] s [14:31] s [14:32] that shows what is the next instruction to be run [14:32] ahh ok [14:33] use the cl~ - line i gave, since it shows the core after each run instruction, its easier to follow the whole [14:33] do you know the meaning of: [14:33] 00016 mov.i < -6, < -5 [14:33] that is the mov ok [14:34] even though the coding uses pieces ot text here and there, every piece of text is translated into numbers in the end [14:34] hey, is there a way to speak with you? [14:34] suer [14:34] sure [14:34] the .i comes from the '94 standard, ignore it for now [14:35] It is funny: I know assembler but I can not understand warrior code. [14:35] to be blunt, i dont really care about talking with this teaching [14:35] ok [14:35] because half of time i will be mixing code into what i write/speak, and that is easier to follow on text [14:36] its ok. :-) [14:36] i started with redcode 5 years ago, and moved to 8051 -assembly at school this semester [14:36] hehe funny! [14:37] it was.. boring until i get to the last course-work, which caused me to rip hairs off (i chose to make one of the most difficult works people have made on the course) [14:37] what makes you more difficulties to understand: warrior-code or asm-code? [14:38] currently asm, simply for the lack of experience [14:38] Good! [14:38] i can code with 8051 now, but x86 asm will still have me do lot of guesswork [14:39] Always take the big challenges! ;-) [14:39] no [14:40] With your knowledge i would guess: for x86 understanding you will need about 1 week. [14:40] hmm [14:40] funny really, corewars is neumann architecture, 8051 is harvard. addressing in CW is relative, in 8051 absolute. CW is read left-left-right, 8051 left-right-left [14:41] yes [14:41] cw with harvard-computer would be no fun. ;-) [14:42] very true [14:47] Do you know people who can write keygens, virii, cracks, ... [14:48] no, i was not part of the generation that started coding assembly in elemantary school [14:49] i dont currently have enough time either to start going through the cracking challenges that net is full [14:52] virii is not a word [14:53] Virus is Latin, so don't put Greek plurals on it [15:04] hehe [15:07] how long does it take to get a got warrior (as a newbie)? [15:08] depends too much on the time spent on it [15:08] top of beginner-hill, today is under a month [15:08] getting on 94nop used to be 3 months, but its gotten 10% harderd and 50% more difficult since [15:10] since what? [15:11] well, depends on the timing [15:11] that was 2 years ago, before which the same difficulty-rise took one year [15:11] CW has been doing a little slow lately [15:13] how can the difficulty rise? [15:13] because in practise, the we do the fights on hill [15:13] hills [15:14] btw. do you have some new guys like me in here since the last 2 weeks? [15:14] y [15:14] germans? [15:14] hills contain a number of warriors - every new warrior wanting to enter a hill has to fight all the existing warriors, and then compare the score with the rest [15:15] if the challenger is stronger than the weakest on hill, the weakest gets kicked off and the new warrior enters it [15:15] i see [15:15] this means that little by little, stronger warriors will rise to the hills [15:15] sure [15:15] are you referring to http://stackoverflow.com/questions/463097/helping-understanding-redcode [15:15] ? [15:15] do you also have warriors at hills? [15:16] currently not, i have taken the state of not sending new warriors until i can discover something that is not just an reoptimization of an old warrior [15:17] i do have a warrior at an acceptable position on an 'infinite' hill, and i accidentally discovered (by evolving) a type of warrior that currently dominates the nano-hill [15:17] No, i am not referring to that. [15:20] Thats cool! [15:21] Could the code i posted enter any hill? [15:22] i am not really sure if it could even enter the last place on beginner-hill [15:22] theres couple points on it that need changing [15:22] can you give me a little hint? [15:22] (i called it 'old-style' paper, but thats ok, they can enter beginner-hill just fine) [15:23] the 'target' needs be be a largely different number, currently the new copies it makes will just copy on top of each other, and stay on one part of the core [15:24] you can remove atleast two instructions by using a property of '94 -standard [15:24] and you need an bombing instruction [15:25] hehe [15:25] sounds interesting! :-) [15:25] (and you could replace the djn with jmz or jmn, so you dont need the mov #number, lenght either) [15:25] You know what: [15:26] You helped me a lot! Thanks! [15:26] I now also fully understand mov it is so simple [15:26] i was just confused with relative addressing! [15:26] http://corewar.co.uk/guides.htm [15:27] if you get stuck on one of those documents, then just open up another, or come here to ask [15:28] see that "john everitt" -link and get all the pdf -files, that will serve as a base library [15:28] You are a good person that makes this scene sympathic! (at least for me) [15:29] thanks [15:29] oh! i got an idea! [15:32] MOV #x target [15:33] which size of x would make more sense than x=18? [15:33] something between 1000 and -1000 [15:34] i see [15:34] so killing the other warrior depends on luck. [15:35] it could be possible to get a good result with x=1000 and to lose totally with x=-1000, right? [15:35] That's why fights on the hills are run 200 times with different starting positions to even things out. [15:36] luck, or raw statistics (hills use high number of rounds to diminutize the luck, koth uses 250, beginner-hill at sal uses 1500) [15:37] ahh, ok. [15:57] does only the DAT instr. kill an enemy warrior? [15:59] dat, and dividing by zero [15:59] (And modulo by zero) [16:04] tnx [16:16] do you think it is possible to win against all current warriors with a brand new warrior-idea? [16:17] No. [16:18] There are too many different strategies involved for there to be one warrior which beats everything else. [16:20] (certain abuse) [16:23] Lets put it this way: it is no realistic assumption. ;-) [16:30] what do i have to do, to get my warrior to the hill? Send an email? [16:32] yes [16:33] http://sal.math.ualberta.ca/help.html [16:39] thanks! [16:39] is there a instruction reference somewhere? (I search spl) [16:41] http://corewar.co.uk/icws94.txt [17:02] is there an error in http://corewar.co.uk/chapter1.txt ? [17:02] Join: fiveop joined #corewars [17:03] sry [17:03] no [17:03] forget it. ;-) [17:03] (there is a lot easier way to launch a worm.. nobody bothered to write it down since worms are useless) [17:07] Mizcu, can you tell me, why the launching code of: [17:07] c jmp imp-2666 [17:07] spl c [17:07] is: [17:07] jmp -2663,0 [17:07] spl,0,0 [17:07] the spl,0,0 [17:08] normally it should be spl -1,0 but there are no -1 [17:08] are all neg. numbers equal 0 [17:08] ? [17:09] you have a typo somewhere [17:09] no, its in the document [17:10] it should be spl -1, 0 in the docs, you are correct about the fault [17:10] Thanks. [17:26] http://xkcd.com/534/ [17:26] I hope everyone is practicing safe GA [17:30] "chances of that happening is too low to matter, especially with my GA" [18:21] haha, i thought of this channel when i saw that one [19:08] MSG: Quit: Get out of that boring IRC client! It's no good for you. Bersirc 2.2 is your answer! [ http://www.bersirc.org/ [19:41] MSG: Quit: Leaving. [21:02] o rly mizcu [21:02] what type of warrior is that (re: nano hill) [21:03] p/c [21:03] see the newest nanowarrior [21:05] feel free to call it debatable, though [21:05] ah, i think i read that [21:05] i was just not sure what you were referring to