#kothorg
[12:24:55]digital.wilderness : <@UBPRDB1U6> I've copied you in on an email where Paul has given permission to publish Her Majesty :slightly_smiling_face:[12:34:09]slack1 : [12:48:35]digital.wilderness : Thanks Tuc. I've sent it to Paul and one of us will post it to r.g.c with a short write-up.[12:59:12]roy.van.rijn : I always find it odd if a warrior starts with doing an ADD… take care of that yourself before starting the warrior and start with a SEQ![13:15:22]roy.van.rijn : Also sad, John and myself contribute to 14/20th of the hill…. luckily almostly entirely the bottom half, so the change of pushing someone else off are slim[13:17:33]digital.wilderness : I'm hoping someone will push some of mine off. I wouldn't have submitted the last one as I already have too many on the hill, but I had an idea I couldn't resist trying.[13:17:54]roy.van.rijn : Hrm, I swapped 20/21…[13:18:06]digital.wilderness : Most of mine are published, which should make it easier for anyone attempting to enter the hill :slightly_smiling_face:[13:19:08]roy.van.rijn : Here is Flashlight (without a qscan/boot):
```
bGap equ 439
bStep equ 7441
bOff equ 1154
bBomb spl #bGap , #bGap + 1
sub #bStep , sPtr
sPtr mov mBomb , *bOff
mov bBomb , @-1
djn.f -3 , {6847
mov cBomb , >(bBomb-3)
djn.f -1 , >(bBomb-3)
cBomb dat <2667 , #16
bPtr dat 0 , 0
mBomb mov.i -bGap , >-bGap
```
Nothing special… just Torch/Damage Inc with some tweaks and new constants[13:20:12]roy.van.rijn : I wrote a big problem to search for the best constants, ones that use the skipping of certain locations just like Torch t18 did (which is cool)[13:22:01]roy.van.rijn : The trick is:
When you have spl/sub/mov/mov/jmp -3, there are certain times a bomb *isnt* placed because of the SPL being called, adding a new instruction, calling a SUB-instruction a second time before placing a bomb there. For example in Torch this happens after 840 bombings, there is a *self*-bomb that is being skipped[13:22:44]roy.van.rijn : This allows for weird bombing patterns that continue way longer that they should[13:24:15]digital.wilderness : My two unpublished warriors Resin and Kosmos both use a component similar to Gymnosperm Trickery. Resin pairs it with an imp. Kosmos has it with a satellite launching paper which alternates between two different satellites.[13:25:56]digital.wilderness : I did the maths for skipped locations in a self-splitting bomber which drops one bomb per loop. Never attempted it for a bomber which drops two bombs per loop.[13:28:50]roy.van.rijn : I did it the dumb way, first I looked at the skipped self-bombs, which are:
12, 24, 40, 60, 84, 112, 144, 180, 220, 264, 312, 364, 420, 480, 544, 612, 684, 760, 840, 924, 1012
First I take a starting position.
Then I just calculate forwards for both bomb-locations, allowing self-bombs in the cycles mentioned above.
And finally I check if I end up with the self-bomb we want (on the djn making it a dclear).
This can be done pretty fast for all starting locations for each step.[13:55:26]roy.van.rijn : <@UBRM64Z7G> That is a weird little warrior… and it looks hard to re-use in an effective way (although I see the potential for adding it to a satellite paper or adding imps)[20:06:12]dougajmcdonald : <@UBZCDSVKN> & <@UBRM64Z7G> - The settings for are as follows:[20:06:34]dougajmcdonald : [20:06:59]dougajmcdonald : We intend to allow the options to be entirely user defined but it was simpler to have some presets to begin with[20:09:14]dougajmcdonald : WRT <@UBRM64Z7G>’s question regarding variables such MAXCYCLES etc, we do plan to support these eventually but they are a bit trickier to parse[20:09:41]dougajmcdonald : as in, you have to parse the redcode complete with the simulator options in order to produce a realtime "compiled" output[20:10:17]john.kipling.lewis : Can you add a display for cycle counts?[20:10:39]john.kipling.lewis : Perhaps overlayed on the progress bar?[20:10:49]dougajmcdonald : as in, where it currently is?[20:10:52]dougajmcdonald : gotcha[20:11:11]dougajmcdonald : that'd be feasible in principal we'd just need to have a look at the perf impact at high speeds[20:11:32]john.kipling.lewis : Yeah, it would help. Also, the winner display slides in and out really fast, sometimes I get up and miss it. Can it stay on screen until you click somewhere else?[20:11:39]dougajmcdonald : we normally implement pubsub between the core & ui, so I can get some extra messages published if it helps[20:12:01]dougajmcdonald : yeah the winner reporting is crap tbh, I'll hold my hands up on that one![20:12:18]dougajmcdonald : it seemed like a good idea at the time![20:12:32]john.kipling.lewis : I've literally resorted to memorizing the icons so I can watch them flash by. :wink:[20:12:32]dougajmcdonald : we are revisiting that as we add in multiround and hill functionality[20:12:46]dougajmcdonald : lmao, that is dedicated![20:12:59]john.kipling.lewis : I love Corewars.[20:13:26]dougajmcdonald : I think the warrior specific icons are my favourite bit! so I'm glad they have a practical use too! :stuck_out_tongue:[20:13:48]dougajmcdonald : We're very much in the "what feedback can we get from people as to make it more useful" stage[20:14:04]john.kipling.lewis : Yeah, are they always the same based on some hash?[20:14:05]dougajmcdonald : so feel free to ping me messages on here, or via the feedback form on the site, or via github[20:14:08]dougajmcdonald : yes[20:14:13]john.kipling.lewis : Very cool.[20:14:29]dougajmcdonald : thx :blush:[20:15:21]dougajmcdonald : WRT to quality of life improvements we're deciding at the moment whether to hit some of the larger features such as user profiles / warrior persistence[20:15:24]dougajmcdonald : and hills[20:15:32]dougajmcdonald : or keep on quality of life stuff[20:16:17]dougajmcdonald : originally we managed to delay the original release by some time due to fixating over small details, so I had to be firm with my colleague to ensure it saw the light of day in any form![20:18:22]john.kipling.lewis : I'm very pleased with what you've created. I've wanted this for so long because I'm on a mac and I hated having to compile PMARS over and over when I upgraded.[20:18:42]john.kipling.lewis : Now I just have to be sure my work doesn't notice the site and block it :wink:[20:18:48]dougajmcdonald : lol :slightly_smiling_face:[20:19:33]dougajmcdonald : I'm glad you find it useful, we felt the same way, that a lot of the tools could do with a decent multiplatform solution[20:20:06]dougajmcdonald : very much a work in progress and the last month has been a write off with me getting married and on honeymoon (sorry!)[20:20:17]dougajmcdonald : I logged your cycle count idea - [20:24:59]dougajmcdonald : If you have node / npm on your work pc, you're welcome to grab and run the src if they block the site! :stuck_out_tongue:[20:25:02]john.kipling.lewis : You rock, enjoy your honeymoon![20:25:54]john.kipling.lewis : And that's funny. My word won't block it, I was just joking around. (If they did block, they would certainly block ALL of .io)[20:27:29]dougajmcdonald : That'd hurt![20:27:53]john.kipling.lewis : Yes.[20:28:01]john.kipling.lewis : I get to work from home.[20:28:20]john.kipling.lewis : So I'd be self blocking if I lost control and couldn't keep from tweaking.[20:30:29]dougajmcdonald : heh, gotcha[20:40:30]dougajmcdonald : <@UBRM64Z7G> are you still seeing the "Not Found" error?[20:40:50]dougajmcdonald : because I'm seeing it sporadically and can't quite figure it out![20:40:57]digital.wilderness : <@UBX2E0GR4> no, haven't seen that for a while.[20:41:06]dougajmcdonald : That's good to know!¬[20:41:07]dougajmcdonald : ta[20:50:26]vowkalg : hey Doug. I like what you've built.[20:51:13]dougajmcdonald : Thanks <@UBVDRK5HQ> appreciated, although Gareth has to take most of the credit, I just put the UI on and shouted at him to actually release it! :stuck_out_tongue:[20:51:17]vowkalg : I've got a whole set of protobuf services for my evolving (because g00gle), your API looks pretty sane :slightly_smiling_face:[20:51:32]dougajmcdonald : nice[20:51:52]dougajmcdonald : yeah the aspiration was to allow other tools to use the core library API[20:52:09]dougajmcdonald : if you have an idea and want any pointers on usage etc, give me a shout[20:53:29]dougajmcdonald : In case you missed the fbook/twitter post - Gareth migrated the API docs to here: [20:54:17]dougajmcdonald : We will aim to flesh out the interface definitions for the params so it's a bit clearer, in the mean time, give me a shout or have a dig about in the src[20:55:02]vowkalg : I'm going to put a hack into my evolver ui to let me click things and watch them run against my benchmark on your service.[20:55:08]vowkalg : (ish)[20:56:04]dougajmcdonald : sounds great, at the moment the 'backend' if you want to call it that only runs in the client on the website[20:56:27]dougajmcdonald : so if you want to use the core library, you'll need to grab it from npm, or from src on github[20:56:46]dougajmcdonald : we will migrate to a server when we do persistance, which hopefully will be soon[20:57:12]dougajmcdonald : we will 100% have an instance to run hills etc, but I'd not thought of exposing another instance to offer the core API as a service[20:57:53]dougajmcdonald : I'll have a chat with G about that, as it would be neat to provide a hosted corewar service as well as the library which people can build into their own apps[20:59:48]dougajmcdonald : did that make any kind of sense?[21:07:46]vowkalg : Yup.[21:08:07]vowkalg : I pulled the code from github a while back for this, when I get a moment :slightly_smiling_face:[21:08:33]vowkalg : my current workflow of dumping the proto to a text file and running pmars isn't nice :slightly_smiling_face:[21:08:33]vowkalg : my current workflow of dumping the proto to a text file and running pmars isn't nice :slightly_smiling_face:[21:12:30]dougajmcdonald : no, that does sounds pretty horrid![21:12:53]dougajmcdonald : I've not really seen / understood much about the evolver scene beyond the basic concept[21:13:03]dougajmcdonald : would be very interested to see what you end up with[21:13:37]vowkalg : ugly, usually partially broken redcode :slightly_smiling_face:[21:15:22]dougajmcdonald : lol :slightly_smiling_face:[21:15:33]dougajmcdonald : I mean more as in the process and what your goals are[21:16:16]dougajmcdonald : I can kinda understand genetic algo's and basic adversarial neural nets[21:16:29]dougajmcdonald : but I'm not sure I kinda get it in a corewar context[21:16:33]dougajmcdonald : I'm probably missing something![21:23:11]vowkalg : There's not that much to get.[21:23:45]vowkalg : It's a genetic algorithm, with a neural network to suggest mutations that make sense based on the surrounding code.[21:24:28]vowkalg : and a battle running service along side to distribute the running parts onto a lot of cores.[21:31:25]john.kipling.lewis : WAaaaay back in the day I created an evolver. I even used a "four seasons" analogy to edit them. Spring was population, Summer was testing (in PMars), Fall was pruning for winners, evaluation, and winter was deleting failures.[21:31:31]john.kipling.lewis : In PERL.[21:32:05]john.kipling.lewis : It and I had to throttle it because it was on a multi-user server and on the first run it went crazy and overloaded the cpu.[21:32:09]john.kipling.lewis : ahhahaha.[21:32:12]john.kipling.lewis : sigh.[21:50:00]vowkalg : Here's one of the first evolvers I wrote in perl.[21:50:01]vowkalg : [21:50:09]vowkalg : Makes me cringe a bit now :slightly_smiling_face:[21:51:22]john.kipling.lewis : oh dear... I'm scare now that I should show you mine.[21:51:31]john.kipling.lewis : I'll have to ssh into a very old unix box.[21:51:36]john.kipling.lewis : hold on.[22:51:50]john.kipling.lewis : Okay, I deleted it in a fit of shame.[22:51:57]john.kipling.lewis : I might have backup somewhere.