From CG community
Jump to navigation Jump to search

lord8266: is there a source size limit to ocean of code?

struct: 100k chars

lord8266: ok peace

lord8266: and is the response time same for all languages, im already hitting ~7ms on python for almost nothing

struct: same time for all languages yes

lord8266: damn thats bad

struct: Do you start the timer after reading first input?

lord8266: yeah after every update, i made my own environment in python and stuff..

lord8266: sorry for being stupid, how do you run this locally

Nixerrr: Depends what you want to do lord8266

Nixerrr: You can clone the repo and run it locally. Here is the SDK's documentation:

Nixerrr: Or you could recreate the simulation from scratch

lord8266: thank you

dbdr: Nixerrr thanks for taking the early shift! ;)

eulerscheZahl: yes i don't see how the documentation helps to just run it

eulerscheZahl: i answered him on discord, where he asked the same

eulerscheZahl: by linking to that question on the forum

Nixerrr: tbf I haven't checked if the documentation gives instructions to running it. Just assumed it did

Nixerrr: It was a false assumption it seems

eulerscheZahl: you deserve a not helpful answer for asking the same questions at different places

Default avatar.png FlyingMoustache_e541: hi

Default avatar.png FlyingMoustache_e541: can you help me

Nixerrr: Depends

Nixerrr: If you want money, no

Nixerrr: If you need coding advice, maybe

eulerscheZahl: yes, you can help me my opponent tracking needs improvement

eulerscheZahl: thanks for your offer

Nixerrr: :P

lord8266: im sorry, im really new around here

eulerscheZahl: check discord, i linked a helping answer there

eulerscheZahl: but it's not trivial if you don't know java and maven

lord8266: ok so I ran mvn clean install and it installed dependencies

lord8266: then how do you run

lord8266: im on ubuntu 18.04

lord8266: running it with java src/test/java/ throws some compilation error

eulerscheZahl: i never tried from command line, i always used eclipse or intelliJ


Default avatar.png yfprojects: Where do you run mvn on Windows?

Default avatar.png yfprojects: @eulerscheZahl

eulerscheZahl: import somehow failed

Nixerrr: Looks like some dependency issue

eulerscheZahl: don't ask me windows questions, i'm on linux myself

Nixerrr: lord8266 Why do you want to run it locally btw?

lord8266: java --version openjdk 11.0.6 2020-01-14 OpenJDK Runtime Environment (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1) OpenJDK 64-Bit Server VM (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1, mixed mode, sharing)

lord8266: I thought I could use little grid search for parameters to see where the opponent will be using given directions

Uljahn: good question Nixerrr

eulerscheZahl: not a java problem, you somehow failed to import the codingame SDK from maven

Tiramon: so classpath is not set properly

Nixerrr: lord8266 I don't think you need to run the game locally to add enemy detection to your bot

lord8266: so i have for each tile a surrounding value which tells how many islands or corners are obstructing it

lord8266: not obstrucing, i meant like around it

lord8266: so then given enemy moves i can place those moves on top of each square assuming the player was there

Nixerrr: One thing you could do is keep track of the cells the enemy could occupy and keep reducing that list of cells

Nixerrr: 1st round - it's every cell that isn't an island

Nixerrr: Then enemy moves north

lord8266: exactly im doing something like that

Nixerrr: Okie

Nixerrr: Also, you'll hit computational boundaries sooner with Python than with other languages

lord8266: so just find the right values for surrounding if it is an island or corner to see why the player turned and grid search for which values (like 0.5,1,2..) i can find at the earliest which sector the opponent is in

eulerscheZahl: you don't need a local copy of the referee for this

dbdr: pub const INITIAL_COOLDOWN: u8 = 3;

dbdr: what was I thinking?

eulerscheZahl: saving bits by using u8 i guess

dbdr: yes. the issue is there is no such constant

dbdr: it depends on the power

eulerscheZahl: oh, that's a combined const for all of them...

eulerscheZahl: you wrote that in wood2 maybe before knowing about the rest

dbdr: yes, must be it

dbdr: pub const POWERS: [Charge; POWERS_COUNT] = [Mine, Silence, Sonar, Torpedo]; pub const INITIAL_COOLDOWN: [u8; POWERS_COUNT] = [3, 6, 4, 3];

dbdr: better

sudomakeinstall2: how to know if i got a timeout?

eulerscheZahl: you mean for all games of your last submit combined?

eulerscheZahl: or a single game?

sudomakeinstall2: no just the on i am testing in ide

eulerscheZahl: what does it say at the last frame?

Uljahn: Nixerrr: this game is very numpy friendly btw

sudomakeinstall2: -1 life

eulerscheZahl: there are red and orange rectangles on the progress bar below the replay

eulerscheZahl: hover over the last one

sudomakeinstall2: oh yeah i saw it

sudomakeinstall2: thanks

eulerscheZahl: and check the output area below the replay for error messages

eulerscheZahl: you might see a line number where it crashed

sudomakeinstall2: thanks it was the timeout.

Nixerrr: Uljahn Good to know

dbdr: it's a bit painful to submit when I'm #6 :D

AntiSquid: ^ just remember there's a full month ahead and things change a lot :p

dbdr: sure, it's not rational :)

dbdr: there, I as brave

dbdr: *was

AntiSquid: #4

AntiSquid: are you learning rust or are you using it daily?

dbdr: with 20% timeouts

dbdr: I don't use it for my job

dbdr: only for CG and hobby programming

AntiSquid: why rust over c++ ?

dbdr: much cleaner

dbdr: no segfaults

dbdr: same perf

dbdr: oOo

egaetan: Hello dbdr oOO

dbdr: you still beat me 2-0 so far :)

egaetan: 2/0 is not significant enough

dbdr: I know

thibpat: hi all, I'm going to stream my Ocean of Code progress on, feel free to come say hello :wave:

thibpat: Sorry I mean

dbdr: cool. did you announce on #streaming on discord thibpat?

egaetan: Aaah my lost game vs dbdr is a timeout :(

thibpat: I didn't dbdr, good point!

egaetan: dont feed mchi12

dbdr: is it a silly timeout egaetan?

dbdr: or too many paths?

dbdr: ok

dbdr: :D

egaetan: a silly first turn, class loading from java

dbdr: ah

dbdr: good for you, should be fixable no?

egaetan: if i only know what exactly...

dbdr: what's your output?

dbdr: real victory this time :)

egaetan: nothing... everything is fine, debug fine too, except timeout fro mplateforem

egaetan: gg dbdr

dbdr: merci!

dbdr: nothing on stderr?

egaetan: nothing

dbdr: :(

dbdr: I seem firmly in top 3 now, big gap with #4

dbdr: egaetan do you have a print early on that does not show?

dbdr: oh I think I know. it might very well be the issue I talked about on the forum

egaetan: dbdr i hate you

dbdr: will you love me if I fix your timeouts? ;)

egaetan: Ahh maybe

dbdr: :)

dbdr: only turn 1 is 1s

dbdr: you need to exercise your main code

dbdr: to load the classes and start the JIT

dbdr: otherwise they will load on turn 2, when you only have 50ms

egaetan: ok so far i did that, i should have miss one

egaetan: i did warmup streams and optionals

dbdr: maybe run them several times

dbdr: the JIT does not quick in if a method is called only once

egaetan: it more a class loading issue that a jit i think

dbdr: ouch, streams are hard for performance

dbdr: and a lot of classes to load...

egaetan: yes, but easy to write

dbdr: I had such issues when I used Java

dbdr: my solution was to avoid streams

dbdr: sure

dbdr: I use them in rust, zero cost abstraction and all

MadKnight: a better solution was to avoid java

dbdr: I'm sure they get reasonably fast in Java, but startup is a killer

AntiSquid: new #1

mchl12: yeah, thanks for feeding guys

dbdr: np :D

AntiSquid: lol

mchl12: <3

dbdr: within the margin of error though

dbdr: egaetan will wreck us when he fixes his timeouts

