Chat:World/2020-04-11

From CG community
Jump to navigation Jump to search

jacek: happy Caturday

dbdr: happy Raturday

eulerscheZahl: oh, i got beaten up during the night :(

eulerscheZahl: and someone gave 1 star to jacek's paper soccer

dbdr: monitoring multi ratings eulerscheZahl?

dbdr: who's beating you up?

eulerscheZahl: from time to time. several games were downvoted

struct: yeah :(

eulerscheZahl: legend is beating me up

struct: I wonder if I even should finish yinsh tbh

struct: so many multies now

struct: even on pending list

struct: is like 4

eulerscheZahl: yeah, impressive

eulerscheZahl: moderating them is quite some effort

struct: especially during contest

eulerscheZahl: did anyone try codejam last night?

struct: No :(

eulerscheZahl: me neither, i decided to sleep

struct: has yurkov joined ooc long ago?

struct: only saw him now

eulerscheZahl: i think i saw him before

eulerscheZahl: https://github.com/dbdr/codingame-leaderboards/blob/master/challenge/ocean-of-code.tsv

struct: he is top 50 now

dbdr: that URL pings me :D

eulerscheZahl: guess how i feel with my github and herokuapp

dbdr: :nerd:

eulerscheZahl: i can even ping myself when i have multiple tabs open

dbdr: do they come up often?

eulerscheZahl: yes, when i share them :D

dbdr: :D

struct: dbdr you store leaderboards everyday?

dbdr: yes

struct: Now just need a website to choose dates and contest

dbdr: sure, this is the raw data, not user friendly

eulerscheZahl: there was such a website from adrien

dbdr: though github does a decent job of displaying tsv as a table

eulerscheZahl: but he stopped indexing

struct: Good job displaying yes

struct: but navigating is a bit meh

dbdr: I think it's the right architecture, separate the data from the visualization

dbdr: sure, it's not built for that

eulerscheZahl: https://www.adrienvannson.fr/cg-ranking/

dbdr: before the ranking v2?

eulerscheZahl: yeah, old one

eulerscheZahl: but it tracked your contest rating every 2h

dbdr: anyone could build a visualization on top of the github data, any good frontender?

eulerscheZahl: helped finding the "good one" again :D

dbdr: with agentid?

eulerscheZahl: your github data is 16 day old

dbdr: not anymore

eulerscheZahl: yes, agentId in the tooltips

dbdr: only the push is not automated yet

dbdr: should do it

eulerscheZahl: afk breakfast

struct: you want to just display leaderboard and navigation

struct: or something else?

dbdr: struct: a lot of things could be done with this data I think

struct: yeah

dbdr: just display the lb is fine but already on CG

dbdr: but graphing over time

struct: Can also check last agent id

dbdr: dayly/weekly/month changes, ...

struct: and see what changed

dbdr: right

kovi: uh, variance is still high

Default avatar.png Marcose: anyone?

dbdr: kovi same or a bit less?

kovi: same code 7th and now 1st (3points diff)

dbdr: at least there's more spread in points

struct: I havent used javascript in a while

struct: but i can give it a try

dbdr: if you feel like it, very cool struct!

eulerscheZahl: but don't forget about the contest

eulerscheZahl: i don't want you to delete your account again

struct: Im not doing the contest :/

eulerscheZahl: you said legend or delete

struct: :sweat:

kovi: legend and delete username is already taken. "not doing the contest" is accessible

dbdr: https://www.codingame.com/replay/447659206

dbdr: shows 30.73 for me. wonder where that number comes from

eulerscheZahl: gold

dbdr: looks like it

dbdr: but it gold it was updating

eulerscheZahl: that's your old bot

dbdr: they keep one score per league?

dbdr: forever?

eulerscheZahl: you need a replay with your most recent agent id

eulerscheZahl: the score will remain the same, it doesn't show a rank for old replays

dbdr: they keep the score of all agents?

eulerscheZahl: yes

dbdr: whatever for?

eulerscheZahl: bots are bound to an agent id, not to a user

dbdr: but past bots will never be shown

dbdr: keeping the source I understand

eulerscheZahl: fun fact: you can manually set the agent id of your opponent. and then play against kovis tower defense bot in OOC and make him believe that he's crashing :D

dbdr: :D

dbdr: build a universal bot

dbdr: detect which game it is playing based on the input

kovi: :)

dbdr: fit it in 100K too ...

eulerscheZahl: oh, kovi saw my idea now :(

dbdr: the meta multi

eulerscheZahl: well, still some other users to fool

dbdr: we should definitely build it

kovi: the ultimate leaderboard

dbdr: yes

dbdr: oh, eulerscheZahl has a trick, need to reverse it :)

eulerscheZahl: what trick?

dbdr: "kovi saw my idea"

dbdr: I thought that meant you implemented a cheese

eulerscheZahl: no, the bot from another game

dbdr: ah right

dbdr: hum, we will need to build a meta referee too

dbdr: any size limit?

eulerscheZahl: 10MB

eulerscheZahl: including graphics

dbdr: just copy all the referee in one and rand() to pick the game first :)

eulerscheZahl: and downscale the graphics

dbdr: yeah, worth it

dbdr: the variance on that metamulti :D

dbdr: yeah, I got lucky, playing PCR in this match

kovi: there are generic solvers... eg. one smitsimax with game specific eval

eulerscheZahl: will we tell players which game they play? or do they have to reverse the input format?

dbdr: right, a good motivation to factor some generic code

kovi: yeah reverse

dbdr: reverse

dbdr: more fun

dbdr: some might be amgiguous

dbdr: need to play both for some time

dbdr: inspired by OOC

dbdr: uncertainty to the next level

eulerscheZahl: isn't aCat working on that kind of generic bots?

dbdr: ah, can we send the referee source code as the first input? ;)

kovi: yeah, i remember he talked about that at locam

dbdr: yavalath is part of a generic game framework I think

dbdr: where the rules are data

jacek: ludi?

dbdr: yeah that one

jacek: youre talking about implementing general game playing?

dbdr: not general, just all the CG multis

eulerscheZahl: with regular updates to add new games

dbdr: yes

dbdr: keep up or you will timeout more

Default avatar.png navin89098909890: Hi

dbdr: a wait bot in everything would probably do quite well :)

eulerscheZahl: just don't crash

dbdr: xactly

dbdr: https://github.com/dbdr/codingame-leaderboards/blob/master/challenge/ocean-of-code.tsv why did I called the directory challenge? should be contest

dbdr: *call

AntiSquid: hi navin89098909890 join the contest

Neozero: I fcking did it Hahahaha

Neozero: :D

Nerchio: guys before i fell asleep yesterday I had a very important question pop in my mind

Neozero: I beat the TAN Network finally

Nerchio: in terms of strategy what is better - to start in the middle or on the outside in the ooc

eulerscheZahl: in the largest lake

Nerchio: that narrows it down for sure :D

AntiSquid: is there any reason pragmas could cause bugs? (C++) deactivating them makes my bot run just fine :/

AntiSquid: #pragma GCC optimize "O3,mavx2,omit-frame-pointer,inline,unroll-loops"

eulerscheZahl: the optim level might reveal existing bugs like not properly initialized variables

eulerscheZahl: memory layout might change too. so an index out of range for an array can have different behaviour

AntiSquid: are some bugs probably caused by lack of memory, doubt i reached the limit, but who knows

AntiSquid: any way to check how much i use from the total ?

eulerscheZahl: seems unlikely to me

AntiSquid: ok will check my variables then, thanks

eulerscheZahl: google, sorry i don't know it either

kovi: what euler said. +add bunch of logs and run the same code with/wo. check difference

pb4: AntiSquid : like eulerscheZahl said, O3 will not initialize variables to 0 by default

pb4: O0 will

pb4: hence some bugs appear with O3 only

AntiSquid: i use array_something = {0} to initialize

wlesavo: im trying to use java cg benchmark, the login is successful and after trying to start a game im getting this error [ wlesavo ][ SEED 0 ] ERROR internal error

wlesavo: can you advice what is wrong?

AntiSquid: which seed are you using

dbdr: wlesavo can you get the stack trace of the error? might put in the right direction

wlesavo: seed was random, but with list getting the same error

wlesavo: stack trace?

dbdr: "internal error" is a terrible message. should give some info about what went wrong and where

