From CG community
Jump to navigation Jump to search


Zenoscave: thank you!

ZarthaxX: np pewman

Zenoscave: how's your bot?

ZarthaxX: last timeouting like a beast

Zenoscave: ouch

ZarthaxX: having so many days makes me lazy

eulerscheZahl: good morning

Zenoscave: morning

eulerscheZahl: did you really want that link from ZarthaxX or the replays/reproduce/<id> one?

eulerscheZahl: i guess i should add some linking between them

Zenoscave: The reproduce one is what I was looking for

ZarthaxX: i erased that link part

struct: Hello

Zenoscave: Hi struct

Nixerrr: Helló

kovi: joregg

Nixerrr: :blush:

Quidome: I have this strange behaviour where after a sonar input which is N I don't get the opponent order but I lose

Quidome: I mean sonar result

Quidome: Anyone else having problems with the server?

struct: Are you sure you are reading all inputs?

Quidome: checking again...

Quidome: yep it looks correct

Quidome: It already worked before :P

Quidome: I get the sonar result, after that i wait for the opponent order and the game ends, me loosing

struct: python?

Quidome: yep

struct: ok

struct: so you need to add this

struct: print("Hello world!", flush=True)

struct: to prints

Quidome: for std as well as for stderr?

struct: not sure if needed

struct: for stderr

Quidome: doesnt hurt I suppose, i will add it, thnxs

struct: it works?

Quidome: it is different, lost my seed :(

eulerscheZahl: stop it chandanagrawal23

Quidome: Got past the input issue, thnxs!

struct: coc euler?

eulerscheZahl: yes

eulerscheZahl: i guess invite options are sorted by the leaderboard, didn't check

struct: Doenst seem like it, but it shows online players first


Nicky1812: kidding xd

tobk: how come there are 3600 registered but only 1200 in the leaderboard, in a contest that was announced the same day it started? did 2/3 take one look at the game and say "nah, not gonna submit"?

Nicky1812: what does "join' in python, guys ?

Nicky1812: what does it mean?

eulerscheZahl: join a string

eulerscheZahl: e.g. join(' | ', [1,2,3]) gives: '1 | 2 | 3'

eulerscheZahl: tobk 97% of those who registered also opened the game in the IDE

eulerscheZahl: i don't have stats on who changed the code or clicked the play button

tobk: who knows, still three weeks to go, but kind of weird anyway

eulerscheZahl: it is. that high difference between registered and playing is normal but usually a contest is announced weeks or even months before

Nicky1812: oh ok

Nicky1812: how to input multi variables on 1 line?

Insta-x: input()

Insta-x: its like getline in cpp

Insta-x: if you want to seperate the variables, input().split()

Insta-x: it will split the inputs into a list

Nicky1812: hmm ok

Insta-x: it depends on what seperates the variables tho. if its normal whitespace, split() will do the job

tobk: Nicky1812 actually that part should be pre-generated for all puzzles

Insta-x: if not then split(<something that seperates the variables>)

Nicky1812: wait example a,b=input().split()

Nicky1812: input 2 3

Nicky1812: so a=2 b=3?

Insta-x: a,b = [i for i in input().splt()

Insta-x: or a,b = map(int,input().split()0

Insta-x: if you want to turn them into int then a,b = [int(i) for i in input().split()]

Nicky1812: hmm i ll try

Insta-x: some typo there sry

Nicky1812: :v

kgautron: guys, when did "ocean of code" contest start ? i thought the next contest would be in may and did not get notified for this one :/

MSmits: kgautron it started 9 days ago, 21 to go. Plenty of time, a normal contest is 10 days here

MSmits: also this is not the planned contest

MSmits: it is an extra contest because of the corona crisis. People were notified by mail

Quidome: is there a way to see if I am getting a time-out or other system constraint?

kgautron: oh ok cool then. Thank you man.

MSmits: np

MSmits: Quidome you can measure time depending on your language

MSmits: every language has ways

MSmits: but usually timeouts mean you have a bug

MSmits: writing some memory you're not supposed to, division by zero etc.

MSmits: or bad output

Quidome: I understand, but my games al end after 70 moves or so with an unclear reason

MSmits: then it's debugging time. Which language do you use?

Quidome: So I was wandering is there more inforamtion :)

Quidome: python

MSmits: ah

MSmits: what does it say when you timeout

Quidome: I don't know IF it timeouts, it just stops making a move

MSmits: personally I would try to measure your turn time every time and then error-output that. If you are near to timing out, you will probably notice in earlier turns

MSmits: if those are 40 ms, 45 ms etc.

Quidome: OK , I will try that, thnxs

MSmits: However, python might also not be the best language for this contest

Quidome: good for prototyping, getting a grip on the problem

MSmits: pretty sure you will be able to get silver or even gold with it, but higher leagues will require heavy tracking code

MSmits: sure thats true Quidome

Skril: Quidome, you can see if you timed out in the replay's bottom bar

eulerscheZahl: but not if it's a real timeout or a crash

Skril: oh ok

Quidome: If python crashes you got more info

Quidome: but not on the timeout so it seems...

MSmits: yeah i imagine the crashing output is much much better than c++

Quidome: First add some timing stuff, thnxs guys

MSmits: i spent hours yesterday trying to find a bug where I was writing outside the board on one of my bitboards

MSmits: c++ will just let you do it until it leads to a catastrophic error

eulerscheZahl: that's what you get for your bitboards

MSmits: true, but thats what you get with C++ in many ways

MSmits: if I had bitboarded this in C# i would have known immediately

Csipcsirip: you can use debug macros

MSmits: I'm not very knowledgable about those, do you have some examples or a link?

Insta-x: hello again MSmits

Insta-x: lol

MSmits: hi Insta-x

Insta-x: ive changed my propic :v

Csipcsirip: u have to write it yourself. you have to make bitsetting a macro. and add boundary checks with #ifdef _DEBUG

MSmits: oh ok, good

Csipcsirip: but I'd recommend using std::bitset

MSmits: ahh ok, that would be a lot of extra code though

MSmits: isn't bitset a lot slower?

Csipcsirip: and I everything else is working in your code you can still change it to manual bit operation

MSmits: also, I can quite cheaply shift an entire uint16_t[15] map 1 cell to the right or left

MSmits: or when shifting up and down, just copy the rows

MSmits: can bitset do that/

MSmits: ?

Csipcsirip: I'm don't do stuff like that,but:


Csipcsirip: *I

MSmits: thanks

Csipcsirip: np. btw I don't know how much slower is it than plain bit toggling, but I wont timeout until like 60k states

Csipcsirip: state = {position, hp, path, mineposition}

MSmits: I think i timeout at 10-30k states or so, but 1 state can be many of your states

Skril: on flood fill, bitset seems 20% slower than crafted bit toggling

MSmits: I start the game with 1 state

MSmits: you probably start the game with 225 - islandcount states

MSmits: I keep the origin as a variable instead of picking a fixed origin for each state

Csipcsirip: yes I just bruteforce valid states based on inputs from enemy every round

MSmits: I do too

MSmits: but differently

MSmits: if an opponent would never silence, I would always have only 1 state

MSmits: only silence makes more states

MSmits: note, i am not tracking mines yet

MSmits: they might also split states, when they explode

Csipcsirip: ahh I see. I started with something like that, but it got too complicated, and replaced it to simple states

MSmits: it is pretty complicated, but I like it

Quidome: yep, got a time-out :P, that was really difficult to find out...

Quidome: Assumed the server would report me, well as it goes with assumptions

Quidome: they never work out :D

MSmits: the server only knows that you didn't output anything

MSmits: it has no idea that you would output something if given more time

MSmits: that's why it can never tell you if you are having a pure timeout or a crashing bug

eulerscheZahl: well, the server knows if the program crashed (see error message in the IDE)

eulerscheZahl: the referee doesn't know if a crash happened

MSmits: yeah, that's true, but that doesnt come from the referee ...

MSmits: right

Quidome: yeah but the server decides to stop serving because of time

Quidome: could have reported that

MSmits: it does

MSmits: because every time your program doesnt output it's because of time

MSmits: and your program didn't output...

Quidome: hm...

Quidome: a message would be very helpfull

MSmits: if you dont see output it's always a timeout, is what I mean

MSmits: yes but it gives a message

Quidome: not to me, it simply stops worling

MSmits: player x did not output in time or something, doesnt it say that somewhere eulerscheZahl ?

Quidome: but no problem, I am having fun anyway

eulerscheZahl: no message on timeout

eulerscheZahl: but a line where it crashed when it does

eulerscheZahl: so no message = timeout

MSmits: I thought i sometimes got one, does that depend on the game?

eulerscheZahl: maybe some referees add that message

MSmits: ah ok yes that must be it

eulerscheZahl: but they can't know if crash or timeout either

MSmits: yeah

Quidome: supose this is the moment to switch to C or C++ :nerd:

eulerscheZahl: or Rust

MSmits: Quidome if you know java or C#, that might be more coder-friendly

MSmits: unless you are good with C++

MSmits: I'm not, but I got 30 days so...

eulerscheZahl: he used C++ for oware i think

Quidome: Maybe try something new, Rust, is that fun?

eulerscheZahl: ask dbdr

MSmits: dbdr thinks it is

Quidome: never done that, does it compare to anything?

MSmits: it's as fast as c++

dbdr: I think it fun, yes :)

MSmits: but doesnt use optimizations in the IDE

eulerscheZahl: but release mode on submit

dbdr: similar than C and C++ in being able to do low level operations

eulerscheZahl: so it's settled, you will use Rust

dbdr: more moder type system

dbdr: so the compiler helps you more to find bugs

dbdr: it does take some time to learn, for sure

MSmits: I imagine it doesnt suffer from all the backward compatibility issues and weird stuff in C++

dbdr: right MSmits, one of the main advantages

MSmits: do you need to do forward declaration in rust?

dbdr: no

eulerscheZahl: yay

MSmits: see there you go, rust is superior to c++ already

dbdr: rust has a proper module system

MSmits: it's the stupidest thing about c++

dbdr: and super easy to import 3rd party libraries, like npm for JS

dbdr: not useful for bots obviously, but for tools it is very

dbdr: I do have a few 1st party libraries, code I reuse between bots, that I can import like that

nnminh171298: hey how come there is no higher league than silver in Ocean of code?

dbdr: stuff for parsing input, for instance

MSmits: nice

MSmits: there will be \

dbdr: I want to do more progressively

MSmits: gold opening 3rd of april

eulerscheZahl: and legend on 10th

MSmits: eulerscheZahl, are you dropping rank because of performance, or strategy?

MSmits: you were top 10 before I think

MSmits: and illedan i thought was up there too, did he change something?

MSmits: or maybe i just did too many contests with you guys and i get my leaderboards mixed up

Insta-x: the rank system id based on the score right?

MSmits: the rating yes

MSmits: true skill rating

eulerscheZahl: my best ranks about 30 but i think that was a lucky submit

Insta-x: if you win, you get a point, elif you lose you lose a point

Insta-x: true skill rating?

MSmits: oh ok, sorry, I got things mixed up then. I fully expect you to be top 3 in the first few days


eulerscheZahl: i was top3 on the first weekend

MSmits: ah ok

eulerscheZahl: but didn't work much on the bot after

eulerscheZahl: it's a full month, no need to hurry

MSmits: I took a break of about 4 days

Insta-x: oo ok

eulerscheZahl: to play UTTT?

MSmits: partially. also doing some work

eulerscheZahl: how's your teaching going?

MSmits: working ok, I am writing a socrative quiz now. Turns out it's better than google forms. You can use it like a test, with scores and feedback

MSmits: just to check on the students, see if they are keeping up with homework

MSmits: if they don;t i can let their mentor call their parents and stuff

eulerscheZahl: did that happen yet?

MSmits: not yet, but I havent been doing this for very long. I did call a few parents to make sure the students signed up to the google classroom. But most did that voluntarily

eulerscheZahl: and still learning something new in your it security class?

MSmits: some new things yes. I did some reflection ddos attack simulation. Also some more network flow measurements to identify intrusions

MSmits: 2 more weeks until it is done. It's not really my favorite class

MSmits: at the end of april my AI class starts

MSmits: so I can do what I like and receive study credits :P

eulerscheZahl: that sounds more like your cup of tea

MSmits: yeah, I wasn't supposed to do that class, but my media and user interaction class got cancelled due to too few signups

MSmits: so this is a replacement class

MSmits: hurray for that

eulerscheZahl: hope you won't learn too much there and use that on CG to crush us

MSmits: highly doubt i will learn much, but I will for sure enjoy it

MSmits: my fellow classmates no very little I think

MSmits: know

MSmits: so unless they are awesome differentiators, they will have to settle on a low level

MSmits: from what I hear, it is bfs, dfs, minimax, mcts, ga etc.

struct: chat didnt scroll

MSmits: Ga would be sort of half-new

MSmits: some neural networks

MSmits: but you dont get to write one yourself

MSmits: just theory

MSmits: afaik

struct: So I read you only have 1 state

MSmits: yes

AntiSquid: mchl is staying strong i see

MSmits: struct except on silence

MSmits: then I suddenly have 13 states

MSmits: or so

struct: What about mines?

MSmits: didnt get that far yet

MSmits: it should only split on explosions

MSmits: if you have several possible candidates for the explosion

struct: but you dont know the direciton he puts mine

MSmits: I would not store the mine in the location it was placed

MSmits: i would store the mine in the location *from* which it was placed

MSmits: like minesweeper

MSmits: you get a number for the possible neighbor count

struct: So you flag the cell where boat is

MSmits: yes

struct: and not neighbors

struct: Interesting

MSmits: I think that is the way to go

AntiSquid: playing minesweeper

MSmits: when a mine explodes that has no neighbors with count > 0, it is a faulty state

MSmits: yeah thats basically it AntiSquid

MSmits: but you can only eliminate states on explosion

struct: Your approach seems interesting

MSmits: and explosions may also split states

struct: Has good things and bad things imo

MSmits: the bad thing is mostly the complexity

struct: yes

MSmits: coding complexity

MSmits: thats why i spent so much time to get my silence tracking working

MSmits: and probably why i will spend more time on my mine tracker

struct: So 1 state

MSmits: also pruning states with mines is going to be a nightmare

MSmits: yes 1 state at the start

MSmits: with origin as a variable

struct: so it can be in any cell

MSmits: it's basically a floating path

struct: except islands

MSmits: the path has no fixed origjn

MSmits: origin

MSmits: i shift it as needed to, keep it within the bitboard

MSmits: this floating path thing will give you headaches though :P

MSmits: also, trying to combine it with some kind of damage map to also filter based on explosions is even more painful

MSmits: since the state doesnt tell you where the sub is

MSmits: only where it can be, based on the variable origin

struct: hmm

struct: too much for my brain

MSmits: yes, but I tend to think on these things for days before coding them. It's too much for me as well, were someone to explain it to me right now

MSmits: this is why i suck in short contest, I need thinky-time

struct: But I appreciate you sharing this tuff

struct: stuff*

MSmits: yeah np, I probably shouldn't :P

struct: During the contest no

struct: if you want to be competitive

struct: imo

MSmits: right

MSmits: well there's a tradeoff

MSmits: sometimes when i share, someone gives me ideas in return

MSmits: or it functions as rubber ducking

MSmits: and I get new ideas myself

MSmits: but yeah, i should probably do this in PM :)