dbdr: self.enemy.retain(|e| sector(e.pos) == surface_sector);

dbdr: it's quick nice way to filter a vector

MadKnight: dbdr discovers filter function

dbdr: :)

Nixerrr: Looks succinct

dbdr: and fast at the same time

dbdr: that's the great part

egaetan: gg mchl12

dbdr: well, only in release more. without optimizations it must be horrible

dbdr: egaetan by the way, there are ways to monitor which classes load

dbdr: but that might not help, you already know the problem I think

dbdr: wait, you timeout on turn 2 right?

egaetan: the first turn @ 50ms

dbdr: yeah

dbdr: that means classes were loaded, if you warmed up correctly

dbdr: so it might be the JIT

egaetan: i dont know, jit should not impact when i run in 1 ms

dbdr: there are several passes of compilation

dbdr: first few executions are interpreted, to collect stats

dbdr: then a quick compilation

dbdr: then if enough calls, recompiled with optimizations

Nangini: dbdr rust is nice compact powerful but sometimes it can be tricky

Nangini: with the ownership thing

Nangini: when you have to use Box or Arc etc...

dbdr: yes, you need to get used to it

dbdr: I almost never do use those

eulerscheZahl: ownerSHIP

dbdr: you need to design your data model differently

eulerscheZahl: sorry, couldn't resist

dbdr: nice one eulerscheZahl

dbdr: :D

dbdr: Nangini what other language do you use most?

Nangini: that's why i finally gave up on rust

Nangini: and use Go

Nangini: i cant wrap my head properly around graph in rust

dbdr: right, in Go you have a GC so you just let it do it work

Nangini: but the experience of learning/using rust was really worthwhile

Nangini: and an other thing at the time on CG rust was not in release mode

dbdr: yes, many ppl say that, it's useful even for programming in other languages

Nangini: so the perf were not up to what the language can really achieve :)

dbdr: for graphs, the simple solution is to use a vector and to model links as indexes

dbdr: it's a bit weird at first but easier I think

dbdr: and it's also good for cache locality

dbdr: better than references all over the heap

dbdr: so good for performance

Nangini: i might give rust an other try but not on CG

Nangini: perhaps looking at servo or sth...

dbdr: sure. it would be nice if CG did at least -O1 in debug mode

dbdr: I had a 40x slowdown the other day

dbdr: between debug and release

Nangini: of course!!

Nangini: sometimes you can't run properly a code in the ide which will perform great in the arena...

YannT: it climbed to #10 while sleeping

dbdr: in that case, I replace a for .. by a while and got 30x speedup :D

YannT: who's a goood submarine

YannT: it's youuu

Nangini: dbdr nice trick ;D

dbdr: Nangini otherwise the workaound is to compile locally and to send the binary to CG

dbdr: but a bit of a pain

dbdr: need to get the binary small enough

pb4: it's made easier with Agade's send tool

pb4: but it's forbidden during contests

pb4: also beware, in some cases I NEVER even approached the performance of code on CG + pragma with send-tool

pb4: Notably on vindinium, I still don't understand why but I lost 75% performance

MadKnight: it probably compiles for any cpu so it doesn't use fancy things or maybe it compiles for x86, pb4

dbdr: pb4 I don't think it's forbidden in the IDE

dbdr: you can submit the source

YannT: it is, there's a no obfuscation rule

YannT: I think

dbdr: sure, for what you submit

dbdr: what does it matter what runs in the IDE?

dbdr: it affects nobody else

YannT: oh yeah for IDE probably no one cares :)

AntiSquid: 2 weeks of bronze?

Tunga: Newbie here, are you all here talking about bot contests? And what is the best performance language for bot, C++? How is python performance ?

735487: AntiSquid: 1 week as I see

emh: I broke everything with big refactor.. now don't know where to begin

AntiSquid: oh lol ... i somehow read it as 3rd of april, didn't wake up properly

Uljahn: Tunga: python is worst unless you know how to vectorize with numpy

AntiSquid: unless you're a cat with a cat avatar

735487: emh: start from rollback of backup :)

AntiSquid: history tab yeah

emh: I have git history as well... but hate going back

Tunga: Uljahn Thanks!

dbdr: emh :(

dbdr: I know the feeling

dbdr: small refectorings rule, but not always possible

emh: dbdr thx for sympathy

dbdr: when you do a big refactoring, it's ok to expect some debbugging afterwards, no?

emh: yes but could have doner smaller steps

emh: got too eager

dbdr: yeah, live and learn

dbdr: sometimes I has two implementations of the same thing, just to assert they find the same result

dbdr: sometimes I was less clever

dbdr: I mean keeping the old implementation until the new one is proven

pb4: Can you trigger several mines in the same turn ?

dbdr: "you can use each type of action only once per turn"

pb4: thanks

accorp: how about with torpedo? :)

YannT: when doing big refactors, I try to find any reproducible battle (in the IDE), and check that the frames are the same after refactor

dbdr: that's a good idea

egaetan: emh where are you ?

emh: egaetan down and broken

emh: but at least I got my tea order today

emh: gunpowder green tea

emh: jasmine tea

emh: christmas tea

emh: licorice tea

egaetan: :)

egaetan: dbdr that's not nice

dbdr: at least I don't feed mchl12 as much

dbdr: but yeah, sorry

YannT: you knocked me down 5 slots dbdr please never push again :p

dbdr: sure thing :D

dbdr: ending the contest right now would fulfill your request

dbdr: I would not mind

YannT: okay for me too, I'm in top20 so I get the tshirt

dbdr: I only beat you twice

dbdr: pretty close TS scores

YannT: we went 8-1 in my last battles

dbdr: probably from my previous push then


dbdr: 24%

AntiSquid: what sort of random magic are you using mchl12 ?

emh: yay found a bug. but there are more

dbdr: emh I love the licorice taste!

dbdr: seems like you are set for the month tea-wise :D

emh: dbdr me too. brewing first cup now. yes 500g or so hehe

dbdr: clever in these times

dbdr: what are you changing?

emh: just "compressing" code

emh: removing redundancies

emh: and some small changes I run into

emh: when I see it

dbdr: oh, then indeed small steps would have been better

dbdr: I thought you changed the approach

emh: nah

dbdr: still you will sort it out

emh: hope so

emh: and btw it's licorice chilli hehe

emh: I put a lot of tea in it. it's black now hehe

dbdr: :)

dbdr: mchl12 beats dbdr dbdr beats egaetan egaetan beats mchl12

dbdr: hm

egaetan: hum hum

egaetan: if only mchl12 resubmit i will be #1 again ?

dbdr: possibly

egaetan: and you will be third ?

dbdr: though sample is small, who knos...

dbdr: knows

egaetan: if i resubmit you will be first ?

dbdr: only one way to know for sure... ;)

dbdr: you have nothing to lose

dbdr: Schnee is far

egaetan: let's try

dbdr: :popcorn:

dbdr: you lose against bottom lb, probably timeouts

dbdr: that must hurt

egaetan: ouch in first 10 , 5 timeouts

wlesavo: probably its the silence spamers

egaetan: only loose are timeouts

egaetan: wlesavo no, something weird with first turn

emh: found another bug. more remains

YannT: egaetan; maybe you should preload .split() too ;)

wlesavo: egaetan maybe its related to that 20ms discussion?

emh: and another. looking better now

dbdr: great

egaetan: dbdr nothing to loose ? hmmm !

dbdr: :D

dbdr: looking better

egaetan: only 3 timeouts in first 20

egaetan: that's awfull

YannT: how do you timeout anyway do you have a sim already?

egaetan: no something with first turn @50ms

dbdr: strange that kotlin does not have the issue

YannT: I did have the issue

dbdr: :phew:

YannT: classloading on split on the first turn

dbdr: lol

YannT: first call of split cost 20ms for whatever classloading reason, so I put a junk one in the initial 1s thing to fix it