wlesavo: oh, maybe its because i use precompiled jar, ill try to rebuild, and then probably will comeback :slight_smile:

dbdr: does not sound likely to me

dbdr: maybe there's a configuration about how verbose the logs are?

dbdr: sorry I don't use cgbenchmark so I don't kno the specifics

wlesavo: hm

AntiSquid: did you use correct agentID ?

AntiSquid: i could send you my configuration file, if i find it, not sure where i placed it @_@

wlesavo: ok, it was due to space in Python 3, nwm :slight_smile:

Nagatwin: Antisquit I had an issue when using a pragma on my dfs, still haven't investigated why

Nagatwin: AntiSquid *

AntiSquid: well i found out the bug is related to eliminating possible enemy positions after torpedo shots

AntiSquid: i don't clean up the positions properly somewhere ... so it tries to access indexes it shouldn't

Nagatwin: uh rip

Nagatwin: xD

Nagatwin: https://www.codingame.com/share-replay/447931600

Nagatwin: "steering" stuff isn't for me i guess

YannT: ahah you made the default stub AI so much worse :D

dbdr: playing the same person several times in the first ten

dbdr: CG matchup algorithm could be improved...

AntiSquid: finally \o/

AntiSquid: too many variables Q_Q

dbdr: what did you achieve AntiSquid?

AntiSquid: i can correctly eliminate positions based on damage/explosions

dbdr: nice

eulerscheZahl: does that include path backtracking for mine placements on TRIGGER?

dbdr: "based on damage/explosions"

AntiSquid: no, just torpedo, but the new bot will have the trigger bit as well

dbdr: not part of the requirements ;)

eulerscheZahl: TRIGGER is an explosion too

AntiSquid: with the current arena bot i cut a lot of corners and do some very superficial checks

dbdr: true

eulerscheZahl: Illedan lat me win C# for once :/

AntiSquid: but will add mines too

Illedan: No.

AntiSquid: just get 1st place in contest euler, problem solved

Nagatwin: ah

Nagatwin: thats the 3v

eulerscheZahl: exactly :D

Nagatwin: rofl

eulerscheZahl: now you have the secret algo for gold

Nagatwin: yay

Nagatwin: finally unlicked the full statement

eulerscheZahl: you can still lick the max thrust, will be 200 in legend

Nagatwin: unlocked

dbdr: be careful what you lick these days

Nagatwin: tuning the thrust is enough gor legend ?

eulerscheZahl: no

Nagatwin: oh

eulerscheZahl: i wrote a sim in bronze, had to rewrite for changed gold input

Nagatwin: ye

eulerscheZahl: completely killed my motivation for that game

Nagatwin: thats why I wanted to get that strat before writing anything

Default avatar.png JasonTruter: How do I use my sonar?

Nagatwin: SONAR 5

Nagatwin: replace 5 by the sector you want

AntiSquid: Nagatwin you could tweak speed / angle turning point variables for legend

Nagatwin: angle turning points ? :o

eulerscheZahl: did you give up on OOC Nagatwin?

AntiSquid: and have a blocker pod and one runner pod

Default avatar.png JasonTruter: What is a sector?

AntiSquid: the big 5x5 squares

eulerscheZahl: watch a replay JasonTruter do you see these numbers in the squares?

Nagatwin: eulerscheZahl can't get that code any higher, I have to write a full sim and i'm not godd enough at these thing

Nagatwin: good

AntiSquid: you can get legend without sim

eulerscheZahl: he did

Nagatwin: im legend

AntiSquid: ah nvm

dbdr: in OOC

Nagatwin: I really have no idea on how to write a good simu, especially with several actions in the same turn

Nagatwin: So far I have a small path simu and killmove simu

eulerscheZahl: and the incomplete information

Nagatwin: thats not my issue eulerscheZahl

AntiSquid: you got legend in OOC without sim?

Nagatwin: Yeah

AntiSquid: wow . what did you use lol

Nagatwin: good pathfinding

dbdr: LeChuck is not simming either I think

AntiSquid: that's it ?

Nagatwin: killing simu

eulerscheZahl: https://www.codingame.com/replay/447873049 val growth has a kill avoidance at frame 59

Nagatwin: like if hp < 4, I kill

Default avatar.png JasonTruter: so an example of a sonar would be the following "MOVE N | SONAR 5"?

Nagatwin: and perfect detection AntiSquid

AntiSquid: jeez ... and i am now writing a sim to get to legend, maybe i should tweak my if-else instead?

eulerscheZahl: yeah but you can still charge in your MOVE JasonTruter

Default avatar.png JasonTruter: charge?

eulerscheZahl: MOVE N TORPEDO | SONAR 5

Default avatar.png JasonTruter: I see, for some reason my sonar result comes back as NA and cooldown still -1

Default avatar.png JasonTruter: and breaks

eulerscheZahl: -1 means that it's not unlocked in your league

eulerscheZahl: are you in wood2?

Default avatar.png JasonTruter: yes

Nagatwin: AntiSquid Idk haha I still have a lot involved on my pathfinding that makes it a simu partially. But I only assume I do 1 move per turn (thats why I always silence 1 distance)

Default avatar.png JasonTruter: I've got basic movement down, where it decides on moves based off islands and visited right now

Nagatwin: AntiSquid and torpedo/mine are not any part of the pathfinding

eulerscheZahl: not always Nagatwin https://imgur.com/a/zHjgB2X

Nagatwin: eulerscheZahl that's the killing move

Nagatwin: but yeah I agree, I sometimes use silence 4 to kill the opponent

eulerscheZahl: you always go by 4 on killing?

eulerscheZahl: no 2 or 3?

Nagatwin: and the next line is return 0;

Nagatwin: eulerscheZahl 0 to 4

Nagatwin: the simu is complete for the killing move

eulerscheZahl: maybe i need more replays of your bot then

eulerscheZahl: only analyzed 22

Nagatwin: trigger and torpedo included

dbdr: Nagatwin return 0 that's confident, nice :)

Nagatwin: dbdr haha yes

dbdr: I'm done here :D

Nagatwin: when I do that I do not compute any update on my paths

dbdr: saves CPU cycles

Nagatwin: So if I do not kill with this part, my bot would be screwed up

Nagatwin: so yeah just return 0 for debugging

dbdr: that's good. better to crash and investigate than hide the issue

Nagatwin: http://chat.codingame.com/pastebin/2cc8888f-65c3-46dc-9a65-be87d9a4fe99

Nagatwin: inside 8 nested for loops :p

dbdr: :upside_down:

eulerscheZahl: my software engineering prof would hate you

dbdr: that's why it does not scale to a sim

Nagatwin: I have no sanity checks for my path arrays :p

dbdr: you just sim a special case

Nagatwin: Yes

Nagatwin: But sims are slows as fuck

dbdr: does not have to be

Nagatwin: I couldn't manage to simulate several turns with this game

dbdr: essentially the same work as your 8 loops

Nagatwin: With a proper one, not the bruteforcing i'm doing fot the killing move

dbdr: right, if you go deeper there is more work, exponentially

Nagatwin: essentially sampling some moves for each turn and applying them

Nagatwin: But the update of my possible paths killed the simu count

Nagatwin: Otherwise I could make a simu without considering the possible paths at the end but that seem wrong for this game

Nagatwin: and it basically is the same as my current pathfinding part

Default avatar.png JasonTruter: Wouldn't you need sonar to detect within the path?

Default avatar.png JasonTruter: So you can't really use BFS or DFS as it would be required that you visit the node?

Default avatar.png JasonTruter: and then go back to the root node, unless you surface everytime you need to go back

Nagatwin: I did that on my first version

Default avatar.png JasonTruter: Not very efficient?

Nagatwin: randomized dfs, take the deepest branch as base path and then add some path length using heuristics on 2x2 blocs

Nagatwin: JasonTruter that's a way to fill an area

Default avatar.png JasonTruter: Yeah, I'm considering finding the quickest path between each sector

Nagatwin: but let's say that we have to consider more short-term pathing strategy for legend that involve aescaping mines, ...

Default avatar.png JasonTruter: to use my sonar on each sector

Nagatwin: I'm not sure to understand what you mean

Nagatwin: sonar is supposed to tell you if the opponent is in a given sector

Default avatar.png JasonTruter: I'm on wood 2, what would the minimum I need to do right now be?

Nagatwin: start on a place with water

Default avatar.png JasonTruter: Yeah I've done that