eulerscheZahl: finally something remotely useful

MSmits: what?

struct: where=

MSmits: how?

eulerscheZahl: my bot

struct: ´top 20 nice

MSmits: any specifics, or do you just want to exclaim eureka ? :P

eulerscheZahl: eureka

MSmits: grats :)

eulerscheZahl: like that greek guy with the bath tube

eulerscheZahl: archimedes

MSmits: what corner of the internet did google push you into eulerscheZahl?

MSmits: oh ok

MSmits: yeah thats right

MSmits: you mean bath tub, I was figuring you were watching some weird youtubes

eulerscheZahl: :D

AntiSquid: defeated fake jesus:

MSmits: colouring book sub

YannT: MSmits: I just did detection by trigger as we mentioned yesterday (using path, so no "point in time" notion), I've failed to find a replay where it prunes even one possibility :(

MSmits: or "how to make someone track you easily"

MSmits: ah yes, you do need the point in time notion I think

MSmits: paths go everywhere

MSmits: but even then I don't know how succesful it will be

MSmits: because when it is succesful, he likely just blew you up :P

YannT: hey what do you know, it does remove a possibility in some instances

YannT: it's just rare to get value out of it apparently

MSmits: cool :)

emh: MSmits do you do (branchless?) BFS using bitmaps? how? bit shifts to get all neighbours of all nodes? I'm thinking of doing that. not sure I need the performance, but just bit fiddling for fun hehe

emh: might need to intersperse rows with one bit so I can mask out shifts that cross rows

MSmits: on my profile I have a bfs playground

AntiSquid: you can use bits with the branched approach too

MSmits: but I dont really do bfs in this contest, I floodfill for 1 thing though

MSmits: maybe I will bfs later

AntiSquid: another storm for UK wow .

MSmits: means more people stay inside = good

Errichto: any CG employee here? is it ok if I stream this game on Twitch?

MSmits: less idiots on the beach

emh: MSmits ohh I already read that BFS playground. didn't see it was yours hehe

MSmits: :)

eulerscheZahl: Errichto there were already some streams so i don't think it's a problem

AntiSquid: Errichto there are dozens of streamers already, so definitely (not an employee)

eulerscheZahl: like

AntiSquid: maybe link your stream here, like the others did

eulerscheZahl: the video i linked was even streamed on the official CG twitch channel

YannT: I seriously wrote something like

YannT: this.value - 1 >= ...

YannT: -_-

eulerscheZahl: i don't see what's wrong without a bigger context YannT

YannT: well this would maybe be clearer:

YannT: this.value > ...

YannT: :p

YannT: (it's integers)

eulerscheZahl: wow, illedan even used a camera on the stream :o

Csipcsirip: so he is an e-boy now officially

AntiSquid: e-boy? lol

AntiSquid: MSmits you were wrong, it's windy outside but my neighbour's kids are running around

Errichto: ok, thanks everybody, I will do some stream

Tunga: Cheers

Tunga: Ranking refresh everyday ?

MSmits: AntiSquid I didn't say zero idiots. I said less :P

MSmits: unless you performed a reliable idiot-count, i stand by my comment

MSmits: also, if you're goint to go outside and count all of them, make sure you add +1 :P

AntiSquid: sure, have someone call police "there's a guy counting children outside" MSmits

MSmits: :)

Illedan: eulerscheZahl, I asked my friends last time. And they said having a camera makes it easier to follow what is being said..

wlesavo: yeah, having an image of a person kinda helps to concentrate, i dont know that works, but it is

wlesavo: dont know how

eulerscheZahl: i don't have an opinion on that, as i don't watch these streams. whatever you think fits best ;)

AntiSquid: title clearly shows it was icebox streaming /s

MSmits: it doesnt help me concentrate, but my hearing is less good and it helps with lip-reading

Default avatar.png mohsenmnassri: hi

eulerscheZahl: isn't that a problem as a teacher?

MSmits: i have hearing aids so it's ok

AntiSquid: it's easier to ignore noisy kids ?

MSmits: when i take them off yes

MSmits: it's great at home, small noises don't wake you up

AntiSquid: i use ear plugs

MSmits: that helps

struct: same

AntiSquid: i can hear every tiny drop in the kitchen or bathroom Q_Q

MSmits: yeah that's annoying

MSmits: or clocks

AntiSquid: or someone's breathing ...

MSmits: don't you just hate it when they do that