YannT: fun main(args: Array<String>) {

   "NA".split("|") // Classloading du split => 30ms

egaetan: dsl YannT i didn't timeout vs you

YannT: :(

YannT: maybe you could put a sleep in to maximize timeouts?

dbdr: Illedan, would there be a way to see the last frame?

dbdr: now it's hidden by the end screen

egaetan: 27 timeouts on 93 game => #22

Illedan: Yeah, I know. I will rewrite this code into actually doing 1 command at a time. And add an empty frame at the end

Illedan: But it might be a few days

Illedan: You know, life, my own bot and all that

Illedan: And yeah, work

dbdr: sure

dbdr: there is time :)

YannT: top20 gets shuffled everytime someone in it pushes

Default avatar.png yfprojects: Is threading a thing in CG?

Scarfield: only one core is available

Default avatar.png jrke: anyone of you can hack any website

Uljahn: Automaton2000: can you hack

Automaton2000: but i like the idea of a good one

MSmits: holy :poop: They just cancelled my exams

Illedan: Damn, more time for OOC?

MSmits: no, it's after OCC

MSmits: OOC

Illedan: Let your class know they are graded based on OOC?

Illedan: :D

MSmits: during the other planned contest

MSmits: I mean my physics class btw, my CS class has no exams

MSmits: so they will get their diploma based on tests they did in our school as opposed to national exams

MSmits: it's really weird. Never happened before

MSmits: what if they screwed up our tests? They normally would get a (long) shot at the national exams to compensate. That's now gone

YannT: I'm sure they canceled CS exams during the dark plague too

dbdr: yeah, priorities

MSmits: it may cost some students a year of studying though

MSmits: some might not be happy about this

Scarfield: just have them do the exams from home, and tell them not to cheat

MSmits: hah we can't even do that.

MSmits: minister of education decided they're cancelled so they're cancelled

YannT: can't give some home assignement anbd then on the school level decide to give it a bigger coefficient than the other school tests

YannT: that would be like an exam

ThunderbirdOne: Cpt. Levine just torped himself... what a nerf

MSmits: YannT, we can, but that would be slippery slope. Would lead to some obviously unqualified students to get their diploma

egaetan: dbdr only 10 timeouts for 92 games

ThunderbirdOne: give students online exams with access to internet... yeah... sounds like a good idea

YannT: for CS you can give some assignement that is more practice than theoratical no?

MSmits: it's physics, not CS

YannT: one where having google doesn't matter

YannT: ahhh

YannT: yeah that's harder

MSmits: also, it's not just, me it's all my colleagues as well. French, German, chemistry, biology etc.

YannT: have them screw around witrh pendulums at home ahah

MSmits: lol..

ThunderbirdOne: i have a friend whos doing physics in uni... all labs cancelled... so yeah :P

tonowak: Illedan it seems that I don't see any of my MSG on the visualizer on the IDE, nor the text saying what actions a player did. It isn't normal, right?

dbdr: egaetan now you pull me down

egaetan: it'seems i correct my timeouts

egaetan: for sure i pull you down i want to climb upper

dbdr: whatever for? ;)

dbdr: mchl12 just never submit again and you'll be fine ;)

dbdr: egaetan what did you do against your timeouts?

egaetan: lot of small things

egaetan: i think the biggest win was a stream on a array from a split

Illedan: tonowak, can you give a replay?

mchl12: I will probably submit once someone takes my place, or when I get too impatient haha

YannT: egaetan: ah so it WAS the split for you too :D

tonowak: Illedan all of the games don't show any text

dbdr: split probably pulls lots of unicode data

tonowak: and btw, I'm on another laptop than normally

YannT: isn't the bottom of the viewer just cut off? :p

tonowak: but there is also some text above the bottom, if I recall correctly?

tonowak: i do not see any letter

egaetan: YannT yes it seems to be related

Illedan: Wierd

Illedan: I can't see your messages in the viewer either

Illedan: do you use some wierd |? :P

YannT: egaetan: would make sense, if Kotlin has a classloading thing with split, Java would have it too

tonowak: no, my submitted code doesn't use any MSG


tonowak: but my in the IDE does

YannT: oh yeah you've got no text at all

tonowak: yeah, zero letters :P

YannT: missing font or CSS style?

tonowak: probably yes

Illedan: Inspect it

Illedan: and check if you get any errors

Illedan: we are using Arial

Illedan: should be fine..

YannT: not on a stock linux install maybe

YannT: no ttf by default

tonowak: I'm on Arch linux

tonowak: that's possible

dbdr: another font should always be used as a fallback

YannT: do you have that ttf package thing on it?

tonowak: Arial? I would have to check


YannT: maybe

dbdr: "I don't have the exact font specified? let's ignore the text"I don't think that's how it works

YannT: shouldn't but who knows

dbdr: yeah, can be a bug

dbdr: display driver possibly

tonowak: on my main PC I have Arch and I remember that I installed microsoft fonts. Here probably I didn't

tonowak: I just installed the ms fonts. Still the same problem

YannT: :(

YannT: did you do

YannT: fc-cache -f

YannT: to regenerate the cache?

tonowak: shouldn't it do it automatically?

YannT: can't hurt :)

tonowak: still

dbdr: start your browser from the terminal

dbdr: see if there is any error message

dbdr: you probably need to quit it first

tonowak: hmm on chromium it is working

dbdr: otherwise it does not really start

tonowak: I'm using Brave

dbdr: report a bug on brave :)

YannT: oh, probably it's some CSS compatibility thing with that browser then

tonowak: brave is chromium-based :(

tonowak: I'll first update the system and brave

YannT: maybe it is insufficiently chromium based :p

tonowak: yeah but remember that on my second device with Arch and Brave it is working

dbdr: software is not correct when it sometimes works, but when it always works ;)

emh: Illedan what happened? broke it?

Illedan: hm?

Illedan: Broke what?

emh: your placement. your bot

AntiSquid: emh's heart :p

Illedan: Yeah, it's only doing silence and move

Illedan: Working on a new bot.

Illedan: And I kept losing focus of being too high ranked

Illedan: As this is a Marathon, not a Sprint :P

emh: ah hehe

Illedan: Should be done with something tomorrow or thursday

Illedan: Want to try and break the Mine strategy. Else we have to consider nerfing something

Illedan: +1 charge makes it 33% worse. Which might be a good idea. But I don't know yet

AntiSquid: is last change happening this friday?

Illedan: I was thinking yesterday, but cg says on friday. So I'll follow CG and try to find some good balance point if needed.

mchl12: Giving mines +1 cd also makes hybrid strategies weaker, because you cannot place 'some' mines and still do other things.

AntiSquid: even if it's just about adjusting heuristics, i think there should be a clear deadline somewhere

AntiSquid: where no more changes are made until after contest

Illedan: Was just one of the idea mchl12 :) Have to test it properly.

Illedan: Games is fun anyway at the moment, don't want to break that

mchl12: Just wanted to share my thoughts, but I agree that the games are fun currently.

mchl12: I think no matter what you do, sometime there will be an optimal strategy.

YannT: I'm #8 with literally nothing coded regarding mines

YannT: not sure it's actually *that* powerful in the end

YannT: (and I still have some improvements possible without even touching mines still)

Illedan: Of course mchl12, but mines feels a little too random sometimes :)

TomerBG: Hey guys, can split your code to files and submit it?

Illedan: Yeah, but you have to merge them before you submit

Illedan: What lang?

TomerBG: cpp

Illedan: If that doesn't work. Try to search the forum for other options :)

TomerBG: thanks

AntiSquid: italy 6k wtf

ZarthaxX: AntiSquid at least it's going down in new cases

AntiSquid: how's your bot Zarbas ?

AntiSquid: ZarthaxX

ZarthaxX: there is a guy called zarbas here?

ZarthaxX: evolving i guess, how is yours squido

AntiSquid: i barely managed to get rid of some persistent bugs regarding enemy position

AntiSquid: don't have a real bot strategy in place yet