Nagatwin: and move around without going into islands/visited cells

Nagatwin: when you are out of visited cells, you can surface

Nagatwin: generating a long path is up to you

Default avatar.png JasonTruter: Yeah so I've done that too except for surfacing when no possible moves left

Default avatar.png JasonTruter: So how would I get to the next league?

Nagatwin: If you have a path long enough and ensure you are not producting invalid moves, you should be able to get to wood 1

Default avatar.png JasonTruter: I'm in wood 2

Nagatwin: I know

Nagatwin: when you reach rank 1 in wood 2 you get promoted to wood 1

Nagatwin: Otherwise you can try using torpedos randomly, this may touch your opponent

Default avatar.png SabertheLost: my algo sucks :) it only fins the furthest point, but does not take into consideration what it might block ;)

Default avatar.png SabertheLost: finds*

Default avatar.png JasonTruter: Whats a MSG?

Nagatwin: MSG is something you display each turn

Default avatar.png SabertheLost: as in message I think

Nagatwin: https://www.codingame.com/share-replay/447962016

Scarfield: for debugging or silly comments

Nagatwin: here below my nickname you can see the message I display each turn

Default avatar.png JasonTruter: Oh okay cool

Default avatar.png MadJetski_58cc: nice

Default avatar.png SabertheLost: Ok, so I changed from BFS to DFS, then limited to 50 steps. I went from rank 240 to rank 16 in wood 2 with only moving...

Default avatar.png SabertheLost: ok rank 3 now.

Default avatar.png JasonTruter: where do you see rank

Default avatar.png SabertheLost: At the top, where you see the league your in and time left.

Default avatar.png SabertheLost: ok, i´m actully in wood 1 not 2.

Default avatar.png SabertheLost: And there i will be promoted by only moving?

jrke: guys i am in eight standard i dint know trignometry can you help me for coders strike back gold league that how to find angle in it

jrke: please

jrke: :pray:

wlesavo: missed conversation, but dont use simus as well

blasterpoard: jrke https://www.khanacademy.org/math/trigonometry should be a good source

jrke: can you tell me which function to use

blasterpoard: nope

jrke: like acos

jrke: asin

tranculent: are we supposed to handle initial "Invalid coordinates" somehow?

jrke: or atan2

blasterpoard: jrke it's explained in there

jrke: ok

blasterpoard: which function is used for what

tranculent: to find an angle, I use Acos @jrke

jrke: ok

Scarfield: take note that the angle input of your pods are measured differently than the standard for sin/cos calculations. and the coordinate system has y axis inverted as well

Default avatar.png SabertheLost: rank 68 in bronze, maybe time to start using mines or torpedoes

Default avatar.png SabertheLost: 43 now

jrke: http://chat.codingame.com/pastebin/daf2cd30-b498-4a46-bbcc-deedb0b2de8d

jrke: can you check it is ok

blasterpoard: jrke if you want people to check something, it should be clear what were you trying to achieve

blasterpoard: I have no idea what do you want to have in those 1letter variables

jrke: can you share your code in private

elsinnombre2d2: lmao

blasterpoard: I can't

jrke: just for angle

jrke: only

pb4: You should first answer the questions you were asked jrke

jrke: what?

pb4: read

jrke: which question

struct: jrke preety much all you need to write a sim for CSB http://files.magusgeek.com/csb/csb_en.html

MadKnight: ezpz

Default avatar.png ThienPhu: give

MadKnight: what

AntiSquid: kick

kovi: top4 is balanced

Illedan: Let's try to fix that :P

Famout: Guh, been far too long since I did stuff with actual pathfinding. Once this is ready to run though it's gonna be fun seeing how much I have mucked it up.

Famout: And forgot 2D arrays don't like to be passed without their size fixed in stone.. Anyone know if the Ocean of Code challenge ever changes the map size?

Counterbalance: it's constant

Famout: That's great, used to lots of things changing in a challenge and was keeping size flexible, that makes it a lot easier.

Counterbalance: whoops https://www.codingame.com/share-replay/448038500

