« first day (6 days earlier)      last day (21 days later) » 

3:02 AM
I can get 100 runs per second at best
 
3:19 AM
It turns out I'm not doing 8k runs...I can barely do a run in 90,000ms
I think 1k will have to do
 
I'm sure that will be plenty. If its close you can always keep going if you have to.
 
 
2 hours later…
5:51 AM
@MikeNichols your latest updates seems to be buggy: Uncaught TypeError: Reduce of empty array with no initial value
Sometimes happens on getEnemyDist function
One more interesting thing, "A-Path-y" seems to be very slow, my runs with "A-Path-y" included are around 4 times slower than when it is excluded.
 
 
5 hours later…
11:19 AM
I have achieved something interesting. Am writing some story/description for my bots and will update them in 15-30 minutes :P
 
@Night2 does not really surprise me, path finding is never a cheap especially when i don't really know java script well :(
 
@Moogie That is normal for A* in this environment to be slow
 
11:43 AM
My bots are updated now
 
12:20 PM
Attention: Further Updates Will Be Ignored
Does anyone have the fully updated botData?
 
@Night2 said they would make them.
 
Well, I'm going to go ahead and get started
I need a color for BaiitBot
 
hope your house is cold because it will soon get warm performing all those rounds :)
how will the results be presented? will you be listing the relative ranking of the entrants or just the bot that wins?
 
12:37 PM
@RedwolfPrograms, just give him one from the list.
My botData has a list of unused colors at the bottom.
 
Actaully, @Ramillies
I'm using the colors from your botData
 
(But I think I gave him some color there.)
 
@Moogie First place to fifth place
 
12:50 PM
I'm back
Should I make the botData file ready?
 
I've got everything from Third Gen and above
But I'd like it if you did Third Gen plus a few after it
 
Did you sort by date?
If you can work on converting "Greedy-Pursuit | Haskell" I will just make the file ready
 
I sort by votes
 
I'm going to sort by date and create the list
That way, order won't change
 