ZarthaxX: i see, plenty of time anyway

AntiSquid: and plenty of headaches

ZarthaxX: lol :rofl:

ZarthaxX: annoying game for you

AntiSquid: very much so

AntiSquid: i got an idea but it will take a while to write and then to sort out any possible bugs or issues

ZarthaxX: perfect contest for that then :)

mchl12: egaetan on the rise :O

egaetan: i hope

egaetan: maybe not enough

AntiSquid: to think that might not even be the gold boss :(

mchl12: Did you fix the timeout egaetan?

egaetan: it seems, will check at the end of the submit

Azkellas: Yeah, how do you evaluate your current bot compared to usual leagues? Would you say you have a top (10-day) gold bot? Lower / higher?

mchl12: I honestly have no clue, this is the first contest where I get out of wood.

mchl12: Looks like it was enough egaetan, wp

egaetan: ouufff

egaetan: was close

egaetan: mchl12 your turn to broke the leaderboard

mchl12: I'm on it

mchl12: Your bot is already in the IDE

egaetan: no play against others !

egaetan: Azkellas, i've got a top silver bot i think

Azkellas: Only top silver? :o I expected higher

Azkellas: Thanks!

egaetan: i could not the tuesday have a top gold bot ... :p

Azkellas: It's sometimes possible, depends on the challenge

AntiSquid: probably top gold bot

YannT: too early to tell

YannT: no one's written a simulation yet AFAIK

YannT: it's usually pretty gamechanging

AntiSquid: isn't enemy prediction part of the simulation?

YannT: turn 0 prediction no, that's just a heuristic

egaetan: Now that i don't have any timeouts, i can rewrite all for simulations... :p

pb4: How does the game handle a command like MOVE N TORPEDO when I already have full charges on the torpedo ?

pb4: does it discard the whole move command as invalid ?

YannT: doesn't do anything

pb4: or just not charge anything ?

pb4: thanks

mchl12: Your move goes through and you charge nothing

AntiSquid: how important is it to keep track about what the enemy's tracking

mchl12: I'd say that it is pretty important, you will know when to silence and when you can continue chasing the opponent for example.

mchl12: You can also use it to find out how much information certain actions will reveal.

HuyCuto: hello

Scarfield: hi

HuyCuto: goodbye

Scarfield: :wave:

HuyCuto: hello

egaetan: hello

Schneewittchen: hey ho

HuyCuto: kono dio da

HuyCuto: i'm stuck man

HuyCuto: mar lander ep 1

HuyCuto: how tf can i do that

HuyCuto: i'm disabled

Uljahn: go play fortnite, Automaton2000

Automaton2000: which is what i heard

HuyCuto: no

HuyCuto: don't disappoint me

HuyCuto: i can still do it

HuyCuto: where is the solution button

Scarfield: dont exceed max velocity

HuyCuto: :ok_hand:

HuyCuto: i dont get it

ZarthaxX: just crash dude

HuyCuto: :(

HuyCuto: vertical is what

HuyCuto: :(

HuyCuto: i don't learn engrisk very well

Uljahn: rest in rip

Scarfield: there is downwards acc of 3.711 iirc, and max thrust is 4. so to reduce downwards velocity, you need thrust of 4

HuyCuto: oke

HuyCuto: thank

HuyCuto: just printf 0 4 okay ?

Scarfield: try it

Scarfield: its almost enough ;)

HuyCuto: no

HuyCuto: it's fly upward

HuyCuto: i hate you

HuyCuto: how could you lie me

ZarthaxX: scarfo he is just trollling

Scarfield: yea seems like it

HuyCuto: no

HuyCuto: this task donot have a solution button

HuyCuto: :(

HuyCuto: okay

HuyCuto: EZ

HuyCuto: i solve it

HuyCuto: haha

HuyCuto: i'm a genius

Uljahn: you're level 4 while Automaton2000 is level 14 so he is 3.5 times more genius than you :smirk:

Automaton2000: or do you make a ga for any of the other moves

HuyCuto: :(

HuyCuto: can so help me pls :(((

egaetan: Automaton2000 do you want to help ?

Automaton2000: i'm trying to solve the ascii art puzzle?

Default avatar.png OmidSafari: hi

Uljahn: Automaton2000: 15 level soon?

Automaton2000: if you just want to get a 100% winrate

Scarfield: me too

Default avatar.png yfprojects: Did Automaton2000 get all his Xp by its own or did he get help?

Automaton2000: i didn't think that would be great

HuyCuto: he is a bot

Default avatar.png yfprojects: Thats why I am asking

tonowak: so if two players have trueskill a and b, what is the expected winrate for player a? Do we know it?

AntiSquid: ask magus about Automaton2000

Automaton2000: and now i have to type it

Default avatar.png RalphMcCrackenIII: Hey, all!

PJA: is it possible that printing a lot to stderr takes a lot of time

PJA: ?

735487: PJA: sure it is

PJA: amurushkin ty

ZarthaxX: PJA there was a contest where i timeouted everytime because of lots of stderr

ZarthaxX: so try to disable them for submit

PJA: ok thx

Magus: i needed to get Automaton2000 level 3 for the chat

Automaton2000: but how can you see what i do know

Magus: so i copy/pasted my nintendo solution

Magus: but after that, Automaton2000 earned 2500xp "by itself" with the A*C contest

Automaton2000: you don't see the point of that

Scarfield: xD

Earthborne: First submition yey! How do you think I'll do Automaton2000 ?

Automaton2000: how did you write a bot that has a good bot for it

BenjaminUrquhart: ah yes write a bot for a bot

BenjaminUrquhart: Earthborne my first submission does nothing but move to a valid location lol

Earthborne: Haha, I didn't want to submit until I could beat the boss

PJA: in bronze against who do u run your bot in test?

mchl12: Personally I run versus egaetan. You can also consider nagrarok, he is rank 45 with only torpedoes, great to test your basics against.

PJA: ty

PJA: and btw nagrarok uses sonar now

mchl12: ah I wasn't aware, as long as he doesn't use silence I'm happy

egaetan: stop playing against me mchl12

mchl12: don't think I can cancel a submission ;)

egaetan: or i will start to use silence !

mchl12: not silence! anything but silence!

egaetan: better silence X x|MOVE x SILENCE

BenjaminUrquhart: SILENCE

BenjaminUrquhart: thanks for coming to my ted talk

BenjaminUrquhart: have a nice day

Default avatar.png Insta-x: how to do custom match with someone?

Default avatar.png Insta-x: owh nvm

Default avatar.png Insta-x: i just got it

darkhorse64: Do you remember that ocean is sometimes called "the worl of silence"

darkhorse64: ?

darkhorse64: *world*

eulerscheZahl: yesterday evening i was #19 now #10 without submitting anything :thinking:

Waffle3z: resubmit and end up in 30th

eulerscheZahl: no

eulerscheZahl: maybe because the mine bug was fixed and my tracker is no longer broken

ZarthaxX: code fixing itself, innovative toad

darkhorse64: If you can't fix your bot, fix the referee

AntiSquid: what's wrong with the referee now?

eulerscheZahl: nothing afaik

Illedan: Only visuals.

eulerscheZahl: but fixing visuals can add logic bugs, as the past taught us

darkhorse64: What if the map was a twisted torus ?

eulerscheZahl: twisted?

eulerscheZahl: i know what a torus is. but twisted?

Scarfield: mobiius torus :thinking:

AntiSquid: twisted torus

eulerscheZahl: we should give an instruction how to build it with paper instead of a proper definition for sure

darkhorse64: like the one for detective pikatcha

AntiSquid: ya lol why not make the game worse than it is :/

eulerscheZahl: this image gives me headache

AntiSquid: sorry, no disrespect meant

Scarfield: i guess you mean that the map "wraps" in West-East and North-South?

Scarfield: there is a term for it, but cant recall

darkhorse64: Yes. Ofc, I was kidding although a circular map would make tracking a bit more difficult

mchl12: Are you ready for more matches egaetan?

egaetan: no

egaetan: mchl12 i said no

AntiSquid: the number 1 hair band is hard to keep

mchl12: you were too late :)

mchl12: wala is holding me back though

Swagboy: Illedan a nice visual fix would be to display the last frame when a submarine is destroyed

Swagboy: Right now you don't see the last torpedo fired when you destroy your opponent, would be much more pleasant if we did!

eulerscheZahl: he knows that already :D

pb4: Is there a way to highlight your timeouts in a submit nowadays ?

pb4: by random sampling, it seems that I lose a lot by timeout

egaetan: i developped a simple tool for that

egaetan: parsing replays one by one

pb4: shareable ? ^^

egaetan: -> mp

PJA: how do u choose where to move to? just trying to avoid been tracked?

egaetan: it may be a beginning

struct: Are the mines going to be changed or you dont know?

Illedan: Most likely not.

AntiSquid: what do you plan to change anyway

Default avatar.png Slash-Dev: Hi, I'm wondering if there is not a (another?) mine bug. If a mine is at [2, 5] and a ship is right below the mine (South of the map so [2, 6]), and writes: MOVE N SILENCE|TRIGGER 2 5 Should it get hit by 1 or 2?

struct: 1 i think

BenjaminUrquhart: actions are processed in order

Illedan: give a replay?

Default avatar.png Slash-Dev: OK so 2 in that case?

Illedan: Should be 2 yeah

Default avatar.png Slash-Dev: OK, then there is no bug :)

struct: ah rihgt 2

Default avatar.png Slash-Dev: Thank you

struct: read wrong

Illedan: phew

struct: no more bugs :)

Default avatar.png jrke: can anyone of you come in clash of code:slight_smile:

BenjaminUrquhart: no

BenjaminUrquhart: do sub wars

Default avatar.png jrke: why

BenjaminUrquhart: ocean of code

struct: but I find a viewer "bug"

Default avatar.png Slash-Dev: I thought I read somewhere that the damage was determined on the position at the beginning of the turn so I was confused.

struct: I dont think it needs fix though

struct: A bit hard to fix

BenjaminUrquhart: struct there's no such things as no bugs

Default avatar.png jrke: i have bored working on it so i am playing clash of code

BenjaminUrquhart: smh

struct: If I use arrows to navigate, the viewer can look like this


AntiSquid: clash of code discussions to only be carried out in isolation in private chat rooms during the contest jrke

BenjaminUrquhart: struct what's that seed again?

struct: seed=-430391657

BenjaminUrquhart: thanks

BenjaminUrquhart: lmao boss committed suicide

AntiSquid: doesn't load

BenjaminUrquhart: works for me in incognito

dbdr: works forme

dbdr: some replays fail to load, need to refresh them

Default avatar.png jrke: thanks

AntiSquid: welcome to CG enjoy your stay jrke

Default avatar.png jrke: yeah

Default avatar.png Slash-Dev: Just double checking, if an opponent does a wrong command, it goes to surface but will I get a SURFACE signal or their wrong command?

BenjaminUrquhart: yes

Default avatar.png Slash-Dev: yes SURFACE or yes wrong command?

BenjaminUrquhart: idk


Default avatar.png Slash-Dev: Means don't know?

AntiSquid: means ignore weird replies from weird people and ask someone else

BenjaminUrquhart: :thumbsup:

struct: you get the surface command

Default avatar.png Slash-Dev: Thank you :)

AntiSquid: no problem, any time

Default avatar.png Slash-Dev: And that's called a moderator :)

AntiSquid: i gave moral support

egaetan: i need some AntiSquid

mchl12: moral support won't give you those .01 elo points egaetan...

egaetan: oops spotted

AntiSquid: you used java and the gap is very narrow, so that's definitely good

AntiSquid: c++ is the fastest i mean

AntiSquid: actually you didn't give up, i am taking a break until i find the motivation to rewrite a big chunck

AntiSquid: stay positive

AntiSquid: ok forget everything i just said you dropped another 0.01, it's all over now

BenjaminUrquhart: alright my tracker is finished enough, time for me to join the fight

struct: Just add java optimization flags

BenjaminUrquhart: not sure you can add flags to the jvm at runtime

mchl12: egaetan, I found this match where you get an error message about the codingame referee? Did you know about this?

eulerscheZahl: "SILENCE 69 2 "

eulerscheZahl: ascii(69) = E

AntiSquid: direction 69 :thinking: Automaton2000

Automaton2000: i am trying to make it even worse

wlesavo: am i understanding this correctly that if player kills and suicides he is gonna win?

eulerscheZahl: and east would be straight into an island here

eulerscheZahl: if both die, it's a draw

eulerscheZahl: 2 stars below the viewer confirm that

wlesavo: oh i see

wlesavo: thx

wlesavo: maybe adding a win/lose/draw message to summary would be a good idea

eulerscheZahl: you have the endscreen showing the ranking

eulerscheZahl: both 1st = it's a draw

wlesavo: oh im really stupid

wlesavo: never noticed that

eulerscheZahl: inexperienced with the CG platform

eulerscheZahl: the endscreen is a standard module, not done specifically for this contest

wlesavo: the replay is still funny though

egaetan: mchl12 SILENCE 69 2

egaetan: eulerscheZahl

eulerscheZahl: yes?

egaetan: why am i the looser , i'm not the one writing wrong output

eulerscheZahl: are you sure?

eulerscheZahl: the colors below the replay are wrong

egaetan: sure

eulerscheZahl: CG somehow fails to indicate the player for 1 player per turn games

egaetan: i write my output msg like this MOVE E MINE|MSG 6/6

wlesavo: MOVE S MINE|MSG 6/6

eulerscheZahl: indeed

egaetan: and i dont do move + surface

eulerscheZahl: ILLEDAN

wlesavo: lul thats a nice bug

eulerscheZahl: i better try it on discord, easier to catch him there

BenjaminUrquhart: nice enum fail

eulerscheZahl: so that's why mchl12 is so high? making the opponent lose by printing nonsense?

BenjaminUrquhart: lmao

AntiSquid: blame that on not being first! :p

egaetan: yes i think

egaetan: mchl12 you are discovered

AntiSquid: probably bribed Illedan

wlesavo: 69 is a secret code to win

Uljahn: does it summon Automaton2000?

Automaton2000: just had to say it

Default avatar.png sacre: are there shortcuts to run individual test cases ?

eulerscheZahl: CTRL+ENTER for one

Default avatar.png sacre: thx

eulerscheZahl: CTRL+SHIFT+ENTER for all

jacek: ALT+F4

AntiSquid: get a macro editor :p

BenjaminUrquhart: eulerscheZahl here's a short reproduction

eulerscheZahl: thanks

eulerscheZahl: luckily i only have to forward it :imp:

struct: Strange bug

blasterpoard: eulerscheZahl I think there's a very minor mistake in the statement

blasterpoard: at the very bottom, there is a list of actions

Zenoscave: the space after silence?

Zenoscave: err surface

blasterpoard: SONAR should be SONAR x

eulerscheZahl: can't blame Illedan on that one :/

Zenoscave: dont mind me I need new glasses. I have bad vision for spaces

eulerscheZahl: will fix but not deploy before a more relevant fix is done too thanks for reporting blasterpoard

mchl12: noo, you found my strategy

BenjaminUrquhart: smh

muy31: is there a way to be sure that your torpedo hit the enemy?

BenjaminUrquhart: no

BenjaminUrquhart: was just working through that myself lol

muy31: i'm thinking if the change in the opponent's life is 2

BenjaminUrquhart: what if they hit themselves though

muy31: exactly

muy31: so is it probably smart to not do that

AntiSquid: chance they hit themselves on same turn = ?

muy31: or to do it with a lot of conditions?

muy31: yes

AntiSquid: if they hit themselves they are nearby / tried hitting you ? if you got hit then you know?

muy31: i just want input in case someone else kind of figured it out

muy31: that's kind of makes sense

muy31: thanks

BenjaminUrquhart: or wait

BenjaminUrquhart: if they took damage and they didn't fire a torpedo

AntiSquid: if they hit themselves you know through enemy command and proximity of their torpedo to your torpedo

muy31: ok that makes even better sense

Zenoscave: Good idea

mchl12: The basic idea of what I used is: 1) make a list of all explosions on the map 2) calculate how much hp the opponent lost 3) for each possible position, find out the hp they would have lost to all the explosions on the map 4) if the hp they should have lost does not equal the acutal lost hp, they cannot be at this position