eulerscheZahl: scared of mines? my bot does the same nonsense :(

Famout: The fact the mine blew up and he still didn't leave I think was the larger issue, big fish small pond.

Counterbalance: still too many possible mine locations.. Pre detonation:

Counterbalance: opp mine blast area: http://chat.codingame.com/pastebin/eee9b491-353f-4574-94bd-0377def767fb

Counterbalance: post:

Counterbalance: opp mine blast area: http://chat.codingame.com/pastebin/b21a5c48-d0b9-46fd-907a-065866944cfb

Famout: Ah, fair enough, fear is the sub killer after all.

Nerchio: time to add mines to my bot :D

Famout: Moment of truth, time to see if I correctly coded full map pathfinding correctly the first time.

Nerchio: probably not :D

Famout: The fact it just ran into an Island tells me no....

Famout: Huh, bugs in brand new untested code. strange

Famout: On the plus side, it did move at least.

Nerchio: is there a better way of checking your 8 neighbouring squares than 8 ifs?

NormantasStankevicius: wdym?

NormantasStankevicius: 8?

Nerchio: when you are at 5,5 you have 8 squares around you

Nerchio: or wherever else

Valdemar: http://chat.codingame.com/pastebin/8e32e889-f42e-4296-9a38-866005493d80

NormantasStankevicius: well, if you need to check

NormantasStankevicius: if something is at range

NormantasStankevicius: you can do some range calculations

NormantasStankevicius: let's say

NormantasStankevicius: if I target cordinate is in those squares around me

Nerchio: valdemar its a vector?

Nerchio: i will be checking how many island squares there are around x,y

Nerchio: i want my mines to be placed with maximum area open

Nerchio: its simple

Valdemar: vec2i is x,y structure

Nerchio: but i am asking if there is anything better or nicer looking than 8 ifs

Nerchio: i am writing in java

Valdemar: idea is to use array of shifts

Default avatar.png JasonTruter: Whats the benefit of using different traversals in DFS?

Famout: Hmmm, the response time of 50ms might be an issue...

Famout: Great, I kinda need to check how much can be done in that time, to see just how badly I am going over it.

Counterbalance: what language, Famout?

Famout: c++

Counterbalance: do you have the pragma?

Famout: I have never done anything with that before.

Counterbalance: put this at the first line of your source file:

  1. pragma GCC optimize("Ofast","unroll-loops","omit-frame-pointer","inline")

Counterbalance: that'll turn on compiler optimisations so it will run 10x faster or so.

Famout: Ah, that's why! Used to Visual studio where I handle all that stuff via the GUI

Famout: Many thanks

D4yBr3ak: ofast = o3 ?

Counterbalance: O2

Counterbalance: more or less

D4yBr3ak: does it work for C too ?

Counterbalance: It should, yes

D4yBr3ak: thank you

Famout: OK, much improved, got to turn 115, before I tried to doubleback for some reason.

Famout: Admittedly did have to also put a limiter on the pathfinding, but I think part of that is some nodes doubling up over themselves.

Famout: Huh, it doesn't seem to be respecting the closed node list, that would screw things up alright.

Counterbalance: What are you using the DFS for?

Default avatar.png JasonTruter: Pathfinding

Nerchio: i use bfs for targeting

kovi: nice illedan. not top4, but definitely closer

AntiSquid: how much rock-paper-scissors is there in legend kovi?

Illedan: Thx, let's see how we can fix that ;)

kovi: antisquid, there is definitely some

kovi: but most of the time i cant tell the reason

NormantasStankevicius: I was around 116th in wood1, left wood and played the same code, and now in 5th/300~ in bronze

YannT: I can't figure out why I consistently have bad winrates against some bots and good ones against others

YannT: there's seemingly no strategy difference or whatever

kovi: yeah. even though i cant tell what is under the hood

revo1: it's works but what the hill is this game

Famout: Something is off with my code still.... but not crashing, and just won twice agaisnt the test bot... and I am way overdue for bed.

Famout: Screw it SUBMIT

Famout: Zero surprise, so far beating folks who run into islands/off the board....

Ran_42: can someone help me with python binascii

MadKnight: what's the problem ?

Ran_42: i dont understand how to convert a ascii to binary

AntiSquid: google it

Ran_42: it converts to something weird

MadKnight: ord('x') returns u the code of a char

AntiSquid: that's what i do

Ran_42: i did google it

MadKnight: then subtract ord('a') from it

MadKnight: and u will get the alphabetical index of x

AntiSquid: ah wait you mean the chuck norris puzzle?

Ran_42: ye

**Famout thinks making a passive aggressive sub that takes 600+ turns to win might be making the test battles take some time.

MadKnight: then convert to binary

MadKnight: index

Ran_42: it convert to this b'\x00\x00

Ran_42: instead of 0s and 1s

MadKnight: \x00 == 0

MadKnight: \x01 == 1

AntiSquid: build an array of 7 chars or something and then convert that

MadKnight: just replace this stuff

Ran_42: but everything is 0 then its worng

MadKnight: but it feels like u did something wrong

MadKnight: show your code

Ran_42: ye probably

Default avatar.png JasonTruter: How do I progress to wood 1? I've got movement going where it resets surface when theres no other moves.

Ran_42: message = input() message = b.a2b_uu(message)

Ran_42: this too import binascii as b

AntiSquid: JasonTruter you need to track opponent and shoot them

Famout: JasonTruter or have REALLY good movement, a mix of both would be best.

MadKnight: no u used the wrong thing

MadKnight: u gotta convert ord(message[i]) to binary

AntiSquid: also use bfs to save some space when going around the map so you surface less and then you definitely get wood 2 JasonTruter

Default avatar.png JasonTruter: I'm on wood 2 right now

AntiSquid: i mean wood 1

Default avatar.png JasonTruter: cool

Default avatar.png JasonTruter: Going to start by firing aimlessly

AntiSquid: no

Nerchio: everybody has different tips haha

AntiSquid: that's a bad idea

Famout: I did a bit of overkill and set up pathfinding to dig out a path that uses most of the screen before surfacing, no code for firing torps

Default avatar.png JasonTruter: Is it

Nerchio: i did random shooting and random movement until bronze i think

AntiSquid: save shots for when the opponent location is known

Ran_42: thanks mad knight i got one more question

Famout: With %50 of the battles done, it is ranking me above the king bot.

Ran_42: why does it says 0b100... instead of 100...?

AntiSquid: Nerchio the must have overnerfed the bosses then or you submitted when the boss was broken first hour or so ?

Default avatar.png JasonTruter: So for pathfinding maybe use dfs so that Its faster to get to my opponent?

AntiSquid: whatever you like

Default avatar.png JasonTruter: As BFS can take quite some time, I'll use dfs once I know location

Nerchio: no i mean random shooting and when you hit something then it narrows down their position :D

Counterbalance: bfs can be much faster than dfs

AntiSquid: that's a different story Nerchio

Default avatar.png JasonTruter: bfs would search through layers, that would take longer?

Default avatar.png JasonTruter: I guess I could slowly move toward my opponent with bfs

Counterbalance: you only visit each node once in bfs

Default avatar.png JasonTruter: This game really got me working on algorithms lol, I normally work with high level code

AntiSquid: have a function with bfs and one with dfs and switch your bot to use either as you see necessary, you will then find out what's best

Default avatar.png JasonTruter: for building webapps etc

Famout: Oh wow, only now I discovered I screwed up using rand and picking my spawn point.

Famout: Also, woo! Wood1

AntiSquid: which languages JasonTruter?

Default avatar.png JasonTruter: Writing in Java right now, but I write in python and javascript at work

Default avatar.png JasonTruter: Do alot of AWS stuff

AntiSquid: nice

AntiSquid: why don't you get an avatar?

Default avatar.png JasonTruter: I should hey

Default avatar.png JasonTruter: This game has got me hooked right now

AntiSquid: the ranks on the leaderboard are like ocean waves, back and forth :D

AntiSquid: going *

Nerchio: for me its more like a sinking ship but okay

NormantasStankevicius: okay, my wood1 code put my in silver

Default avatar.png JasonTruter: Don't know why my torpedo isn't firing

AntiSquid: check the console log in bottom left JasonTruter

Nerchio: this gold bot with MSG FATALITY is so annoying :D

Default avatar.png JasonTruter: Torpedo is working

MadKnight: hey guys

MadKnight: are there any websites for artists where they can find a contract job ?


eulerscheZahl: i'm not an artist, just remembering former CG artists showcasing their skills here: https://www.artstation.com/

Famout: OK then, added in extremely limited use of silence, lets see how well I do in wood 2

Famout: wood 1*

Nerchio: damn this gold bot is really good

eulerscheZahl: reaching legend is never easy

eulerscheZahl: except for Tron

Famout: Yep, bedtime now, but managed to reach rank 50 on wood 2 with just a pathfinding bot, good seafairing!

Famout: wood1 dangit!

Nerchio: i guess i will submit and see how i do vs others i dont win too much vs this bot

Famout: Ah, wow, 50 outta 596, feeds good

Default avatar.png JasonTruter: How would you know if opponent surfaced?

Counterbalance: it's given in the input

Default avatar.png JasonTruter: sonarresult?

Counterbalance: the one after that

Counterbalance: line 3, opponentOrders

Default avatar.png JasonTruter: Ah ok, thanks!

kovi: wow, almost 30, got pushed up

AntiSquid: with great power come great bugs!

Default avatar.png JasonTruter: so true

Default avatar.png JasonTruter: Fixed up all my bugs now

Default avatar.png JasonTruter: Won with just movement :)

Default avatar.png JasonTruter: But only ranked 300 lol

Default avatar.png JasonTruter: need to improve

AntiSquid: anyone has a seed with almost no islands? please

Quidome: 0?

AntiSquid: 0 or close to 0, either

blasterpoard: seed=-430391657 AntiSquid

AntiSquid: thx

Nerchio: haha

Nerchio: opponent bot broke when i hit hit with torpedo and he used surface 5 times

Nerchio: so funny

Default avatar.png JasonTruter: how would I use bfs without having to surface to get back to the root node

Swagboy: Why do you want to get back ?

Swagboy: If so, that's np hard i'd say

AndrejVelichkovski: @JasonTruter can you write the whole thing you are trying to do with bfs?

jrke: any suggetion coders strike gold league how to find angle

Default avatar.png JasonTruter: trig

Uljahn: atan2

jrke: can u tell me algo

jrke: because i am in 8th standard so i didn't learn trig

jrke: plz

Uljahn: jeez, just go play fortnite

jrke: plz tell me

Astrobytes: plz google it

jrke: i can't understand it

Astrobytes: Fix it

jrke: please just tell me how to use and where to use

Astrobytes: No. You should try to learn.

AndrejVelichkovski: the thing is, if they tell you, you won't learn anything

AntiSquid: that's more than a line in chat worth of learning material

jrke: ok

jrke: you are right

jrke: i will learn

AntiSquid: no, he will learn, but the chat is too small for that kind of classroom

jrke: thanks

AntiSquid: i would suggest playing a grid based game instead, no trigonometry

jrke: ok

Nerchio: I just realised that triggering mines gives out a lot of information as well

Nerchio: if your enemies can track it well

Counterbalance: yup

Nerchio: they can remove all the possible positions that weren't there at that time to place the mine at X Y

AntiSquid: ya but if you spin in circles and lay a mine in a similar rea?

AntiSquid: area *

Nerchio: you can remove some not all :P

Default avatar.png JasonTruter: I have to rewrite my movement :(

Quidome: Zenoscave, are you online?

Counterbalance: There's a little icon,

------------v  here that tells you that

Quidome: yes, but it doesn't match the green dot in the leaderboard

Quidome: so i thought i give it a try :)

Counterbalance: Sure :)

Quidome: So you can be online and not participating. Meaning you closed your chatr window?

Counterbalance: yes

Quidome: aha, well, then he won't see it :p

Counterbalance: appending something like ?disableChat to the url does that

Quidome: is there another way to reach out?

Counterbalance: hmm.. I don't think so. You can send a private message, I think that also sends a notification, but you'd have to be able to click on their username in chat for that, or already have a private chat going

Counterbalance: ahh, /msg

Counterbalance: see /help

Quidome: where is the help

Counterbalance: just type /help here

Quidome: Nice

Quidome: hm, doesn't work either, you have to be on the chat...

Quidome: well, a pitty

Counterbalance: you can follow him

Quidome: I am going to try that

Counterbalance: then on your profile page, there's a friends tab, and there's a private message button there. That'll probably work

Quidome: After he accepts my follow request, we will see

Counterbalance: AFAIK acceptance is not needed