AntiSquid: lol

struct: only when I want to sleep

Default avatar.png AhmedReda1: hello there :)

struct: breathing I can stand

struct: but snorting

struct: cant sleep

MSmits: snoring I guess

MSmits: snorting would be worse, but i doubt people would keep up with it for long

AntiSquid: "there" ? are you laughing at us being in lockdown AhmedReda1 ?

Default avatar.png AhmedReda1: first day here

Default avatar.png AhmedReda1: i dont know what is going on

Default avatar.png AhmedReda1: HAHAHHAA

MSmits: thats a yes AntiSquid :P

AntiSquid: which planet are you from?

Default avatar.png AhmedReda1: mars

AntiSquid: ya MSmits he even capsed his laughter

Default avatar.png AhmedReda1: im from egypt <3

MSmits: I saw

kovi: yay, some improvement

struct: I just looked

Default avatar.png SujalAI: someone teach me ocean of code please

struct: mchl hasnt submited in a while

kovi: true

struct: I think he hasnt submited since bronze

struct: the date it shows for his bot is when silver opened

struct: his bot is around 5 days old

AntiSquid: hiding the best for legend :o

struct: I just hide from legend

nnminh171298: sometimes I feel like I enjoy building the classes more than the algorithm..

Tunga: I recommend noise cancelling headphones over concentration problems with noise. I hate my noisy office and I bought one of the expensive one. It worked like charm. I, now, can control my thought like a flow

AntiSquid: hope he is ok and returns, i remember last time when some new guy got 1st place and then only dropped because he never returned to the site

Default avatar.png rosejam: mic test

Default avatar.png rosejam: 123

nnminh171298: heard ya

AntiSquid: can barely hear you rosejam can you speak louder?

Default avatar.png rosejam: lol

AntiSquid: serious, try yelling wanna see how loud you can get

Default avatar.png rosejam: CAN ANY BODY HEAR ME??!!!!!

Default avatar.png rosejam: GUESS NO ONE'S HERE!'

trexplex: I can hear you

Tunga: Ayyyy ayyy captain

Default avatar.png rosejam: thats the maximum voice i could make. AntiSquid

AntiSquid: the signal is bad

Default avatar.png rosejam: omg

Default avatar.png rosejam: :grimacing:

AntiSquid: have you turned your mic to max ?

Default avatar.png yfprojects: maybe your volume is turned down, AntiSquid

AntiSquid: ah you're right, try again now

Default avatar.png rosejam: yes that what i wanted to say

Default avatar.png rosejam: nono everyone is hearing me well now including you

Default avatar.png rosejam: :thumbsup:

Default avatar.png JBM: eulerscheZahl: please don't make me create yet another github account :'(

AntiSquid: rosejam you can use the discord voice chat:

AntiSquid: it's codingame discord

struct: lets be honest

struct: nobody uses it

AntiSquid: rosejam might use it, struct

Tunga: We hear you on discord

Default avatar.png rosejam: i would like to but i'm on sth else

Default avatar.png rosejam: maybe later

eulerscheZahl: JBM oh you edited your changes to link to the final html now

Default avatar.png JBM: but don't use that

Default avatar.png JBM: I'm giving you actual commits, dangit

eulerscheZahl: yes, just saw that too

Default avatar.png ThienPhu: idol

eulerscheZahl: "This is a two-player game based on the board game Captain Sonar" actually it's up to 8 players, 2 teams

Default avatar.png JBM: yes

Default avatar.png JBM: but this one is 2

Default avatar.png JBM: that's actually why I mentioned it

AntiSquid: that would have been something, 4v4 and maybe communication between team bots

eulerscheZahl: so, there's your branch

YannT: "Execute pincer maneuver #3"

Default avatar.png JBM: you rock

YannT: *surfaces and shoots self*

eulerscheZahl: not really i still have to get staff to actually use your changes

eulerscheZahl: sounds much more English now

Default avatar.png JBM: yeah, I stripped quite a few of what I've come to calle "the german comma" ;)

eulerscheZahl: "if you are in doubt, leave the comma out"

eulerscheZahl: oh, i did it again

eulerscheZahl: then i call this the french space . leaving a space before fullstop .

Default avatar.png JBM: we don't do that

Default avatar.png JBM: we would for : ; ! ? though

eulerscheZahl: at least for : i see it often

eulerscheZahl: ah

Default avatar.png JBM: but not . or ,

Default avatar.png JBM: it's supposed to be a thin non-breaking space

eulerscheZahl: i see. i notice that in the puzzle section sometimes and "exemple"

Default avatar.png JBM: but those are hard enough to come by, so best typo fallback is no space; alternate fallback is regular nbsp

Default avatar.png JBM: haha exemple, yeah, pretty frequent

Default avatar.png JBM: any any other of those old french words that are still in english with a diverged meaning

Default avatar.png JBM: eventually

Default avatar.png JBM: mmm can't think of the others just now

eulerscheZahl: i have a colleague at work who always says "become" instead of "get"

YannT: you know what I would love

eulerscheZahl: a pizza?

accorp: a beer!

YannT: I tool that would replay the last N battles from your history with a new bot version and tell you if you've improved the outcomes

YannT: it'd be kinda like integration testing

accorp: I would love to be able to put labels on the submits in the history tab...

accorp: and a beer

eulerscheZahl: CG enhancer accorp google it

eulerscheZahl: at least for your first point, you can't download beer yet, only play vindinium

accorp: thanks!

AntiSquid: 3D printed beer

Default avatar.png JBM: just brew it

Default avatar.png JBM: a fine confining activity

Default avatar.png HelmiAkermi: guys how to reactivate autocompletet in IDE

eulerscheZahl: try ctrl + comma

eulerscheZahl: also: left side settings -> make sure it's classic (or emacs/vim if you changed it before)

eulerscheZahl: if this doesn't do the trick, search here

Default avatar.png JBM: that emacs mode is a complete joke, TBH

YannT: back to top10 :tada:

YannT: (barely)

Default avatar.png HelmiAkermi: thanks , it was the browser i refreshed the page and it works now

Default avatar.png JBM: gg

Default avatar.png HelmiAkermi: sometimes you need those suggestions for non usual used functions

eulerscheZahl: and other times you need an offline editor

Default avatar.png HelmiAkermi: agreed

AntiSquid: the autocomplete can fail after a while, offline IDE is kinda necessary

eulerscheZahl: offline IDE has debugging capabilities

struct: they could update their ide

struct: but it wouldnt change anything

struct: I would still use VS

Tunga: Is there a possibility where one of the cases in ANEO puzzle wrong ?

Tunga: ANOE Sponserd Puzzle?

wlesavo: nop

eulerscheZahl: some users struggled with rounding errors. you can use the puzzle with only using integers, on floats

Tunga: I think original makers use calculators while doing it and after they roll the number but in the end rolling numbers is wrong

Tunga: I am working in automotive industry and you never roll tiny digits

wlesavo: eulerscheZahl i thought i had rounding errors, just couldnt solve it properly, stoped trying and went to other puzzles. after couple of month i realized ive read the statement wrong

Tunga: You calculate over it, if you cast it to int the case it true but if you use float the case seems wrong

Default avatar.png yfprojects: When does the next league open?

AntiSquid: in IDE at the top click on league

tarriel: did they just make the bosses easier? I was sitting at about pos 30 in wood 1, and am now pos 1 in bronz with no new submission?

eulerscheZahl: no, on friday already

tarriel: this just happened now? but I didn't re submit since yesterday...

eulerscheZahl: then you got lucky and someone pushed you up

eulerscheZahl: or the boss down, i don't know if there was a full resubmit or just a replacement of the code

tarriel: all the way to the top of bronze :)

tarriel: just promoted to silver with the same code...

tarriel: it's pretty bad code, I don't even shoot yet...

tarriel: I guess I can go to sleep now I have passed two leagues

MSmits: hehe so some people promote to silver shooting everything in sight and some dont shoot at all :)

AntiSquid: you can come back Friday when gold opens tarriel

tarriel: I don't think I can be that lucky

tarriel: I wish in the top league, they could set the default opponent to a player, like 50 positions about my rank...

eulerscheZahl: you can still replace it by yourself

tarriel: I know, I, just think it would make a better boss most of the time.

eulerscheZahl: CGs point of view (when i wrote a strong default AI for kutulu): default AI should be weak to motivate players fighting each other and not only default AI

CodingCaptain: They could just do random from your postition + - 20 postions;

tarriel: :) I think that is what I'm saying, just set a player stronger than you as default, but not totally out of your league (some random would be good also.

eulerscheZahl: CodingCaptain are you and alt account of someone? your profile pic feels a little trolling :D

CodingCaptain: Blank pic feels like trolling?

eulerscheZahl: chat color pic

eulerscheZahl: AntiSquid is that you?

CodingCaptain: No, its totally blank

Tunga: Yea, it is really weird

eulerscheZahl: you were from the UK 5min ago

struct: also

struct: another thing

struct: the name

eulerscheZahl: now from Latvia

struct: reference to contest

eulerscheZahl: wait, not UK Virgin Islands, British

CodingCaptain: Just let me code

eulerscheZahl: ok, sorry for bothering you

Tunga: Can I submit a contest with 1 wrong case?

Default avatar.png HelmiAkermi: java : loop in array or in list ? which is the faster?

eulerscheZahl: submit a contest Tunga? you want to suggest a new game to become the next contest?

CodingCaptain: About my pic: if u choose spot that goes out of your picked photo bounds(when picking profile pic) it makes it look that way

AntiSquid: lol all that panic buying just to throw food away


Tunga: My mistake. I solved a Sponsored puzzle but 1 case is wrong. Can I submit like this?

AntiSquid: yes

AntiSquid: but you won't get 100%

AntiSquid: probably

Tunga: After submit, I cant resolve sponsored problem?

Tunga: Again?

struct: you can

CodingCaptain: U can