muy31: dang

muy31: i'm just gonna copy that into my notes

muy31: thank you very much

Zenoscave: thanks mchl12

muy31: maybe i'll beat you with it later ;)

mchl12: No problem, just make sure you keep track of the opponent's movements as well and adjust this algorithm accordingly

muy31: yeah

AntiSquid: if you beat him you need to get #1, nobody wants to lose to 2nd best

muy31: lol

muy31: I'm just trying

muy31: right now

egaetan: same as mchl12 but in java

accorp: no one else remembers that batman problem on CG?

mchl12: the binary search one?

Uljahn: shadow of the knight?

accorp: exactly

accorp: if the guy moves to the right, he can't be possibly on the far left

AntiSquid: but he might be just trying to cause confusion?

muy31: no accorp is exactly correct

muy31: if by far left he means leftmost

AntiSquid: if he means the edge .

muy31: yeah

muy31: or actually rightmost edge

accorp: that's right

AntiSquid: well yeah that was obvious? i mean how else did you get to bronze lol

muy31: haha

accorp: furthermore, apply and island map and info is suddenly appearing...

accorp: an*

muy31: you are still stating the obvious

accorp: newcomers can't possibly know that, right?

muy31: as soon as we read the game description, i'm sure most realized it

muy31: but maybe ou are right