eulerscheZahl: to send someone a private message, that person has to follow you, not the other way

eulerscheZahl: i recommend sending a private message on the forum

eulerscheZahl: triggers an email notification

Quidome: :thumbsup:

Quidome: He euler, you already in! Congratulations!

eulerscheZahl: for a day already :P

eulerscheZahl: thanks

Quidome: Yeah watched you junoing within the hour or so, nice

Quidome: jumping

eulerscheZahl: deactivated my mine avoidance to get promoted

eulerscheZahl: then activated it again :D

Default avatar.png JasonTruter: Thinking of storing a node that has 4 different neightbours

Default avatar.png JasonTruter: What do you guys think?

Default avatar.png JasonTruter: Would it make it eaier for me to traverse using bfs?

eulerscheZahl: somehow avoiding mines performs better in legend but did worse against the boss

eulerscheZahl: JasonTruter that's what I do

Quidome: interesting.

eulerscheZahl: http://chat.codingame.com/pastebin/e05707fd-9a50-49f0-94e9-18079bf7cf19

Quidome: Now i lost my debugging possibility and am hunting Zenoscave

eulerscheZahl: i'm sure others print their stats as well

Quidome: OK

Quidome: Does anyone else print their remaining locations count

Quidome: ???

Counterbalance: my bot prints them too - similar rank as zenoscave

eulerscheZahl: Risen too

eulerscheZahl: don't ask me how accurate these numbers are

Quidome: Great, going to compare them with mine, thnxs

AntiSquid: i print an useful assessment of the enemy bot

Quidome: great thnx

eulerscheZahl: https://www.codingame.com/share-replay/448160974 i officially hate this game now

eulerscheZahl: so much rock paper scissors

Nerchio: why?

Quidome: Muda

eulerscheZahl: (or maybe my bot is just bad)

Nerchio: your bot moved into enemy territory

eulerscheZahl: i'm allowed to move whereever i want

Nerchio: :D

AntiSquid: my bot is full of bugs

Nerchio: you are allowed

Nerchio: but don't be surprised when you get shot

Counterbalance: too bad we dont get opp's MSG or the bots could communicate

dbdr: he didn't get shot by mines

dbdr: so territory is not relevant

AntiSquid: not sure if i told you but it's these bugs that give it +50 ranks my new rewritten bot will hopefully get legend though, and no bugs ihope

eulerscheZahl: just me fighting an invisible opponent while my location is clear

AntiSquid: ya in that replay you give too much info away

AntiSquid: also my output is helpful

Counterbalance: you ignore silence?

eulerscheZahl: https://www.codingame.com/replay/448165415 maybe i should use it more often?

Quidome: @counterbalance, are you pruning remaining enemy positions when to high?

Counterbalance: yes, but only > 10k

Counterbalance: I have no idea how to prune effectively :(

Nerchio: antisquid silence spammer :O

Zenoscave: Quidome how did you get my email?

Counterbalance: it works! :)

eulerscheZahl: i told him how Zenoscave

darkhorse64: nagatwin removes duplicates but I do not know ho

eulerscheZahl: from your github account

darkhorse64: *how*

Zenoscave: Ah smart

Zenoscave: good thinking

eulerscheZahl: and also a lie

eulerscheZahl: private message on cg forum

Zenoscave: yeah i didn't get any notification from that hahah

Astrobytes: Eulersche Troll

wlesavo: not a lot of promotions today huh

eulerscheZahl: 0 to be precise

wlesavo: i expected legend to grow faster

eulerscheZahl: all your fault!

dbdr: eulerscheZahl and Illedan, please keep it up! https://i.snipboard.io/WZS6c9.jpg

eulerscheZahl: but still a week to go and we don't want a huge legend

wlesavo: lul

YannT: well yesterday people killed the boss so it lowered the bar temporarily, I think he's quite high now

eulerscheZahl: Illedan just submitted too

YannT: until someone can hurt it proper it's going to be hard to get promoted

eulerscheZahl: yeah, we destroyed the boss yesterday

eulerscheZahl: but then it recovered

dbdr: :innocent:

wlesavo: got raided

dbdr: great team work

eulerscheZahl: you only won 4-2 dbdr

dbdr: the straw that broke the camel's back

eulerscheZahl: and then this happened: http://cgstats.magusgeek.com/app/ocean-of-code/nagrarok

ZarthaxX: boss currently is 31.28 and below 29.97

ZarthaxX: it's a bit high

Zenoscave: https://www.codingame.com/replay/448172409

Zenoscave: I still timeout

eulerscheZahl: directly after SILENCE, suspicious

eulerscheZahl: your tree explodes

Zenoscave: Yeah

Zenoscave: I don't have good tree pruning

Zenoscave: I consider every silence option

Zenoscave: How often is SILENCE N 0 used?

eulerscheZahl: often

Zenoscave: Might have to rework my bot to detect it

ZarthaxX: how do u detectthat

Zenoscave: is that a worthwhile task?

eulerscheZahl: top4: https://imgur.com/a/YfmRduu

Zenoscave: back pruning

Zenoscave: Would just ignoring silence be good? and resetting if you loose them?

eulerscheZahl: sounds like a bad idea to me, losing too much information

Zenoscave: hmmmmm

eulerscheZahl: maybe considering some states more likely than others could help

Zenoscave: ok

eulerscheZahl: right now i assume equal probability for each

wlesavo: Zenoscave if you already considering such a drastic measures just merge

Zenoscave: merge?

Zenoscave: I don't understand

SavinVadim: Did anyone implement a kinda of circular movement?

Zenoscave: merge paths?

SavinVadim: I think that my movement (that goes from one side to another) gives too much info and is easy to predict

wlesavo: if to paths coming to the same point, take the common part of them and summ up the mines

eulerscheZahl: be the spiral SavinVadim

wlesavo: you lose information, but not too much

Zenoscave: interesting

Zenoscave: I'll try that

AntiSquid: walk into your garden and spiral around

wlesavo: this is what im doing since wood 1 i believe

blasterpoard: wlesavo I have something similar, but I only join pairs of paths

eulerscheZahl: including the mines that were added on bronze ;)

wlesavo: also only pairs

blasterpoard: basically divide the amount by two until it gets under a threshold

wlesavo: eulerscheZahl well, most of mine tracking for me was in silver, but the basic concept the same

pb4: eulerscheZahl : What are those graphs ?

eulerscheZahl: there's a text above them

pb4: and when did you download the replays ?

Zenoscave: top 4 player silence dists

eulerscheZahl: thank you Zenoscave

Zenoscave: :+1:

pb4: one graph = one player ?

Zenoscave: yes

eulerscheZahl: yes

Zenoscave: ;)

pb4: Which one am I ? :D

Zenoscave: 2

pb4: nice graphs by the way

eulerscheZahl: but the number of games i used varies a lot

eulerscheZahl: pb4 is the 2nd indeed, 32 matches analyzed

eulerscheZahl: i just downloaded #1 + me so i got some of yours as well

pb4: wow, I surface 0 a lot of the time then !

eulerscheZahl: i didn't share your surface stats

pb4: silence*

eulerscheZahl: but you do 2x surface per game

eulerscheZahl: i remove SURFACE | KILL here

pb4: uh ?

pb4: I do less than that I think

pb4: 1.4

pb4: Your sample might be too small

eulerscheZahl: 2x per game, 1.75x per 100 turns of your bot

eulerscheZahl: ok, i'll check...

kovi: which one was mine?

eulerscheZahl: 3

eulerscheZahl: pb4 1.56 surface in 313 matches

eulerscheZahl: and charts for top players are converging towards each other it seems

eulerscheZahl: some days ago they looked really different

pb4: Agreed

eulerscheZahl: kovi even with a bit of sonar now

eulerscheZahl: still less than the other players

kovi: wow, you track me hard

YannT: I assume you didn't do me since I'm lower? :)

pb4: who was #1 ?

eulerscheZahl: jolin

pb4: and #4 ?

pb4: siman ?

AntiSquid: 2000 participants

dbdr: \o/

Illedan: 2k \o/

ZarthaxX: nice :O

eulerscheZahl: of course i got stats for you YannT

eulerscheZahl: you haven't submitted in ages, for you i got the most battles

eulerscheZahl: and that:

