Chat:World/2020-03-28
Javatacos: can you torpedo and trigger same turn?
Javatacos: also when does the game calculate whether the torpedo is within range. before or after move?
Insta-x: torpedo range is calculated when you shoot, so your range with be different before nd after move
Javatacos: cool thank you
Insta-x: torpedo and trigger is unrelated, so you can do both command in one turn
metahom: but what happens first if u launch torpedo and move on the same turn?
Zenoscave: depends on which you do first.
Zenoscave: torpedo or move
Zenoscave: they are evaluated in order of commands given
metahom: i see. thanks
Csipcsirip: hm isnt it possible to jump over on visited cells with silence ?
Csipcsirip: https://www.codingame.com/replay/443025867
Csipcsirip: i dont know what " (not visiting already visited cells or islands)" means then..
Csipcsirip: ahh okay I understand it now :D
Zenoscave: Csipcsirip no
Csipcsirip: yes I see it know. I had to overcomplicate my whole code to handle that case...
eulerscheZahl: it's the same questions getting asked over and over again
Zenoscave: eulerscheZahl how's your bot
Csipcsirip: maybe the rule statements are not 100% clear :p
Zenoscave: cells in a given direction (not visiting already visited cells or islands)
Zenoscave: clear to me ;)
Csipcsirip: for me... it was not :D
eulerscheZahl: i just started Zenoscave
eulerscheZahl: give me a day or 2
Zenoscave: You just started?
eulerscheZahl: i have some tracking logic
eulerscheZahl: and a stupid if-else to somehow use it
Zenoscave: ok
Zenoscave: That's all I have...
eulerscheZahl: but the brain part of my but is missing completely
accorp: your but has a brain?
accorp: no wonder you're so good
eulerscheZahl: these letters are really close together on the keyboard
Zenoscave: oui
eulerscheZahl: and i never learned proper 10 finger typing
Zenoscave: Neither did Kernighan nor Ritchie
eulerscheZahl: and then they decided to torture those who did with fancy simbols
eulerscheZahl: i always have to look where to find some of them
eulerscheZahl: while i can find the letters blindly at least
Zenoscave: fancy symbols like {} and []?
eulerscheZahl: yes
Zenoscave: C# may be a bit heavy on those
eulerscheZahl: a hell to type on a german keyboard
Zenoscave: I can imagine
eulerscheZahl: and \ for latex
Zenoscave: you do a lot of Latex?
eulerscheZahl: not anymore
eulerscheZahl: we have an AltGr key on the right of the space bar
eulerscheZahl: press that together with 7 and you get {
Zenoscave: I'm aware
eulerscheZahl: ah
Zenoscave: Been (mis)fortunate enough to need a keyboard like that
Zenoscave: Not a fan
eulerscheZahl: and all of that just because of äöüß
Zenoscave: at least you don't have ø
Zenoscave: ¥†®´∑œå∂ƒ©˙∆˚
eulerscheZahl: i guess Illedan has that
Zenoscave: I hate apple keyboards for this
eulerscheZahl: i only have those: @ł€¶ŧ←↓→øþæſðđŋħł|»«¢„“”µ·…–
eulerscheZahl: for some i don't even know what they are good for
Zenoscave: some are old english or saxonish
Zenoscave: a few physics symbols I see as well
eulerscheZahl: and that's a linux keyboard thing. i wouldn't find them on windows
Zenoscave: lol windows alt codes make me ill
Zenoscave: think you'll sim this contest?
eulerscheZahl: not completely
eulerscheZahl: uncertainty + high branching
Zenoscave: right
eulerscheZahl: you get somewhat get around the branching with a MC search
Zenoscave: probably just gonna sim combat in close quarters
eulerscheZahl: worked quite well for C4L
Zenoscave: MC search for C4L eh?
eulerscheZahl: but the incomplete information will be a pain
eulerscheZahl: yeah, i'm ranked 3rd in the multi right now with it
Zenoscave: huh
Zenoscave: thanks for the idea. I assume you mean true MC search not MCTS? or am I mistaken
eulerscheZahl: https://forum.codingame.com/t/code4life-feedback-strategy/2835/21?u=eulerschezahl
Zenoscave: thanks
dbdr: eulerscheZahl US-international is a good layout for programming I think
dbdr: [] directly, {} with shift, not alt-gr madness :)
eulerscheZahl: but then i have to relearn it and the marks on my keyboard don't find the content
dbdr: yeah
dbdr: or get a US keyboard next time :)
eulerscheZahl: and when i buy a new keyboard, i have to buy another one for my office desk
eulerscheZahl: and the laptop...
dbdr: I can still type accents when needed, but it's secondary for me
eulerscheZahl: i don't even care about öäü that much
dbdr: yeah
eulerscheZahl: but when i use someone elses keyboard, it will get weird
dbdr: german has qwertz ?
eulerscheZahl: yes
JFB: z <-> y on german keyboard :-)
eulerscheZahl: correct
JFB: :-)
dbdr: same for hungarian, probably because of german influence
JFB: In "official" polish keyboard it exactly the same. But nobody use "official" polish keyboard
eulerscheZahl: historically you wanted letters next to each other, that aren't used in normal words directly after each other
eulerscheZahl: from type writer letters getting stuck by fast typing
dbdr: I think that's still true
dbdr: faster to type if you alternate hands
dbdr: maybe
dbdr: I might be wrong
dbdr: close might be good, far but same hand bad
dbdr: or not ;)
eulerscheZahl: just explaining the y-z as german is a different language
eulerscheZahl: English has a lot of y, german doesn't
aCat: eulerscheZahl was there any stream concerning ocean of code?
eulerscheZahl: there's a #stream channel on discord, check there
eulerscheZahl: personally i don't care, so i muted it :D
aCat: great - thanks for reminding me!
aCat: I didn't mute it but as I have thousends of unread stuff on cg discord it "blends in" quite nicely :P
jacek: happy Caturday
Uljahn: meow
Csipcsirip: :angry:
eulerscheZahl: why so angry?
Csipcsirip: becaus of that cat
eulerscheZahl: did i miss anything?
eulerscheZahl: oh, the dog avatar
struct: How many states do you end up until end game usually?
struct: Is the number big?
eulerscheZahl: hard to answer, as it depends on your overall behavior (e.g. SONAR usage)
accorp: lol, a player surfaced and shoot a torpedo in same move, so that I would think he was damaged by it... I can't decide if that's clever or just dirty
eulerscheZahl: you see the SURFACE in his last commands
eulerscheZahl: so your tracker just sucks
struct: what would you say
struct: worst csae
struct: 1 mill+?
eulerscheZahl: for me it's 3-4k maybe but with sonar
accorp: could you not be an as*hole? I know I can see it
struct: what?
accorp: euler
Csipcsirip: do you track possible paths or just possible positions euler ?
eulerscheZahl: both
eulerscheZahl: why the hate, what did i do wrong?
eulerscheZahl: oh, "so your tracker just sucks" now i remember
Uljahn: the chat seems a bit sensitive atm
Zenoscave: maybe you're sensitive Uljahn
Zenoscave: jk jk meow
Zenoscave: happy caturday
Uljahn: pewpew
eulerscheZahl: oh dear i'm the wrong person to keep chatting when others get easily offended
Zenoscave: PEW PEW
AntiSquid: should have used the more common "FIX IT" line
Zenoscave: maybe you should fix it
AntiSquid: ok accorp fix your tracker, eulerscheZahl fix your fix it statement, ok i will try to fix my tracker later Zenoscave
Zenoscave: :+1:
Zenoscave: I fixed something but I'm not sure what
AntiSquid: accidentally squashed a bug ?
Zenoscave: a big one apparently
struct: or created one
Zenoscave: how so?
aCat: You do some normal 'search' in this game or just symething like one-ply deep or rule-based stuff?
Zenoscave: filter popssible positions
Zenoscave: state based right now
Zenoscave: maybe a few top players sim
kovi: nice csipcsirip!
Csipcsirip: ty, I should've made a screenshot :D
dbdr: "your tracker sucks" is not the same as "your suck"
AntiSquid: your ?
AntiSquid: what do you think of the meaning behind those words Automaton2000
Automaton2000: not sure if this is an english chat
struct: lol
Csipcsirip: :joy:
dbdr: :D
dbdr: kovi: perfect equality :D
dbdr: ah no, can't read
dbdr: previously it was already establish I can't calculate
Nicky1812: hi u guys :))
dbdr: in other words I'm useless
dbdr: hi
MadKnight: hihi Nicky1812
dbdr: MadKnight are you doing OOC?
AntiSquid: he doesn't do any contests for a long time now dbdr
dbdr: :(
struct: MadKnight legend or delete
Nicky1812: my fri
Nicky1812: my friend: hey
Nicky1812: me: wut
Nicky1812: friend:you re programmer
Nicky1812: me:yup
Nicky1812: friend: hack this face pls
Nicky1812: me: :(
Nerus: (╯°□°)╯︵ ┻━┻
Nicky1812: sad
**Nerus slaps around a bit with a large fishbot
Nerus: /me
Nicky1812: :v
AntiSquid: hey hey how's it going guys?
eulerscheZahl: hacking a face? sounds more like a job for a violent lumberjack
AntiSquid: join the contest: https://www.codingame.com/contests/ocean-of-code Nerus Nicky1812
AntiSquid: i thought he refers to a facebook account
AntiSquid: trying to hack some girl ?
kovi: dbdr, we stuck together again at 34.22
kovi: not for long
dbdr: :)
YannT: hey rose up during the night! :)
kovi: https://www.codingame.com/share-replay/443061358 dog-island
eulerscheZahl: woof
YannT: I like bots who give their detection in messages
YannT: good for debugging against
kovi: yeah, it helped in the beginning
kovi: now everyone of us have the same bugs :)
struct: your enemy detection is bugged?
eulerscheZahl: not anymore i guess
Tunga: Greetings my lords!
YannT: I don't think I've got detection bugs?
YannT: except the assumption that people won't shoot themselves, because yeah we've all got that one
MSmits: not me
struct: I think you should take that into account
struct: imo
YannT: you can't if you think about it
MSmits: sure you can
MSmits: you know where the explosion happened
MSmits: you know how much damage he got
YannT: your only options are make the assumptions (for now, true almost all the time), or just not deduce if say both players have a torpedo action on the same turn
MSmits: you know where you shot
MSmits: you save that
MSmits: then you take his order
YannT: no you can't because you don't know the split of damage between your torpedo and theirs or if they shot themselves before or after moving
MSmits: add up the damage to a damage map
MSmits: filter possible position
YannT: so you don't know how to decude that properly
MSmits: sure you know that
MSmits: you know the order of the opponent orders
MSmits: so you know if he moved first or not
YannT: it could be your torperdo hitting, or theirs, and theirs could be before or after move
MSmits: so allow both options
MSmits: you use the damage as a position filter
YannT: and between 1 or 2 damages, it could be any combination of possibilities
MSmits: not any, just very few
YannT: yeah you could allow all of them, but that's equal to not decuding :)
MSmits: you simply consider them all
MSmits: no it;s not
YannT: meaning, you don't actually deduce
MSmits: you allow all *possible* combinations
YannT: which is your entire space to begin with!
MSmits: so you fully deduce it as far as is possible
MSmits: no it's not
MSmits: you know where the explosions happened
MSmits: so why would it be the entire space
YannT: it hit or it didn't = no deducing from that
struct: cant you deduce if you dont hit aswell?
YannT: you just do the fire position deduction
YannT: but nothing from damage taken
YannT: so back to what I said, you can either make the assumption, or not deduce if both players fired/triggered on the same turn
YannT: (unless they didn't lose any live)
MSmits: YannT you seem to say that since there are multiple positions on the map where he could take 1 damage, you can't deduce anything, but surely you can deduce he isn't anywhere else but those positions?
MSmits: isnt that a good thing?
MSmits: I don't see the problem
MSmits: I do allow for the possibility he will shoot himself and that will simply mean a few more possible positions
MSmits: not that many
MSmits: the alternative is making a wrong assumption and completely messing up your tracking when he *does* shoot himself
MSmits: thats way way worse
YannT: I'm saying in a case when the opponent lost life, and fired a torpedo, and they fired a torpedo, if you don't wanna assume that they won't shoot themselves, you cannot deduce position from the damage taken, because it could be your torpedo or their torpedo hitting, and because they could have fired their torpedo before or after moving, allowing for all the poissibilities ends up not trimming anything
MSmits: thats not true, it still trims a lot
MSmits: it's a 15 by 15 map
YannT: decuding from the firing position does yeah, damage doesn't
MSmits: it's only a 3 by 3 blast
MSmits: the blast is less than 5% of the map
MSmits: who cares that instead of 5% of the map you get 7-8% of the map
YannT: you don't have all of the map as possibilities typically when firing torpedoes
MSmits: of course not, but you will be removing all the remote locations
MSmits: the way i do it i dont even think about all those possible combinations and options
MSmits: i just create a damage map, compare with opponent damage and filter cells
MSmits: the only annoying part is moving the map with the opponent orders (shifting the damage map_
wlesavo: MSmits seems to be the only correct way
jacek: smitsisonar
wlesavo: smitsishootin
MSmits: I'm not saying there isn't some value in assuming the opponent doesnt shoot himself, there is a good chance it's correct and then you filter more. The alternative is just annoying, ending up with an empty map of possible positions, not knowing how to continue
wlesavo: stands for exposing yourself in 3 shoots :slight_smile:
MSmits: yeah :P
MSmits: blasterpoard convinced me to try and make a silence pruning function today
kovi: smitsilence then
MSmits: lol no... I just felt stupid watching illedans bot kill me by chain silence
MSmits: even after I shot him 3 times and was at full life
MSmits: even vs bronze boss: https://www.codingame.com/share-replay/443066602
kovi: yeah, some days it was fun getting to top10 basicly by silence only
MSmits: I get 2385 paths
MSmits: to 6 positions at the end
YannT: "i just create a damage map, compare with opponent damage and filter cells" I do the same :)
wlesavo: there were a couple of such bots in bronze, dunno if it is gonna be relevant later, but some one can still abuse it against you
MSmits: Yeah, you need a state-filter regardless
MSmits: they can also explode your state-space with mines
AntiSquid: https://www.youtube.com/watch?v=iJ2jDPgvbTY
YannT: I actually have half a mind to make a tricky thing where I intentionally shoot myself on the turn I get torpedoes and it doesn't do any damage to empty their positions list and screw them over :)
MSmits: well that one won't work on me :P
YannT: I think most if not all of the current bots would be screwed by that :D
YannT: you can tell anyway by the numbers in the comments of the bots who do that that they all make the assumption
MSmits: nice
eulerscheZahl: you would actually help my bot detecting you by shooting yourself
kovi: tha is also on my list
AntiSquid: even my bot checks who shot the torpedo and what caused the damage
kovi: trigger a mine
kovi: but you can tell
kovi: cant
YannT: you would do this only when your list of possible positions is small to empty it
MSmits: if you trigger a mine you can still tell which positions give 1 or 2 damage and filter appropriately
YannT: I know that would screw me over
MSmits: you know where both mine and torpedo exploded
AntiSquid: 1 or 8 cells
MSmits: but sure, with bad assumptions you could be screwed
YannT: 90% of bots in that case assume their torpedo or mine did the damage, not yours :)
AntiSquid: then they need to FIX IT
MSmits: yeah, I'm sure it works, but it's better to try to compete with the best bots I think
YannT: they might have a safeguard against empty lists tho, so you would need to do it when there's like 10-20 possibilities remaining so it seems legit and they will work off a screwed up list for many turns
accorp: MSmits, what if you shoot and trigger a mine, and the op takes 2 dmg?
MSmits: then there will be several positions where he took 2 damage
AntiSquid: mines don't get triggered by torpedo anymore do they?
MSmits: and you only consider those positions to be possible
accorp: oh, just 3 positions
YannT: never did
eulerscheZahl: they never got AntiSquid
MSmits: do mines trigger eachother?
YannT: nope
AntiSquid: no?
eulerscheZahl: no
MSmits: ok, never done mines yet
MSmits: so was wondering
MSmits: good... that makes it possible to do a perfect damage filter
AntiSquid: accorp you need to change that part in your code
wlesavo: http://chat.codingame.com/pastebin/cba6b988-aecc-4859-8a6a-00f7481f0f3a
YannT: my next TODO is a probabilistic mine location filter of some sort so avoid moving where there's likely mines
YannT: that's gonna be a subtle balance to strike
MSmits: thats far down my list, so many other things to do :)
eulerscheZahl: like onitama :D
YannT: between not going into likely mines, updating mine possibilities after triggers, and also not going into islands trying to avoid mines :o
MSmits: no, i meant my ooc list :(
MSmits: I wanted to do onitama though
wlesavo: YannT actually did just that yeasterday, minimizing possible damage from mines
MSmits: and suddenly I got uttt ideas too, so i did some of that the last few days :P
YannT: it's my last feature TODO, after that the next one literally say "simulate stuff"
struct: meanwhile you lost rank 1 on yavalath
MSmits: are you kidding me
struct: yes :)
wlesavo: :grinning:
MSmits: giving me a :heart: attack
AntiSquid: :broken_heart:
MSmits: lol
eulerscheZahl: then i know the right puzzle for you https://www.codingame.com/training/easy/defibrillators
MSmits: solved it
wlesavo: so you safe against the heart attacks
YannT: yavalath sounds like MCTS city no?
eulerscheZahl: yes
struct: yes and no
jacek: ohboy
YannT: you could take your UTTT, rework the data structure and have a thing :D
struct: vanilla mcts wont do well
MSmits: a thing?
YannT: a bot that works
jacek: vanilla?
MSmits: plain mcts on Yavalath is super weak yes
YannT: why so?
struct: traps
MSmits: your bot will try to avoid killing itself by randoming 3 in a row
MSmits: not traps
MSmits: at first it's just gonna be putting hexes on edges
MSmits: because those have the least chance to make 3 in a row
MSmits: and kill yourself
YannT: ahh I see
jacek: i thought vanilla would include 1-ply check in the sim :?
MSmits: well depends on your definition of vanilla
MSmits: most wont start with a 1-ply check
MSmits: especially coming from uttt
MSmits: uttt is just, random everything, get good performance -> legend
struct: I forgot I cant update yavalath
struct: and add boss
MSmits: did you want another league?
MSmits: get lvl 30
struct: Yes, but still not many players
eulerscheZahl: even i can update yavalath :D
struct: was 96 players last time I checked
YannT: 1-ply check = check if you can set up a win in two moves with a 2+1 ?
MSmits: no, check if your bot suicides on that particular random move
MSmits: and pick a different random move
MSmits: so filter all loss locations
MSmits: in the random sim
jacek: make a winning move if can, avoid losing move
MSmits: yeah do the wins too
MSmits: gradually making the sim heavier makes your bot a lot better
emh: I lost my motivation for Ocean of Code.. and we're only in second week. maybe I should rewrite in an obscure language
YannT: I don't understand why the bot would make a random 3 line as that would be a lost anyway in the MCTS results
jacek: in a sim
YannT: ahhh
MSmits: if you're going to do random moves and check for win, you're often going to suicide
YannT: okay got it
MSmits: way more than actually winning
YannT: so the random sims don't end in silly ways
jacek: itll be slower, ut smarter
MSmits: so 95% of losses will not be because someone made 4 in a row, but because the other guy made 3
YannT: got it, make the random sims more relevant :)
MSmits: yea
MSmits: taking a break before trying to write some state-pruning code
YannT: I need to do mine probabilities :o
MSmits: go go :)
YannT: and move away from probable mines without going into islands
ToshiTuringMachine: any easy way to create an hamiltonian path?
accorp: YannT, if you take the move that reveals you the least, wouldn't that be achieved naturally?
YannT: it's NP-complete so no
YannT: reveals the last != avoiding going where there's maybe mines
accorp: I mean the island thing
YannT: I mean if you avoid the mines too hard, you might screw your pathing or force a surface
YannT: there's a balance there
eulerscheZahl: why do you even want a hamlitonian path ToshiTuringMachine?
eulerscheZahl: will make it easier for the opponent to track you
ToshiTuringMachine: so if you see someone doing half hamiltonian path you predict him to continue the same way?
YannT: long straight lines are bad for detection
YannT: be the snail
ToshiTuringMachine: yeah the snail is an hamilt path
wlesavo: to catch a snail you need to think like a snail
eulerscheZahl: https://www.youtube.com/watch?v=gHCxdlZ7G18
YannT: :snail:
AntiSquid: wow
AntiSquid: what if some druggie drives him over ... you never know.
kovi: if im lucky to avoid pb4, i definitely perform better
AntiSquid: nice
AntiSquid: maybe you'll drop mchl next? :p
YannT: I have a 65% winrate against you kovi, plz push more :D
JFB: what is it "hamiltonian path" in OoC?
kovi: yannt: that was my worst for this run (as this time i avoided pb4 totally). sure, if i go high enough i can avoid you too :)
YannT: finding a path to fill all possible tiles of the map
YannT: which isn't necessarily a good objective to have actually
JFB: Thanks YannT :-)
Tunga: I havent join any competitive bot programming battle like any, should i just dive it or i keep practising in practice tab first ?
YannT: just join and have fun
Kukiss: There must be your 1st time someday. Why not today? ;)
Tunga: Let me give you all some points, then :D
pb4: kovi : I have a good w/r vs you ?
pb4: any idea why ?
kovi: hmm, not any more
kovi: yesterday it was consistent 35%-
pb4: Let me pull yesterday's version then :D
kovi: :rage:
AntiSquid: Turnga you should definitely at least try to do a bot even if you get stuck in a lower league, don't worry too much about it. Also you could watch streams, these could guide you through the process https://discordapp.com/channels/466965651135922206/472807181163429890
JBM: you ought to give it a go
eulerscheZahl: or even give it a MOVE
dbdr: let the chat be your TRIGGER
AntiSquid: trigger to reach #1 Tunga
Tunga: I cant be #1, yet. We ll see
Tunga: Being in a competitive environment is helpful to everyone
Tunga: AntiSquid your link doesnt work on me?
AntiSquid: did you register on discord?
AntiSquid: Tunga
Tunga: Yes, I login with my account and nothing opens
Tunga: mad_king_#9956 this is my account
Insta-x: what is hamiltonian path?
dbdr: https://lmgtfy.com/?q=hamiltonian+path
dbdr: :)
Nixerrr: :scream_cat:
Tunga: AntiSquad :(
Tunga: Yes, I login with my account and nothing opens mad_king_#9956 this is my account
MSmits: yay, chain-silence pruning works and I fixed a bug that allowed the opponent to silence off the map :P
Tunga: AntiSquid :(
AntiSquid: can you see the yellow button at the top of this chat "JOIN US ON DISCORD" ?
AntiSquid: click on it
AntiSquid: Tunga
Tunga: Yes
Tunga: I am in the channel
AntiSquid: so what's the issue?
AntiSquid: can see the twitch and youtube lings in the stream channel?
Tunga: Yes, it is done. Thanks !
Astrobytes: "youtube lings" - tiny baby youtubes
AntiSquid: idk why i typed that, feeling a bit sleepy
Quidome: If you move with silence 4 place in a direction are all the cells in that direction for that distance marked as already visited after that?
MSmits: yexs
MSmits: -x
Quidome: aha, thnxs
MSmits: hmm my bot has been trying to charge a torpedo when surfacing
MSmits: is that even possible? I don't get any errors
MSmits: can you only charge after a move action?
Uljahn: ofc
wlesavo: MSmits you can surface and then move
MSmits: I knew that
AntiSquid: you can combine all moves
MSmits: I am just wondering why my bot wouldnt crash when trying to charge a torpedo after surface
MSmits: AddOrder("SURFACE " + to_string(x) + " " + to_string(y) + " TORPEDO");
MSmits: apparently the game just ignores that
AntiSquid: you can't surface at specific spot ? :p
wlesavo: sure it does
Uljahn: illegal commands are substituted by surface?
AntiSquid: ah yes lol
wlesavo: "SURFACE|MOVE " + to_string(x) + " " + to_string(y) + " TORPEDO"
AntiSquid: the x y shouldn't be there anyway
MSmits: why not?
MSmits: Surface
By using surface you will reset your path of visited cells so that you can freely move to a cell that you have previously visited. But surfacing has a major impact: your opponent will know in which sector you are surfacing and you lose 1 hit point.
AntiSquid: because you don't surface x y
MSmits: you do
wlesavo: just SURFACE
AntiSquid: where does it say you teleport to x y ?
Uljahn: If you fail to output a valid action, you will SURFACE in that turn.
wlesavo: everything else done by refere
MSmits: wait, surface is completely random?
AntiSquid: MSmits your output is wrong
AntiSquid: no
MSmits: well random from visited cells ofc
MSmits: but still random
RoboStac: no, its where you are
wlesavo: MSmits sectors mean 1..9
MSmits: I know this, I am not talking about opponent surface
MSmits: I am talking about my own surface
RoboStac: you just surface without changing position
MSmits: do i have any control over where I surface?
Uljahn: no
MSmits: ohhhhh
wlesavo: what do you mean random
AntiSquid: and also you can't MOVE x y
MSmits: I completely misread the text
Insta-x: yes, i you intentionally surface
MSmits: By using surface you will reset your path of visited cells so that you can freely move to a cell that you have previously visited.
MSmits: I thought it said you teleported to a cell you've previously visited
Uljahn: ahh
wlesavo: lol
YannT: ohh
MSmits: it can be read that way
YannT: that would be handy ahah
AntiSquid: no it just clears your path
wlesavo: spece ocean
ToshiTuringMachine: propose it as a legend league added rule
Insta-x: that would make the game longer lol
MSmits: well that makes things simpler I suppose
wlesavo: sure
AntiSquid: that would make silence look far less outrageous than it is i guess
MSmits: ok, so subs cant teleport all over the map, got it!
Insta-x: everytime your enemy surface, you will have to track him again from zero
wlesavo: smitsiLence
AntiSquid: Insta-x no, you get the sector
MSmits: yeah I got that
Insta-x: no, its if what MSmits said true
MSmits: I knew it from the opponent point of view. I just misread the text saying it would allow you to teleport
MSmits: I thought you could teleport and then the opponent would know which sector you picked
Insta-x: we know, we are just playing what if, i think
MSmits: this is going to make my todo list a lot shorter :P
MSmits: I had "find good spots to surface at" in there
AntiSquid: but you got more issues in there MSmits AddOrder("SURFACE " + to_string(x) + " " + to_string(y) + " TORPEDO"); why is there x and y ?
MSmits: i just explained
MSmits: I thought it was a teleport to specific cell previously visited
MSmits: so I was trying to teleport
AntiSquid: ah but you don't use that for MOVE do you ?
MSmits: no
MSmits: string dir = GetDirection(posX, posY, x, y);
MSmits: AddOrder("MOVE " + dir + " TORPEDO");
MSmits: surface so rarely happens in my games that I never noticed this crazy misconception :P
eulerscheZahl: you can even surface on purpose to make SILENT more effective
MSmits: and get damage
eulerscheZahl: but little
MSmits: that would only be worth it if you expect your opponent to time out because of it?
MSmits: if he has no pruning
eulerscheZahl: if you expect to get hit by a torpedo as well
MSmits: so, you surface, then silence
eulerscheZahl: yes
YannT: there's for sure a balance to be found with surfacing when all other remaining options "suck", for some difinition of sucking
YannT: maximize your possible positions, not walk into a mine field, reset the available tiles while silence is available...
MSmits: you have a const float SUCK_TRESHOLD in your code don't you Yannt
YannT: I call it a score but yeah :p
AntiSquid: how do you even accurately detect mines?
YannT: accurately you don't
eulerscheZahl: guesstimation
YannT: you can know where there's maybe possibly mines and evaluate wether it's worth risking it or not (that's my next feature)
AntiSquid: so how does the opponent guess it's time to detonate a mine?
MSmits: when he knows where you are
MSmits: that happens a lot
YannT: that's easier, it's like torpedoes
AntiSquid: just blow it up to reduce possibilities?
Insta-x: wait, if you surface then silence, it could make your opponents silence pruning timeout?
MSmits: if I look at my games, I often know where the opponent is
YannT: well you can be more liberal with mines because it doesn't give your position away, but you still want to get some value out of them
MSmits: unless they chain silence
ZarthaxX: you cant catch me smito
ZarthaxX: im a shadow
MSmits: Yannt it can give your position away actually
MSmits: if you blow up a mine, your opponent knows where the mine was
YannT: if one assumes you don't self damage, we've been over this :p
Insta-x: you sure we cant track you with mine?
AntiSquid: noob rank ZarthaxX
MSmits: he can then deduce where you where when you dropped it
YannT: no
ZarthaxX: AntiSquid ban
YannT: it's 4 possibilities times the number of possible positions at that time
Astrobytes: BanthaxX
ZarthaxX: astrobyto !
MSmits: he can prune all paths that did not pass by a mine
ZarthaxX: hi
Astrobytes: hey man
MSmits: in that location
ZarthaxX: MSmits is correct
AntiSquid: i will report you ZarthaxX
Insta-x: i dont know, cuz i just wanted to implement it
YannT: and with people doing the snail, there might ever be several possibilities for laying out a mine in a given path
ZarthaxX: AntiSquid aight
ZarthaxX: Astrobytes how is the corona?
MSmits: Yannt not saying it's easy, I am saying it's possible
YannT: I guess you can get some value out of it yess
YannT: it's probably litte tho
ZarthaxX: it's huge
AntiSquid: ZarthaxX looks like US will be hit the hardest in the long run
Astrobytes: STill feeling a bit meh ZarthaxX but a lot better. Need to go supermarket today
Insta-x: its pretty similar with silence pruning i think, at least its similar with my silence pruning algo
ZarthaxX: AntiSquid US is rank 1 by far, not smth proud to be about :/
MSmits: yeah, one might wonder if this has something to do with people listening to a mentally unstable president AntiSquid
ZarthaxX: Astrobytes nice, and your mom?
Astrobytes: She's not too good ZarthaxX, still keeping an eye on it, no worse but no better either
YannT: MSmits: might be a feature idea actually, I guess it would indeed be worth something to run all paths and check if they allowed for that mine to be laid, but I don't know if it's going to prune enough to be worth the time cost
MSmits: me neither YannT, but I it's on my list
Insta-x: i think its worth it?
ZarthaxX: Astrobytes :( hope she goes through this shit
MSmits: yeah Astrobytes
Insta-x: if we could prune almost everything, our enemy cant escape with silence
YannT: typically everybody moves in a snail manner, so at any point most of your possible paths probably cross that mine, and especially if a silence was used
Astrobytes: Me too ZarthaxX man, everyone healthy on your side?
MSmits: most people come through ok thankfully
Astrobytes: Yeah MSmits, she's got high blood pressure tho' underlying condition and all that
Insta-x: my bot dont go in a snail pattern lol
ZarthaxX: yeah we are ok, been inside the house for weeks
ZarthaxX: went out for shopping only
Astrobytes: Cool. Doing that shortly myself
MSmits: YannT not just "crossing the path" also crossing it at the point in time when a mine was laid there
Astrobytes: Considering wearing my respirator mask for shits and giggles
MSmits: I get confused in the supermarket
AntiSquid: i had a random dry cough for few days after i started working from home, but that's about it, might as well pretend it was the common cold
ZarthaxX: Astrobytes never wore one, dont know how effective it is..
ZarthaxX: but i guess it helps stop the spread
MSmits: I need to pay so much attention to people staying away from me I forget to take some groceries out of the card and stuff like that
MSmits: it's quite stressful
YannT: MSmits: very interesting actually :)
jacek: youre physics teacher. dont people already stay away from you?
Insta-x: i havent go out since the quarantine started lol
MSmits: hahahahahahaha :P
AntiSquid: should wear his badge
Astrobytes: No I'd just wear the mask for a laugh, I use it for DIY stuff, sanding paint/varnished surfaces etc. The filter covers viruses too, would scare the shit outta everyone
YannT: but, at this point detection isn't really a primary concern anyway, it's
ZarthaxX: looool jacek
YannT: good enough that I pretty much know where the ennemy is
YannT: MSmits: silence does screw up the "point in time" aspect actually
MSmits: yeah Yannt, just spreading ideas
Insta-x: well yes, i think strategy and resource management is more worth it
Astrobytes: Spread ideas not viruses
YannT: because of silence your possible paths will have different lengths
YannT: so probably can't do that
YannT: or also keep track of "silence time"
MSmits: it depends a lot on how you model silence
YannT: in each path
MSmits: when i said time, I didn't mean time exactly
Insta-x: silence time? what does that mean?
MSmits: when you split a silence into possible movement locations, you also get possible mine locations
MSmits: and if a mine did not explode into any of those possible locations, the entire path is impossible
YannT: well if you wanna backtrack a path to know where someone was at a given turn, you also need to keep track of the steps in silence not costing any turns
MSmits: I don't backtrack, I bitboard the entire path and possible origins
MSmits: dont use lists and all that
MSmits: everything is a bitboard
AntiSquid: overall it's more about guesswork, since silence covers too much of the possible map
emh: what I did in the end I keep track of possible end locations, with list of possible parents, then in the end I validate non-self-intersecting paths using the parents
Astrobytes: Coming soon, MSmits SC2 bot, bitboarded
Insta-x: i use lists MSmits hehe, what is bitboard?
MSmits: http://chat.codingame.com/pastebin/44ccd3de-b7fb-4f85-a0ae-40c9751d2558
eulerscheZahl: it's a language agnostic idea
AntiSquid: you use bits to represent data Insta-x
MSmits: this is sector 1 in bitboard
MSmits: yes
eulerscheZahl: i feel ignored
Astrobytes: eulerscheZahl 02:14PM it's a language agnostic idea
Insta-x: cuz i use list to represent the bitbard using True and False lol
ZarthaxX: that's how noobs that talk here feel everyday eulerscheZahl
Astrobytes: At least I paid attention :P
AntiSquid: Insta-x https://www.geeksforgeeks.org/c-bitset-and-its-application/ good start
MSmits: eulerscheZahl i didnt think it merited a response, it was perfectly descriptive and clear
YannT: I don't know how you "bitboard a path", you would need the ordering not just visited locations?
Insta-x: didnt pay attention :sweat_smile:
eulerscheZahl: not ignored by you MSmits ;)
MSmits: no, the ordering doesnt matter
MSmits: you just keep the visited places
MSmits: and as you build that up
YannT: true, but it does if you want to do the "point in time" thing
MSmits: you also build up a possible mine map
MSmits: so each time you add a mine to this possible mine map, you know where you are path-wise
MSmits: at that point in "time"
MSmits: i was thinking about using a uint32_t for this
Insta-x: i dont bitboard the path, its too memory and performance intensive
MSmits: so i have 4 bits per cell
MSmits: (4 neighbors)
AntiSquid: Insta-x read the link ...
MSmits: the problem with storing the path is that it shifts, so you need to move the path around
MSmits: the path is relative to the origin after all
YannT: but the trigger will be many turns later, so how do you "go back" if you have no ordering to say that this was the turn the mine was laid and these are the paths at that time that were possible
MSmits: no no, you dont need to look at the path
MSmits: thats what the possible mine map is for
Gajowy: what does MSG do?
MSmits: the path is absolute btw, it's not possible path, absolute path
Astrobytes: Clever
MSmits: you split into different states on silence
Insta-x: Monosodium Glutamate?
MSmits: then your path is absolute and so is your possible mine map, only the neighbor is uncertain
MSmits: why am I telling you how I do this before I have even coded it :P
Gajowy: but like why whould you use MSG as a submarine
ZarthaxX: lolo
Gajowy: enhance the oceans taste?
MSmits: lyrics from your favorite song
YannT: haaa I get it, you keep a possible mine map per path
AntiSquid: Gajowy message
MSmits: YannT yes
Insta-x: bitboard every possibility?
MSmits: the only problem is pruning this when you prune chain-silencers. Havent solved that yet
YannT: MSmits: that's what I wasn't figuring, yes that would work
MSmits: right now, my first priority is to rewrite my teleporting submarine
Insta-x: keep it, you could win easily by teleporting
Astrobytes: That was truly a superb misunderstanding, I have to say :)
YannT: I have a sim that works (only inputs I take from the referee are ennemy orders and current life), but I'm absolutely not using it :p
MSmits: if it would work, sure :P Instead it just surfaces and thinks it's somewhere else, eventually running into it's own path :P
Astrobytes: y
MSmits: I imagine the sub captain looking outside the window after surfacing, thinking "I totally just teleported, this water looks completely different".
AntiSquid: does it taste differently?
MSmits: i didn't code that AntiSquid
Astrobytes: fix your flavour enhancement Smits
MSmits: on it
Astrobytes: Right, I'm off to brave the supermarket, laters
MSmits: good luck
ToshiTuringMachine: use mask to go out
MSmits: kick old people away to protect them
ToshiTuringMachine: use mask 255.255.255.255
MSmits: :P
ZarthaxX: yes
Insta-x: whats with 255.255.255.255? i dont get it, all i know its an ip address
MSmits: it's not
ZarthaxX: lol
MSmits: it's a mask that can be used to give you a subnet id if I remember correctly
Insta-x: dont know anything like that
MSmits: i didnt either, but Iam in a internet security course
Insta-x: have you tried picoCTF?
MSmits: nope
emh: it's a mask that protects you from interacting with other IPs I think
emh: your own 1-IP subnet. right?
Insta-x: could it protect us from internet virus LOL
Insta-x: subnet? what is taht?
MSmits: a smaller part of the network
MSmits: you use a part of the ip-adress to identify hosts in the network
MSmits: wifi will do that I think yes
Insta-x: nope, i dont have wifi in my house
Insta-x: now im using mobile data from my phone
MSmits: pretty sure you have it
MSmits: you just can't use it
MSmits: because you dont know the wifi password
AntiSquid: Insta-x www.cybrary.it check it out, goodbye
MSmits: AntiSquid out? Drop mic?
emh: hmm.. order more tea or not.. favorited 1 out of 5, now want more of that one. but should finish the 5 also...
MSmits: are you that bored with ooc
MSmits: talking about tea now?
AntiSquid: MSmits if he actually checks it out he might not come back
MSmits: oh ok
emh: I have open Visual Studio on a template F# project
Insta-x: im not into cyber security now
emh: wondering to rewrite my C# in F#
AntiSquid: ya tea is a far better topic than ooc
emh: for lesser cognitive load
MSmits: which cognitive load you mean your head or the computers?
emh: my head. hard to come up with new stuff
emh: besides hit the 100k limit
MSmits: 100k what?
emh: code size
MSmits: oh
MSmits: wow
AntiSquid: Insta-x it starts with basics, it helps gain a basic general understanding so you don't have to ask what 255... means
MSmits: it's only been a week
Insta-x: ok thx, i still have much to learn
eulerscheZahl: https://www.codingame.com/share-replay/443125546 this guy doesn't find me and that makes me timeout :/
emh: I went out on a tangent. even coding spiral movement using atan2 hehe. but not using it actually
emh: in production
MSmits: eulerscheZahl why do you timeout?
MSmits: you dont prune ?
eulerscheZahl: i track my opponent tracking me
eulerscheZahl: and no
Insta-x: you also simulate him tracking you?
MSmits: ahh, I started pruning when blasterpoard showed me a battle vs illedan
MSmits: you kinda have to
eulerscheZahl: yes, trying not to reveal too much about my position
MSmits: I prune when going over 1000 states
eulerscheZahl: on my list
MSmits: I am not even using any abilities besides torpedo yet
Insta-x: my code cant process more than 200 states
MSmits: yay for priorities :)
Insta-x: but my pruning now can keep all possible states below 100
Insta-x: even if you chain silence
MSmits: yea, mine is invulnerable to that as well now
blasterpoard: the question is, how much information do you lose?
Insta-x: its all because someone just chain silence lol
blasterpoard: I got pinged
AntiSquid: nice Insta-x
MSmits: ah yeah blasterpoard, I fixed my pruning
MSmits: just resubmitted
MSmits: will probably not help much in bronze
blasterpoard: cg... I deleted all of my logic
MSmits: but maybe you can try a battle vs illedan again, see what happens
blasterpoard: and started writing an actual bot
MSmits: what did you have before then?
blasterpoard: move to minimize avg distance from opponent
blasterpoard: if expected dmg is >0.7, fire a tornado
MSmits: ohhh
MSmits: tornadoes!
blasterpoard: if I can silence, silence 0
blasterpoard: *torpedo
blasterpoard: that is my entire bot
MSmits: good bot
blasterpoard: #24 right now
blasterpoard: for some reason
AntiSquid: Insta-x why no avatar?
MSmits: yeah, blasterpoard you say it's so easy to track, but it's actually pretty complicated. It doesn't surprise me that bot is 24
Insta-x: im kinda lazy i think
AntiSquid: avatars unlock the hidden +5% win rate feature
Insta-x: dont see the point of putting an avatar
MSmits: Insta-x otherwise you look the same as everyone else
AntiSquid: +5% win rate Insta-x
MSmits: which is annoying when you're in the top 10
MSmits: you want to be able to distinguish
MSmits: it's annoying to others mostly
blasterpoard: Insta-x if I want to find battles against you in last battles tab, it's annoying if you have no avatar
MSmits: otherwise I cant tell from the pics on the recent battles who just beat me
MSmits: or who I just beat
blasterpoard: MSmits you failed https://www.codingame.com/replay/443128704
AntiSquid: Insta-x nvm then don't get an avatar then, best to annoy everyone else
AntiSquid: for chat it would be nice to have an avatar though Insta-x
MSmits: blasterpoard need more pruning apparentkly
MSmits: I prune after 1k
MSmits: this had 660 states
AntiSquid: otherwise you look like a random person that just made an account and joined chat to type in some random gibberish
AntiSquid: Insta-x
blasterpoard: MSmits I can manage many more states than that
Insta-x: maybe i'll put something thats still hard to distinguish, so i have an avatar and still annoy everyone :joy:
AntiSquid: yes
MSmits: blasterpoard what you consider a state is different from what I consider a state
MSmits: a
blasterpoard: but maybe my states are diffferent from yours
AntiSquid: i like your thinking Insta-x
Insta-x: how can you have so many states?
MSmits: I have bitboards, 1 bitboard may correspond to a maximum of 225 origins
emh: hmm.. should I go down or up. C++ or F#
AntiSquid: F#
Csipcsirip: do you ust std::bitset ?
MSmits: no
blasterpoard: I use C++, I can handle around 200k states easily, but I'll need some time for other things
MSmits: yes but how do you define a state blasterpoard?
Insta-x: i prefer C++ just because i dont know F#
Insta-x: what is a state for you? blasterpoard
blasterpoard: and by state I mean all possible opponent move histories from the beginning of the game
MSmits: does this include the start location?
blasterpoard: all visited and mined cells
Insta-x: whats the data structure?
blasterpoard: and current location
blasterpoard: and hp
MSmits: ah ok, because I keep my start location variable in the state
MSmits: thats why 1 state can be 100+ states \
Insta-x: data structure for the visited cells
Csipcsirip: is manual bit toggling much faster MSmits ?
MSmits: in this case I don't care. It just much easier to do
Insta-x: how do you guys can have so much states? dont you have to calculate ecery state every turn?
MSmits: yes, c++ is fast Insta-x
Csipcsirip: yeah I would use it too if the map would fit in a 64 bit int
eulerscheZahl: at least we update it, sure
eulerscheZahl: and filter states
MSmits: blasterpoard, so you open the game with a 225 - island cells amount of states?
blasterpoard: MSmits yes
MSmits: i open the game with 1
MSmits: thats the difference
AntiSquid: Insta-x here's a good avatar for you https://www.adinaturals.com/storage/producttypeimages/1551029520.jpg
MSmits: so when i have 600 something, that equates to you having 600 times that amount you start with
AntiSquid: wait i meant this one Insta-x https://upload.wikimedia.org/wikipedia/commons/thumb/2/26/Instant_coffee.jpg/1280px-Instant_coffee.jpg
MSmits: and if the current silence-turn multiplies that by 10+ you can see my problem :)
Insta-x: still easy to distinguish AntiSquid
MSmits: I should just filter after 500 instead of 1000, see if that fixes it
blasterpoard: ofc - your way sounds a bit impractical
AntiSquid: but it fits your name Insta-x
MSmits: blasterpoard that's personal I think. I am so used to bitboards from all the board games that this feels very natural
Insta-x: so you guys have every state from the beginning of the game?
MSmits: OH!
MSmits: I had pragmas off
Insta-x: and prune it every turn?
MSmits: lol
blasterpoard: xD
blasterpoard: Insta-x yes, but we onyl rarely need to prune
MSmits: Insta-x yes
Insta-x: one of the fastest i heard
AntiSquid: i didn't bother with branching out
MSmits: yes
MSmits: also not that easy to use
MSmits: but when you have 30 days it's fine
AntiSquid: not gonna bother until friday probably, unless silver overfloods and i get promoted again
blasterpoard: I don't find C++ that difficult
Insta-x: gold wil be unlocked next week right?
MSmits: because you're used to it blasterpoard
blasterpoard: I like that I can be sure it's actually doing exactly what I write
Insta-x: I havent learned all the data Structure in c++ so i didnt use it
MSmits: I like that too, but if I am using a lot of lists and different classes I end up preferring C#
AntiSquid: no ... just compare C++ to some of the more obscure stuff out there, i mean they are not only obscure languages but the way you have to code some of them is really weird
Insta-x: all i know is array and queue
MSmits: blasterpoard can you run another illedan battle, I can't select him :(
Insta-x: actually, i also just started using sets, dictionaries and tuples in this contest lol
Insta-x: MSmits, which league are you in?
MSmits: bronze still
blasterpoard: MSmits https://www.codingame.com/replay/443133150
MSmits: I have a bad priority queue :P
blasterpoard: this one took a bit longer xD
ToshiTuringMachine: tell that to people who say that 'codingame is not teaching anything'
MSmits: Boom yeah!
AntiSquid: Insta-x you're doing well, keep going while you're motivated
MSmits: I could probably stretch my pruning limit. I am not even timing things
Insta-x: thx, though im not a motivated as 3 days ago
Insta-x: im a bit tired, especially programming silence pruning
AntiSquid: then save current code and try out random fun nonsense
Insta-x: it took me 3 full days
MSmits: my surface is still bugged though, i lost illedan and had an empty position map at the end :P
MSmits: but he doesnt shoot anyway
Insta-x: well, i want to try GA
AntiSquid: JUST DO IT!
Insta-x: its 10 PM here, so i just want to chat LOL
AntiSquid: excuses
blasterpoard: that's the best time to code
Insta-x: :v you're not wrong actually
Insta-x: for me, its not, im not used to sleeping late
AntiSquid: i mean if you're here to chat there's Automaton2000 and he is really cheap, with low hourly rate
Automaton2000: that is the right approach
Uljahn: Automaton2000: long time no see
Automaton2000: you need to put them in a single line
icecream17: oh i see you need to type "Automaton2000" for it to work
Automaton2000: give an example of what you want to know how it works
AntiSquid: how Automaton2000's body parts work
Automaton2000: do you think about that?
MSmits: yeah AntiSquid, do you think about Automaton2000's body parts?
Automaton2000: so i'm pretty sure they have a nice day
JBM: i may or may not start streaming again https://forum.codingame.com/t/stream-twenty-thousand-loc-under-the-c/168072/7?u=jbm
AntiSquid: may or may not? you become your opponent tracker
eulerscheZahl: in #de he wrote that he's already streaming again
MSmits: #de has a better tracker?
MSmits: they know things we dont
Insta-x: i dont understand anything there
wlesavo: here should be some WWjoke
AntiSquid: jbm knows german?
eulerscheZahl: a little
eulerscheZahl: egaetan speaks German too, he even lived there for some years
AntiSquid: MSmits JBM is ahead of you
egaetan: only one year eulerscheZahl
MSmits: Insta-x, not everything we say is a statement of coder genius. Sometimes we talk out of our ass
eulerscheZahl: my bad
MSmits: especially AntiSquid :P
Counterbalance: ohh there's a contest
eulerscheZahl: but i remembered parts of the story
eulerscheZahl: oh there's a Counterbalance
wlesavo: fatality addition seems to be working
Insta-x: java vs python3 performance, which one is better?
AntiSquid: no, JBM is ahead of you MSmits
MSmits: you bringing a little mortal kombat into ooc wlesavo?
blasterpoard: Insta-x almost everything is better than python
MSmits: ahead of me like what ?
wlesavo: MSmits sure why not
emh: when is CG going to support wenyan-lang? I want to code in Chinese
Insta-x: :( thats bad, im currently using python
AntiSquid: on the leaderboard MSmits
AntiSquid: and he is streaming, so expect more competition / rank drop
MSmits: bah, everyone and their mom is ahead of me :P
Insta-x: fatality, you mean pursuing him because you are 100 % will win
AntiSquid: my mom isn't, will make her an account MSmits
MSmits: Insta-x detecting a winning move yeah, I guess so
wlesavo: it seems that quite a few games can be ended by some finishing move
MSmits: ignoring other considerations
Insta-x: well, i like to call that SPARTA actually
Insta-x: but yeah, good name LOL
MSmits: ok AntiSquid, just be advised, I will torpedo your mom
AntiSquid: ehm, ya see? weird MSmits jokes again
ZarthaxX: ban him
AntiSquid: /ban MSmits
MSmits: I meant, in ooc, sheesh
AntiSquid: /kick MSmits
Insta-x: its not growtopia LOLOL
AntiSquid: SELECT * AS money FROM MSmits_bank_account
MSmits: noooo
blasterpoard: MSmits is so rich that a bank needs a separate db table for him
Insta-x: its str(" or ""=" ) - injection right?
Scarfield: random thing i read the other day: Russians were the first to have torpedos expell gas, to reduce the drag from the water, and making them go much faster
AntiSquid: it's a 1 row table doh
MSmits: I'm so rich, I overflow 64 bit and become poor
Insta-x: i'm so rich i need big Integer
MSmits: good one, see you're getting the coder jokes now
AntiSquid: should have said you need a linked list of integers
Insta-x: if i dont get that joke, than you can say ima very beginner
Insta-x: or for c++, im so rich that i need string
Insta-x: i never used linked list, but i have used string to store big integer
emh: yo momma so fat she uses her g-string to store big integer
Scarfield: wow that escalated quickly :D
AntiSquid: JBM also missing an avatar, maybe should remove mine
AntiSquid: just for the contest
AntiSquid: you can with CG premium membership, just updated, refresh
eulerscheZahl: you uploaded the default image
JBM: re-uploaded default image appears as whatever file format you gave it
JBM: missing/default avatar is entirely missing, provided as inline html data
AntiSquid: some people here simply can't afford CG premium i guess
eulerscheZahl: see it's not real https://imgur.com/a/NymtgjV
blasterpoard: tbh I would pay for CG premium if I got extra 5ms per turn
AntiSquid: do you really need to confront me about a joke? :D
eulerscheZahl: of course
ToshiTuringMachine: 5ms lol
eulerscheZahl: because i can't motivate myself to work on the contest bot
AntiSquid: will you write a script to filter out and replace my avatar?
ToshiTuringMachine: it becomes a pay-per-win
eulerscheZahl: nor the rewording that jbm suggested
eulerscheZahl: PRs welcome ;)
AntiSquid: i didn't even read the statement apart from input output section
AntiSquid: chat discusses the game so much you don't have to read it
eulerscheZahl: partially the statement is still from the prototype, partially it's what I added it somehow became a little inconsistent
eulerscheZahl: he has valid points
MSmits: I read the statement and I thought I could teleport my sub, chat might've been better :P
Scarfield: icles
Azkellas: hon hon hon
AntiSquid: hey MSmits
eulerscheZahl: teccles isn't playing the contest yet
MSmits: hey AntiSquid
AntiSquid: look up D-star Hexaquark
MSmits: ok will do in a few.
Astrobytes: that's the one you mentioned a few days back Squid?
AntiSquid: related to the article i was talking about MSmits
MSmits: ohh ok
MSmits: quarkstars
AntiSquid: no not stars, dark matter related article
MSmits: oh, right, interesting
AntiSquid: 6 quarks fused together somehow .
MSmits: well normally there's 3
MSmits: or 2
MSmits: but mostly 3
MSmits: protons and neutrons consist of 3
AntiSquid: yes i am aware
MSmits: kk
Astrobytes: It's a Bose-Einstein condensate
MSmits: brb
AntiSquid: Astrobytes it is claimed that it's a "dark matter candidate"
Astrobytes: Yes I know, I'm saying it's formed by Bose-Einstein condensation, fused together at absolute zero
AntiSquid: ah
Astrobytes: Pretty fucking cool
Astrobytes: (pun intended)
AntiSquid: but space isn't at absolute zero is it?
eulerscheZahl: get a profile pic AntiSquid
Astrobytes: No, but during the rapid cooling post-big-bang it may well have been
AntiSquid: why eulerscheZahl ?
eulerscheZahl: it's confusing me
eulerscheZahl: somehow i have a built-in filter to mostly ignore users with no pic
AntiSquid: lol
pb4: didn't you have a profile pic yesterady ?
eulerscheZahl: he had
eulerscheZahl: the galaxy
eulerscheZahl: with a red dot where we live
AntiSquid: no. laniakea with a red dot where the galaxy is
Illedan: Hi
Astrobytes: Hello
dbdr: kovi #1!
AntiSquid: are you streaming Illedan ?
AntiSquid: gratz kovi
dbdr: oh :D
Astrobytes: lol
dbdr: did not expect that
dbdr: this sub is incredible. might just be luck, it's early
AntiSquid: lol
AntiSquid: overshot by a little
E_pur_si_muove: @eulerscheZahl: in the gridmaneger when you initailize the grid I think the expression rand.nextInt(26) is evaluated in every for loop. ???
aangairbender: is c# compiled by mono? why not .net core?
eulerscheZahl: https://github.com/CodinGameCommunity/ocean-of-code/blob/master/src/main/java/com/codingame/game/GridManager.java#L47 yes indeed :D
eulerscheZahl: didn't even notice yet (not my code, even if i commited)
eulerscheZahl: now find the bug in this line: https://github.com/CodinGameCommunity/ocean-of-code/blob/master/src/main/java/com/codingame/game/Utils.java#L5
eulerscheZahl: because CG struggled to get .net core running on their servers aangairbender
aangairbender: that is sad
aangairbender: .net core is very fast
eulerscheZahl: there might be an update before the may contest
eulerscheZahl: mono is extremely slow on 2D arrays i noticed
kovi: back
kovi: wow
eulerscheZahl: converting to 1D is much faster not like that for .net
kovi: thx dbdr. nice submit btw
eulerscheZahl: impressive kovi
Astrobytes: It doesn't flatten 2D arrays under the hood?
dbdr: well, going up and down a lot. might end up as usual or a bit better
eulerscheZahl: meanwhile: yay, top30!
eulerscheZahl: i don't know how 2D arrays are implemented but with mono they are much slower
eulerscheZahl: for some games i doubled my sim count by converting that
aangairbender: i am rewriting eveything from c# to rust
dbdr: :+1:
aangairbender: is rust good for cg? @dbdr
MSmits: it works, but it runs in the IDE in debug mode afaik
MSmits: which is annoying because that means you can't test properly with, or against other bots in the IDE
eulerscheZahl: yes, release mode only on submit
dbdr: aangairbender as a language it's great, I think
dbdr: the IDE mode is annoying sometimes
dbdr: currently it's not affecting me in OOC
MSmits: nah it wouldnt affect me either. It's more for those high performance board games
wlesavo: mchl12 some crashing in your submit, if you interested https://www.codingame.com/replay/443170729
dbdr: even for those, performance is great in arena, which is what matters
aangairbender: btw its easier to express intentions with c#
aangairbender: imo
dbdr: you can workaround the IDE thiing
MSmits: yeah, thats why it is only annoying
dbdr: do you have an example aangairbender?
aangairbender: example of what?
Illedan: AntiSquid, yeah I'll be streaming in 15 min
MSmits: easier to express intentions aangairbender
aangairbender: hmm for example c# has linq, easy way to work with collections
aangairbender: with rust i have to add unwrap() everywhere
dbdr: that's unrelated
MSmits: linq has a high risk of you doing things that are extremely costly in terms of performance
dbdr: unwrap is for unsafe cases
dbdr: you can work with collections like filter map etc without unwrap
kovi: hmm, im not loosing vs pb4
dbdr: and get the same performance as hand-written loops
MSmits: I've never understood why foreach would sometimes be slower than for or reverse in C#
MSmits: the compiler should be able to look at the code and just compile it in the fastest way
aangairbender: with .net core its fast
pb4: damn kovi
MSmits: I'm talking about marginal differences, like 10%
aangairbender: I've read an article about for vs foreach, but I don tremember details(
kovi: france and hungary both has 3 players in top10
dbdr: nice!
dbdr: room for one more country
MSmits: I'm trying!
wlesavo: kovi now im the one loosing to pb4
dbdr: 10 - 1, ouch
aangairbender: i loved how I only needed working simulation+1tick minimax to be in legend in PokerChipRace
aangairbender: but for this one i hope there is not any simulation based strategies
eulerscheZahl: what's wrong with simulations?
wlesavo: i probably need to wait till pb4 will stop resubmiting :slight_smile:
aangairbender: nothing wrong
aangairbender: btw are they applicable here?
MSmits: you do some kind of simulation yes
MSmits: you simulate where the opponent sub can be
Ille-Stream: https://www.twitch.tv/codingame
kovi: nice submit pb4
aangairbender: dbdr do you gave script for merging code into single file?
dbdr: yes, but it's not in a releasable state I think, with some custom stuff in it
dbdr: :(
dbdr: there was one mentioned on the forum though
aangairbender: ok, thanks
dbdr: https://www.codingame.com/forum/t/rust-crate-source-bundler/2877
emh: what's everyone's favourite C++ single-header coroutine / generator library?
aangairbender: bits/stdc++.h
aangairbender: if i understood question correctly xD
aangairbender: oh
aangairbender: seems not
emh: I just want my "yield return" :)
ToshiTuringMachine: ... you are so clever you need a shortint to store your IQ
aangairbender: ?
Astrobytes: Toshi coming with the jokes from 3 hours ago :D
aangairbender: for school times
ToshiTuringMachine: yeah my brain is degrading back to school
ToshiTuringMachine: i can't get that silver... i was 3th nownow
eulerscheZahl: how many points below the boss?
ZarthaxX: ToshiTuringMachine same, i got retarded
ToshiTuringMachine: i didn't check
Astrobytes: "got" ZarthaxX? :P
ToshiTuringMachine: yeah ZarthaxX >) drunks on coding
MSmits: I've always wondered when that happened ZarthaxX, tell us more :p
Astrobytes: TardaxX
ZarthaxX: Astrobytes good poinrt
Astrobytes: Tardobytes
ZarthaxX: MSmits is that a joke?
MSmits: of course :)
ZarthaxX: savage
MSmits: you can take it
ToshiTuringMachine: tardTuringMachine
Astrobytes: ToshiTardingMachine
ToshiTuringMachine: how comes I have same results ignoring enemy silence... lol
ToshiTuringMachine: bronze
ZarthaxX: f
MSmits: sorry I cant finish that, my students could be watching
Astrobytes: Did you convince any to take part?
AntiSquid: gonna ban the bear for calling ZarthaxX retarded
MSmits: nah, i was planning on sending them a message, but this contest is too hard I think. Something like code a la mode would be better
AntiSquid: for relaxing yes ^
Astrobytes: They wouldn't like the challenge?
AntiSquid: this isn't a relaxing game for lockdown :D
AntiSquid: it's like perfect torture
MSmits: I think they wouldn't get anywhere
MSmits: or do you think there's an easy way to make a bot
MSmits: that doesnt require tracking and such?
AntiSquid: lol
AntiSquid: there was no way out of wood2 without tracking
ZarthaxX: AntiSquid right LOL
MSmits: yeah thats what I mean
MSmits: I dont think they can do the tracking
ZarthaxX: you will ban myself nice move AntiSquid :P
AntiSquid: remember kutulu contest when wood boss was overpowered?
MSmits: yeah
AntiSquid: this contest felt even harder in wood :D
ZarthaxX: MSmits maybe random moving and shootigng work
ZarthaxX: works
ZarthaxX: but idk
ZarthaxX: but it was a rough start
MSmits: btw, i dont think this games wood boss is overpowered. The game is just hard to begin with
ZarthaxX: right
MSmits: any boss that "works" is gonna be hard to beat.
ZarthaxX: maybe making enemy visible for wood 2 would have been better
MSmits: yeah
AntiSquid: MSmits wood 2 boss is same as wood 1 and default AI, it tracks you down and fucks you up
MSmits: i didnt have problems with it at all. I skipped wood 1
MSmits: before it was nerfed
ZarthaxX: the devs of the game were really inspired for those wood bosses :P
AntiSquid: it's g-rom's bot which he worked on for a good while :p
MSmits: you just need a tracker is all
AntiSquid: ya but, you shouldn't need that for wood
MSmits: I agree, but then the game would be fundamentally different
AntiSquid: normally you just need to not ram your head full speed into a wall and just throw in some skils and promoted
MSmits: also, the boss shoots himself
MSmits: a lot
ZarthaxX: im with squido on this one
AntiSquid: no MSmits, same game, just weaker wood bosses
ZarthaxX: make a bot that uses the actual actions and pass
MSmits: but how would you know where to fire?
MSmits: how to even damage the boss?
AntiSquid: it has to move lol
Astrobytes: BRute-force and ignorance ofc
ZarthaxX: maybe making nemey visible
MSmits: random shooting is kinda hard with a 3x3 blast in a 15x15 map
ZarthaxX: and torpedo be replaced by a move
AntiSquid: the problem is tracks you very well MSmits
ZarthaxX: that has a pathfdinger
ZarthaxX: finder
MSmits: so it comes to me, that is convenient :P
Astrobytes: Paaaathfinger
AntiSquid: imagine xmas rush, but wood bosses go straight to item, which isn't the case
ZarthaxX: Astrobytes youuuuuuuuuuu shut up
Astrobytes: :D
AntiSquid: MSmits you took a while to promote out of wood and so did many others, so that's proof enough the bosses were too strong
MSmits: still a lot of people out of wood though
AntiSquid: either way i find it annoying when they nerf them retroactively after you commited to improve your bot and pass them -.-
MSmits: me too
MSmits: also, I found it extremely annoying my bot skipped wood 1
dbdr: that work is not lost
AntiSquid: MSmits out of wood after probably nerfing them again or resubmitting boss
AntiSquid: just add silence then maybe you promote to silver MSmits
MSmits: i like the abilities coming in slowly
MSmits: haha yeah, i should stop torpedo-ing every 3rd turn
MSmits: i'm 50th in bronze with that now
MSmits: I want to fix a bug or two first
AntiSquid: well maybe wood should be manual promote
AntiSquid: because otherwise you need to setup locally and manually change to wood2
Csipcsirip: what I dont like is that you have to wait like 300 rounds for something to happen
MSmits: i dont mind either way, they should ask the players that have a lower skill level. It doesnt matter if it takes a long time to get out of wood, if you eventually do
AntiSquid: when you bored of wood: type promote or something
MSmits: if you never get out of wood thats a different story
MSmits: br2k bosses for example
MSmits: I never got out of wood 2
MSmits: ofc that is more like gold but still
AntiSquid: never tried that game seriously
AntiSquid: just submitted random
MSmits: its fun, but i didnt know how to eval
Numby: Anyone knows if Java inheritance incurs additional overhead (or no due to type erasure)? I'm considering creating & extending an abstract class to share a helper method vs creating the same method static
pb4: Was it bad that bosses were strong in BR2K ?
MSmits: no, it was a different kind of contest
MSmits: can't really compare
MSmits: I was just saying it kinda gave me a feeling for how it would be for people who cant get out of wood in a regular contest
Astrobytes: I think stronger bosses work well in long contests
Astrobytes: You get more out of it
Astrobytes: imo
Astrobytes: The BR2K format was nice
MSmits: I like how reCurse won it with a NN. That's something you can't do in a regular contest
MSmits: which is a good thing imho. But no reason it shouldnt be allowed in an unofficial contest
Astrobytes: Who said it shouldn't?
MSmits: noone said
Astrobytes: Ah OK, thought someone had
MSmits: don't think so. I think most people liked the fact that he pulled it off in that timeframe
Astrobytes: Yeah, was impressive
MSmits: reCurse won br2k unofficial contest with a neural network in I think 14 days? Probably a lot less
ZarthaxX: besat.
ZarthaxX: beast.
Astrobytes: Wasn't br2k a 4 week-er?
MSmits: hmm could be yeah
MSmits: anyways, his bot was unbeatable much sooner
Astrobytes: Yeah, it was
eulerscheZahl: 3 weeks i think
eulerscheZahl: not a real contest anyways
Astrobytes: It's a shame it wasn't. But I liked the unofficial contest idea
Csipcsirip: can you link that contest pls ?
MSmits: it's just an arena
Astrobytes: https://www.codingame.com/multiplayer/bot-programming/bit-runner-2048
eulerscheZahl: i admit i never tried, not looks like csb2 to me
MSmits: it's mostly the engine
Astrobytes: Yeah, bit more to it than just racing :)
pb4: CSB on steroids(TM)
eulerscheZahl: still i think it was a good decision not to turn it into a contest on a first look
MSmits: but eulerscheZahl is right, it's not an official contest. It's more like what happens occasionally in a new community multi when a lot of good players start it at the same time. We had this with yavalath for a while as well
MSmits: br2k just had better PR
eulerscheZahl: pull request?
Astrobytes: lol
MSmits: you know what I mean :P
eulerscheZahl: seriously i don't get it
MSmits: public relations
Astrobytes: public relations
MSmits: advertising
eulerscheZahl: oh, aaaah
wlesavo: lol resubing pb4 somehow got me to #4
Tunga: in 5 minute contest, pythoners are advantaged as hell ??
MSmits: why would there be a 5 min contest
wlesavo: CoCtest
Astrobytes: think he meant CoC
MSmits: oh ok
eulerscheZahl: try codeforces if you like short contests
Tunga: There is a contest where I just typed the library name and 5-10 more characters and won (in python ofc)
Tunga: Yes CoC
MSmits: call it a clash
MSmits: contest has a completely different meaning to us :)
MSmits: but yeah, python has a major advantage in short contests, just like c++ does in moderate to long ones if they require performance
Uljahn: ye, rigth tool for the job
AntiSquid: clash of code isn't contest D:
ToshiTuringMachine: yeahhh silver
ZarthaxX: gz!
ToshiTuringMachine: ty ZarthaxX
ToshiTuringMachine: time to rewrite
dkov: has someone win rates for utlimate tic tac to for x, o and draws?
eulerscheZahl: ask MSmits about that
MSmits: dkov, around 67% for p1 and 33% for p2 is normal
jacek: an draws
MSmits: I count a draw as 50% win
MSmits: if you do that, you get the 67/33
MSmits: however, I do believe it would be solved to a win for p1
MSmits: if you could
MSmits: running a meta mcts approaching the best play, usually increases p1 winrate I've found (lately that is, I've thought differently before)
dkov: oh! I did not ask my question right!
dkov: for a random mc simulation, what are the win percentages?
MSmits: oh, no idea
eulerscheZahl: i don't think anyone thought that would be interesting to test
MSmits: for example, it would strongly depend on the first move
dkov: cause my old simulater gives 49/43/8 my new one: 41/39/20 random first move
jacek: and how are they different
jacek: do you use 1-ply win check
dkov: different implementation but they should yield the same result. i suspect there might be a bug in one of them or biased random numbers. i don't know, what you mean by 1-ply win check
jacek: if there is a move that would win the game, make it. otherwise make random move
dkov: no 1-ply win check in both
eulerscheZahl: these numbers are close together, can just be randomness
eulerscheZahl: you need more runs for a reliable result
eulerscheZahl: but p1 should have an advantage over p2 for random rollouts as well
dkov: they are consistent with millions of runs
dkov: these are percentages, sorry
eulerscheZahl: oh, i thought you just ran 100 games
eulerscheZahl: then the 49/43/8 sounds more reasonable to me
MrTimber: Hi PHP devs, if you are interested, I made a project that allows you to code using different source files, with a small tool that combines everything into a single file for synchronization with Coding Game: https://github.com/MrTimber/OceanOfCodePHP
Astrobytes: MrTimber post that in the forum and/or discord so people can find it :)
dkov: i messed up the victory condition in the new simulator. now I get similar results. thanks for the help
jacek: good for you
Astrobytes: you gonna join the contest jacek?
jacek: unlikely
jacek: i havent done anything game/ai for past few months
jacek: im getting old
Ille-Stream: Top 150 on stream :tada:
Astrobytes: getting old!
Astrobytes: gratz Illedan
Astrobytes: Stream
Astrobytes: Ille-Stream
Ille-Stream: I'll swap :P
Astrobytes: :D
jacek: hm?
Illedan: :)
AntiSquid: oh i see you slightly overshot your main eh?
Illedan: My main is still broken :P
Illedan: It's 25th or something
AntiSquid: ah right
AntiSquid: why did you break it if you can reach top 50 ?
Illedan: I'm working on my new tracking system
Illedan: Need a test bot with silence only
Illedan: Fix 1 thing at a time :)
Astrobytes: Test against mine, it only silences
Illedan: I like to know what I'm testing against :P
Astrobytes: lol
JFB: Illedan - so you can test agains me too - is deterministic, only torpedo + silence (1 step)
Illedan: :)
Astrobytes: I'm also deterministic fwiw :P
AntiSquid: fwiw ?
Counterbalance: for what it's worth, iirc
Astrobytes: yrc
AntiSquid: faa
icecream17: it's worth it - easier to debug. unfortunately I silence and mine randomly.
eulerscheZahl: sttla
Astrobytes: ok you got me there squiddy
Astrobytes: and you too euler
AntiSquid: last a stands for acronym
AntiSquid: s
Counterbalance: still no bot functions like !urbandict here?
AntiSquid: "still no"
Astrobytes: say no more AntiSquid lol
Astrobytes: nope
Counterbalance: we had that stuff 24 years ago on IRC
Astrobytes: Tell CG :D
AntiSquid: you can add your own bot
Astrobytes: True
AntiSquid: flood chat with Automaton2000 and AutomatonNN
AutomatonNN: yes i do
Automaton2000: as long as it is
AntiSquid: see? they are ready to flood the chat any time
Counterbalance: !rank
Astrobytes: yeah but AutomatonXXXX help/faq/translate/die/troll etc would be more useful
Counterbalance: !slap AutomatonNN
AntiSquid: unlike other chats: discord for example here you can add your own bot and nobody will stop you?!
AutomatonNN: maybe it's a good idea
Astrobytes: heh heh
Counterbalance: lol
AntiSquid: Automaton2000 !die
Automaton2000: if you want to keep it simple
AntiSquid: it's never simple Automaton2000
Automaton2000: this got me to gold
Astrobytes: both bots on form this evening
Counterbalance: move is executed before torpedo? (got a fired out of range) Or does it depend on the order of the commands given?
Astrobytes: Depends on order yeah
ZarthaxX: the things are executed sequentially
Counterbalance: thanks
AntiSquid: it depends on your output Counterbalance
ZarthaxX: Counterbalance read the rules sheez
ZarthaxX: :)
Counterbalance: I did, just didn't read the referee yet
AntiSquid: you can do MOVE N|TORPEDO 0 3 or the other way around
eulerscheZahl: not recommended Counterbalance
AntiSquid: you could just read chat more often, like i did, i didn't read the rules
Astrobytes: is the referee that bad? Not looked at it yet
Counterbalance: I only found out today - too busy with extra work due to the crapshoot going on
eulerscheZahl: reading the chat also helps to find out about a contest
eulerscheZahl: the referee has UI and game logic merged
Astrobytes: How 'merged' is merged
eulerscheZahl: illedan decoupled it but doesn't seem in a mood to push it to the public repo
eulerscheZahl: so merged that he broke the game logic when he tried to add extra animation frames
Astrobytes: oh ffs :D
eulerscheZahl: old prototype from CG that we inherited
eulerscheZahl: existed before the kutulu contest
Astrobytes: yeah, I know it wasn't you guys
Astrobytes: Still, Illedan, push the decoupled version will ya
eulerscheZahl: spot the bug that will cause problems for other constraints https://github.com/CodinGameCommunity/ocean-of-code/blob/master/src/main/java/com/codingame/game/Utils.java#L5
Counterbalance: like non square grids
eulerscheZahl: and we have a winner
icecream17: how does the seed work
Astrobytes: oh yeah, ffs. Is that used in any non-square grid context in the ref though?
AntiSquid: this sub game was linked on slack back when BotG was in development
AntiSquid: and was still titled captain sonar
eulerscheZahl: and i scrolled all the way up in the history and found it there
eulerscheZahl: then it stopped working with the pixi.js update
Astrobytes: They should bring the PacMan one too
Astrobytes: It looked pretty nice
AntiSquid: maybe we could ask the admins if we can just host it as a regular multi ?
Astrobytes: Or unofficial contest. Mind you, probably wouldn't be best as a contest since the format has been done to death elsewhere
AntiSquid: "i sniped this game, can i host it?"
Astrobytes: lol
Astrobytes: *idea not format
eulerscheZahl: say it's your own game and hope they don't remember
Astrobytes: Change the graphics a bit
Zenoscave: Illedan
Zenoscave: are you streaming?
Astrobytes: Get eulerscheZahl to do them in fact
Astrobytes: He already did Zeno
Zenoscave: cool maybe i'll find some useful stuff
Zenoscave: My code needs some cleanup
eulerscheZahl: my bot just gets worse, even if i improve in self-play :/
Zenoscave: Yeah, this silver is getting rough
struct: This is why I havent started
struct: I cant get worse than default code
eulerscheZahl: and i don't remember which was my best submit
Astrobytes: No versioning, tsk tsk euler
Zenoscave: I have versioning but the scoring for same code is too erratic
Astrobytes: Yeah, I'm just trolling
Zenoscave: :P
blasterpoard: imagine trying to find out where did your bot make a mistake in legend
JFB: eulerscheZahl - for example in match with my bot - your bot crashed. Probably my bot done too many silence
Zenoscave: Yeah silence timeouts are crazy
Zenoscave: still can't fully do all the paths
AntiSquid: i am sure at some point i fixed a bug dropped 50 ranks, improved tracking a bit and jumped 50 ranks back up, maybe i should have kept the bug and just improve? :thinking: -regarding versioning
Zenoscave: I can handle about 1.5k paths total between two players
Zenoscave: Who knows AntiSquid, this is getting tough to predict
eulerscheZahl: do you happen to have a replay JFB?
AntiSquid: e
eulerscheZahl: i think it's not your silence
Illedan: Zenoscave, I'm done streaming
Zenoscave: thanks Illedan :)
blasterpoard: eulerscheZahl www.codingame.com/replay/443250074 just play vs illedan if you want to check
Illedan: I added the link to discord and the forum
blasterpoard: and yes, you crash vs silence cpam
Zenoscave: cpam?
blasterpoard: spam
Zenoscave: ah
eulerscheZahl: hm, didn't expect that but it's indeed the silence here
eulerscheZahl: but most of my timeouts should result from me trying to rebuild the opponent tracking me
Astrobytes: CPAM - Comprehensive Perl Archive Memories
eulerscheZahl: and if the opponent has poor tracking, i find too many options for myself and timeout
JFB: https://www.codingame.com/replay/443207245
Zenoscave: oh god at least it isn't CPAN
Astrobytes: :D
AntiSquid: c like in mice @Astrobytes :p
eulerscheZahl: ok, JFB playing the hiding game with me as well
Astrobytes: yeah I know squid
AntiSquid: https://pics.astrologymemes.com/sack-of-eyes-if-the-gh-sound-in-enough-is-19575378.png
Zenoscave: I love and hate that I new exactly where that was going
Astrobytes: lol that's exactly what I thought of
AntiSquid: i disagree with the bottom statement though
JFB: eulerscheZahl - I do not understun why you have problem with tracking yourself. As you see - in tris replay, just before your bot stopped, both bots (your and my) knows exactly where you are
Astrobytes: AntiSquid which is your nomination
Astrobytes: ?
eulerscheZahl: in this replay it's tracking you which causes the timeout
AntiSquid: don't think anything is more ridiculous than a giant "alphabet" that people in their 40s who learnt it their entire life didn't master it
eulerscheZahl: but i also had caes where tracking myself was the problem
eulerscheZahl: well, good night
JFB: good night :-)
Astrobytes: gn euler
Zenoscave: gn !
Astrobytes: Which alphabet AntiSquid?
AntiSquid: you can pick between mandarin and cantonese
Astrobytes: Couldn't possibly comment tbh, not enough experience
AntiSquid: Electric + Vision = TV 电视 (diànshì)
Electric + Brain = Computer 电脑 (diànnǎo) Electric + Shadow = Cinema 电影(diànyǐng)
aangairbender: ok I made a script for merging c# code into a single file
aangairbender: going to split my code into some files/folder
Astrobytes: Intonation means a lot huh Antisquid
MSmits: yay silver
MSmits: so this is interesting. I was fixing a nasty bug. When I fixed it, my submit was way worse
MSmits: then i resubmitted my bugged version and I am in silver
Astrobytes: Standard contest bot behaviour :D
MSmits: yeah...
MSmits: also it is still just shooting torpedoes every 3 turns :P
Astrobytes: gz btw
MSmits: thanks
MiniWolskys: Am I the only one feeling like there is a bug with the input for the map in Ocean of Code in C ? Just added a print to the standard code and only half the map is present
MSmits: I'm guessing you added the print wrong
ZarthaxX: you are the bug MiniWolskys
MSmits: but i wouldnt know how to check, i dont know C
aangairbender: input is given to all languages in the same way
Uljahn: there is a limit for debug output length
nnminh171298: i print the whole map ok
Counterbalance: you can print at least 2 maps and some more lines
MSmits: you should be able to at least print a map
MSmits: yeah
MiniWolskys: I print everything with no problem with my own input code but not with the default one
nnminh171298: aaaaa how come I beat you every game and you up rank, MSmits
MSmits: it's not about beating a specific person
Uljahn: ah, the stub could be far from perfect
MSmits: it's about being strong against most important
MSmits: most people sorry
MSmits: also, if you get near the boss on a submit, try to make your bot strong against it
MiniWolskys: https://imgur.com/a/D2xNTWr
accorp: MSmits, how old are you, btw?
MiniWolskys: All I added is the fprintf line and I don't think I have done it wrong, but only 8 lines are printed of the 15
MSmits: I'm 39
Astrobytes: What about you accorp?
aangairbender: MiniWolskys try adding if (i > height/2) before pprintf
aangairbender: to check whether its a debug size limit
Counterbalance: MAP: 0 ........xx.....MAP: 1 MAP: 2 ........xx.....MAP: 3 MAP: 4 ...............MAP: 5
Counterbalance: it's fubar
Zenoscave: the engine is fubar Counterbalance?
Counterbalance: no, the stub I think
MiniWolskys: Yeah that's the format I got when I added the line to my print, but why is it not picking every other line then ?
Counterbalance: ok, make it so:
char line[width + 2];
fgets(line, width + 2, stdin);
MiniWolskys: https://imgur.com/a/m1Nyity
Zenoscave: also fprintf(strderr, "%s\n", line);
Zenoscave: fprintf doesn't add newlines
Counterbalance: fgets reads at most 1less than the given size, so, width bytes. The newline is not read.
Counterbalance: alternatively, add fgetc(stdin) after the fgets()
MiniWolskys: On my own code I fixed it with a fgetc() at the end, but I feel like this is a complicated start if you don't pay attention
Counterbalance: yes indeed
MiniWolskys: if I add the \n it print 3 empty line instead xD
Zenoscave: perhaps we could reach out to the team
accorp: it's completely eef'd
MiniWolskys: I'll post a message on the forum on the OoC bug thread
Zenoscave: :+1:
accorp: is it because the new line is "\n\r"?
MiniWolskys: Good to know it's not just in my head
Zenoscave: I doubt it
Counterbalance: no, because the line size is width + 1, and fgets reads width + 1 - 1 bytes
Zenoscave: Counterbalance is right
Counterbalance: the same kind of bug could occur when reading the opponent orders, but they use a buffer of 201 bytes so it's less likely
Zenoscave: Wait they use a static sized buffer????
Zenoscave: Oh many ideas are flowing
accorp: this can't be right, C does what its told to...
Counterbalance: http://chat.codingame.com/pastebin/c40aa561-13a6-4c06-9218-596e8f1f11bd
ZarthaxX: smito when is that 40yo birthday
Zenoscave: https://linux.die.net/man/3/fgets
MSmits: not for a while ZarthaxX, it's in 2021
ZarthaxX: ah we wont be alive by then
Counterbalance: so your birthday was before 21 jan?
ZarthaxX: asteroid hitting on april
Zenoscave: Since when is there an asteroid
MSmits: eh no, it wasn't. Are we using ooc tracking methods on my birthday?
ZarthaxX: sinece 2020 sucks
ZarthaxX: you will pewpew the asteroid right zeno?
Zenoscave: PEW PEW PEW PEW PEW
ZarthaxX: and save the contest
Counterbalance: hehje yeah, my tracking is too restrictive in my bot too
Zenoscave: maybe top 20 again!
ZarthaxX: pog
Zenoscave: 18 heyo!!!!
ZarthaxX: gz!
Zenoscave: and back down to 20 I need to quit estimating
ZarthaxX: lol
MSmits: ohh, I just had a great idea
MSmits: to check your tracking
MSmits: when the opponent possible locations map empties, break your game update loop
MSmits: then check a submit for timeouts
ZarthaxX: put an assert
Counterbalance: TRACKING BUG: no opp cells!
accorp: Counterbalance, this means the last char is forced to be \0, in this case the carry is not returned
Zenoscave: It works decent
Counterbalance: accorp yes indeed
MSmits: does anyone else have problems with repeated code in recursive functions and such? I always found it hard to extract repeated stuff out of a recursive function like that
MSmits: it messes with references and such when i pull it out and separate it into a different function
MSmits: for example, my silence function. I have 4 loops with small differences for the 4 directions. But there is a recursive element due to the silence happening in 4 steps
MSmits: so i end up with this bloated code
ZarthaxX: u mean like repeated processing of diff actions?
MSmits: yeah my processing of actions is also recursive
ZarthaxX: same but i meant that repeats in manyplaces
MSmits: but a single silence action is recursive in and of itself
ZarthaxX: it gets way too repetitive
MSmits: yeah
Counterbalance: you should be able to factor out functions without a problem..
MSmits: a more experienced c++ coder might
Uljahn: why recursive? can't you iterate and break when needed?
MSmits: hard to explain, has to do with damage map being carried down the action list
MSmits: having it recursive means it is easier to pass it on changed or unchanged depending on the actions
MSmits: on a silence, you split into several branches also
MSmits: it's kind of a tree structure
ZarthaxX: should stop giving out your ideas in a contest:P
MSmits: yeah, I'll stop now
Counterbalance: so you have something like if (left) { left-specific-code; copy-past-code} else if (right) { right-specific-code; copy-paste-code} ...?
MSmits: hmm not exactly no
MSmits: I go down all possible directions for silence
MSmits: and iterate 4 steps
MSmits: but each silence step is a possible silence end result so the processing of actions should continue
MSmits: pretty sure everyone does this btw, i am not giving anything away here
MSmits: but anyway, all 4 directions have the same code
MSmits: instead dy = -1 or +1 or 0 etc.
Counterbalance: and you can't do foreach (direction) { explore(dir) }
ZarthaxX: yeah not a spoiler
MSmits: hmm how would you define a direction?
MSmits: like a list of dx,dy structs?
Counterbalance: something simple like for (int dir = 0; dir < 4; dir++) { Pos next{cur + dir}; blah; }
Counterbalance: ehh Pos next{ cur + directions[dir] }
MSmits: yeah I think that might work, I dont work in directions, but in dx, dy, but that could be a constant array of 4 structs {dx, dy}
accorp: first 4s being general directions and the seconds are diagonals
MSmits: dont need diagonals for silence
accorp: same for cross, first 4s are west, second are E and so on
aangairbender: for silence i have two nested loops, first loops on directions, seconds loops on distance
MSmits: yeah, that's what i am changing to now, as advised by Counterbalance. Thanks by the way
MSmits: oh I had a very general coding question btw, that has been bugging me for a while.
Counterbalance: np. If you use constexpr arrays and unroll-loops you'll hardly notice the difference. BUt it should be possible to factor out the identical code to a function so you kan keep the 4 optimisations
MSmits: whats a constexpr array?
Counterbalance: you could even use a template<> inline function()
MSmits: just a const?
Counterbalance: better
MSmits: ah ok
MSmits: so, for my next question
Counterbalance: constexpr's are really compile-time constant, const kind of
MSmits: what if I have boolean that is changed only once in the entire run of the program, but is not constant. Yet I have a lot of if statements that refer to this boolean. Will this slow me down at all?
Counterbalance: (const int foo = 0; will still create a variable on the stack; constexpr int foo = 0 doesn't)
MSmits: kk, will try that, thanks
Counterbalance: It'll slow you down a little, I suppose, but probably not enough to change the approach. If the variable is referenced a lot it's likely cached. But every memory compare + jump does take a little time. If it's not changed in a function you could create a const copy of it (on the stack), that might speed it up a little.
Counterbalance: Is it a win-condition check or something?
MSmits: well say I expand 100k times during a uttt turn and in each expansion I do if(playerId == 0)
MSmits: the playerId is set at the start
MSmits: this is just the first thing that comes to mind, i ran into this many times
Counterbalance: aha, and you have an else // playerId == 1 aswell?
MSmits: well there is automatically an else if it affects what comes after. For the compiler it doesn't matter if there is an else or not
MSmits: it's branching either way
Counterbalance: you _could_ define the function as a template and pass the playerid as a template param, that way the compiler optimizes the ifs out
MSmits: you mean they become two different functions?
Counterbalance: template<int playerId> calculate(...) {}
MSmits: one for p1 and one for p2?
Counterbalance: yes
MSmits: interesting
MSmits: I never used a template before tbh
Counterbalance: the caller would do if (playerId == 0) calculate<0>(..) else calculate<1>(..)
Counterbalance: (the template param has to be a compile-time constant so you can't do calculate<playerId>(..), I think)
accorp: trade off - memory
Skril: if the condition doesn't change during the game, branch prediction should kick in and reduce the cost of the test
MSmits: memory to store functions in you mean accorp?
ZarthaxX: i guess he did
MSmits: Skril that is what i was wondering about, does branch prediction work that well in this situation
ZarthaxX: why woudlnt
MSmits: i have no idea, i know what branch prediction is sort of, but no idea how it works in detail
MSmits: where does it even keep the stats
ZarthaxX: i saw that last year
ZarthaxX: a hardware table
ZarthaxX: it's quite amazing
Skril: it's done at cpu level
MSmits: seems magic to me
dbdr: it's part of the CPU
ZarthaxX: has like a fsm
ZarthaxX: made in hardware
MSmits: fsm?
Skril: it recognises patterns
ZarthaxX: finite state machine
MSmits: ah
ZarthaxX: just 4 cases
Skril: it starts execution code for the prediction it does for the test
dbdr: also branch locations are hashes
ZarthaxX: that's the states
dbdr: with a small width like say 8 bits, so you definitely get collisions
ZarthaxX: it's from wikipedia anyway
MSmits: mmh ok
dbdr: so depending on one byte shift in your code, you will get collisions or not
dbdr: and very diffrerent perf
dbdr: fun
MSmits: I see
Uljahn: isn't it NN based in recent CPU architectures?
MSmits: well, I am now ranked 179 in silver with a bot that only shoots torpedos all the time and never uses any other action. Also ignores all mines
ZarthaxX: i think
ZarthaxX: good
MSmits: yeah :)
dbdr: MSmits but it tracks the opponent perfectly, I'm sure
MSmits: It probably does, I changed it to break from the update loop as soon as it loses all positions
MSmits: which crashes the bot
dbdr: yeah, that's a great debugging opportunity
MSmits: all my losses seem to be death from torpedo and mines
MSmits: do people use sonar?
dbdr: what else, surface? ;)
ZarthaxX: he meant his crash
MSmits: surface maybe... but dont see it that often
dbdr: I do. but I did not tune my actions much
accorp: Counterbalance, you didn't finish your take on templates...
MSmits: just wondering if sonar is a common top bot-action
MSmits: or if it is like archers in code royale :)
dbdr: not really I think
MSmits: do you think it might help when you detect an opponent that doesn't care about killing you, just tries to out-silence you?
MSmits: then your own silence is useless
dbdr: I might be wrong pb uses sonar too
Counterbalance: oh well, your point about double the code size is very valid; it depends on the compiler and cpu whether one is faster than the other
MSmits: and you may be better off sonaring
dbdr: it would be if it's a top strategy
Counterbalance: but, premature optimisation is the source of all evil, so get it right first and then see if you need to resort to compiler tricks ;)
MSmits: true Counterbalance. I just do all these simple board games so often that I quickly run into questions like this
dbdr: are you saying that to MSmitsboard? :upside_down:
Counterbalance: you guys say BUG a lot - makes it hard to search the console output for bugreports
accorp: this is just academic :) is it just perfect for the template to boolean?
Counterbalance: They're fun though, right MSmits?
MSmits: very
MSmits: this is sort of like a boardgame. It's quite simple compared to most contests. I dont mean simple to play, but very few rules. I like it
Counterbalance: I detest copy-paste code, because I spend a lot of time cleaning up other people's mess at work. Fix a bug, then it turns out the code is copy-pasted 5 more places so I have to do the same thing 5 times, and that's 4 times too many
MSmits: I detest it too, I am just not that experienced in preventing it
MostComplicatedUsername: Hm
MostComplicatedUsername: Function
Counterbalance: if you want really fast code then it's very hard to avoid.. I changed my pos = cur + direction[dir] approach to 4 blocks in another multi and got 20% speed increase, so there's definitely something to say for it under certain circumstances
MSmits: yeah! Thats exactly why it bothers me
accorp: isn't the ugliest of things? :D
MostComplicatedUsername: AHA
MostComplicatedUsername: Im dum
MSmits: but smart enough to realize it
MostComplicatedUsername: ;/
MSmits: it's a sad state to be in
MostComplicatedUsername: YEah
MSmits: better be even dumber and not know it
MostComplicatedUsername: Ignorance is bliss
MostComplicatedUsername: I was surfacing constantly
MSmits: being dumb is like being dead. It's only painful for others - Ricky Gervais
Counterbalance: lol
MostComplicatedUsername: And I realized that I wasn't resetting the trail once I surfaced
accorp: best to know where you stand at
MSmits: MostComplicatedUsername then I was much dumber
MostComplicatedUsername: ?
MSmits: I read the statement carefully and concluded that you can teleport anywhere you have visited when you surface
MostComplicatedUsername: lol
ZarthaxX: Counterbalance how is those 4 blocks
ZarthaxX: idea
MSmits: By using surface you will reset your path of visited cells so that you can freely move to a cell that you have previously visited.
MostComplicatedUsername: yeah
MSmits: freely move to a cell -> teleport!!!
MostComplicatedUsername: :)
MostComplicatedUsername: makes sense
Counterbalance: { pos.y --; foo(); } // up { pos.y+=2; foo(); } // down .. ZarthaxX
ZarthaxX: but you need ifs?
ZarthaxX: or what
MSmits: it's basically like manually unrolling a loop
Counterbalance: yeah you do, for bounds checks...
accorp: +2?
ZarthaxX: wait
Counterbalance: yes because you did y-- before..
ZarthaxX: u apply one, call, apply other, call
ZarthaxX: that way?
Counterbalance: the foo() is just a placeholder for basically the same code again and again
ZarthaxX: oh god ugly
Counterbalance: normally you'd do foreach (dir) { next = cur + directions[dir]; if (next.inBounds()) foo(); } but that is slower
accorp: MISRA is coming for you...
MostComplicatedUsername: Something odd is happening...
MSmits: a game with a lot of BFS for example right Counterbalance
MSmits: like Xmas rush
MSmits: or maybe kutulu
MSmits: actually very many CG games
AntiSquid: https://politics.theonion.com/trump-announces-plan-to-retrain-nation-s-3-million-unem-1842531861
MSmits: i know he's an idiot lol... but that seems fake
MSmits: does theonion.com always make funny fake stuff?
AntiSquid: MSmits https://sports.theonion.com/kansas-basketball-devastated-they-won-t-get-opportunity-1842384226
AntiSquid: that's what it's known for
MostComplicatedUsername: https://www.codingame.com/replay/443278137
MostComplicatedUsername: longest I've ever survived
MSmits: ah ok
AntiSquid: but i bet it crossed his mind to say it at least once :D
MSmits: it gets really confusing when the subject is trump. You have to try hard to make a story so ridiculous people wont think it's real
AntiSquid: MSmits all this complaining about trump makes me wonder if people forget that Biden has dementia
MSmits: I did not forget it
MSmits: I really dislike that he is winning
AntiSquid: it's like most american presidents are senile to some degree
accorp: AntiSquid, the COVID situation seems to be troubling you?
MSmits: Bernie would have been pretty smart
MSmits: he's older than either of them isnt it
MSmits: isnt he?
AntiSquid: nah, i like reading weird stuff accorp
MostComplicatedUsername: Politics...?
AntiSquid: why not
AntiSquid: it's fun
MostComplicatedUsername: :\
AntiSquid: next month we might just get hit by an asteroid so whatever
MSmits: I bet you cross a road without looking also :P
AntiSquid: a car can cross the sidewalk without the driver looking, what's your point? :p
MSmits: thats what I thought :P
accorp: :D
AntiSquid: in fact . there was a carer hit by a bus next to the street lights just on a street near where i live MSmits
MSmits: a carer?
MSmits: you mean like a nurse?
AntiSquid: she was on the side walk
AntiSquid: no, nurses have degrees
AntiSquid: carers just assist
MSmits: ahh a low level nurse
MSmits: like wood 2
accorp: this is getting dark pretty fast
AntiSquid: not considered a nurse
MSmits: hmm ok
MSmits: what is it icecream17
AntiSquid: but the point is she was on the sidewalk when the bus hit her MSmits
MSmits: did i say something insensitive?
MSmits: didnt mean to
AntiSquid: calling her wood 2
MSmits: oh ok, is that offensive? Many players are in wood 2
MSmits: they are players too
AntiSquid: i was just bringing it up to show life can screw you over regardless
MSmits: it can yes
AntiSquid: she is fine though
MSmits: good
AntiSquid: i mean she recovered
MSmits: it's another less person in the healthcare system though... not good
MSmits: while she recovers that is
MSmits: all those shortages on masks and such dont help either, docs and nurses get sick too
accorp: AntiSquid, do you fear death?
AntiSquid: you mean if i am worried right now?
AntiSquid: no
AntiSquid: not at the moment anyway, but this year has been crazy
MSmits: yes
accorp: are you drunk right now? :D
AntiSquid: no
accorp: good
MSmits: no accorp he's always like this
AntiSquid: what are you on about accorp
AntiSquid: lik what MSmits ? you made the wood joke about someone who got hit by a bus
MSmits: I'm just messing with you AntiSquid
accorp: you post a lot of stuff, talking in a certain direction
AntiSquid: i am bored
MSmits: it's just late at night, we're tired less inhibitions, more stupid stuff said :P
accorp: oh, I get it
AntiSquid: find a different subject that's more entertaining and i will go along with it
AntiSquid: i hope aliens abduct MSmits
MSmits: being tired is like being drunk
MSmits: me too
AntiSquid: ya good riddance
MSmits: btw, I have a plan for being abducted
MSmits: I'm much smarter than all those other people
MSmits: when I get abducted
MSmits: I will pick up a piece of alien tech
MSmits: off a shelf
MSmits: and prove aliens exist
accorp: one less person to demote me down
accorp: i hear yoy
accorp: you*
AntiSquid: oh please if something like that really visits earth crossing interstellar space they could just pick up humans like rats that can't fight back
icecream17: but why aliens do that
MSmits: yes, but they always bring you back home after they're done with their rectal exams dont they?
AntiSquid: idk
AntiSquid: have no experience with such things
MSmits: this just hearsay ofc
icecream17: they would have to be smart right? i wonder what aliens programmers are like.
accorp: ffs :D
MSmits: probably they dont have them
Counterbalance: nor shelves
MSmits: they just have a single neural network
AntiSquid: icecream17 we abduct animals to experiemnt on them and tag them, so naturally one of the theories or made up stories would be about the same thing
icecream17: what? that's horrible. now i don't like aliens.
aangairbender: yey my c# script for merging project into single file is working
MostComplicatedUsername: you guys have the weirdest discussions
AntiSquid: maybe they had their own human soup and suffer from some virus too icecream17
AntiSquid: humans carry diseases too
MSmits: MostComplicatedUsername just at this time of day
MostComplicatedUsername: :expressionless:
AntiSquid: MostComplicatedUsername it's ok everything is under control, i am a professional moderator
MostComplicatedUsername: :expressionless:
AntiSquid: and how was your day MostComplicatedUsername
MostComplicatedUsername: Normal
AntiSquid: wow how dull
MSmits: dull is good
MostComplicatedUsername: Well, school closed, not much to do
MSmits: oh you're in school
AntiSquid: highschool or uni ?
icecream17: I wish everyday was not a normal day. I have online learning
ZarthaxX: closed?
AntiSquid: might be one of your students MSmits
ZarthaxX: not even virtual classes?
MostComplicatedUsername: 12 grade
MSmits: he's in the US
MostComplicatedUsername: Yes there are online classes
MostComplicatedUsername: SHe
MSmits: I dont have students there
AntiSquid: hey MostComplicatedUsername do you have a lazy physics teacher that skips classes and programs bots?
MostComplicatedUsername: No
MSmits: lol
AntiSquid: oh ok
Counterbalance: nice one
ZarthaxX: MSmits explain
MSmits: hey I dont just teach physics
icecream17: i wonder where that question came from
MSmits: what ZarthaxX
accorp: https://www.youtube.com/watch?v=lr_tEdQvFcc
ZarthaxX: you are doing virtuual clases?
ZarthaxX: classes
icecream17: no, just assignments
MSmits: yeah, kinda, but I am a bit lucky. I did some experiments along that line last year and the classes that are still going right now are just in that period of the year where i can use material from those experiments. Like Youtube videos
MSmits: so i dont have to do that much
MSmits: but i am going to write two google forms tomorrow to ask some questions during an online class (on google chat)
MSmits: they make pictures of their homework and hand them in as well
MSmits: written by hand ofc
MostComplicatedUsername: Hmm
ZarthaxX: oh nice
MostComplicatedUsername: Seems a bit inefficient
MSmits: physics is not that easy to do digitally
MSmits: equations and such
MostComplicatedUsername: What kind of hw do you give?
MostComplicatedUsername: Like, wksts, etc...
MSmits: we're doing biophysics now
MSmits: mostly about human senses
MSmits: hearing, decibel calculations etc.
MostComplicatedUsername: But do you post problems online?
MSmits: they have books. I refer to the chapters and problems
MostComplicatedUsername: Ohhhhhh
MostComplicatedUsername: I see
MSmits: they write the answers, make a photo
MostComplicatedUsername: Google docs?
MSmits: we do google classroom
MSmits: you can submit files
MSmits: as a student
MSmits: I check them
MostComplicatedUsername: Ik
MSmits: see if they did it seriously
MostComplicatedUsername: But wouldn't google docs be easier for them?
MSmits: dont think so
MSmits: writing equations and calculations takes more effort
MSmits: easier on paper
MostComplicatedUsername: Yeah
MostComplicatedUsername: I was just thinking of having to take a picture of each page and post it
MSmits: there are not that many pages, 1-3 photos per week
MostComplicatedUsername: yeah
MSmits: they only have my class 3 hrs a week
AntiSquid: 1-3 student selfies per week? Automaton2000 what's going on in this chat?
Automaton2000: i found a bug in my code but i don't think there's a lot of fun
JBM: streaming more Haskell editing to silence back to the same effects (or so I hope): https://www.twitch.tv/cg_jbm/
Zenoscave: there's tons of fun
MSmits: per student ofc AntiSquid for that particular subject i have 47 students
MostComplicatedUsername: Yay my bot can move randomly...
AntiSquid: well done
MSmits: my CS class ends tomorrow and my graduation year physics class has also ended, because the graduation exams were cancelled
MostComplicatedUsername: Thank you...
MSmits: so I only work half time basically
MostComplicatedUsername: We still have our AP exams
MostComplicatedUsername: unfortunately
MostComplicatedUsername: But a lot of the content was cut out, everything that would have been taught after march
AntiSquid: some junior doctors feel a bit relieved because school is closed, more time to prepare for exams
MSmits: makes sense, though that makes me question the effectiveness of the school
MSmits: isnt the school supposed to prepare you for exams?
icecream17: in texas exams are closed
MostComplicatedUsername: Yeah
MostComplicatedUsername: But teaching is harder
MostComplicatedUsername: no in CA
AntiSquid: MSmits you've been a teacher for a long time, don't you ever think that the system needs a bit of rethinking and that it's outdated?
MostComplicatedUsername: So the college board has decided
MostComplicatedUsername: to cut it out
MSmits: is texas the state where the governor or senator decided it's ok to let some old people die for the sake of the economy?
MSmits: AntiSquid sure, there's much to improve
icecream17: like the cafeteria XD
icecream17: "official-suggests-elderly-willing-die-economy" gosh...
BeeGee: Sounds like Brazil
MSmits: there's video too, you can probably find it on youtube... pretty sick I think
MSmits: it's not even taken out of context or anything... that's just what some people think
AntiSquid: ya idk, it's kinda weird and backward it's like those governments want old people to die
icecream17: i better check the us coronavirus thing
MSmits: sounds like it yeah
AntiSquid: everyone was initially boycotting china that they secretly spread the virus to have an excuse to kill dissenters and old people, but now they are quiet about their own governments
MSmits: on fox news they still call it the "china virus"
icecream17: US cases: this morning 105 thousand
MSmits: or the "foreign virus"
AntiSquid: MSmits i think that's irrelevant
MSmits: like the virus has a nationality
AntiSquid: spanish flu / china flu / uk flu / they can even call it after me, it's beside the point to argue about it
MSmits: icecream17 yes, there's a difference between the positively tested amount and the actual amount
ZarthaxX: icecream17 they are rockin
MSmits: you can be sure there's many 100k's , maybe a million
icecream17: two red comments in a row
AntiSquid: icecream17 what's your favorite icecream
AntiSquid: have you tried red wine ice cream?
icecream17: mint chocolate or cookies and cream or caramel or ....i'm an 8th grader
icecream17: When I searched google for favorite foods ice cream was there somehow that's why
MostComplicatedUsername: ah
icecream17: wow, now i want to eat ice cream. mmm. everyone deserrve an icecream lol
icecream17: i realize that my "most" moves mover works the wrong way but also correctly
MostComplicatedUsername: Should I come up with a path before the game loop and just print each item in the list during the game loops?
icecream17: Most moves = N, -> move E
icecream17: Huh, that's an interesting idea. My thing is mostly deterministic except for charges and silence and mine.
icecream17: Wow, no tyops this time.
MostComplicatedUsername: YEah
MostComplicatedUsername: Then I just have to keep track of the opponent
MSmits: did you just make a typo in the word typo icecream17?
MostComplicatedUsername: nice lol
AntiSquid: typhos
icecream17: think I would timeout if I tried to premove. Plus, I never make it to turn 600....
MostComplicatedUsername: Well
MostComplicatedUsername: TUrn 1
MostComplicatedUsername: Response time is 20 times
MostComplicatedUsername: Longer
icecream17: Turn 0 = Start on 7th square, "2988ms"
Counterbalance: you start measuring too soon
Counterbalance: do it after you have read the first line of the turn input
MostComplicatedUsername: The way I keep track of the enemy's positions
MostComplicatedUsername: Is
MostComplicatedUsername: I have a list of possible positions
MostComplicatedUsername: And update it every turn
MostComplicatedUsername: And I can narrow it ever time the opponent surfaces
MostComplicatedUsername: every*
MostComplicatedUsername: the problem with that is
MostComplicatedUsername: For each "starting" position of my opponent
icecream17: every time the opponent surfaces?
MostComplicatedUsername: I have to have a list
Counterbalance: i don't have a list
MostComplicatedUsername: And more and more lists as more paths are created
MostComplicatedUsername: I can occasionally delete lists when some are proven impossible
struct: what language MostComplicatedUsername?
icecream17: oh I do "move", "torpedo", "my torpedo", "surface", and "ohno (silence)"
MostComplicatedUsername: Python
icecream17: python is suppossed to be eaiser than js, but i learned js first and so python is hard.
MostComplicatedUsername: Oh
MostComplicatedUsername: I haven't actually typed up my idea
MostComplicatedUsername: -_-
icecream17: I'm working on moving (still) and mine for bronze
MostComplicatedUsername: Oh
MostComplicatedUsername: Im in wood 2 still
MostComplicatedUsername: I only have random moving rn
MostComplicatedUsername: Im mainly working on CSB rn
icecream17: Move up if you can, then left if you can, then right if you can, then down if you can.
MostComplicatedUsername: That's what I do
MostComplicatedUsername: For back to the
MostComplicatedUsername: I mean
MostComplicatedUsername: Tron battle
MostComplicatedUsername: rip
Counterbalance: yay wood1
MostComplicatedUsername: https://www.codingame.com/share-replay/443292531
icecream17: Good job Counterbalance!
Counterbalance: nasty bugs!
icecream17: Take a pad and write out explanations for every major function
MostComplicatedUsername: A pad?
icecream17: It made me realize how bad I am.... (notepad or paper or wall, doesn't matter)
Counterbalance: by bot keeps torpedoing itself
icecream17: how does your torpedoing work
ZarthaxX: lol
Counterbalance: well enough so far, curiously enough
icecream17: think of all the ways torpedoing can be pronounced
Counterbalance: yeah, I wanted to write torpedoeing but not sure that's correct either
icecream17: maybe it's just "torpedo"
icecream17: I wish I could make my own maps
icecream17: I can change the seed, but I don't know how the seed number works
icecream17: seed=0000000000000000000 has islands still....
Counterbalance: you could if you added that to the referee.. some other games have options for that
MostComplicatedUsername: maybe
MostComplicatedUsername: You should\
MostComplicatedUsername: Do an experiment
icecream17: I looked in the code and it says it adds "random" islands so I definitely don't know how it works
MostComplicatedUsername: Come up with
icecream17: https://github.com/CodinGameCommunity/ocean-of-code/blob/master/src/main/java/com/codingame/game/GridManager.java
MostComplicatedUsername: 200 random seeds
AntiSquid: "bot keeps torpedoing itself" Counterbalance no obscenity in the chat please
MostComplicatedUsername: Then try each out
MostComplicatedUsername: Then figure out how the seed relates to the islands
MostComplicatedUsername: Sigh
MostComplicatedUsername: Automaton2000 fix AntiSquid
Automaton2000: you are good at it
MostComplicatedUsername: Wow thx
icecream17: anyone in java, what does rand.nextInt(15); do?
ZarthaxX: google it :P
MostComplicatedUsername: learnxinyminutes.com
icecream17: seed=0000000000000000001 is completely different!!!!!!!!
icecream17: How am I ever going to figure this out?
MostComplicatedUsername: https://www.codingame.com/share-replay/443294793
MostComplicatedUsername: First time every
MostComplicatedUsername: ever*
MostComplicatedUsername: winning against the boss
MostComplicatedUsername: My CSB code 307 lines
MostComplicatedUsername: I could probably make it shorter
Counterbalance: mine's 3000 lines
Counterbalance: that could definitely be shorter :)
MSmits: wait... your csb bot is 3000 lines !?
Counterbalance: yup
ZarthaxX: no bugs at all?
MSmits: I write very long bots and mine is like 1200 lines
MSmits: what is taking up so much space?
MostComplicatedUsername: Dang
MSmits: I sometimes go over 2k with complicated games, but never 3k
ZarthaxX: like this one
ZarthaxX: :D
MSmits: 1185 so far
MSmits: but I am not tracking or using mines, not using silence or sonar either
icecream17: wow makes my 573 lines sound bad
Counterbalance: it has 1400 lines of shared library code with a lot of #ifdefs for different bots
MSmits: my goals for tomorrow: 1) Make smart ability charging code. 2) stop torpedo-ing everything in sight, 3) use silence and mines
MSmits: oh, it's more than one bot
Counterbalance: that part of the code is used in more than one bot, yes
icecream17: I do silence or mine, randomly, if the opponent doesn't torpedo for 5+ moves
Counterbalance: it also has local stuff, like generating an AVI replay, param fiddling etc..
MSmits: whats an AVI replay?
Counterbalance: video file format
MSmits: damn
ZarthaxX: the fuck
MSmits: this is too pro for me
Counterbalance: it outputs an image for each frame that gets turned into a movie using ffmpeg
ZarthaxX: u have lots of goals MSmits
MSmits: for this contest? Yes, my list has 12 goals currently, but those 3 are for tomorrow
MSmits: many of the 12 goals will end up having many subgoals. Plenty to do
MostComplicatedUsername: Counterbalance Why
icecream17: the reason i always have something to improve on is because my code is bad
MostComplicatedUsername: lol
MSmits: Counterbalance how do you get the images?
MSmits: from the referee?
MSmits: also do you do this for every game?
struct: wtf
Counterbalance: no just drawn using lines and circles etc - also part of the bot
struct: avi
MSmits: ahh
struct: my current csb bot is 1700 lines with no search
MSmits: thats because your avx code bloats things
ZarthaxX: lol
struct: let me check
ZarthaxX: who has the largest code
struct: how many lines is avx library
struct: 900 lines
MSmits: ah see
icecream17: I enlarged my page size. Now *I* have the largest code!
struct: also lots of functions i dont use
struct: but I added them anyways
MSmits: I see
MSmits: compiler will remove them I guess
Counterbalance: at 8 9 my bot does MOVE S TORPEDO|TORPEDO 8 10 Lost 2 lives.
struct: self destruct
MSmits: nice job
Counterbalance: it's as player 2.. it's almost like... hmm
MSmits: next turn, the other guy crashes because his tracking system can't handle your crazy
MostComplicatedUsername: I love it when
MostComplicatedUsername: I make the boss crash
MSmits: Counterbalance ah i get it. Your bot thinks it's always player 1 and it tries to kill player 2 even if that's you
Counterbalance: it looks like it
MSmits: btw, Counterbalance, there's a Dutchie at nr 1. Let's make it a top 3 Netherlands only situation
icecream17: "seed=1234567890123456789 " seems really good for debugging
Counterbalance: yeah i saw let's try!
icecream17: In bronze top 5 is all france....
MSmits: around half the players are usually French :)
MSmits: CG is a French company
Zenoscave: this would be a binomial distribution. french not french
YannT: yeah we're just more numerous really :p
YannT: also we have recurse who counts as semi-french
YannT: french adjacent
MostComplicatedUsername: https://www.codingame.com/replay/443300205
Zenoscave: Lol true
struct: semi french
AntiSquid: my bot is still at < 500 lines
MSmits: good job MostComplicatedUsername, you showed him
MostComplicatedUsername: Ik right
YannT: I think he's technically french canadian, so yeah, adjacent ;)
MostComplicatedUsername: Random moving
Zenoscave: Still only a ~3% change of the top 5 all being French if half the server is French
MSmits: there's a selection effect though. He would only say it at the moment it is true
YannT: Cpy. Levine really got nerfed since I saw him ahah
MSmits: he would not also say it 97 times when it's not true
Zenoscave: I don't understand your staement MSmits
MSmits: the boss always blew himself up
MSmits: Zenoscave it's like this
YannT: didn't use too before nerf
MSmits: the top 5 changes all day right
YannT: he'd actually aim
Zenoscave: Correct
MSmits: so 3% of the time it has 5 French players
Zenoscave: in the top 5
MSmits: at all the times it hasn't, noone says anything
MSmits: yes
Zenoscave: Oh so observation bias?
MSmits: ah yes, i should have said that
Zenoscave: I was just going of statistics.
MSmits: yeah
Zenoscave: 0.5^5 = ~0.03
MSmits: got that
Zenoscave: Then we agree in different words
MSmits: it would be more special if it was the top 5 in silver
MSmits: because its more stable
Zenoscave: True
MSmits: bronze changes all the time because people get promoted
Zenoscave: Plus this doesn't take effect of the distribution of French to non french player ranks
MSmits: true
Zenoscave: If the top players are all French it would greatly increase the distribution
struct: We need to prevent it
MSmits: this is also why people always think you absolutely need c++ to win a contest
Zenoscave: I'll be right back writing a script
MSmits: because that simply is what the top players use. Not because you can only win when you use it
Zenoscave: I just had a brilliant idea for a Forum post
MSmits: uh oh
MSmits: :worried:
Zenoscave: Gonna do a country and language Statistical ranking
struct: This was seen before
MSmits: ohh interesting
struct: They used to share those stats on older contests
YannT: real talk, you might need C++ to rank very high in the multi games, but during a contezst language usually really isn't the limiting factor
Zenoscave: I remember struct but did that was a static Country X ranks higher typically than country Y
MSmits: YannT not even in all multi games. Some just dont require performance, or a small change in algorithm has such a large effect that performance effects become negligible
YannT: true :)
Zenoscave: Plus lang wrappers...
Zenoscave: where's the curse when this discussion pulls up
MSmits: you can be sure that all those simple board games require c++ or similar, or wrapped
YannT: I passed UTTT legend with Kotlin tho, and it was honestly more of a challenge because JVM, doable fore sure, just more work by default
MSmits: I think he's avoiding CG until he has time to compete in the contest
struct: but some really require performance
YannT: but this is a pure optimization contest
MSmits: it's frustrating when you have to work on other things
YannT: multi*
Zenoscave: I finished midterms today.
Zenoscave: I'm good for a week
MSmits: grats Zenoscave
Zenoscave: thx
Zenoscave: but not grats. I did horribly on one
MSmits: YannT, not entirely. There's some strategy involved as well
struct: if there are 2 python bots at top 10
MSmits: also some inefficiency in your algorithm may make it 10x slower whereas c++ only gives a 2 or 3x boost
Zenoscave: 65/100 was my score. dropped me from an A to barely above D
struct: its not all about performance
MSmits: as long as you pass Zenoscave
MSmits: you'll never look back at these scores. What you take with you is your degree and what you learned
Zenoscave: I learned not to take a networks class online
Zenoscave: Ironically
MSmits: oh, sounds like my internet security class
MSmits: I am finishing that in 2 weeks
Zenoscave: Just OSI models TCP protos and other such nonsense
MSmits: had to do a ddos attack last week
Zenoscave: you did UDP yes?
struct: so we found out who took cg chat down
YannT: MSmits: on UTTT very little, it's mostly optimization
MSmits: yeah UDP TCP
MSmits: YannT, not entirely though. You can easily get to legend with good optim and mcts with totally random rollout
MSmits: you can be sure that's not what the top 10 does. They have more tricks
struct: yeah
MSmits: but yea, forget this with java
MSmits: even the tricks wont help you enough
struct: if my bot had 80k rolouts i probably would only climb to top 30
MSmits: top 30 sounds about right yes
YannT: well, I did legend on JVM, and my point is that was more work that would have been required on other languages
MSmits: my bot has 90-130k
MSmits: and if i submit it now it's nr 1
MSmits: but waiting on some more improvements
MSmits: i did legend on C# YannT
MSmits: but converted after
YannT: case in point :)
MSmits: yes
YannT: many multi are not optim ones tho
YannT: that one clearly is!
MSmits: it is probably the most extreme example
MSmits: oware would be another
MSmits: bandas probably
MSmits: yavalath not so much
YannT: and, that level of oiptim really doesn't exist during contests (unless you aim for #1)
YannT: so language is not limiting on contests, generally speaking
MSmits: depends on the contest
YannT: it only is for ranking first on multi :p
MSmits: I'm pretty sure I had the most optimized bot on code a la mode in the top 10. But I was only rank 8 and the nr 1 was completely heuristic :P
struct: I think Bit runner is one of the multi its impossible to get legend without c++
MSmits: yeah might be true struct
smeagol: Hi
struct: hi
smeagol: MSmits: do you use simulation algos ?
MSmits: yeah, but that's a very broad question
YannT: MSmits: again, case in point ;)
Counterbalance: STC is also a good candidate
aangairbender: i guess this contest was meant
struct: no Counterbalance you are mistaken
MSmits: eulerscheZahl has a very high rank in STC
YannT: maybe as a multi getting to the top will require crazy performance and an assembly bot or something, but during a contest it generally doesn't really matter
struct: C# bot of euler places around same rank as his c++ bot
smeagol: STC ? STMC
MSmits: he is not known for writing super optimized bots
MSmits: maybe he did that time though, not sure
smeagol: searc tree monte carlo?
struct: I think he has around 600k sims
smeagol: 600k: it's very much
MSmits: smeagol in this contest? No, not mcts
smeagol: AG
struct: we were talking about STC
smeagol: MC
struct: smash the code
MSmits: just processing opponent orders eliminating possible locations and paths and such
YannT: I think in the current contest everyone is heuristic (or close to it)
smeagol: MS: this heuristic algo
smeagol: for navigation, what are you using algo ?
smeagol: the most path doesn't work
YannT: minimize ennemy detection
smeagol: beaucause it eliminate the most possibities
YannT: (and available space after move)
smeagol: whith degree
YannT: taking a path that visits every cell is actually not a good idea
YannT: the best idea is to sometimes eat a surface to have better tiles
YannT: (well, it is a good first idea, but you come back from it)
smeagol: better tiles (in french ?)
smeagol: Salut MAD
smeagol: comment vas tu?
YannT: minimise la détection ennemie et fait des mouvements qui te laissent le plus de cases dispo pour après ;)
YannT: (sorry)
smeagol: le plus de cases : c'est toujours le meme nombre
smeagol: ah oui je voix
YannT: you try not to cut the map
smeagol: pour les mouvements suivants
YannT: yes
smeagol: merci YannT
MSmits: gonna get some sleep, gn
YannT: gn man
ZarthaxX: gn!
FloopyBirdMan: you are a buttcheak
smeagol: gn!
MostComplicatedUsername: hum
MostComplicatedUsername: I can't really think of a good strategy for moving
BenjaminUrquhart: have you tried
BenjaminUrquhart: moving
MostComplicatedUsername: YEs
MostComplicatedUsername: Rn just random movement
MostComplicatedUsername: Seems to work well enough ;)
MostComplicatedUsername: https://www.codingame.com/share-replay/443310969
MostComplicatedUsername: But I need something
MostComplicatedUsername: That
MostComplicatedUsername: Wait
MostComplicatedUsername: lemme rephrase
MostComplicatedUsername: I need some way to move that increases the amount of time before I surface
aangairbender: go to the cell that gives the most flood value
MostComplicatedUsername: ???
aangairbender: by flood value I mean how many connected free cells are there from next cell
MostComplicatedUsername: English please
MostComplicatedUsername: Oh
MostComplicatedUsername: I see
MostComplicatedUsername: But that...
MostComplicatedUsername: Takes work
MostComplicatedUsername: And im lazy
MostComplicatedUsername: So I'll probably start trying
MostComplicatedUsername: but then stop
aangairbender: 20 lines of floodfill
aangairbender: just bfs
MostComplicatedUsername: I have no idea how to do any of that
BenjaminUrquhart: keep in mind my bot is broken as hell rn https://www.codingame.com/replay/443312702
MostComplicatedUsername: Im a nub
MostComplicatedUsername: Hmmm how do you keep track of opponent?
BenjaminUrquhart: process of elimination
BenjaminUrquhart: and hoping I don't divide by zero again
MostComplicatedUsername: My idea is to keep track of possible paths the opponent is taking and use POE
aangairbender: keep all possible enemy positions
aangairbender: and update them after enemy moves
MostComplicatedUsername: Now I just have to write the code
aangairbender: right
MostComplicatedUsername: Argh
MostComplicatedUsername: My least favorite part
BenjaminUrquhart: my tracker breaks when tracking torpedos, so that's fun
MostComplicatedUsername: Why bother tracking torpedoes? They're instantaneous, right?
BenjaminUrquhart: well because the opponent needs to be within 4 units
MostComplicatedUsername: Oh I see
MostComplicatedUsername: So you can narrow the opponent's position
BenjaminUrquhart: exactly
MostComplicatedUsername: Manhattan distance is annoying
BenjaminUrquhart: just bfs
BenjaminUrquhart: smh
aangairbender: abs(ax - bx) + abs(bx - by)
aangairbender: easy
aangairbender: i meant ay - by
BenjaminUrquhart: I mean
BenjaminUrquhart: yes
MostComplicatedUsername: what is ay?
MostComplicatedUsername: And by?
MostComplicatedUsername: confused
aangairbender: coordinates
MostComplicatedUsername: Oh wait
MostComplicatedUsername: Im dum
BenjaminUrquhart: a and b are the 2 points you are comparing
aangairbender: a.x a.y b.x b.y
MostComplicatedUsername: Ik
MostComplicatedUsername: The variable names messed me up\
MostComplicatedUsername: We don't recieve opponent starting position, right? That would be too easy
BenjaminUrquhart: nope
MostComplicatedUsername: receive*
MostComplicatedUsername: ok
BenjaminUrquhart: games would end in like 20 frames
MostComplicatedUsername: yeah
MostComplicatedUsername: too easy
MostComplicatedUsername: Dang
MostComplicatedUsername: I can't get this to work
MostComplicatedUsername: I think I might
MostComplicatedUsername: This is hard
struct: also manhattan distance cant really be used to track torpedo distance
BenjaminUrquhart: islands
BenjaminUrquhart: MostComplicatedUsername I spent several hours on it and it's still broken
BenjaminUrquhart: but it worked well enough for me to get to bronzee
struct: Well you can always check illedan stream to get ideaas
icecream17: where is the stream
MostComplicatedUsername: Discord?
struct: https://www.twitch.tv/videos/577567902
MostComplicatedUsername: Oh
BenjaminUrquhart: C# tho
struct: I think he explains
struct: you can check to get ideas
MostComplicatedUsername: Oh no
MostComplicatedUsername: Dang
MostComplicatedUsername: There goes my idea
MostComplicatedUsername: And then comes the moment of realization
MostComplicatedUsername: You realize
MostComplicatedUsername: That you've deleted 50 lines of code
MostComplicatedUsername: And
MostComplicatedUsername: Why am I even talking
MostComplicatedUsername: I've spent the last 10 min on the chat
MostComplicatedUsername: im still doing it
icecream17: If you don't write down an idea, you'll lose it.... =(
Zenoscave: anyone have euler's replay site link?