CodingCaptain: U can sumbit any amount of times u want

kovi: oops

Tunga: Ohh okay, thanks to all of you!

struct: nice kovi

kovi: thx

AntiSquid: :o

AntiSquid: 2 points lead

eulerscheZahl: impressive lead, why "oops"?

eulerscheZahl: oops because you forgot to hide? :D

AntiSquid: accidentally over-wrecked opponent

kovi: this is a lucky one for sure

kovi: hard to hide considering that i only use cg ide/submit so far

eulerscheZahl: i use offline play vs myself to filter the most stupid ideas faster

eulerscheZahl: apart from that submit is the real test

AntiSquid: i wish i had 2.30 points worth of luck

eulerscheZahl: but only on league opening

pb4: "but not . or , it's supposed to be a thin non-breaking space"

pb4: I never knew

eulerscheZahl: that's some really old chat you refer to

pb4: dat lead kovi :neutral_face:

kovi: will not last long

eulerscheZahl: then take a screenshot

accorp: and do a selfie with the leaderboard - you know, for the ladies

accorp: well that was an embarrassing 6-0 loss for me :)

dGrayCoder: How do you beat boss in bot Programming contest? Do you actually beat boss in every match against it or do you have more overall wins in the league?

struct: you need to be above the boss

struct: so you also need to beat other players

struct: You dont really need 100% win rate vs the boss

struct: Sometimes even < 50% is enough if you beat the other players

eulerscheZahl: and you have to submit and wait till the progress reaches 100%

dGrayCoder: I have been stuck with rank 2 in my league (with only boss above me) for a whole day. What does that mean?

eulerscheZahl: you have to get better

AntiSquid: it means the boss hates you

dGrayCoder: better than what? Do I need even more wins against other players?

AntiSquid: beat boss

AntiSquid: which league are you in?

dGrayCoder: Is there any way to check you all battles against just one opponent ( boss in this case)

dGrayCoder: I'm stuck in gold for now

eulerscheZahl: which game?

dGrayCoder: coders strike back

AntiSquid: you're playing the wrong game dGrayCoder

AntiSquid: you need to click here


dGrayCoder: O:

eulerscheZahl: but AntiSquid is right, play the contest

AntiSquid: and best if you don't get promoted, you just cause lag for everyone else when you drop the boss

dGrayCoder: I am quite new in this. Why is it the wrong game?

eulerscheZahl: you can play coders strike back at any time

AntiSquid: well contest has a limited duration, so it's best to play that before it ends

CodingCaptain: Contest is limited time

eulerscheZahl: the contest ends in 3 weeks

dGrayCoder: Oh I did not know that.

CodingCaptain: Often contests are for 10 days, this one is longer, but still its time limited

eulerscheZahl: and lots of activity (players submitting all the time, chat is about that game mostly)

dGrayCoder: ty for information

dGrayCoder: @eulerscheZahl thanks for that link

eulerscheZahl: kovi please stop, your last submit completely destroyed me

YannT: a surprising lot of my losses actually come down to "you went into the huge minefield for no good reason"

YannT: well there's a reason, it's where there's a lot of non-visited tiles, but maybe that's not a good enough reason to go into the stack of mines...

eulerscheZahl: i still have to find the right condition to just surface and turn around in that case

YannT: same

eulerscheZahl: and do something about

eulerscheZahl: i hope that problem will fix itself in gold

YannT: also maybe not path into where there's probably a lot of mines when you've got other options...

YannT: I actually just submited a fix for that

eulerscheZahl: i try to avoid mines already

YannT: "if chain silencing noob, limit path tracking because you're gonna win anyway"

Default avatar.png icecream17: what!? why did i blow up my own mine?

accorp: what do you mean, you're supposed to do that at some point..?

MSmits: no

MSmits: well yes with trigger

Default avatar.png icecream17: at myself, -2 lives

AntiSquid: the game heavily rewards silence, so you're noob if you don't use it @_@

MSmits: however, if you *only* use silence, you will probably lose

MSmits: the opponent only needs 1 lucky hit

AntiSquid: well if you have a crap bot you lose, but silence is always better than no silence

Default avatar.png icecream17: the only thing i don't use is sonar. i wonder how useful it is

eulerscheZahl: you can easily beat me with silence :P

MSmits: I disagree, I could beat illedan by chain torpedo-ing everything in sight

MSmits: chain torpedo beats chain silence

Default avatar.png icecream17: where are you at in the contest (everyone)?

AntiSquid: ya a lot of top bots time out from silence spam

eulerscheZahl: silver

AntiSquid: (tested it)

MSmits: I can't be timed out that way

MSmits: but not a top bot yet :P

AntiSquid: ya was talking about top bots

MSmits: my current submit may get into top 100 though, 55% and rank 133

k4ng0u: no need to silence just mine everywhere :D

MSmits: still completely ignoring mines, but now it charges torpedos and silence and uses silence when available. And only torpedo's when expected damage > 0.7

Default avatar.png icecream17: if people don't torpedo -> mine and silence -> else if they spam torpedo -> silence on 8th move and then torpedo

Default avatar.png icecream17: thing is my mines explode in 2 moves....

ZarthaxX: MSmits 0.7 means possible spots / 9 = 0.7 ?

MSmits: mine is next for me. I like the idea of mine laying. Especially since I often know where the opponent is but I am not close

AntiSquid: maybe i should make some tiny improvements to my bot instead of waiting till friday? :thinking:

MSmits: ZarthaxX total damage on possible opponent spots (center = 2x) divided by total number o fpossible opponent spots

ZarthaxX: ok

ZarthaxX: did you stole that from blaster? :P

MSmits: yes

MSmits: I was looking for the trademark emote

MSmits: when i said that

MSmits: or is there a copyright one

blasterpoard: well, I guess it is time to use SILENCE in chat from now on

kovi: may or may not be correct

MSmits: bleh, it is exactly what i would have come up on my own, I was already adding up damage on map :P

kovi: possible positions and probability of being there

MSmits: it's common sense really

AntiSquid: ya certainly everyone thought about it and was already implementing it

blasterpoard: I already deleted that btw

MSmits: but always appreciate when you share blasterpoard :)

MSmits: why, it's not a bad idea

blasterpoard: it is

MSmits: when you can do damage... do damage

kovi: for first its ok, there are better ones

AntiSquid: it's not accurate enough i guess would be the issue

MSmits: well up the treshold then

MSmits: if 0.7 is too low

blasterpoard: actually... it might depends on what the opponent's hp is and on his silence cooldown

**blasterpoard SILENCEs

MSmits: hmm it might weakly depend on that, but not strongly

MSmits: if right before silence, its useful, if right after silence, it's also useful

MSmits: *provided* it is over the threshold

AntiSquid: 2 weeks from now smits adjusting his 0.7 param

MSmits: haha

MSmits: probably

MSmits: I hope I don't have too many params

eulerscheZahl: my toppedo hamage was 0.5, let's see if 0.7 is any better

MSmits: dont type while you're eating

eulerscheZahl: arena: 48 OceanOfCode: 73 draw: 1

eulerscheZahl: seems to be

eulerscheZahl: the draw is a crash btw

MSmits: whats that scoring?

MSmits: arena 48?

eulerscheZahl: wins

MSmits: what is the 73?

eulerscheZahl: wins of my test bot with 0.7

MSmits: ohh I get it

MSmits: does your bot drop mines?

eulerscheZahl: yes

MSmits: do all topbots drop mines?

eulerscheZahl: should i use 0.7 there as well?

eulerscheZahl: yes, mines are mandatory

MSmits: should have a separate param

MSmits: mines dont reveal you as easily

MSmits: probably it should be lower

blasterpoard: actually, detonating your mines should also depend on how much info it gives to the opponent

eulerscheZahl: and if i miss the chance to trigger, they become useless

MSmits: exactly

blasterpoard: maybe the number of times you silenced since you dropped it, if you want a simple heuristic

MSmits: i thought you were gonna keep quiet

blasterpoard: I will in gold

MSmits: here you go again, giving good advice

eulerscheZahl: first i have to use mine explosions for tracking my opponent

blasterpoard: for now, I'm TRIGGERing

MSmits: aha

MSmits: eulerscheZahl, I assume you mean his explosions, not yours

MSmits: because your explosions are just as easy to track as your torpedo info

eulerscheZahl: i mean using his explosion to tell where he has been before

MSmits: yeah, that's what I am working on also. I think it might be the hardest part

eulerscheZahl: 3 timeouts in my first 3 matches, great start

MSmits: well, when you include pruning that is

eulerscheZahl: * in first 10

MSmits: do you store mines where they can possibly have dropped or where they were dropped *from*

Default avatar.png icecream17: so many comments

eulerscheZahl: from where

MSmits: ah ok, probably best

kovi: i like blaster's thought on "silver" and and "gold" ideas :)

blasterpoard: for now, I'm working on things I'm sure will be in my final bot

blasterpoard: so that's silver ideas for me atm

MSmits: blasterpoard, your bot that got top 50 just by shooting and silencing, did that also avoid mines?

blasterpoard: MSmits no

MSmits: hmm weird. My bot got to 136

MSmits: maybe because my start spot is still completely random

blasterpoard: it tracks the mines, and uses explosions to track the opponent, but ignores them otherwise

blasterpoard: mine is too

MSmits: ohh, it tracks the mines

blasterpoard: just a fixed seed

MSmits: yes that helps

blasterpoard: do you want me to submit without mine tracking?

blasterpoard: MSmits k, I'm submitting now, this bot ignores enemy triggers, otherwise is the same as the last one

MSmits: ok

MSmits: gonna go walk my dog and check your result later

MSmits: might be I also need to allow for more states. I prune at 1000 states. Might be too soon

kovi: yeah

MSmits: remember my states contain a lot more information though. I start the game with 1 state as opposed to 225

MSmits: so it's more like somewhere between 10k and 100k of your states

AntiSquid: fix it