eulerscheZahl: crashes: 448128749 447871204 447869471 447863277 447861340 447860809 447859358 447858637 447857329 447855358 447854224 447853683 447853254 447799136 447797590 447782229 447663750 447653728 447648577 447646966 447646750 447641545 447638629 447633505 447632842 447629881 447627069 447627057 447624486 447624038

YannT: yeah :|

YannT: next version shouldn't have this

Illedan: Hiding?

YannT: no, benchmarking

YannT: I submited yesterday y'know

YannT: so not "ages" :p

Illedan: xD

eulerscheZahl: compared to the other spam submitters there's a lot of dust on your yellow button

AntiSquid: if you keep it up you'll suffer submit withdrawal symptoms

YannT: it's true I like to be somewhat sure before pushing

Zenoscave: 999 submits

Zenoscave: ...

YannT: benchmarking against top5 is more relevant than just pushing anyway in my estimation

Illedan: :D

eulerscheZahl: i have 721 matches for you YannT

eulerscheZahl: (your most recent bot that is)

AntiSquid: i am surprised i even have 292 submits

YannT: also I like that I can "freeze" agentIds used, so I can actually compare results

wlesavo: im benchmarking top 6 =)

blasterpoard: I have 49 ^^

eulerscheZahl: 141 C# submits + 1 Java here

blasterpoard: submits

YannT: otherwise those guy change their bot 10 times per minute so you can't compare anything

Default avatar.png DEIZ21: hello, i have a problem with CG Spunk it doesnt work for me a,y idea?

eulerscheZahl: that tool broke years ago

YannT: I think that's deprecated

YannT: you want cgbenchmark

eulerscheZahl: and CG Enhancer

Default avatar.png DEIZ21: ah, i need to run battle in batch mode

eulerscheZahl: cg benchmark

Default avatar.png DEIZ21: i can search for it in CG?

eulerscheZahl: or brutaltester to play against yourself offline

YannT: (brutaltester I haven't found to be very pertinent with this game)

eulerscheZahl: https://github.com/s-vivien/CGBenchmark

Default avatar.png DEIZ21: cool, thx

YannT: I have a version that seems to have a 50% winrate against top5

YannT: my rule is to do better than 50% before pushing tho :p

eulerscheZahl: my rule is to submit when i'm in a mood to do so

eulerscheZahl: or crying in desperation

dbdr: yolo

Illedan: I'm full on yolo

YannT: I can't for the life of me figure out why kovi is my best winrate and pb4 / siman are my worst ones

YannT: there's no strategy difference to explain it

eulerscheZahl: Illedan climbing high i can't tolerate that, will fight back tomorrow

eulerscheZahl: my old enemy...

wlesavo: speaking about 50 % https://imgur.com/yVoTQYV

Illedan: :D

dbdr: battle for #1 C# is full on

Illedan: I'm going for 1st

YannT: I think I've won #1 kotlin already :joy:

dbdr: well done YannT, you can rest now

eulerscheZahl: doesn't seem to be a hard fight

YannT: ahah no, not really

eulerscheZahl: in the past there were tshirts for the first in each language

YannT: it's such a sweet language tho, I don't know why you'd do Java over Kotlin ever

eulerscheZahl: but that was long ago

eulerscheZahl: i used kotlin recently

eulerscheZahl: for kotlin heroes on codeforces

YannT: it's so friendly about everything I love it

eulerscheZahl: and maybe intelliJ helped a bit to convert java into kotlin :innocent:

dbdr: fully automated?

YannT: whenever you think "I should be able to write something like this", it turns out you can

eulerscheZahl: there's an intelliJ plugin for that

eulerscheZahl: still a few minor things (not-null !!)

eulerscheZahl: but did a great job overall

eulerscheZahl: and that !! isn't a bug, just kotlin having other requirements than java

YannT: null checking is actually a sweet feature of the language

YannT: you can write stuff like

eulerscheZahl: yeah

YannT: maybeNullVar?.let { ...

YannT: and the let will only be done if not null

YannT: you never get a NPE again

eulerscheZahl: one thing that sometimes annoys me about java: catch every damn exception

eulerscheZahl: i understand that you should really do it for an enterprise project

eulerscheZahl: but when i code my 10 lines for a small private project, i don't care about exceptions

dbdr: throws Exception

YannT: kotlin is good for that too

YannT: val a: Int? = try { parseInt(input) } catch (e: NumberFormatException) { null }

YannT: it's a convenient one liner

eulerscheZahl: and add that throws to each function in the call chain up to main

dbdr: yes, or script it ;)

eulerscheZahl: that wasn't the intention of java inventors

dbdr: or catch and wrap in RuntimeException

dbdr: sure

YannT: actually the "Int?." part here is even for clarity, it's not necessary

dbdr: the intention is to have robust code

YannT: val i = try { parseInt(input) } catch (e: NumberFormatException) { null }

dbdr: that's why python can be good for protoyping

dbdr: YannT, eulerscheZahl complains about having to catch exceptions, and you show Kotlin can catch exceptions ;)

YannT: except in a very compact way

eulerscheZahl: except: pass

eulerscheZahl: python style

Zenoscave: [empty everything]

Zenoscave: js style

YannT: oh then

YannT: "Kotlin does not have checked exceptions"

YannT: :p

Astrobytes: noexcept, it either runs or it doesn't

dbdr: how do you guarantee you handle them then?

YannT: the kotlin standard library abstracts the checked exceptions of JRE

eulerscheZahl: JS on CG https://imgur.com/a/QjCX3rJ

YannT: you get nulls and stuff

dbdr: I mean, if it's not checke it means you program might crash at runtime

YannT: no

dbdr: potentially in rare cases

YannT: it turns checked ezxceptions into nullables, which in kotlin have to be handled

YannT: so you might have something like

dbdr: null is just one case

YannT: val i = parseInt(blah) ?: 0

dbdr: what about IO errors?

aCat: hey -when gold boss became nondeterministic :/

Zenoscave: The whole time

aCat: that makes testing against him useless

YannT: val bufferedReader: BufferedReader = File("example.txt").bufferedReader()

       val inputString = bufferedReader.use { it.readText() }
       println(inputString)

aCat: hmm, why before I had imprssion it is otherwise..

dbdr: and if the read fails?

YannT: you don't get anything

dbdr: empty string?

YannT: no, unchecked exception

YannT: you can handle it if you want

dbdr: and i you don't you crash

YannT: otherwise you just get a null string

YannT: no

YannT: .use has built in exception handling

dbdr: ok, then it just does not go into that branch?

YannT: yep

YannT: that's the idea with kotlin

dbdr: sometimes that's fine

dbdr: sometimes it's not

dbdr: and this could be hiding the issue

YannT: well you can catch if you want, or you can use the kotlin abstraction and never have to catch anything , exceptions turn into nullables, so you just handle nullability of things (and the compiler makes you)

dbdr: everything looks fine, no error, but it does not do what you wanted, and no indication why

dbdr: ok, in that case it goes into the null handling

YannT: yes

YannT: if you want to handle a specific underlying exception, you can do that, and if you don't wanna it's just nullability handling, which in kotlin is the ? operation

dbdr: so that's fine, but it's roughly equivalent to handling exceptions, i.e. you have to handle it someho

YannT: operator*

YannT: yes, you have to add a ? somewhere

Astrobytes: Yeah but it's not as annoying as having to handle them in Java

dbdr: only if you want to ignore that case

dbdr: which you do sometimes but not always

YannT: path?.contains(this)

YannT: if path is null, no exception

YannT: that returns a Boolean? type tho, not Boolean, so you have to write

dbdr: sure, but if it's a logcal error not to have a path, it's bad to get false

YannT: path?.contains(this) == true

YannT: no, a Boolean? can be true false or null

YannT: basically you cannot get a nullpointer, compiler won't let you

dbdr: I know that

YannT: Boolean? is not Boolean

dbdr: i'm saying a crash is better than incorrect semantics

YannT: then you can do

YannT: path!!.contains(this)

dbdr: right

YannT: you assert that path is not null and it will crash if it is

YannT: you *can* get nullpointers if you specifically want to :)

dbdr: :)

elsinnombre2d2: which heuristics do u use to get a good path?

blasterpoard: elsinnombre2d2 well, I have a 600-line "heuristic" for that that runs for 20 milliseconds

blasterpoard: I don't think that there's a knwon, simple algorithm that gives you a "good path" in this game

blasterpoard: at least, not really good