muy31: about some newcomers

AntiSquid: they deserve the wood if they don't realize this

accorp: harsh

muy31: hey i'm in wood 1 right now

muy31: but im getting there

AntiSquid: just use silence in wood 1, easy promotion .

muy31: yeah

muy31: But i like to develop my AI as much as possible

AntiSquid: yeah i mean if you promoted to wood 1 then you done the tedious first part

muy31: before submitting

AntiSquid: there's more headaches to come

muy31: i guess

accorp: I think mines will be the OP solution here

AntiSquid: easier to integrate it all if you can see all commands

muy31: it's really annoying when there are newly added rules

muy31: that's exactly true

Default avatar.png RalphMcCrackenIII: Coming from C++ to Python3, for loops in Python3 are so different.

AntiSquid: why are mines OP ?

muy31: but i have a sense of what to expect

AntiSquid: reduce enemy possible positions without immediately revealing self?

muy31: so im building towards that

AntiSquid: no trust me, it won't be enough

accorp: yeah, only what you think about

AntiSquid: stuck here at the edge of getting pushed out of top 100 because i didn't plan correctly

muy31: AntiSquid you are talking to me or accorp

AntiSquid: to you

muy31: oh

muy31: ok

AntiSquid: this should be enough for silver, won't bother changing anything until i need to promote .

dbdr: nice kovi!

kovi: thx

accorp: i'm having my bot trigger mines even if one cell is reduced and it works wonders

dbdr: more and more people in top 10

Scarfield: xD

AntiSquid: there can only be 10

pb4: dat... statement...

dbdr: AntiSquid genius

AntiSquid: highlander movie thought me

muy31: agreed

AntiSquid: taught *

accorp: dealing with silence is a bitch, isn't it?

AntiSquid: ya

AntiSquid: dull

accorp: i'm having it expand by 1 so far but if i make it to higher leagues i'll have it to 4

Illedan: pb4, nice

pb4: thanks

kovi: gratz

AntiSquid: ah that's why you figure out where i am, i don't really bother to move far away, being greedy on space i cover for surface

AntiSquid: accorp

accorp: yeah :)

Glenn: If you move and torpedo in the same turn, is the max range of the torpedo 4 tiles from your location before or after the move?

muy31: before

dbdr: after

Tiramon: the actions are handled in the order you give

Glenn: Always? Or does it matter which order the commands are issued?

muy31: you torpedo when you are on (x,y)

AntiSquid: which order are you doing the actions lol

muy31: for real!

Tiramon: so move|torpedo = after torpedo|move = before

Glenn: I'm calculating for my opponent, so I need to handle both.

AntiSquid: yes

Glenn: Ok, thanks Tiramon, that's what I'm looking for.

Scarfield: you could silence 4 N|move N|torpedo for even more range

Glenn: Lol, good point, but I'm not quite there yet. :)

accorp: I thought you can't silence and move at the same round?

AntiSquid: you can

AntiSquid: you can use all actions at once apparently

muy31: so is the only command that can come by itself "SURFACE"?

Scarfield: only one charge though (?)

AntiSquid: one charge

AntiSquid: charge is always on the move command

muy31: yeah

muy31: ok

AntiSquid: quite sure you can still use surface with the rest, but why would you

AntiSquid: unless it's the last square

Scarfield: or a minefield ahead

muy31: so i should always check for everything?

Tiramon: surface followed by silence to obscure where you are is not the worst move

accorp: why wouldn't you silent move after surface?

muy31: every command?

Scarfield: the commands that you see your opponent has done

Glenn: You can also surface and then move which might put you in a different sector

Uljahn: muy31: MSG could be used by itself too

Glenn: if you were on the border. That'll mess up a lot of people

AntiSquid: lol Uljahn

muy31: Uljahn i meant only by itself

Uljahn: ye

muy31: like no pipe

Uljahn: ah

AntiSquid: then i just MSG enemy and stand still all day

Uljahn: i thought you mean without arguments

muy31: i understand


AntiSquid: good that will show him

Scarfield: has ille gone in hiding?

AntiSquid: testing enemy prediction

Illedan: I'll submit in a few days

Illedan: Had to stop my bot code and rewrite the referee now. So that I can keep my sanity.

Scarfield: :muscle:

Illedan: Unit test inc. :relieved:

accorp: huh, you can actually silence and move

BenjaminUrquhart: yes

Illedan: Sure thing

BenjaminUrquhart: it's both a blessing and a curse

accorp: so you want to silence first

Illedan: Not always

AntiSquid: the options are endless

Illedan: Nah

Illedan: only 100 rush

Illedan: *ish

accorp: why would I move first?

Illedan: For the first action of a round :D

Illedan: move to get better torpedo range. Torpedo to damage. Surface to clear old path. Silence to get away accorp

accorp: that would be an extreme edge case

Illedan: Those are what brings you to legend :D

accorp: don't agree

BenjaminUrquhart: :eyes:

Scarfield: why would you silence first anyway, 4 + 1 = 1 + 4

Default avatar.png JBM: i'll be streaming haskell nonsense again in like ~5'

BenjaminUrquhart: screw with enemy prediction

accorp: I'm thinking that if you silence and then move, that would really eef up prediction

Scarfield: but it should be the same as move then silence

Scarfield: or i am getting too tired

accorp: not the same

muy31: i'm thinking it doesn't matter if your enemy isn't trying to predict you

muy31: but just find you

AntiSquid: depends which one gets you more move space on the silence ... so either could be better

Scarfield: thats true though

accorp: hm, instersting

blasterpoard: I've been debugging an off by one error in my bitboards for the last 2 hours... turns out I forgot that 1st line of input is width/height

accorp: but if you wanna screw prediction, like BenjaminUrquhart said...

blasterpoard: and that's why my maps were wrong

ZarthaxX: im sorry for you blasty that's sad

ZarthaxX: are you using a 256 bits variable?

blasterpoard: no, 15x uint16_t

Illedan: is that faster?

blasterpoard: maybe?

Scarfield: in open water the enemy prediction will be the same no matter the order of silence and move, but as squid said, what gives silence the most cells to reach will screw the most