kovi: sounds reasonable then

MSmits: yeah, but if i got the calculation time, i should stretch it a bit

MSmits: i never even timed it

Valdemar: Hi! Did anyone implement proper path reducing after silence? I try to discard paths that intersects with visited tiles, but it seems to be harder than i thought. Problem is that after first silence there is multiple possible paths and each silence get the things worse

Valdemar: So the question is: this is really that complex or I miss the proper solution?

kovi: it is not trivial, but doable. probably top50 silver all has it

Valdemar: How many maximum states do you get in game when tracking all possible positions?

Valdemar: Or there is some kind of smart prunning in top player strategies

CodingCaptain: Valdemar to make it simple (but not that good) u can clear moves history after opponent silence

blasterpoard: Valdemar it depends a lot on what the opponents are doing

eulerscheZahl: i've seen above 5k and then timed out

blasterpoard: if an opponent does nothing but silence, I've seen my bot reach 200k states

CodingCaptain: It reduces possible positions quite a lot after enemy silence, but not optimal

Valdemar: blasterpoard wow, thats huge amount. So prunning is must have at some stage then

blasterpoard: Valdemar yes, it is

blasterpoard: but most of the games, it stays under 1000

blasterpoard: because people don't really care about when they use silence

Valdemar: ok, ty blasterpoard store all states sounds reasonable then. It should works often

blasterpoard: Valdemar my current bot writes a message when it prunes, you can see when states go above some arbitrary number

blasterpoard: if it interests you

Default avatar.png icecream17: There's only 225 squares on the grid how does it reach 200k?

Valdemar: i'll take a look my bot ignore tail and shooting suffers very much because of that

blasterpoard: icecream17 different visited squares

Valdemar: you can get to same tiles from different paths icecream17

Default avatar.png icecream17: oh

blasterpoard: changes you options for the future a lot

Valdemar: that's silence stuff

Valdemar: yep, you cannot just ignore that if you want to create robust enemy tracker

Valdemar: blasterpoard absence of such messages means that there is no prunning and bot store all possible states?

Illedan: Anyone knows if it is faster to do operations on 32 bit or 64 bit numbers on the CG servers? Might not be needed, just wondering.

Valdemar: my bot do silence by cooldown and i don't observe prunnings

Default avatar.png JBM: they're a 64-bit arch

Default avatar.png JBM: as to which is faster, I'm afraid there's no definite answer without more context

Illedan: Just working on my bitboard for OOC. And wonder if it is faster to represent each row as 32 or 64 bit

Default avatar.png JBM: yeah i wouldn't want to say any thing too definitive in this regard

Illedan: aiit

Illedan: Guess I have to benchmark in the game xD

Default avatar.png JBM: just start with the more natural fit

emh: Illedan I'm doing each row as 16 bit. so 16 x 16 = 4x64 bit. I'm using avx2

Illedan: Is it faster to use 4x64 bit than 15 x 16 bit :thinking: I guess you have to do a lot more operations and such. And test the hell out of it

emh: trying to avoid intrinsics as much as possible though. using gcc auto-vectorization mostly

Illedan: Do you need all the performance you are getting :P

Illedan: ?

emh: no I don't think so. was using C# without optimization before

emh: and that worked fine

emh: just doing it for fun

Illedan: JBM, thx for the feedback on the forum btw. I'll let players write X Y EXTRA To let them get more inputs. To not break the game :)

Illedan: ic

emh: but this way can do action search trees, maybe will need perf then

Default avatar.png JBM: what's x y extra?

Illedan: When you place yourself

Default avatar.png JBM: oh, for the self-view?

Illedan: You have to send an extra command: ex: 4 12 EXTRA This enables extra inputs for that players

Default avatar.png JBM: yeah, that could work

Illedan: So that I can send extra inputs every round

Illedan: and not break

Default avatar.png JBM: as long as it's the default in the stub

Illedan: You have to fix your input reading ofc

Illedan: if you want the extra

Default avatar.png JBM: of course

Illedan: And wont break others

Illedan: I'll create a contribution with a stub for that case if anyone needs

Default avatar.png JBM: well, there's no rush

Illedan: I know

Illedan: Will be done during next week

Illedan: Gotta fix my own but before I start to get bored

Default avatar.png JBM: heh

Default avatar.png JBM: so, while you're here

Default avatar.png JBM: could you confirm the questions i had during the early bronze to bronze stream?

Default avatar.png JBM: so i can make a more interesting statement update proposal

Illedan: What was the question=

Illedan: ?

Default avatar.png JBM: which actions are illegal (as in, referees stops the player), which ones are merely invalid (as in, referees ignores it, possibly resulting in SURFACE)

Default avatar.png JBM: lemme get my list

blasterpoard: Valdemar yes, if it doesn't print out anything, it means it didn't have to prune at all

Default avatar.png JBM: well it's kind of always the same

Default avatar.png JBM:

Default avatar.png JBM: my assumption for all of them would be "if target ((x,y) or (x,y)+heading) are parsable as integers/NSEW, all of the non-normal actions result in “ignore”"; "in non-parsable cases, the player is terminated"

Default avatar.png JBM: but i'd like some confirmation ^^

Illedan: Known command in that league, correct format, but can't be done => filtered. Else crash

Illedan: but I totally get your point

Illedan: Would be better to crash the player on all invalid input

pb4: well, torpedo | torpedo --> crash

Illedan: Or ofc give it as information

Default avatar.png JBM: to be thought over for post-contest

pb4: So your statement isn't 100% accurate

pb4: (iirc)

pb4: or was it move move ?

Default avatar.png JBM: oh, good to know

pb4: I'm not that sure anymore...

Default avatar.png JBM: i'll work on an update this evening, you can have a shot at proofreading once more

pb4: You can have crashes with the name "Two equal commands executed."

pb4: but I don't remember what those commands were -_-

Default avatar.png JBM: also, the meta question: if match ends in 0/0, 0/-1 or -1/-1, what is the match result?

Illedan: Ye, I should print what was the 2 commands :D

Illedan: lowest points loses

Illedan: crash < 0 health

Default avatar.png JBM: what's "crash < 0 health"?

Illedan: Crashing player loses vs dead player

Default avatar.png JBM: oh yes ofc

Default avatar.png JBM: as always

eulerscheZahl: not always, see wondev woman

Default avatar.png JBM: my question was just because it can (and does) happen, but as far as the statement goes the outcome is quantum there

Default avatar.png JBM: i see wondev woman more as a "referee won't ever crash you" than an exception ^^

Default avatar.png JBM: gtg, i'll try and have something up by this evening

wlesavo: eulerscheZahl do you ever surface to avoid mine fields or not yet?

eulerscheZahl: not yet

eulerscheZahl: tried offline, was much worse i guess i haven't found the right balance yet

kovi: you may not need surface

kovi: silence jump itself may help out

kovi: (both on my list....silver ideas)

wlesavo: kinda hard to balance, but mine is now working reasonably ok

wlesavo: still not sure if it is worth it though

kovi: depends on the number of mines

kovi: if you are being hit by one, that is not just damage but also detection

Default avatar.png icecream17: woah, silence jump? i need to make a list of ideas

wlesavo: i use some kind of disconted eval on available space to count possible damage over time

wlesavo: my silence is broken though

wlesavo: silence jump wouldnot really help to escape intence mine field

Default avatar.png icecream17: I put "error" if there's somehow no more positions, and then pack the positions back.

Default avatar.png icecream17: "ERROR!!!" was found 36 times....

Default avatar.png icecream17: *pack -> put

CodingCaptain: Icecream17 cant get out of bronze?

CodingCaptain: Most important upgrade u should do: find the longest path


Default avatar.png icecream17: i think i fixed that

AntiSquid: icecream can you use an avatar? i keep confusing you with other new people, hard to distinguish everyone

Default avatar.png icecream17: how do you make an avatar

AntiSquid: you just upload any image on your profile


AntiSquid: i suggest eskimo ice cream as avatar picture for yourself

Default avatar.png icecream17: err... sorry antisquid i always do a checkmark and something codey but i'll include ice cream if you want

AntiSquid: was a suggestion

AntiSquid: your profile your choice

Default avatar.png icecream17: probably very bad but i don't feel like making one right now

icecream17: eh, i'll change the orange thing

kovi: nice submit nagra

icecream17: ?

icecream17: oh nevermind

CodingCaptain: icecream17 if u fixed your movement u should submit


icecream17: submitting

icecream17: oh no

CodingCaptain: What happened?

icecream17: okay resubmitting

icecream17: 5/10 wins

CodingCaptain: Nice, now dont trigger mines randomly

CodingCaptain: U offten damage yourself

icecream17: The person in 2nd place mines more often so i'll test there

icecream17: what...

Default avatar.png ThaddeusQ3: Is this the right place to ask for help on a specific function? In this case a String to Float (stof) in C++?

Default avatar.png ThaddeusQ3: If not can someone point me to the right bar?

icecream17: think you can ask anything though i don't know anything about c++


CodingCaptain: Is this enough?

icecream17: Hey, what if I do this....


CodingCaptain: It shouldnt work

icecream17: But MSG....

icecream17: wait, you mean the opponent or the game?

CodingCaptain: After MOVE S u have to also print power to charge

CodingCaptain: Else should be fine

icecream17: oh ok.

emh: 120k BFS in 50ms on empty map with starting point in middle (7,7). is it fast? doesn't seem very fast to me. the BFS is just under 100 CPU instructions

emh: that's with AVX2. will compare with a classic BFS now

ZarthaxX: with avx??

ZarthaxX: how is that done

struct: also depends on distance

emh: ZarthaxX BitMapGrid next = ret.Union(ret.LShift()).Union(ret.RShift()).Union(ret.LShiftCols()).Union(ret.RShiftCols());

emh: loop until next xor ret is empty

ZarthaxX: sheez

ZarthaxX: i know that yes

Counterbalance: emh it's 4x faster than mine