elsinnombre2d2: ofc, but u use some rules

elsinnombre2d2: maybe like choose a cell that is near to one visited

blasterpoard: uhm... maybe I use an evaluation

blasterpoard: of a long path

elsinnombre2d2: and why all use c++? xD

blasterpoard: not just the next cell

YannT: a good starting point is using floodfill to calculate the number of available cells

blasterpoard: elsinnombre2d2 it's fast

elsinnombre2d2: than java too?

blasterpoard: java is not quite as fast

elsinnombre2d2: hmmm

Nerchio: im pretty sure you can get to the top with jkava

elsinnombre2d2: using floodfill, which depth do u get?

Nerchio: i am using floodfill for the whole map

Nerchio: for each of my possible moves

Nerchio: dont worry about this i think, you will have more problems with tracking the enemy

Nerchio: and potentially running out of time

AntiSquid: you can get to the top with python 3, but java is both uglier and slower than c++

blasterpoard: and you'll also hit the character limit faster with java

blasterpoard: that matters in this game at the top too

Nerchio: in intellij i see i have 36k chars

Nerchio: how much is the limit?

mlomb: 100kB

YannT: my bot is like 500 lines :p

pb4: -_-

Default avatar.png Rbee: Is there any way to view the past questions on clash of code?

elsinnombre2d2: nah, my problem is finding the path, my tracking algorithm is not really expensive at this moment

Nerchio: it means it's not good enough haha :D

AntiSquid: golfed? YannT

YannT: nope, kotlined :p

Illedan: I'm at 60k chars

elsinnombre2d2: why floodfill? i cant see the utility

YannT: 561 lines, I just added a thing to test

YannT: :p

aCat: YannT impressed ;-)

Illedan: 2k lines

aCat: but I believe the lines are 'write once' never read

Illedan: kovi, close enough to top 4 now? ;)

aCat: haskell-style ;p

YannT: it's really the same kind of thing yes :)

kovi: nice illedan!

Illedan: dbdr and pb4 inc to ruin my party :(

wlesavo: wow

Nerchio: who are the guys writing Cpt. bots for this game

dbdr: wlesavo wrote LeChuck

wlesavo: everyone and noone

Astrobytes: The Wood bosses are written by the game authors and the other bosses are user-bots chosen by CG

Nerchio: so when legend opened the bot was chosen from one of the top at that time?

dbdr: yes

Astrobytes: Yes, w lesavo's bot (from that time) is the gold boss

Nerchio: it's too strong :(

Nerchio: i know who to blame now

YannT: consider lucky you didn't get his current bot as boss :p

wlesavo: it differs a little codewise, but i actully broke smth in a boss submit

blasterpoard: Nerchio we need a strong boss, because otherwise we'd need more games to climb in legend

Nerchio: yea makes sense

dbdr: also legend should be legendary ;)

Nerchio: it's cool that potential kill shots can be done from like 10 squares away

blasterpoard: ...and it's not *that* strong

Nerchio: i am working on implementing kill shots like the gold boss who teleports across the map to finish me :D

dbdr: TELEPORT X Y

blasterpoard: I don't have that in my bot

Nerchio: i just died to the cpt

Nerchio: imagine this

Nerchio: surface -> move and load 1 more power so you can use silence -> torpedo -> trigger mine

Nerchio: this was the kill shot from 3 hp

Nerchio: :(

Nerchio: feelsbad

blasterpoard: quite common

wlesavo: only smitsi teleports

AntiSquid: stronger boss doesn't solve slow submits but it's good to have a strong boss since it will be a multi anyway and it goes straight into multi after this

AntiSquid: meaning most people stay active improve and flood legend

AntiSquid: maybe

YannT: multi bosses won't necessarily be the same though?

AntiSquid: i am sure they will, since the ladder doesn't change

AntiSquid: you go straight into same league as you weere in the contest

blasterpoard: YannT I think in crystal rush they are

kovi: gratz pb4

YannT: ahah 33 :D

Default avatar.png JasonTruter: I'm in wood 1 now

Astrobytes: gratz JasonTruter

Nerchio: thats not bad congrats

Default avatar.png JasonTruter: Just movement though

Nerchio: that's how most of us start

YannT: gratz JasonTruter :)

Default avatar.png JasonTruter: Thanks guys

YannT: now time to fire some torpedoes

Default avatar.png JasonTruter: Yeah

Default avatar.png JasonTruter: I have silence and sonar now

Nerchio: i used sonar+movement+torpedoes until gold

Default avatar.png JasonTruter: I've written my code to be more manageable now

Default avatar.png JasonTruter: hated all the ifs

Nerchio: i live and breath if skyscrapers

icecream17: 8th place out of 6000, wow

Default avatar.png JasonTruter: SHWEET

icecream17: I used to have a super complicated thing for CSB, but I replaced it with a single if statement. wow

Nerchio: what is csb

icecream17: coders strike back (i don't feel like doing ocean of code anymore)

Nerchio: :(

icecream17: I'm in silver, but can't make anymore progress. Every improvement makes it worse somehow

Nerchio: maybe you will come back with fresh mind :D

wlesavo: so pb4 was it just lucky submit or real improvements?

AntiSquid: go to discord and watch the streams, maybe you'll figure something out icecream17 or save the bot and start over and try something new

pb4: wlesavo : real improvements

Default avatar.png JasonTruter: Question, should you use all the actions?

Default avatar.png JasonTruter: just because they are there?

Default avatar.png JasonTruter: I intend on just using sonar and torpedo

Default avatar.png rwilson: JasonTruter torpedo too early & you give away your position. and if you don't use Silence, you won't be able to re-hide after your position is known.

Default avatar.png JasonTruter: I see

pb4: JasonTruter : early on focus on torpedo/silence, then add mines

Default avatar.png JasonTruter: When you fire a torpedo do you give away positon?

pb4: somewhat

Default avatar.png JasonTruter: Oh using your life?

Default avatar.png rwilson: early leagues easy to pass with torpedo and silence though ... silver & gold seem to be where early torpedos mess you over too hard to pass on.

pb4: You show you're somewhere in range of where you shot

Default avatar.png JasonTruter: I really need to get some decent pathfinding going

Default avatar.png JasonTruter: I think it's holding me back from moving towards a position

Default avatar.png JasonTruter: Example if I need to move towards my opponent if I know he's in a specific location, or moving to sectors

NormantasStankevicius: Just curious guys, what do you normally do, when your opponent uses silence?

Default avatar.png JasonTruter: Is it worth rewriting everything?

YannT: probably not, optimizing your path to stay underwater longer is generally more important than trying to get to the ennemy

Astrobytes: JasonTruter are you floodflilling from each possible direction?

Astrobytes: *floodfilling

Default avatar.png JasonTruter: floodfilling?

Astrobytes: Yeah, just checking the most accesible cells from each position

Astrobytes: *accessible

Default avatar.png JasonTruter: Ah I see, no I'm not flood filling right now

Default avatar.png JasonTruter: I have my own algorithm that uses a bunch of different inputs to detect the area

Astrobytes: Flooding with a BFS is useful

Default avatar.png JasonTruter: Yeah, then Im planning on BFS to location while tracking every move my opponent does and updating my destination everytime

Astrobytes: If you go in the direction with the most available accessible cells you'll maximise your tiem under water, for now

Astrobytes: *not correcting any more of my typos

Default avatar.png JasonTruter: Maximizing time just reduces being seen right?

Default avatar.png JasonTruter: time under water*

Astrobytes: Yeah, unless sonar/tracking etc, but it's a good start

Default avatar.png JasonTruter: A tactic I could use is reset on edge of map, then BFS to opponent

Default avatar.png JasonTruter: So I have a clear path

Default avatar.png JasonTruter: Surface on edge of map *

Astrobytes: You don't wanna surface too much, you lose life remember

Default avatar.png JasonTruter: Oh yeah forgot about that. But possibly do it once just to get a clear path

Astrobytes: Try going to cell with most available flooded cells and surface when you run out.

Default avatar.png rwilson: if you watch the higher league replays, you'll see that most of the time anyone uses SURFACE is to be able to go back over their own path - because they don't want to keep going ( usually a mine field, or face check an enemy that knows their position )

Default avatar.png JasonTruter: I see

Default avatar.png JasonTruter: So best advice is find a path where you don't surface at all

Default avatar.png rwilson: simple flood fill to avoid surfacing should be enough to help get up to bronze/silver ( with a bit extra)

Astrobytes: ^^

Default avatar.png JasonTruter: I'm fairly new to algorithms :) so learning along the way

Astrobytes: Good time to learn dude!

Default avatar.png JasonTruter: I work with high level code mostly, and understand data structures well

Default avatar.png JasonTruter: All the algo's were built already

Default avatar.png JasonTruter: So now I can actually think

Default avatar.png rwilson: ;) and a fun way to do it... ;) so much easier to go learn BFS if you'lre make that next League ( versus .. just because :) )