Okay
Haskell:
function f (four,bots,coins) {
var x = four.locationX;
var y = four.locationY;
var c = four.coins;

var weaker = bots.filter(b => { return b[2] < c; });
var compare = (a,b) => { return a < b ? -1 : a > b ? 1 : 0; };
var w = xyc => { return Math.abs(xyc[0]-x)+Math.abs(xyc[1]-y); };
var sortByDist = x => x.sort((xycA, xycB) => compare(w(xycA),w(xycB)));
var toDir = (dx,dy) => { return dx > 0 ? "east"
: dx < 0 ? "west"
: dy > 0 ? "south"
: dy < 0 ? "north" : "none"; }

var sorted;
if (weaker.length > 0)
Coward:
function(me, others, coins) {
let target = [me.locationX, me.locationY];
let threats = [];
for (var i = 0; i < others.length; i++) {
if (others[i][2] >= me.coins) {
threats.push(others[i]);
}
}
let safe = true;
for (var d, x, y, n = 0; n < coins.length; n++) {
x = coins[i][0];
y = coins[i][1];
d = Math.abs(me.locationX - x) + abs(me.locationY - y);
for (i = 0; i < threats.length; i++) {
safe = true;
if (Math.abs(threats[i][0] - x) + Math.abs(threats[i][1]) <= distance) {
safe = false;
break;
}
}
 
1:04 PM
I'm just assigning colors now, will try to use @Ramillies assigned colors
 
Okay
Wait...assigned colors aren't needed for this
 
I'm a little bit wondering for what you want to use them .....
 
Just realized, I'm not even using the Graphic Output for the final test
 
Heh
It's been fun, guys
I hope to see you all at the next KoTH
 
Don't worry, Gold Collectors 2.0 is upcoming.
Want me to list my ideas?
 
1:06 PM
You might want to hold off on that for a couple weeks
 
What should I do about "Big King Little Hill"?
Latest updates sometimes throws error
 
What's wrong with it?
 
Oh snap, that's rough
 
Let me take care of it
Just skip him
 
I will include it and leave it to you
 
1:07 PM
OK, sounds good
 
Hm, I would use the previous version.
 
I did fix the error on my tests with a try catch
let me assign colors first and then will talk about it :P
 
The colors aren't even needed.
 
I don't think we need colors at the moment
 
Do we all like the format of submitting a single javascript function?
 
1:10 PM
I like the format
 
I'm nearly done with a controller for an idea I had
 
I do.
 
Functions are easy to manage
 
Alright, sounds good
 
I need to go do some work, I'll be back in a half hour. @Redwolf me when finished!
 
1:13 PM
@RedwolfPrograms about Coward you have errors
Should I leave that to you as well?
I assigned colors and fixed tiny issues like missing }. I also commented console.logs.
Right now "Coward" seems to have an error and some times "Big King Little Hill" throws an error (rarely).
 
It's finished?
 
Yes
 
Oh, good. Thanks soooooooo much!!!
 
34 bots
Bot the errors are there for you to fix/decide
 
Where are the errors in Coward?
 
1:19 PM
TypeError: coins[i] is undefined
 
Oh, and I forgot Math.
 
TypeError: undefined has no properties
 
And just typed "abs()"
 
Both on line 602: x = coins[i][0];
 
OK, thanks!
 
1:20 PM
And about BKLH, for my own tests, I did manually change the getEnemyDist from its original form to this:
        function getEnemyDist(x) {
            try{
                return enemies.filter(enemy => enemy[2] >= me.coins/50).map(enemy => getWeightedDist(enemy, x)).reduce((accumulator, current) => Math.min(accumulator, current));
            }catch(e){
                return 0;
            }
        }
 
But the one on gist is the original one
@Ramillies I did implement teaming with my bots :D
Tried to fix a few of "Coward" issues, but more comes after them, I gave up :P
 
I fixed them all
It works!
 
Can you copy it again so I update the gist?
 
Sure
var botData = [
{
name: 'First Gen Learning Algorithm',
color: '#330d0d',
run: function() {
return ['north','east','south','west'][(Math.random()*4)|0];
}
},
{
name: 'B33-L1N3',
color: '#8a8c69',
run: function(me, others, coins) {
// Do nothing if there aren't any coins
if (coins.length == 0) return 'none';
// Sort by distance using Pythagoras' Theorem
coins = coins.sort((a, b) => (a[0] ** 2 + a[1] ** 2) - (b[0] ** 2 + b[1] ** 2));
// Closest coin
let target = coins[0];
let x = target[0];
let y = target[1];
 
1:34 PM
Thanks
 
This is my controller:
var coinLocations = [];
var botCount = botData.length;
var arenaSize = botCount + 4;
var botPos = [];
var end = 0;
var botNotes = {
storeData: function(key, value) {
var bot = botData[botNotes.storeData.caller.index];
bot.kvpData[key] = value;
},
getData: function(key) {
var bot = botData[botNotes.getData.caller.index];
return bot.kvpData[key] || null;
}
};

function randInt(min, max) {
return Math.floor(Math.random() * ((max - min) + 1)) + min;
}

function deepClone(arr) {
return JSON.parse(JSON.stringify(arr));
 
[18] Coward has fled shamefully.
 
Oops, there was an error
var botData = [
{
name: 'First Gen Learning Algorithm',
color: '#330d0d',
run: function() {
return ['north','east','south','west'][(Math.random()*4)|0];
}
},
{
name: 'B33-L1N3',
color: '#8a8c69',
run: function(me, others, coins) {
// Do nothing if there aren't any coins
if (coins.length == 0) return 'none';
// Sort by distance using Pythagoras' Theorem
coins = coins.sort((a, b) => (a[0] ** 2 + a[1] ** 2) - (b[0] ** 2 + b[1] ** 2));
// Closest coin
let target = coins[0];
let x = target[0];
let y = target[1];
 
Uncaught TypeError: target is not iterable
Line 667
[x, y] = target;
 
Oh, do
x=target[0]
y=target[1]
Alright, I'm off to run the tests now!
 
1:41 PM
[13] Coward has fled shamefully.
Still goes out but no more errors
 
See y'all in a few hours with the results!
 
Only "Big King Little Hill" throws an error very rarely now, I got the first error in the 10th 20K run I was doing
@RedwolfPrograms Good luck :P
 
See y'all later!
 
May the best lose and I win ^_^
 
1:56 PM
botdata.js:667 Uncaught TypeError: Cannot read property '0' of undefined
Line 667 = x=target[0];
The target variable goes undefined sometimes.
 
2:25 PM
@Night2 Ah, I see what's causing that error. It
It's a very rare one that never showed up in my testing. I think it is when BKLH gets a coin before any other bot.
That filter enemies.filter(enemy => enemy[2] >= me.coins/50) then returns an empty list.
If you change the code to enemies.filter(enemy => enemy[2] >= Math.floor(me.coins/50)) then that should fix it I think.
The whole line would be: return enemies.filter(enemy => enemy[2] >= Math.floor(me.coins/50)).map(enemy => getWeightedDist(enemy, x)).reduce((accumulator, current) => Math.min(accumulator, current));
 
I thinks you should tag @RedwolfPrograms now
He is running the actual competition now
 
@Redwolf Please see the above messages about the bug in my bot. If you'd like to leave it as you currently have it for the competition I'm fine with that.
 
Your bot has always been one of the best ones, so I really like to see it in the competition.
Hope @RedwolfPrograms sees it!
 
Yeah it's unfortunate I managed to introduce that bug, I did fairly extensive testing, but it's very unlikely that my bot picks up the first coin before any other bot manages to get one.
But the try-catch you implemented really won't affect its performance at all I think, as it will only occur on those very rare occasions.
And then as soon as another bot picks up a coin everything will work fine again.
 
I tested all bots today and I could get 1 error from yours very rarely, the first one I got was after around 10 games 20K runs
I applied that try catch only for my own testing
I'm not sure how @RedwolfPrograms is going to play it.
Maybe he uses the previous version or maybe he sees this in time and applies your fix
 
2:37 PM
Yes, it's unclear to me from his messages. I initially took the "I fixed them all
It works!" message to refer to all the bots, but perhaps he was only referring to Coward.
 
Yeah, he was referring to Coward
We were talking about Coward at that moment
I'm not really sure about his decision on your bot
Even with the try catch, on my latest test, your bot was still getting 3rd place easily and competing for second place too
 
Haha yes, those last messages are curious. "I'm off to run the tests," "There's a bug in one of the bots," "See you later!" hahaha.
 
I could get a simple way working to use Feudal Noble in favor of my main bot
And in my last test which was only 100 games, I won 86 games
But it is a dual bot effort, if we count single bots, "Potentially Victorious" seems to be first and "Big King Little Hill" seems to be second and then "TBTPTGCBCBA" is third.
 
Did you just eat Feudal noble with your main bot at the end? Or did you work with it in a more complex way?
 
I had a simple working from before to avoid center when I knew he was in center
But at the end they do a beautiful dance and then Feudal Noble is eaten
 
2:44 PM
Haha, wonderful.
 
That dance at the end is the key to make sure TBTPTGCBCBA is the one who eats Feudal Noble
It could have some error, but usually works fine
 
Yes, because Feudal Noble has to allow itself to be eaten.
 
Yes, at 20000 - ((arenaLength * 2) - 20)
Both bots move to center and TBTPTGCBCBA changes his scoring system to chase the bot at middle
Feudal Noble keeps track of getting chased for last 20 turns
And if it was being chased for last 20 turns, then it gives up his defence
So if Potentially Victorious chases Feudal Noble at same time, since it only chases for 10 rounds, Feudal Noble won't give up
 
Yes, there's really no way around it that having two bots collect coins and then combine will always be the optimal strategy. It's impossible for any single bot to beat them if they are reasonably competent.
 
Well, someone can write a bot that does better than TBTPTGCBCBA and then dose exactly same move as TBTPTGCBCBA at the end
 
2:49 PM
Yes, but then you can simply change the behavior of TBT and Feudal again to thwart them. And you always have the advantage of being able to submit right before the deadline.
 
Yes, that is right
I was working on more complicated methods of working together, but there was so many problems to solve. Keeping track of correct bot was a hard task
And I couldn't do it successfully
I was able to find the other bot easily after 2000 turns
But it was very late
The most simple solution I found was the one I implemented :D
 
Yes, it's pretty straightforward.
 
If you can form a team on first 50 turns, you actually can dominate the game and hunt/trap many bots to guarantee the top spots for your team. I hope in the next challenge we actually have the possibility to detect other bots by an ID or something.
 
Yes, two strong bots working together should be able to trap any weaker bot reliably. I think optimally you would do this later in the game though in order to maximize the coins you receive. Essentially, let bots harvest coins for you and then harvest them.
The main problem is that both hunters have to be stronger than their target, and that it takes enough turns to drive a bot into the corner that you might have been better off just getting coins.
 
Yes
That is why I think getting an advantage early on could work better
In late game, a difference of 100 coins between two bots doesn't seem much, but in early game even a difference of 5 can make a whole difference
So if you can gain some coins and team up fast to hunt weaker bots, you might automatically get the top spots
Don't forget that competition for each coin is also a lot on start, so if you miss a few while hunting, that doesn't mean your top rival will get all of them
 
3:04 PM
Yes, but spending 20 moves hunting a bot with 10 coins is likely to get you fewer coins than just grabbing coins would have. And then if either of your bots falls the main pack you cant hunt to catch up.
 
There would be a whole world of possibilities. If we can have a safe way to detect our team bot, then we will have that whole world to play with and try to figure out the best strategy, anything I say could be completely wrong in action, but at the moment that is what I'm thinking
 
Yes, hard to predict what will work until we test.
 
And sorry for my continuous typos, each time I type fast and it is not coding, I make lots of typos ...
 
@Night2, yeah, a single bot has pretty zero chance against this, except to do the same thing, which is boring. I'm absolutely not surprised that you beat us all with this strategy :—).
 
@Ramillies I would still give the best bot prize to you
And I think the ZoC idea of @MikeNichols was also very interesting
I agree that in a single bot scenario, my bot would be third among them
 
3:08 PM
Exactly, I would vote for him, even though I managed to beat him in the end somehow.
(for Mike)
(or Big King, that is)
I'm wondering if you were planning this before.
 
I was planning for team since start
I was the first one asking about teaming rules
 
I meant the idea of one bot eating the other.
 
But I didn't exactly to plan what I did
 
You had a perfect position to do that.
(and actually coded it pretty much in the same way as I thought you would do — just check how much time all the bots spend in the center)
 
I had that idea in my mind since I asked @RedwolfPrograms about the exact number of turns per game
 
3:11 PM
Oh :—)
 
But I implemented it as my last hope, since my other plans failed
 
And I was so cautious not to say anything about it, since you would be able to take advantage of it very well :—).
 
(Or I didn't have enough time to implement other plans :D)
You know
Last night when you guys were talking about this
I was a little bit scared as well
Because you were talking about my last hope plan :D
But I kind of asked about it as well to make sure if someone thinks I shouldn't do it, I don't: chat.stackexchange.com/transcript/message/46210176#46210176
 
Yeah, you did, and we let you. I'm not saying it's wrong, not at all.
 
This is the dance they do at the end: i.imgur.com/0hjYwOE.gif
Probably isn't interesting for you, but I love it :D
 
3:28 PM
It would be interesting if somebody got there first and ate him before your bot could do so :—)
 
It is possible but very hard, the other eater most have more coins than TBTPTGCBCBA and arrive at the exactly correct turn. One turn later and TBTPTGCBCBA has already eaten it and a few turns sooner could result in TBTPTGCBCBA running away and Feudal Noble not giving his defense up.
 
Hm, does the Noble somehow test for TBT...?
 
Yes, it should be chased by a bot for 20 turns at the correct time to give up his defence
 
What I had in mind was that a bot arrives a little bit earlier, chases the Noble away from the center and then just follows him around until he gives up.
That would still need someone to specifically target this combination, though.
 
Yes
But usually a general algorithm which will follow lower point bots, would follow TBTPTGCBCBA since he has more value than Feudal Noble
 
3:34 PM
Actually, Potentially Victorious doesn't care too much about how many coins exactly do you have. Either the bot is eligible for being hunted or isn't, nothing in between.
(because the coins obtained by hunting are actually pretty much constant, no matter how many coins the hunted bot has)
But still, it would need a lot of luck to pull this off on its own.
 
Hey, just ran 168 runs. I'll implement BKLH fix for the next few hundred. I will probably do about 500 games total
 
Hey @RedwolfPrograms
Are you using multi window technique?
 
No
I'll try it
 
That could allow you to run more if needed
But don't forget to not minimize any of windows
 
But my weak little chromebook probably only has 1 or 2 threads
 
3:37 PM
What was your CPU again?
 
Well, you can just run it overnight, can't you?
8 hours is a lot of time.
 
Never mind, I found it, "Intel Celeron N2830 Dual Core 2.16 GHz"
It has 2 cores and 1 thread per core, so you can do 2 windows easily.
 
Oh, okay. I'm also running it on an HP computer, which is quad-core
So, 6 total windows?
2=chrome, 4=hp
 
If it has 2 threads per core, you can do 8 windows as well
If you want to keep using the computer, do 7 windows
 
I'll stick with 4. 6 total runs at a time is at least 750/hour
 
3:40 PM
You see, if you run this overnight, you can have the 8k you promised earlier :—).
 
I hope his cooling systems don't fail :P
 
I'll just do the Chromebook. The HP is worth too much to leave sitting out overnight processing stuff
I'll do 2k
Off I go, see y'all in 2 hours
 
See you (y)
 
Arrrrrrgh, that feeling when you forget to copy the data the program outputs, and you lose it all
 
:D
 
3:44 PM
Did you just your 168 runs? :D
Actually that is good, now you have fixed BKLH :P
 
I guess that a god of scientific method caused this.
 
Only 66 of them, I run some on the HP and some on the Chromebook
 
Because updating one bot in the middle of an experiment is a total blasphemy.
 
Well, I still have 102 tests from before
Take that, Scientific Method Gods!
[Computer does auto-restart in background, deleting 102 tests]
:-)
 
You should throw them away before you induce their wrath :—)
 
3:49 PM
Windows Update :>
 
I'm actually not counting these first few runs
From now on, they will count
 
4:05 PM
This is going to happen to you next: youtube.com/watch?v=eP31lluUDWU
 
4:39 PM
Luckily, I have Windows 7 Home Premium
Boom
 
4:53 PM
OK, you win!
 
5:16 PM
I have 250 runs so far, and 20 minutes until my computer gets a break. It will probably explode before that point (:
I won't know who's in the lead until the break.
BKLH has been updated, and I'm at 256
The HP takes about 30 seconds per game
Not lightning fast, but it'll have to do
I admit it. I just got rid of the first 102 tests due to me being lazy. It would have taken 10 minutes to format
There are 3 scoring systems that I have a considered:
1. Who got the most coins per round
2. The number of times the bot survived a round
3. Some combination of the two
Does anybody like my new profile image?
I'm very talkative. Off I go!
 
5:33 PM
Please don't change the rules of the game at this time! And I hate your new profile image :—).
 
6:01 PM
I'll keep it total # of coins, then
But I'll display it as average coins/game
And my profile image is hate-able? :\
AAARRRGH! It saved sum of coins as 0[object Object][object Object][object Object][object Object][object Object][object Object][object Object][object Object][object Object][object Object][object Object][object Object][object Object]
:-(
 
6:25 PM
Didn't you test it with a small game first? :D
 
It seems that you have also angered the Gods of Testing :—P
 
6:39 PM
 
(=: < Smile face with two noses
@Night2 I should probably test it with a small game first...you're correct
 
:≡)
 
[Loads 2 hour game in background]
Is that a 3 nosed smile face?
 
I guess so
 
You nose that's too many
(-:
 
6:42 PM
I nose
 
(:
Better call the exterminator, 'cause my program has a lot of bugs
Attention: I'm glad to announce our winners:
 
I wonder what's this, then: :≈)
 
First Place: Wild Goose Chase
Just kidding
 
It'll be a few more [dozens of] hours
 
6:46 PM
Your program must have a lot of bugs, apparently. :P
 
@Night2 (:
 
@Ramillies Two worms?
 
Maybe a Cthulhu smiley? I don't know...
 
That's (;,;)
 
That's awesome! :D
 
6:47 PM
Could be a lobster
 
Good job!
 
(°⊍°)
 
6:55 PM
A good definition of cats!
And this
These 2 show my experience with cats
 
I think, after extensive testing and analysis, I have nearly reached a list of winners. After a certain point, the tests have stopped contributing any new information, and serve to amplify earlier results. Within an hour, I will have the list of winners.
 
 
2 hours later…
9:33 PM
ATTENTION: WINNERS HAVE BEEN FOUND
I will list the winners in a second
Starting with 20th place
 
9:56 PM
20th place: Not So Blindly by @Luis felipe De jesus Munoz
19th place: Seeker.Armageddon by @RedwolfPrograms
18th place: Proton by @fəˈnɛtɪk
17th place: Firebird by @RedwolfPrograms
16th place: KatamariWithValues by @sundar
15th place: Damacy by @sundar
14th place: Blindly, by unknown
13th place: Bots Are Money by @Jo
12th place: ICE Agent by @BetaDecay
11th place: Retired ICE Agent by @BetaDecay
Top 10 will be named in thirty minutes
 
10:33 PM
Top 10:
10th place: BaitBot by @Cain
9th place: Hunter.Armageddon by @RedwolfPrograms
8th place: CloseCoin by @RedwolfPrograms
7th place: A-Path-Y by @Moogie
6th place: Feudal Noble by @Night2
Top 5:
In 5th place, we have a bot which is designed to do one thing. It does it well. This bot, is of course, Safety Coin. Despite the jokes about what exactly it keeps safe, this bot did amazingly, with an average of 2348.732 coins per round. However, it's survival skills were lacking, as it only made it to the end of 55.7% of rounds.
Safety Coin was made by @fəˈnɛtɪk
Drunkenly staggering to 4th place, we have a bot who's excellent skills raise the bar when it comes to skill. Well, more likely, it drinks at the bar. It's name is (how'd you guess?) Polite Near-Sighted Drunk Bot. This bot eventually became sober enough, since it managed an amazing 3323.161 coins, nearly a 1000 coin increase over Safety Coin. It survived 98.7% of the time
Polite Near-Sighted Drunk Bot was made by @N.P.
Taking the bronze medal (rather forcefully), is a bot that, from the beginning, showed exemplary skill and power. In 3rd place, this bot managed 3330.128 coins per round, only making a 7-coin lead on Polite Near-Sighted Drunk Bot. This bot was a master survivalist, with a well earned 97.3%. This bot is...**Potentially Victorious**.
Potentially Victorious was made by @Ramillies
Long ago, aluminum was worth more than gold. Gold is said to shine forever, and this is the case with our 2nd place bot. Taking the silver medal is a bot with a shining 100% survival percentage. This makes Big King Little Hill the only bot to survive every single round of the game. He makes a surprisingly low number of coins per round, which averages to 3656.718.
Big King Little Hill was made by @MikeNichols
 
11:04 PM
And finally, we arrive at the 1st place bot. This bot was the clear winner, with 5396.027 coins per round. The creator of this bot will receive the prized 100-reputation bounty. This bot was designed intelligently, though its name is too long to engrave on a gold medal. This bot had a 99.3% survival rate. This bot is The Bot That Plays The Game Cautiously But Can Be Aggressive, by @Night2
 
Do you have the average coin and survival stats for all of the bots?
 
11:23 PM
@RedwolfPrograms thanks for hosting this koth. I had fun.
 
11:45 PM
Thanks to Redwolf for the idea and everyone else who contributed to the controller and debugging everything. Congratulations @Night2.
 
How the heck did proton end up in the top 20...
 

« first day (6 days earlier)      last day (21 days later) »