ZarthaxX: holy

emh: ohh cool. what lang what tech Counterbalance?

Default avatar.png ThaddeusQ3: About the C++ STOF function. I'm having rounding errors, but I cannot work out what some parts of it mean.

Counterbalance: c++, no weird tricks, iterating over 4 directions, checking bounds + visited. I do use lambda params though for accepting the node and expanding neighbours

emh: oh ok. I'm gonna add some more features to mine. will probably slow it down a bit

Default avatar.png ThaddeusQ3: Sorry that was poorly worded. I'll step out for now.

Counterbalance: you do visit the entire map right, emh?

Counterbalance: in the benchmark

emh: I think so.. let me just print it out to verify

emh: yup

Counterbalance: nice.. I would've expected more than 120k too though..

struct: why so?

ZarthaxX: hi structo

Counterbalance: having a bitmask instead of an array of nodes to visit..

struct: hi ZarthaxX

pb4: emh : do you test while(time < 50ms) or while(iteration < 120k) and then read time ?

pb4: results might differ

pb4: I'll test mine out of curiosity :)

pb4: with while(iteration < 120k)

emh: pb4 I test time every 100 iterations

pb4: ok so equivalent

DonFruendo: does anyone know, how the time is measured? in python i take time.time() right after my imports and another right before i output my starting location and it says 2685ms o.O

Counterbalance: you only need to test once per 2000-3000 in this case; might get 150k

muy31: my code right now has way too many bugs, I might have to do a complete overhaul...

Counterbalance: DonFruendo start measuring after you read the first line of input each turn

DonFruendo: i do that, but i'm interested in my setup turn, which should be capped at 1000ms, right?

Counterbalance: yes, but you start measuring before you even get the initialisation input

Counterbalance: the referee is still starting up at that time, and not ready to send data to the bots

pb4: yay :)

pb4: 8ms for 120k BFS on empty map from the 7,7 position

Counterbalance: wow

ZarthaxX: lol

Counterbalance: what wizardry is that

emh: pb4 wow :D nice

emh: how does your BFS work?

DonFruendo: 4.3 ms :-D thanks Counterbalance!

Counterbalance: nice, DonFruendo!

pb4: emh : same as yours

pb4: I didn't go as far as writing the intrinsics myself

emh: I just have intrinsics for the col shift left/right, load/shift/store x 2. the rest is autovectorized by gcc

MSmits: why do you guys need such fast bfs?

pb4: Don't know :D

pb4: Who said we did ? ^^

eulerscheZahl: we play smash the code

MSmits: seemed like a safe assumption :P

pb4: emh : I might have cheated, I was expanding in a square instead of a cross

pb4: with a cross it's 15ms

eulerscheZahl: pb4 is that the BFS of Jeff06 you mentioned here?

emh: pb4 I might have cheated too. just gonna print the last iteration so that nothing gets optimized out. but performance is abysmal with that print enabled

kovi: thx euler

eulerscheZahl: for what?

eulerscheZahl: did i push you up?

kovi: yeah

Zenoscave: nice jump euler

Zenoscave: Simu now?

eulerscheZahl: not much

eulerscheZahl: i know that my opponent will lose health when i shoot him

pb4: eulerscheZahl : in retrospect, there was nothing magic about that BFS

pb4: I was still learning back then...

eulerscheZahl: just your inexperience

eulerscheZahl: i see

emh: pb4 oops. I was measuring empty cycles.. optimized out. hehe. but with 50 microseconds, not 50 milliseconds. well, seems like 90k anyways after correction (and adding islands intersection)

Zenoscave: In illedan's stream he has a local editor option in settings. is that an extension?

eulerscheZahl: timemark and video link?

Zenoscave: sure one sec

Counterbalance: the chrome extension

eulerscheZahl: CGsync? CGlocal?

Counterbalance: sync.

eulerscheZahl: you might still want to look into the other

eulerscheZahl: or you just copy-paste like i do

Zenoscave: probably one of those. Haven't used them in a while. thought they weren't usable anymore

DonFruendo: couldn't get cglocal to work for pop os with firefox, because i fail at installing java on this machine -.-

Astrobytes: think it's just the Spunk plugin that doesn't work any more

Zenoscave: DonFruendo Pop OS version?

DonFruendo: 19.10

Counterbalance: ah yeah.. still copy-pasting here too, no good ff support. CGlocal seems not updated since 2018

eulerscheZahl: i never saw a need to install an extension for that

Zenoscave: DonFruendo `sudo apt install openjdk-8-jdk`

Counterbalance: and extension might be ok but a separate java app, no

Zenoscave: Does that work?

eulerscheZahl: yeah, overkill just to move some code to CG

Zenoscave: h. I have build scripts and keep forgetting what is most updated

Zenoscave: I edit in both and forget to move things sometimes

