Chat:World/2020-03-29
ZarthaxX: http://eulerschezahl.herokuapp.com/codingame/replays/
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: I HAVE SEEN A GHOSTTT
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: https://en.cppreference.com/w/cpp/utility/bitset/operator_ltltgtgt
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
MSmits: https://en.wikipedia.org/wiki/TrueSkill
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: https://www.codingame.com/replay/443396676
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 https://www.twitch.tv/videos/577567902
AntiSquid: maybe link your stream here, like the others did https://discordapp.com/channels/466965651135922206/472807181163429890
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
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
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 ?
AhmedReda1: i dont know what is going on
MSmits: thats a yes AntiSquid :P
AntiSquid: which planet are you from?
AntiSquid: ya MSmits he even capsed his laughter
MSmits: I saw
kovi: yay, some improvement
struct: I just looked
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
nnminh171298: heard ya
AntiSquid: can barely hear you rosejam can you speak louder?
AntiSquid: serious, try yelling wanna see how loud you can get
rosejam: CAN ANY BODY HEAR ME??!!!!!
rosejam: GUESS NO ONE'S HERE!'
trexplex: I can hear you
Tunga: Ayyyy ayyy captain
rosejam: thats the maximum voice i could make. AntiSquid
AntiSquid: the signal is bad
AntiSquid: have you turned your mic to max ?
yfprojects: maybe your volume is turned down, AntiSquid
AntiSquid: ah you're right, try again now
rosejam: yes that what i wanted to say
rosejam: nono everyone is hearing me well now including you
JBM: eulerscheZahl: please don't make me create yet another github account :'(
AntiSquid: rosejam you can use the discord voice chat: https://discordapp.com/channels/466965651135922206/690566608891936769
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
rosejam: i would like to but i'm on sth else
eulerscheZahl: JBM oh you edited your changes to link to the final html now
JBM: I'm giving you actual commits, dangit
eulerscheZahl: yes, just saw that too
eulerscheZahl: "This is a two-player game based on the board game Captain Sonar" actually it's up to 8 players, 2 teams
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 https://github.com/CodinGameCommunity/ocean-of-code/tree/jbm-patches
YannT: "Execute pincer maneuver #3"
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
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 .
JBM: we would for : ; ! ? though
eulerscheZahl: at least for : i see it often
eulerscheZahl: ah
JBM: it's supposed to be a thin non-breaking space
eulerscheZahl: i see. i notice that in the puzzle section sometimes and "exemple"
JBM: but those are hard enough to come by, so best typo fallback is no space; alternate fallback is regular nbsp
JBM: haha exemple, yeah, pretty frequent
JBM: any any other of those old french words that are still in english with a diverged meaning
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
JBM: a fine confining activity
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 https://github.com/ajaxorg/ace/wiki/Default-Keyboard-Shortcuts
JBM: that emacs mode is a complete joke, TBH
YannT: back to top10 :tada:
YannT: (barely)
HelmiAkermi: thanks , it was the browser i refreshed the page and it works now
HelmiAkermi: sometimes you need those suggestions for non usual used functions
eulerscheZahl: and other times you need an offline editor
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
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?
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 https://imgur.com/a/YlVE8z4/0_THP_CHP_280320SLUG_533JPG.jpg
AntiSquid: https://imgur.com/a/YlVE8z4
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 https://www.codingame.com/contests/ocean-of-code
eulerscheZahl: http://cgstats.magusgeek.com/app/multi-coders-strike-back/dGrayCoder
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 https://www.codingame.com/share-replay/443460668
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"
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
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
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
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 https://www.codingame.com/share-replay/443470505
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
icecream17: if people don't torpedo -> mine and silence -> else if they spam torpedo -> silence on 8th move and then torpedo
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*
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
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
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
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
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
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
Illedan: When you place yourself
Illedan: You have to send an extra command: ex: 4 12 EXTRA This enables extra inputs for that players
Illedan: So that I can send extra inputs every round
Illedan: and not break
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
Illedan: And wont break others
Illedan: I'll create a contribution with a stub for that case if anyone needs
Illedan: I know
Illedan: Will be done during next week
Illedan: Gotta fix my own but before I start to get bored
JBM: could you confirm the questions i had during the early bronze to bronze stream?
JBM: so i can make a more interesting statement update proposal
Illedan: What was the question=
Illedan: ?
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)
blasterpoard: Valdemar yes, if it doesn't print out anything, it means it didn't have to prune at all
JBM: well it's kind of always the same
JBM: http://chat.codingame.com/pastebin/3a02ac44-9954-4395-927e-1ca125a52496
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"
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
JBM: to be thought over for post-contest
pb4: So your statement isn't 100% accurate
pb4: (iirc)
pb4: or was it move move ?
pb4: I'm not that sure anymore...
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 -_-
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
JBM: what's "crash < 0 health"?
Illedan: Crashing player loses vs dead player
eulerscheZahl: not always, see wondev woman
JBM: my question was just because it can (and does) happen, but as far as the statement goes the outcome is quantum there
JBM: i see wondev woman more as a "referee won't ever crash you" than an exception ^^
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
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
icecream17: I put "error" if there's somehow no more positions, and then pack the positions back.
icecream17: "ERROR!!!" was found 36 times....
CodingCaptain: Icecream17 cant get out of bronze?
CodingCaptain: Most important upgrade u should do: find the longest path
CodingCaptain: https://www.codingame.com/share-replay/443510850
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
icecream17: how do you make an avatar
AntiSquid: you just upload any image on your profile
AntiSquid: https://www.codingame.com/profile/5df12a5122689e9c538e035d09bfac0f1941963
AntiSquid: i suggest eskimo ice cream as avatar picture for yourself https://www.atlasobscura.com/foods/akutuq-eskimo-ice-cream
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
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
CodingCaptain: https://www.codingame.com/replay/443519384
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... https://www.codingame.com/share-replay/443533069
ThaddeusQ3: Is this the right place to ask for help on a specific function? In this case a String to Float (stof) in C++?
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: https://www.geeksforgeeks.org/stdstof-in-cpp/
CodingCaptain: Is this enough?
icecream17: Hey, what if I do this....
icecream17: "MOVE S|MSG MOVE E N SILENCE TORPEDO 14 14"
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?
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
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? https://www.codingame.com/blog/stochastic-algorithm-smash-the-code/?utm_source=codingame&utm_medium=details-page&utm_campaign=cg-blog&utm_content=stc
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. https://chrome.google.com/webstore/detail/codingame-sync-app/nmdombhgnofjnnaenegcdehnbkajfgbh?hl=en
eulerscheZahl: you might still want to look into the other https://www.codingame.com/forum/t/cg-local/10359
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 https://www.codingame.com/share-replay/443595470
BenjaminUrquhart: ok division by zero fixed, now time to fix actual timeouts
jslo: http://chat.codingame.com/pastebin/102bf03a-57db-4367-8a37-1dff46f9c966
jslo: Does anybody see any obvious mistakes here?
jslo: I am processing the children of the current node to see if
jslo: (1) an exit is directly connected to it
BenjaminUrquhart: your node class doesn't follow naming conventions fyi
jslo: (2) the node has 2 or more children and 1 node is a gateway
BenjaminUrquhart: this is skynet?
jslo: (3) the node only has one child hooked to a gateway
BenjaminUrquhart: skynet 2?
jslo: i ignore the case where the nodes have 2 children with gateways
jslo: bc the agent can go either way
jslo: i just skip that and go onto the next node in my BFS
jslo: I have no idea what naming conventions are
jslo: i just kinda freestyled this
jslo: does the algo. make sense?
jslo: or am i missing something?
BenjaminUrquhart: I don't even know what my own solution does anymore, much less yours, sorry
jslo: http://chat.codingame.com/pastebin/c71d7551-13c7-41d1-bd86-d2c0df5d7732
BenjaminUrquhart: that's not the whole thing
pb4: siman has entered the mix : look at the combinations he finds (last frame, to kill me) https://www.codingame.com/share-replay/443597342
jslo: http://chat.codingame.com/pastebin/0e4061b6-86c5-4b37-b030-aa246254cc8a
BenjaminUrquhart: https://hasteb.in/
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
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
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
drwatson: which problem are you guys talking about?
Astrobytes: drwatson There's a contest running just now https://www.codingame.com/contests/ocean-of-code
icecream17: Wow! 2 losses only? I thought I only improved a little
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
AntiSquid: i am also procrastinating the major change i want to implement
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 https://www.codingame.com/share-replay/443623618
kovi: competetive top5
Zenoscave: I'm just glad I'm still top 20
drwatson: Does 'Play my code' affect the score ?
BenjaminUrquhart: no
Zenoscave: no
BenjaminUrquhart: submit does
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?
icecream17: https://www.codingame.com/replay/443622918
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 https://www.codingame.com/share-replay/443630631
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
BenjaminUrquhart: https://www.codingame.com/share-replay/443636677
[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 ;)
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 ?
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
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: https://www.codingame.com/multiplayer/bot-programming/coders-strike-back/leaderboard?column=SCORE&value=INPROGRESS
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 https://imgs.xkcd.com/comics/fixing_problems.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
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
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.
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: https://www.codingame.com/share-replay/443647815) 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?
BenjaminUrquhart: https://www.codingame.com/contests/ocean-of-code/leaderboard
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
drwatson: I think I found a bug
BenjaminUrquhart: hm?
BenjaminUrquhart: drwatson
BenjaminUrquhart: a bug in the game or a bug in your code
drwatson: my output string says MOVE E TORPEDO when i debug, but actual output is MOVE S TORPEDO
drwatson: bug in the game i think
icecream17: Well, if you output twice, the game does move 1 move 2
drwatson: I'm not outputting twice though, one of the print is std error
drwatson: https://drive.google.com/file/d/1lrM4L4TCpGnTPgk4iB9akRocT7KCLwA3/view?usp=sharing
icecream17: share the game link... i'll look at it
icecream17: share symbol above the error place
icecream17: left to the "fullscreen game replay"
drwatson: https://www.codingame.com/replay/443655382
drwatson: but have a look at the image, res is string.
icecream17: hmmm....
icecream17: i don't see anything wrong
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
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: https://www.codingame.com/training/easy/ghost-legs ?
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
icecream17: https://www.codingame.com/share-replay/443663676
Seanny: @MostComplicatedUsername Thanks for the hint.. I need to stew on this...
izik1: https://www.codingame.com/share-replay/443658355 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
BenjaminUrquhart: https://www.codingame.com/share-replay/443666077
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: http://chat.codingame.com/pastebin/a6a01007-3fdd-4fa3-a8ae-c29580f3fafd
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
TheBrokenPonyAndHisDog_ed48: bruh
izik1: ?
TheBrokenPonyAndHisDog_ed48: my name
izik1: That's a long name
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: https://www.codingame.com/share-replay/443670559
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!