blasterpoard: easier to wrok with, imho

ZarthaxX: bitset isn't comparable?

accorp: the problem is that if you expand every position you already have for op for 4 cells in every direction, when they move, you have to expand those too

accorp: this is an exponential...

accorp: island or no island, you can't rely on that

mlomb: I rely on that

mlomb: kinda

mlomb: I store the visited cells on each stat

mlomb: state*

mlomb: if you remove all the possibilities it ends up not being that much

ZarthaxX: he is just lying, it's a hell

AntiSquid: "not much"

mlomb: I have a trigger if they are too many I just cut down some

mlomb: but its high

Scarfield: the way i track silence is i check for cells the opponent could be, that touches water where i know the opponent cant be, then apply the 1-4 cells in different directions

accorp: I don't think too many bots are doing more than 1 cell per silent move. That would be a turning point for this league, but not now

Scarfield: i am not yet :p

BenjaminUrquhart: I am, but you can't tell through all the timeouts from not handling surface correctly :eyes:

accorp: Scarfield, try only 1, I'm pretty sure of this, and it can't hurt to try. Although, I have a failsafe, which resets the assumption and starts all over...

Scarfield: i am silencing, but only by one, thats what i meant :)

kingofnumbers: "Are there any prizes to win? In the current situation, we're unable to ensure the delivery of prizes to winners."

kingofnumbers: does it mean there will be no prizes for sure

kingofnumbers: or it means it could be ?

mchl12: it's not about the prizes, it's about the fun we have together in this bot programming competition :)

Scarfield: but my point was just the way i do the silence tracking, the order shouldnt really make that much of a difference, since i find the "edges", but of course the will be more edges if move is done first, i just dont think it will mean that much

kingofnumbers: mchl12, still my question is valid :)

AntiSquid: don't care about prizes, although there usually are t-shirts at least, this contest was done last minute for the sake of keeping people busy during the covid lockdown

AntiSquid: i wouldn't expect more than t-shirts for top 20 or so kingofnumbers

kingofnumbers: AntiSquid I know this, but just asking because that sentences wasn't really clear

AntiSquid: welcome to CG

kingofnumbers: I feel like you are treating my like a greedy guy just because I asked this question

AntiSquid: no

AntiSquid: you missunderstand

AntiSquid: the lack of clarity happens from time to time

kingofnumbers: two guys immediately said "it's not about prizes it's more about fun "

kingofnumbers: even though my question was valid

AntiSquid: i didn't say fun

AntiSquid: this game ain't fun for me

Scarfield: we all think that you are greedy :p

kingofnumbers: Scarfield lol ok

Uljahn: you shouldn't ask random guys, ask community manager :smirk:

AntiSquid: ya i didn't mean it that way, as in it's not about the prizes ... i mean i just don't care in this instance if i say magically got 1st place and didn't win anything

Scarfield: honestly the contest is the prize in itself right now

accorp: there are prizes?

kingofnumbers: Scarfield, as I said: still my question was valid, please don't make such replies to my question



Scarfield: it was a joke, hence the smiley ;)

Uljahn: the main prize is another contest in may if you'll be still alive :smiley:

muy31: lol

Scarfield: can cats get the virus?

accorp: :D

AntiSquid: well if it mutates the right way i guess so ?

kingofnumbers: if the contest is "not about prizes"

kingofnumbers: I would ask the organizers please go to FAQ page

kingofnumbers: under question "Are there any prizes to win?"

kingofnumbers: please put this as reply "it's not about prizes, this contest is the prize itself"

kingofnumbers: instead of " In the current situation, we're unable to ensure the delivery of prizes to winners."

AntiSquid: kingofnumbers let's forget about this please, the chat will take any opportunity to talk random gibberish about anything, since it's usually very quiet in here

AntiSquid: don't read too much into it

muy31: are you kind of salty

AntiSquid: @_@

muy31: that was for kingofnumbers

AntiSquid: i take it personally muy31

AntiSquid: if you have a problem with me, i'll let you know that Automaton2000 is my paid bodyguard

Automaton2000: i can't even get to silver

muy31: RIP me #7 wants to take me down

Astrobytes: chill out kingofnumbers

AntiSquid: wow i am cutting you pay Automaton2000

Automaton2000: still working on my own

Scarfield: and i dont think anyone knows if there will be prices anyway, im just saying the contest is very much appreciated in this time of staying at home

mchl12: wanted to clarify that my reply was not meant seriously, it was not my intent to disregard your question kingofnumbers

accorp: so, if a torpedo or a mine is exploded, there's only 3 options, right?

Scarfield: how so?

Uljahn: it depends

AntiSquid: what do you mean by 3 options ?

Scarfield: you mean 1, 2 or 3 damage?

Scarfield: 0,1,2 *

AntiSquid: if they overlap it's 4 damage

Scarfield: if the opponent moved before exlpoding torpedo/mine the turn after you exploded torp/mine its a headache :p

AntiSquid: i need sleep, will kick myself out, good night

Scarfield: gn

muy31: bye bye

muy31: it's 5:30 where I am

muy31: pm

muy31: how about you?

accorp: a guy could be hit dead center, adjacent or not at all

Scarfield: 11.30 pm, so Altered Carbon is imminent :p

muy31: lol

Scarfield: yea if only on explosion went of, there are those 3

Uljahn: accorp: with separate explosion yes

Scarfield: but if you fired, and next turn the opponent moves then fires, there are some cases that will be tricky

Scarfield: if simultaneous explosions (no movement in between) its just adding the damage up for each cell

accorp: Uljahn, only an isolated explosion would do it, right?

accorp: One that occurred alone in a round

accorp: my god this got complicated :)

Scarfield: yup

Scarfield: so dont fire anything the turn after i fired!

accorp: firing can be dangerous, yes

accorp: but you can fire and reveal

Scarfield: yea, i havent implemented using sonar yet, my torpedos are my sonar :p

accorp: my bot actually fires only when certain, but I need to work on that

BenjaminUrquhart: my game controller doesn't like surfacing >.>

kingofnumbers: my understanding that every torpedo or mine doesn't interfere with other torpedo or mine, damage for each one will be calculated separately

Default avatar.png OmidSafari: hi

mchl12: Scarfield, try keeping a list of all explosions, and as soon as the enemy moves, change the locations of all explosions in the direction of their move. This should help with opponents firing after moving.

Scarfield: yea, started implementing that, "shifting" a map of the explosions, then i thought what if they silenced as well :P

Scarfield: will have to be for tomorrow

Scarfield: but ty for the tip :)

accorp: does anyone see any good in sonar? i'm struggling to see a benefit, but all see are edge cases...

kingofnumbers: well, if you have good prediction system, sonar could help increase its accuracy

Scarfield: i think it will matter more, when more people start silencing further

kingofnumbers: I think sonar will not matter in low leagues

kingofnumbers: but only in advanced matches

accorp: but thinking about its nature

mchl12: So far I find sonar most useful when the opponent has many possible positions, as soon as I have more certainty on the opponent's whereabouts I switch to mines. Not sure if this is a good strategy though.

mchl12: Having 2 mines directly next to eachother seems unecessary, which means you sometimes have a turn or two to charge your sonar.

accorp: having sonar on 1 possible location in a sector?

accorp: that would either eliminate or have one

Default avatar.png TheFlashDemon_6b40: hi guys, where are you?

mchl12: if you want to play consistently (which you do), you want to sonar the sector with the highest chance of the opponent's presence

mchl12: anything else is high risk, high reward

accorp: that would eliminate the less..?

mchl12: using sonar on the sector with the least possibilities, would also result in less, because the answer will most likely be no

mchl12: if the answer is no on a big sector, you can eliminate multiple places

accorp: because he would move out, reacting on the sonar?

Illedan: You also want to eliminate closer sectors first.

kingofnumbers: Illedan, do you mean closer to my submarine? why ?

accorp: open fire