DonFruendo: yeah, did that, but still there is the message, that some main class is not found :-(

Zenoscave: did you do `sudo apt install openjfx1

Zenoscave: did you do `sudo apt install openjfx`

DonFruendo: jup

Zenoscave: PM me

Counterbalance: crap, promotion

icecream17: -5 away x + 6 away y = 1 away! I found the bug!

nnminh171298: phew, just done splitting code into many source files and a bung ofdebugging

YannT: I like your pushes kovi ;)

BenjaminUrquhart: what will come first, being pushed out of bronze or fixing division by zero

Astrobytes: :crystal_ball:

Ronto: hey i need some help ?

BenjaminUrquhart: that is a stupid number of tooltips

BenjaminUrquhart: ok division by zero fixed, now time to fix actual timeouts

Default avatar.png jslo:

Default avatar.png jslo: Does anybody see any obvious mistakes here?

Default avatar.png jslo: I am processing the children of the current node to see if

Default avatar.png jslo: (1) an exit is directly connected to it

BenjaminUrquhart: your node class doesn't follow naming conventions fyi

Default avatar.png jslo: (2) the node has 2 or more children and 1 node is a gateway

BenjaminUrquhart: this is skynet?

Default avatar.png jslo: (3) the node only has one child hooked to a gateway

Default avatar.png jslo: yes

BenjaminUrquhart: skynet 2?

Default avatar.png jslo: yes

Default avatar.png jslo: i ignore the case where the nodes have 2 children with gateways

Default avatar.png jslo: bc the agent can go either way

Default avatar.png jslo: i just skip that and go onto the next node in my BFS

Default avatar.png jslo: I have no idea what naming conventions are

Default avatar.png jslo: i just kinda freestyled this

Default avatar.png jslo: and i'm stuck

Default avatar.png jslo: does the algo. make sense?

Default avatar.png jslo: or am i missing something?

BenjaminUrquhart: I don't even know what my own solution does anymore, much less yours, sorry

Default avatar.png jslo:

Default avatar.png jslo: here is the whole code

Default avatar.png jslo: lol

Default avatar.png jslo: ok

Default avatar.png jslo: i'm so close

BenjaminUrquhart: that's not the whole thing

pb4: siman has entered the mix : look at the combinations he finds (last frame, to kill me)

Default avatar.png jslo:

Default avatar.png jslo: uhhh

Default avatar.png jslo: weird


BloodyTurtles: hi

BloodyTurtles: how come I don't get CP for back to the code?

BloodyTurtles: oh wait, nvm

BloodyTurtles: i didn't finish all the games yet

struct: The CP doesnt update automaticly anyways

struct: It updates at 01:00 am france time

struct: or 02:00, cant remember

BenjaminUrquhart: tl;dr come back tomorrow

Default avatar.png Kadrex: Meow.

AntiSquid: ban

BenjaminUrquhart: :hammer:

BloodyTurtles: thanks

BenjaminUrquhart: ok, i have crashes mostly fixed now and tracking actually works

BenjaminUrquhart: my current timeouts are related to java loading new classes

Astrobytes: JVM warmup?

Astrobytes: Can you not get around that by instantiating a dummy class on turn 1?

Astrobytes: *many instances of

Astrobytes: Can't remember the details, I hat eJAva

Astrobytes: *hate Java

BenjaminUrquhart: that was the plan, just didn't get around to doing it yet

Astrobytes: fix it Benjamin :P

Default avatar.png drwatson: found this site today and just solved my 3rd problem.. looks like this is like leetcode but far more interesting

BenjaminUrquhart: yes

BenjaminUrquhart: also I lied, division by zero still exists it just happens less

BenjaminUrquhart: aaaaaa

Astrobytes: Are you debugging locally? It does help a lot

Default avatar.png drwatson: which problem are you guys talking about?

Astrobytes: drwatson There's a contest running just now

icecream17: Wow! 2 losses only? I thought I only improved a little

Default avatar.png drwatson: @astobytes. Thanks just registered..

Astrobytes: drwatson awesome, enjoy. Also, if you type the beginning of a username and press Tab it should autocomplete the username for you, no need for the @

AntiSquid: there are many sites far more interesting than leetcode, just look up the curated list on quora

AntiSquid: also leetcode requires you to pay for some of their puzzles if i remember correctly

AntiSquid: Astrobytes how's your bot?

Astrobytes: AntiSquid, just the same. Haven't submitted anything. Got up at 3pm today lol, not done much tbh

Default avatar.png drwatson: Astrobytes got it

AntiSquid: i am also procrastinating the major change i want to implement

Default avatar.png drwatson: AntiSquid yep leetcode requires payment, but they have some company specific questions that's literally only reason I use it

Astrobytes: I'm real lazy to do anything atm tbh

AntiSquid: should have gotten csj to make another wacky game

Astrobytes: lol please no

AntiSquid: first was a queen gang bang game second a real life kitchen simulator

AntiSquid: i mean just as chaotic as a real kitchen

Astrobytes: It was indeed

AntiSquid: then who do you want to create another game?

Astrobytes: I can't say I really have a preference

Astrobytes: csj might make a different kind of game next time since he discovered search algos in BR2K

AntiSquid: lol

AntiSquid: i bet he will still come up with a weird concept

Astrobytes: tbf, none of his concepts were bad so far

AntiSquid: no just odd

AntiSquid: weird/ funny

Astrobytes: Yeah that's cool tho'

Astrobytes: If it works as a game

Astrobytes: *on CG

AntiSquid: alright got to go sleep, i still need to work tomorrow although from home

AntiSquid: gn8

Astrobytes: gn man, take it easy

icecream17: 42nd!

BenjaminUrquhart: lmao boss crashed

kovi: competetive top5

Zenoscave: I'm just glad I'm still top 20

Default avatar.png drwatson: Does 'Play my code' affect the score ?

BenjaminUrquhart: no

Zenoscave: no

BenjaminUrquhart: submit does

Default avatar.png drwatson: got it

BenjaminUrquhart: I am top 400

BenjaminUrquhart: very competitive

Zenoscave: whoa

BenjaminUrquhart: boulet here with ocaml

emh: pb4 I am at 200-230k BFS per 50ms now. wonder how yours got so fast

icecream17: This person in 414th always beats me with only torpedo, how?

izik1: Better prediction perhaps?


YannT: emh: why do you need so many BFS I don't get it?

emh: I got addicted to optimizing it hehe don't know for sure the use case yet

BenjaminUrquhart: icecream17

YannT: I only use BFS for torpedo pathing and you really don't have that many to test :p

emh: well I hope I can do search trees with mine and opponent actions, they grow exponentially so then I guess I will use BFS in each branch but not sure yet

BenjaminUrquhart: I precompute all the possible torpedo destinations for every spot on the map on the first turn

emh: I use some BFSes for scoring pathing

emh: don't go where the reachable cell count drops a lot

YannT: ah, I have a floodfill for that

icecream17: my floodfill timeouts

YannT: which I guess is more like a DFS

emh: what's the difference between floodfill and BFS?

BenjaminUrquhart: weak floodfill

BenjaminUrquhart: they're basically the same thing

YannT: not much except it's essentially a DFS

YannT: but for counting tiles it doesn't matter

YannT: in the end it's the same number of iterations :)

emh: ok

BenjaminUrquhart: [CG]Thibaud stop beating me smh

[CG]Thibaud: coming to Silver hopefully

BenjaminUrquhart: :eyes:

[CG]Thibaud: interesting how a simple change in the strategy changes the ranking

[CG]Thibaud: I was 70

[CG]Thibaud: decided to charge torpedo before silence

[CG]Thibaud: now i'm top 10in Bronze

[CG]Thibaud: it's so satisfying

YannT: it's a very fun game :)

kovi: but that is no a simple change that is a key of this game

Astrobytes: *simple to implement, strategically complex

YannT: it's not *that

[CG]Thibaud: my initial idea was to charge silence while opponent moves and I get an idea where he is.

YannT: simple to implement

BenjaminUrquhart: mildly infuriating: in all my games against you my bot detects it's been stopped and proceeds to silence in the wrong direction

BenjaminUrquhart: spotted*

YannT: you pretty much always wanna have a torpedo ready because you never know when your deduction is gonna give you a good firing option

[CG]Thibaud: that is a simple change: private CommandType getNextCommandToCharge() {

       return cd.get(CommandType.TORPEDO) > 0 ? CommandType.TORPEDO : CommandType.SILENCE;  

Astrobytes: That's more what I was referring to

[CG]Thibaud: bad end of submit

BenjaminUrquhart: finally


[CG]Thibaud: oh well

BenjaminUrquhart: I messed with the order of neighboring nodes

Astrobytes: Onwards and upwards Thibaud

YannT: [CG]Thibaud: you should do a thing so you don't surface for no reason, it makes a big difference too

YannT: no running into corners

BenjaminUrquhart: ^ that's my next step

[CG]Thibaud: but for that I would need to look at more than just the 4 adjacents cells

BenjaminUrquhart: is that a problem?

[CG]Thibaud: well

[CG]Thibaud: I like simple stuff

BenjaminUrquhart: I see

[CG]Thibaud: but ideally, I shuold do that

YannT: it makes a big ranking difference in bronze

Astrobytes: Still simple, just with some added simplicity ;)

Default avatar.png LTony: Hello guys, in python, when I print the opponent_orders with print(opponent_orders, file=sys.stderr)... I only receive the first instruction. For example, for MOVE N SILENCE : I only read MOVE N. How can I read the second instruction ?

[CG]Thibaud: it's not the second instruction

[CG]Thibaud: it's the charge

izik1: You can't see what they charge

YannT: good pathing + basic deduction + decent torpedoes + silence 0 spam = silver ;)

[CG]Thibaud: and you don't need it

icecream17: ugh my floodfill keeps timeouting what should i do?

YannT: you should make it better

Astrobytes: Stop it from timing out

YannT: (check that it's not infinite because you don't handle visited tiles properly)

Astrobytes: ^

[CG]Thibaud: floodfill to find torpedo range ?

Default avatar.png LTony: Ok but at least when they fire a torpedo, I like to see were. If they write MOVE N | TORPEDO 3 5, I would like to catch TORPEDO 3 5

YannT: it's for pathing [CG]Thibaud

YannT: go where there's more space

YannT: to not run into corners :)

[CG]Thibaud: I guess that if I do FF for torpedoes, I can do it for pathing

Astrobytes: Of course

[CG]Thibaud: :D

icecream17: floodfill to avoid going into a small square or rectangle or something with no exits

[CG]Thibaud: I'm so lazy

[CG]Thibaud: it will do for tonight

icecream17: LTony, I get the whole thing in a string

[CG]Thibaud: tomorrow at lunch time maybe

Astrobytes: I'm lazy in this contest too tbh

icecream17: "MOVE E|TORPEDO 5 7"

icecream17: but i'm javascript so idk

Default avatar.png LTony: thank you, will try to investigate why I don't get that in Python

icecream17: wow, i'm at that point where i know why i'm bad but i don't know how to improve it because the goal is so general

icecream17: better check the todo

Astrobytes: LTony split the string at |

icecream17: I wish opponents (code) saw the messages too....

BenjaminUrquhart: no

icecream17: Then I could do 'MOVE N|MSG MOVE S'

icecream17: Instead I do more useful information

icecream17: Although if the opponent figures it out....

BenjaminUrquhart: the thing is, it then becomes trivial to break otehr bots

BenjaminUrquhart: through bad input parsing

BenjaminUrquhart: you would be also able to guess who wrote the other bot

icecream17: oh yeah, maybe not...

BenjaminUrquhart: and most bots that use MSG do so to print actual debug info

BenjaminUrquhart: or just to flex

YannT: they print their deduction information

YannT: which is good to check yours against

xarnthehero: I'm getting weird timeout issues, does anyone know if something is up? I'm not running much code...

BenjaminUrquhart: when in doubt, blame csb

BenjaminUrquhart: yep


BenjaminUrquhart: 2 people are submitting

ZarthaxX: 2 lol

Astrobytes: hey ZarthaxX... woops, TardaxX

ZarthaxX: hi tardstro :P

Astrobytes: Tardobytes or Astrotard FFS :P

icecream17: xarnthehero... the only fix is

icecream17: to find a infinite loop or error

icecream17: or to figure out redundancies in your code or optimize it

BenjaminUrquhart: needs more println

ZarthaxX: Astrobytes many options, dont know which to keep

icecream17: This reminds me of an awesome youtube comment. 7 bugs in your code... 7 bugs in your code... take some down, patch it around... 1379 bugs in your code...

Astrobytes: ZarthaxX :D

Astrobytes: icecream17

Default avatar.png drwatson: for wood league, is it a good strategy to stay away from opponent as much as possible?

icecream17: haven't tried

icecream17: but you need to track the opponent if you want to do that, and if you can track the opponent....

icecream17: well maybe... i'm just rambling do whatever

icecream17: send the share link of the game

Default avatar.png drwatson: no go ahead really, I'm kind of confused as what am i supposed to do

icecream17: In my first submit I moved N if I could, then S if I could, then E, then W

Default avatar.png drwatson: icecream17 I'm not done yet, just moving around randomly right now

izik1: I don't even try to move north, hopefully don't need to implement surfacing to get out of wood ;-;

izik1: wood 2 that is

izik1: :v

icecream17: well, you don't need that much for moving.

Default avatar.png drwatson: icecream17 that's exactly what I'm doing, try to move SEWN in that order if not surface, also fire torpedo in random direction but havn't implemented this one yer

icecream17: If you want, you can impletement "turn left if you can", because a ball can happen more times than a long line.

izik1: bleh, some of my losses are because I torp myself as bad as I torp my opponent

izik1: (2 for 2)

ZarthaxX: LOL Astrobytes good meme recursive shit

izik1: in otherwords, if I'm on the tile I'm torping, maybe move _first_

icecream17: only be willing to torp yourself if your opponent has 1 life or something. i never torp myself, but i should put that in my ideas.

icecream17: Torp yourself if you have 3 lives and your opponent has 1 life and you're both on the same square... now I realize my targeting system needs upgrading.

izik1: I mean, if you and your opponent have the same movement algo (eg: it seems like torping yourself for 1 and them for 2 is better than not torping at all?

izik1: Obviously a better movement algo would be good too

icecream17: yeah it seems. also 1000 people?? so much morew people joined....

BenjaminUrquhart: almost 4k registered

icecream17: I'm 44th in bronze, so what place am I?


icecream17: 387th! hey, euler is 7th but is one of the creators of the game! huh.

BenjaminUrquhart: I see nothing wrong with this

BenjaminUrquhart: :eyes:

icecream17: nothing wrong at all. just wonder

Astrobytes: icecream17 Illeda n and eulerscheZah l literally got this out in 2 days, based on a prototype of a game that CG already had. So I think they're quite entitled to compete ;)

icecream17: noooo i didn't mean to say.... i meant that I wonder how they did it

icecream17: like... oh well

Astrobytes: They're pretty good icecream17, that's how ;)

Astrobytes: Anyway, I'm out for now. GLHF everyone

BenjaminUrquhart: I have developed a master plan

BenjaminUrquhart: leave my submission overnight and have other people push me to silver

Default avatar.png drwatson: I think I found a bug

BenjaminUrquhart: hm?

BenjaminUrquhart: drwatson

BenjaminUrquhart: a bug in the game or a bug in your code

Default avatar.png drwatson: my output string says MOVE E TORPEDO when i debug, but actual output is MOVE S TORPEDO

Default avatar.png drwatson: bug in the game i think

icecream17: Well, if you output twice, the game does move 1 move 2

Default avatar.png drwatson: I'm not outputting twice though, one of the print is std error

Default avatar.png drwatson:

icecream17: share the game link... i'll look at it

icecream17: share symbol above the error place

icecream17: left to the "fullscreen game replay"

Default avatar.png drwatson:

Default avatar.png drwatson: but have a look at the image, res is string.

Default avatar.png HMu0510: wonjin

icecream17: hmmm....

Default avatar.png drwatson: anything icecream17

icecream17: i don't see anything wrong

Default avatar.png drwatson: in my image or game reply?

icecream17: both. maybe look at the code or prints idk

izik1: Can silence moves "jump"? In other words if you have an already visited cell or island in the middle of your silence move, can you still make that move? The wording isn't super clear, common sense says no though

icecream17: silence = teleport

izik1: So you _can_ go through stuff? As long as you don't land on it?

icecream17: yeah i think so

Default avatar.png drwatson: i mean, I'm giving output as move e, it's taking it as move s..

izik1: hmm, that sounds useful for getaways (even if they know where you are, they can't torp through islands) but it also sounds like my tracking algo is going to go through _pain_

icecream17: pretty hard to implement because most people don't realize. also drwatson send the whole code, i'll ask someone who knows more about python

icecream17: or other language

izik1: At least silence doesn't let you move diagonally

icecream17: I just silence E 0 for now.

izik1: yeah, I'll probably do something like "silence but actually just move how I already would", the problem comes with the fact that my enemy gets to draw a lot of plusses on my tracking algo ;-;

izik1: Oh, I should also use torps for tracking

izik1: :facepalm:

icecream17: I use everything. But I haven't implemented silence = 1, 2, 3, or 4 yet

izik1: Sonar?

icecream17: Only if I already charged torpedo, mine, and silence, but I've seen someone use it with Mine MIne Mine

izik1: mm

izik1: I don't have mine yet

izik1: Cuz wood 1

izik1: Too busy setting up base work

izik1: although, my wood 2 bot made it to rank 31 wood 1

izik1: :thinking:

izik1: Hmm, I also need to make sure I keep track of where the opponent might be able to predict _I_ am

izik1: So that I don't waste silence

izik1: This game plays a lot like Clue to me

izik1: In terms of a few things

izik1: Like data mining

izik1: and data secrecy for that matter

BenjaminUrquhart: izik1 you cannot silence through invalid tiles (islands/already visited)

BenjaminUrquhart: it's not teleportation

izik1: whew

izik1: That makes it a lot easier to deal with

BenjaminUrquhart: I see your current bot just moves side to side

BenjaminUrquhart: oh wait it torpedos too it just never hit my bot :thinking:

Seanny: Hi, I'm fairly new to programming, and I taught myself C++. I've been stuck at ghost legs for months now! Where can I get help for this?

BenjaminUrquhart: ghost legs?

BenjaminUrquhart: ?

Seanny: ya, this one

MostComplicatedUsername: For the output, are commands separated with a " | " or "|"?

icecream17: "|"

MostComplicatedUsername: okay thx

MostComplicatedUsername: Seanny for ghost legs- My solution was to create a coordinate system, then look at the diagram line by line. Every time I found a -, I increased or decreased the "x" value, depending on where the - is

MostComplicatedUsername: Then repeat for each letter

izik1: It doesn't actually seem like it cares if there's a space or not, at one point in time I was accidentally outputting "| "

izik1: I think it splits by "|" and then trims

icecream17: Oh. The enemy actions you get don't have a space. So I assumed

izik1: Admittedly, I thought of trying to crash the other bot by using their output string against them, and then remembered that the game reparses it

izik1: haha, my bot can completely lose all hope of finding the opponent

izik1: because of silence

icecream17: I use the MSG for debug and also a face depending on my health to make the opponent feel guilty

izik1: oof


Seanny: @MostComplicatedUsername Thanks for the hint.. I need to stew on this...

izik1: I lost this because my bot completely lost the boss lol

izik1: Wait, so, silence can let you move 4 in each direction? whew, that's a big cross section

izik1: and an expensive repaint of my position tracking

icecream17: I deal with silence by adding possibleOpp positions that may differ from the actual start and be negative as long as the end result is on water Most people don't spam silence, but with ones that do always have from 2-70 possible positions. Somehow there's always a bug with my handleOpponent() function. Always.

izik1: Where does 70 come up as the max number?

MostComplicatedUsername: Did you assume you would get it perfect first try?

icecream17: I assumed I wouldn't get past Wood2. Took me 5 days. This is day 2 on bronze and day 7 in total. (6 days wood, 2 bronze, math!)

icecream17: I think if you write down ideas and keep working on your code you'll do better than you think.

MostComplicatedUsername: I have ideas

MostComplicatedUsername: But no idea how to implement them

MostComplicatedUsername: :\

icecream17: Write your ideas down away, if you share I could share how I would do it... (and steal the idea but....) Just break the problem into smaller problems. They may or may not each have bugs but you solve the problem in general

icecream17: *away -> anyway

BenjaminUrquhart: izik1 is the bot in the arena your current code?

izik1: not quite

izik1: I'm busy writing new code

izik1: but my current code is almost functionally identical

izik1: I have more ideas than implementations lol

BenjaminUrquhart: your bot's motion is very easy to predict

izik1: yeah :v

izik1: Not a concern quite yet


izik1: It _will_ be

izik1: just not yet

BenjaminUrquhart: :thumbsup:

izik1: namely: once you use silence, it just completely dies

izik1: it completely loses where you are

BenjaminUrquhart: sounds fun

izik1: in my current code, it just resets your possible positions, but that's not really a solution

MostComplicatedUsername: Just expand it

MostComplicatedUsername: Don't reset

izik1: That's what I'm working on.

izik1: as I said, more ideas than implementations

izik1: I have a longer term idea that I basically unfold their movements to figure out where they _can't_ be (can't move left then silence right) and even longer term ideas related to keeping as much information around as possible...

BenjaminUrquhart: "can't move left then silence right" thanks brb implementing into tracker

izik1: *shrug* I learned it second hand anyway, although I did verify it for personal comfort

izik1: I am _really_ glad that I like making heuristic bots, because this is a great challenge for that

izik1: I have 1 lines of note for my implementation of handling silence and the method doesn't even have the basic impl yet

izik1: *13


BenjaminUrquhart: of course, game.spread has a few more lines to it

izik1: lol, that's basically the idea

BenjaminUrquhart: "I am _really_ glad that I like making heuristic bots" So basically me

izik1: hahaha

izik1: Here, have some bit duplication logic for that :p `(1 << (max - min) - 1) << min` probably not useful for you though

Default avatar.png TheBrokenPonyAndHisDog_ed48: bruh

izik1: ?

Default avatar.png TheBrokenPonyAndHisDog_ed48: my name

izik1: That's a long name

Default avatar.png TheBrokenPonyAndHisDog_ed48: ikr

MostComplicatedUsername: Ha random torpedo firing

izik1: That sounds like a _great_ way for me to find where you are :3

MostComplicatedUsername: ikr

MostComplicatedUsername: But

MostComplicatedUsername: im in wood

MostComplicatedUsername: 2

MostComplicatedUsername: so ya

izik1: mm, I've had my predictor since wood 2 :v

MostComplicatedUsername: :\

MostComplicatedUsername: I can make one now

MostComplicatedUsername: So ya

MostComplicatedUsername: :0

izik1: as soon as I stopped dying to lack of movement I got to wood 1 though...

MostComplicatedUsername: If torpedo damages opponent

izik1: grats on being able to make one

MostComplicatedUsername: Then opponent

MostComplicatedUsername: must be within

MostComplicatedUsername: 1 square

MostComplicatedUsername: and if opponent takes

MostComplicatedUsername: 2

MostComplicatedUsername: damage, opponent must be on square

MostComplicatedUsername: that was targeted

izik1: woah, I totally didn't notice that opp_life is a thing you have access to o-o

MostComplicatedUsername: yeah

MostComplicatedUsername: Wait...

MostComplicatedUsername: Did I just...

MostComplicatedUsername: Think of something you didn't???

MostComplicatedUsername: Woah

izik1: lol

izik1: It isn't _that_ hard

izik1: I also am not sure how much I need it right now

MostComplicatedUsername: Eh

MostComplicatedUsername: It's useful, you can narrow opponent's position to like 9 squares, and potentially 1

MostComplicatedUsername: Once you get it to 1, you're set

izik1: Until they silence :p

MostComplicatedUsername: Idk what that is

MostComplicatedUsername: Im in wood 2

BenjaminUrquhart: get to wood 1

BenjaminUrquhart: smh

BenjaminUrquhart: then I can have a fair match against you

MostComplicatedUsername: :upside_down:

BenjaminUrquhart: ah you're computing

MostComplicatedUsername: ???

BenjaminUrquhart: submitting

MostComplicatedUsername: oh

BenjaminUrquhart: I know where you are :eyes:

izik1: Bleh, bit map is confusion sometimes

BenjaminUrquhart: my map is a bitmap

izik1: as is mine

izik1: specifically it's an array of u16

izik1: Really handy for some bit manip

MostComplicatedUsername: Wood 1!

MostComplicatedUsername: yay

izik1: Nice!