Default avatar.png JasonTruter: Yeah dude

Default avatar.png JasonTruter: I'm actually hooked to this game

Astrobytes: You'll get hooked to the others too, I guarantee it :D

Astrobytes: Anyway, I'm out for tonight

Astrobytes: cya's later

Default avatar.png JasonTruter: cheers!

YannT: it's actually not a bad idea to go to leaderboards and watch some high rank replays to get an iidea of what you probably should be doing ;)

YannT: https://www.codingame.com/contests/ocean-of-code/leaderboard

YannT: "view last battles"

YannT: although you don't have mines yet

Nerchio: how do you guys tackle life lost?

Nerchio: i mean people can surface/get hit by their/your mine your/their rocket etc.

Default avatar.png rwilson: ;) life lost plays into a number of scenarios .. if you're careful, you can use most of them to gain more information

Default avatar.png rwilson: the 2 main ones being, 1. they SHOULD know where you are down to at least 9 squares, unless it was a surface --- so you might want to run.

Default avatar.png rwilson: 2. if they got hurt by your stuff, you can narrow your knowledge of where they are

Nerchio: i know i do most of this stuff

Nerchio: but what i am saying is

Nerchio: sometimes you get false positives

Default avatar.png rwilson: ;) only if you don't code it to account..

Nerchio: like i hit a guy with direct rocket + a mine so 3hp

Nerchio: but i usually think that direct rocket is 2hp

Default avatar.png rwilson: i.e. if you assume they lost life from your shot, but they also surfaced... then you've coded it wrong ;)

Nerchio: so if i code it for 3hp when they combo

Nerchio: what if i shot him 2 hp and he shot himself for 1hp

Nerchio: then i have false positive and my tracking my fall apart

Default avatar.png rwilson: ;) it's only a false positive if you don't take into account the other information you have..

Default avatar.png rwilson: i.e. you always know if he surfaced, you always know when he triggers, and you always know when they fire a torpedo ..

Nerchio: hmm

Default avatar.png rwilson: if any of those comibnations could 'confuse' your knowledge of 'did i hit him?' ... then you must assume you did not

Nerchio: i should trust my stats more i guess

Nerchio: I do assume i did not and thats why i lost some games

Default avatar.png rwilson: .... ;) or split it .. and record it probabilisitically , like MAYBE .. but can't use it as 100% knowledge like you can while figuring out path movements..

Nerchio: i already have enough splits because of silence :D

Nerchio: but actually you gave me a nice idea

Default avatar.png rwilson: ;) might be able to improve that a bit... most of the time in my games, it looks like silence only hides for usually 1 silence ( meaning, by the time you can silence again, your position & prior path has converged

Nerchio: true

Nerchio: but i should consider 3hp as 2+1 so direct hit + something

Nerchio: i mean there could be stuff like 1+1+1 but that would be crazy :D

Nerchio: maybe not worth taking that into account

Default avatar.png rwilson: my mine, their mine & surface, or a missed torp

Nerchio: i mean surface i basically ignore

Nerchio: in terms of hp lost

Nerchio: so its more like rocket close/rocket close/ mine or something

Nerchio: instead of direct rocket + something

Nerchio: i guess still lots of possibilities

Default avatar.png rwilson: ;) unless you thought your mine detonation caused it ... ;) i watch to make sure i don't accidentally narrow location due to dmg.. when they actually just surfaced..

Nerchio: i did narrow down a few times too much and i lost track of everything thats why i want to be careful with this now

Nerchio: I need to remember if I shot 100% shot last turn or not

Default avatar.png rwilson: ;) gets a bit trickier if you fire a torp and mine ... he takes 1 dmg.. you can still narrow - but you have to be careful with how you do it..

Nerchio: i can't make a mistake a direct shot for 2 close-torpedos for 1hp

Nerchio: yea

Nerchio: the one you are talking about

Nerchio: i mean

Default avatar.png rwilson: ;) you don't really know / care if you THOUGHT it was 100% ... you just know the result ... use that to correct your 'belief' of where they are.

Nerchio: if torpedo and mine don't overlap you can't do much i guess

Nerchio: i will need to reconsider this part of my bot

Nerchio: still have some mistakes

Default avatar.png rwilson: :) 225 cells max, torp and mine cover at most 18 in a turn .. even if they don't overlap , you a 1ph hit would confirm their in one of those 18 ( just don't get confuesd by surface, or enemy self damage )

Nerchio: that's what i mean they can hit themselves and unless you know their exact position you can't know

Default avatar.png rwilson: lots of info ... and it does look like many of the top guys have that coded in already .. but it doesnt' look like thats the MAIN thing

Nerchio: sure but every turn counts so properly assessing this information is important

Nerchio: in some cases you probably just have to accept that you can't use the knowledge from hp lost

Default avatar.png rwilson: ;) it's a giant pile of VEN Diagrams ;) you can always glean SOME information out of it ... it may not always be 'THEY ARE HERE "... but it's always ( are they inside or outside this set of spaces )

Nerchio: okay thanks i will think about this tomorrow but maybe focus first on fixing some other stuff

YannT: the only really confusing information is if they hit themselves

pb4: Why would it be confusing ?

Default avatar.png rwilson: ;) was thinking the same thing...

Default avatar.png rwilson: but i totally get what YannT is getting at ... you'd assume MOST of the time they wouldn't shoot themselves

YannT: also if they shoot themselves, you don't know when that happened in their turn (it could be before or after moving)

Default avatar.png rwilson: but i coded in a special allowance to allow self damage if it wins... ( and i see a lot of top bots do MORE self dmg , even if it's a couple turns till it wins )

YannT: you know your torpedo hits before they move, you know when they fired theirs (before or after moving), but you don't know what hit what really

Default avatar.png rwilson: ;) right, the area of uncertainty is larger than normal.. but shouldn't be too confusing ;)

YannT: so if they hit themselves, it can be confusing

YannT: you actually miss the information

Nerchio: that's what i am getting at

YannT: you fire a torpedo, they fire a torpedo, they lose life, you don't know which hit what

Nerchio: if you do damage and you expect it it's all good

Nerchio: but if they also fire a torpedo and hit themselves for 1hp or something it gets tricky

YannT: there's actually missing information, you can't know

Default avatar.png rwilson: ... but you know the damage was done whilst inside one of those blast radius ... so .. keep all potentials inside.. and prune all outside ..

YannT: yep

YannT: still, it's confusing :p

Nerchio: yeah thats obvious

Nerchio: but ideally i would like to say, i see 3 positions i shoot a rocket for '2' hp so I would like to think its a direct hit

Nerchio: but if they also shot a rocket, was it really a direct hit?

Default avatar.png rwilson: ;) and that's exactly what you learn :) .. you only get a direct hit, if you fire , do no other dmg, they don't sufrace , trigger or torp.. THEN you know it's a direct hit ;)

Default avatar.png rwilson: SOMETIMES you 'KNOW' ;) but sometimes it'll be a cloud of 2 or 3 things .. ( that can still DRASTICALLY narrow down their location ... )

wlesavo: lol 40% vs pb4 and 50 vs illedan is enough to push me on their subs

Default avatar.png rwilson: nice

pb4: push you up ?

wlesavo: yes

pb4: :D

wlesavo: from like 10-12 to 7

YannT: pushing small improvements :)

YannT: not doing well :D

icecream17: oooh 2nd place

icecream17: YAS. Cars collide with each other. huh

icecream17: What? 20998th? That doesn't even fit on the square...

Zenoscave: Are any legend players detirministic?

elderlybeginner: how to find which easy puzzles gives bronze achievements

elderlybeginner: ?

elderlybeginner: maybe achievement showcase shows them all?

struct: It shows all yes

elderlybeginner: :( then it's time for medium ones

struct: Its a good ting

struct: thing*