Scarfield: bigger threat, than being further away

Illedan: If you are correct. Fire.

Illedan: If he is far away. Nothing will happen in a lot of rounds anyway..

Illedan: Closer and you can start shooting to narrow further

Scarfield: well, gonna call it a day - gn

mchl12: good point

kingofnumbers: it doesn't seem good strategy to me

Illedan: Good thing there is no right approach ;)

kingofnumbers: yeah, I said "seem" and "to me"

Illedan: ^^

accorp: I play defence in most games until I understand them, but when I find a good offence I usually get to lefend

accorp: legend*

accorp: that's why I think mines are the way to go on this one

BenjaminUrquhart: so when my bot isn't throwing nullpointers it looks decent I guess

Default avatar.png OmidSafari: hello

Default avatar.png icecream17: what's a tooltip?

BenjaminUrquhart: the little tabs on the progress bar

Default avatar.png icecream17: ok. I wish this would always happen:

BenjaminUrquhart: before I click

BenjaminUrquhart: is it a 1x1 hole someone spawned in

BenjaminUrquhart: close enough

Default avatar.png icecream17: yes?

kingofnumbers: icecream17, lol

kingofnumbers: I think you should report that to the creators

kingofnumbers: or actually maybe it's intended, since you can choose your starting cell

BenjaminUrquhart: they know

BenjaminUrquhart: intended

kingofnumbers: ok then

Default avatar.png icecream17: i just delete every space that has less than 2 other spaces next to it.

Default avatar.png icecream17: but for a rectangle.... hmm

BenjaminUrquhart: I floodfill and pick the largest area

accorp: largest area / distance to starting point

BenjaminUrquhart: I'm 2 bugs away from getting out of the bottom of wood 1: MOVE null TORPEDO Invalid MOVE: obstacle or already visited cell

accorp: it will make you reveal the least

accorp: provided you picked the largest area starting point

kingofnumbers: accorp or just go to largest area, and rely on silence to stay unknown

accorp: every move you make is powering something, but also reveling your position

Zenoscave: oops. eulerscheZahl


struct: it happened :p

Zenoscave: Am I not the first to report?

struct: It can happen, I posted seeds here yesterday of it

Zenoscave: nice

Zenoscave: still on those seeds huh

struct: nah

struct: that was yesterday

struct: But I think of it happening is very low

struct: and also enemy should always choose the area with most ocean available

Zenoscave: how many trials before you saw one?

Zenoscave: 1M?

struct: I tried to split in half

struct: seed=1874286978

Zenoscave: oops

struct: I had better seed for splitting map in half, but lost it

YannT: kovi: you have the sneakiest submarine in the realm :o

YannT: I can't seem to torpedo you

phaberthur: i need a good code

Secundus: System.out.println("Hello World");

Secundus: here you go

phaberthur: :rage:

Default avatar.png icecream17: oooh, i can play my code against my code

Default avatar.png icecream17: oh, they pick the same square at the beginning...

YannT: heyy ça push fort!

YannT: par contre, bon, va vraiment falloir gérer les mines là

YannT: #6, on peut aller se coucher :)

Zenoscave: wrong channel ;)

YannT: oh shit ;)

YannT: sorry

YannT: I blame it on the latenessq of the hour

Zenoscave: No worries :) it must be quite late

YannT: about time yeah

YannT: I can't go any higher without having some description of mine handling I think

kovi: nice submit

YannT: I trained on you kovi

YannT: you're the sneakiest submarine

YannT: you've got good incertitude maximization :)

Zenoscave: Kovi. do you do full path or just current position for filtering positions

Default avatar.png icecream17: ok, icecream17, stop delaying, you know floodfill is the easiest way

Default avatar.png icecream17: this is harder than it seems. oh no

BenjaminUrquhart: floooood

BenjaminUrquhart: I finally found my invalid move issue. I forgot to update coordinates when silencing :)

BenjaminUrquhart: it's now fixed well enough that I don't get a million losses instantly

sudomakeinstall2: can you mine and trigger the same mine in one turn?

BenjaminUrquhart: try it an see

sudomakeinstall2: The default AI does it but the mine doesn't trigger, but I was under the assumption that you can do this. Wanted to make sure.

mlomb: You can't

BenjaminUrquhart: I've somehow managed to attempt to divide by zero

BenjaminUrquhart: looks like my tracking needs some more work

aangairbender: which positions do you guys have? e.g. I am top102 in bronze

BenjaminUrquhart: 69 wood 1 due to some issues that cause my bot to crash

PatrickMcGinnisII: What's the news from the world?

PatrickMcGinnisII: Trucks are spraying down our streets with some gas, and its not for mosquitos.

BenjaminUrquhart: oh hey maybe I'll make it out of wood

aangairbender: I guess u need just to move without using SURFACE very often and track enemy

BenjaminUrquhart: yep I'm moving on to bronze

BenjaminUrquhart: time fore more headaches

aangairbender: bronze introduce mines, but I am just ignoring them for now

aangairbender: there are still a lot places for improvement

aangairbender: i track enemy, but i dont hide for tracking well

BenjaminUrquhart: I have an interesting way of hiding, won't say more just yet :)

aangairbender: just charging and using SILENCE when I dont know where the enemy is

BenjaminUrquhart: I actively hunt the enemy

aangairbender: but care, if you dont know where the enemy is and use TORPEDO, enemy will know that you are close to that shot

BenjaminUrquhart: that's part of my hiding

BenjaminUrquhart: :eyes:

BenjaminUrquhart: or I should say it's handled by my hiding

aangairbender: then it's ok

aangairbender: go to bronze so I could make some pvp matches with you xD

BenjaminUrquhart: just got there

BenjaminUrquhart: having some move issues

aangairbender: first match, a win for me

BenjaminUrquhart: I know

BenjaminUrquhart: there was a subtle bug in my state management

aangairbender: oh, actually you won, but then you tried to go to already visited cell

BenjaminUrquhart: ik

aangairbender: how many lines of code do you have?

BenjaminUrquhart: 814

aangairbender: c++?

BenjaminUrquhart: java

aangairbender: ok, i have 500 c#

SolForecast: Hey there, anyone up?

aangairbender: y

SolForecast: I'm seriously confused how to get the elevator floor from Don't Panic >>

aangairbender: dont know the rules sorry

aangairbender: do ocean of code!

SolForecast:'t-panic-episode-1 It's over here if you could help ^^;

SolForecast: gee. im still stuck on conditionals. I dont think i should head there yet

aangairbender: i can see reading of elevator floor from the input in the default code

aangairbender: what language do you use?

SolForecast: python currently

SolForecast: My idea right now is to just compare the position together to the direction, but I don't know how to call for said elevator position

aangairbender: wait a min

SolForecast: >~>?

aangairbender: you could have two bool variables first is whether elevator located to the left from the clone second is whether clone is going LEFT now if these variables are equal you should print WAIT else BLOCK

aangairbender: i guess

SolForecast: er. Problem i had right now is I have no idea how do I call for the elevator's position

SolForecast: I did get the basic gist so far. I just- don't understand what I'm supposed to do to call for each floor

SolForecast: *'s elevator

aangairbender: but you have reading of elevator_floor and elevator_position

aangairbender: you could store that and use

SolForecast: I can't seem to call it. It only gives out error that it simply doesnt exist

aangairbender: i would create an array outside that for loop and append pairs of elevator_floor and elevator_pos to that arrat

aangairbender: and then use it in my game cycle

aangairbender: game loop*

SolForecast: @-@

aangairbender: because everything creating inside for disappears outside for loop

aangairbender: it is called variable scope

SolForecast: I honestly have no idea how python array works yet honestly-


aangairbender: btw that can be googled

aangairbender: i am not good with python, but basic idea to store that elevator data to some global variable

SolForecast: wait So array is just, a queue or something?

aangairbender: yep

aangairbender: kinda list

SolForecast: fair enough. I'll give that a try

aangairbender: good luck