Chat:World/2021-05-11

From CG community
Revision as of 12:06, 15 June 2021 by Chat Log (talk | contribs) (Created page with "<img src=/a/62842162200886> Smelty: y-yikes <img src=/a/24573272434659> JP7: wait <img src=/a/24573272434659> JP7: I've not edited my spring challenge code all weekend <img...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Smelty: y-yikes

JP7: wait

JP7: I've not edited my spring challenge code all weekend

JP7: why did I just promote

JP7: wtf

JP7: O.o

Zenoscave: you got bumped by someone else when you were close to boss

Wontonimo: consider it a public service

JP7: I mean, I'll take it

JP7: lol

Wontonimo: if you submit early in a contest, you don't have to beat the boss, you just have to be better than those that beat the boss

JP7: ahh, comprendo, ty

Wontonimo: if boss is rock, you can't beat it if you are scissors, but when paper comes along and beats rock, the system will think you are better than both.

JP7: Well-put

Wontonimo: okay, tomorrow is write-a-sim day (maybe)

UndercoverToad: wasn't that on Saturday?

Zenoscave: I hate random loss streaks

Bernard_Lowe: Hi, where can I view the changes for silver league? I got a 404 error on rank up.

klforthwind: 404 is a page error? there shouldnt be any changes between bronze and silver, but I could be wrong

Bernard_Lowe: I guess nothing has changed. I looked through the rules.

Zenoscave: nothing changes after bronze

Zenoscave: unless there's like an obvious bug in the game

LLG: should I expect any changes in gold and above tho?

LLG: or is this gonna be the whole game til the end of the contest

Zenoscave: no changes

Zenoscave: Just harder opponents

LLG: I see

Bernard_Lowe: Yes, 404 is very common html page error in general.

Zenoscave: Bernard_Lowe what are you talking about

Bernard_Lowe: Ok thanks, I was busy all day and haven't had a chance to look at this until now.

Bernard_Lowe: Zenoscave, I was replying to klforthwind. When I refreshed my page to get the promotion to silver, the html web page gave me a 404 web page error. This has nothing to do with the coding contest or coding pushes if that's what you're thinking.

UndercoverToad: zeno you wanted to win C#. where are you? :(

Zenoscave: Can't break 100

Zenoscave: :/

UndercoverToad: once again you are leaving all the work to me

Zenoscave: Sorry :D

UndercoverToad: and there's a Perl right below me.

UndercoverToad: A PERL!

Zenoscave: If I add opponent sim and make it decently fast I should be top 50

Zenoscave: my eval allows for it. just haven't made it yet

NinjaDoggy: opponent sim can be scary D:

UndercoverToad: not even I have opponent sim

Zenoscave: Then my eval is awful

Zenoscave: or slow

UndercoverToad: or slowful

Zenoscave: true

Wontonimo: what's your bot getting up to in rank Zenoscave? I see it's at 250 and only 1/3rd done

UndercoverToad: 100

Zenoscave: ~120

Zenoscave: This isn't a good submit. I'm testing things

Wontonimo: 52.03 ish in TS.

Wontonimo: so, looking around there, from 120 up to 100 there isn't much of a gap in Score. For 20 position tthe score is only 0.49 points

UndercoverToad: in these ranks it's always close together

Zenoscave: the current submit is my current best preforming

Wontonimo: it doesn't start to spread out again until 32

Ajaiy2: What's the difference between the rules in bronze and silver?

Zenoscave: nothing Ajaiy2

LLG: nothing

Ajaiy2: Oof

Bernard_Lowe: I was expecting changes in the map with unusable tiles or richness locations -- for silver or gold.

Bernard_Lowe: Or different tree start orientations.

Zenoscave: nothing usually changes after bronze

Wontonimo: nopes

Zenoscave: rarely in fact

Ajaiy2: I guess they ran out of ideas

Bernard_Lowe: Well there were a ton of changes in pac-man in Spring 2020, so I expected some changes.

Wontonimo: no, it's the formula to these games

DetoBot: TestMain.java is throwing IO exception

Zenoscave: No. They just decide to keep the rules the same due to community opinion

DetoBot: how do I solve it

DetoBot: Trying to run the sim locally

LLG: I guess I played myself in IDE too much

Bernard_Lowe: Having some small changes can make it fun without being intrusive, like richness locations or unusable tiles, or tree starts. But I'm fine with either.

LLG: getting #407s now

DetoBot: http://chat.codingame.com/pastebin/9d90e2cf-8e9d-4105-9526-6a1d2b07c337

Bernard_Lowe: The pac-man changes were huge, from bronze to silver, to gold, so I was expecting some climate change, level changes today lol.

DetoBot: what's the problem in it?

Wontonimo: yeah LLG, just take a break for 5 min

DetoBot: ok got it

Marchete: moin

Zenoscave: moin

DetoBot: it working now

Marchete: wow perl 8th, what's that sorcery?

Zenoscave: I guess wrapper

Marchete: he is the winner, period

Marchete: ahhh

kovi: not sure top10-20 is still possible with heuristic


UndercoverToad: kovi must know

Zenoscave: true.

UndercoverToad: any sim merged into your heuristic yet?

ZarthaxX: wait what kov not searching?

kovi: beam is ticking...but bad results

Marchete: I said that heuristic had a chance this game

Marchete: not like winning

Marchete: but a fair place

UndercoverToad: legend is possible

Zenoscave: just placing?

jrke: can anyone tell me how good can be depth 1 all moves evaluating bot?

UndercoverToad: top 20 at the end. I have doubts and would like to be proven wrong

kovi: yeah, bottom legend like kutulu

UndercoverToad: jrke that's a depth 1 bot vs my arena: https://www.codingame.com/share-replay/551825521

UndercoverToad: i guess I heavily rely on depth to get anywhere :D

UndercoverToad: oh wait I have a mistake

Zenoscave: eulerstake

UndercoverToad: https://www.codingame.com/share-replay/551826119

UndercoverToad: red = depth 1

UndercoverToad: doesn't stand a chance

Marchete: but it depends

Marchete: a NN can be almost perfect at depth1

Zenoscave: Marchete what are you doing in c#

Zenoscave: I don't like this

Marchete: I don't know!

Marchete: I never used dotnet

Marchete: I wanted to test it

Zenoscave: fair enough

Marchete: seems powerful

UndercoverToad: did discord change their icon?

UndercoverToad: i have a feeling that the blue proportion is higher now

UndercoverToad: in the browser tab bar

jrke: blue to white and white to blue?

Ajaiy2: Is anyone gonna do some "spring cleaning" on their code?

UndercoverToad: no. i just think the blue circle looks thicker

UndercoverToad: no, it's a contest. I make it even more messy to gain a few more sims in return

UndercoverToad: that submit looks promising

Ajaiy2: I get what you mean

UndercoverToad: found a bug in my seed spot eval

Marchete: can I disable the unsafe errors in CG IDE?

Ajaiy2: That'd take a long time to find

UndercoverToad: i just ignore CG IDE hints

Marchete: my right bar is a christmas tree

UndercoverToad: looks like a chrismas tree when the language server doesn't crash

UndercoverToad: oh, same metaphor :D

Marchete: :unamused:

UndercoverToad: i swear i wrote that before seeing yours

Marchete: that C# mindset is contagious

Zenoscave: Why so many C#'s

Zenoscave: where are they comming from?

Marchete: :christmas_tree:

Smelty: l o l

Smelty: ;/

UndercoverToad: oh, 2nd :heart_eyes:

Zenoscave: gz

Marchete: something new? a new hash?

UndercoverToad: bugfix

UndercoverToad: my seed placement eval checked the source cell, not the target

Marchete: .....

Zenoscave: whoops lol

UndercoverToad: :D

Marchete: ok that's embarrasing

UndercoverToad: so random seed targets can still reach top10

Wontonimo: what? that's so random

Marchete: if a bot with 13.45% hash collision rate, without seed eval, on C# with 20ksim can be 2nd

Marchete: I don't know

jrke: which data type or STl do you prefer for beam search

Zenoscave: heuristics may have a chance?

Marchete: I'd say yes

Marchete: chance to be high

Marchete: not winning maybe

UndercoverToad: my beam is just putting everything into a hashset to remove duplicates. then use OrderBy().ToList()

Marchete: hashset with 1% duplicates*

Zenoscave: Isn't linq horribly slow?

UndercoverToad: well, the hashset can handle that

MSmits: performance is not very important in this game

UndercoverToad: yes, LINQ is slow. but sure how much that applies to sorting

Zenoscave: hmmmm FAir

UndercoverToad: i think a higher performance would still help me

alanhong: hi

MSmits: you need good eval (which i still havent found :( )

UndercoverToad: to overcome flaws in the eval

Marchete: we are doomed then

jrke: thats unordered_set in cpp right?

MSmits: yes it is

UndercoverToad: yes

jrke: me too Ms no good eval

MSmits: i basically do what UndercoverToad does in my bot, excepting the good eval

MSmits: it's probably 10x faster, but that doesn't matter

UndercoverToad: so you also simulate to day 23 to count suns?

MSmits: yes i do now, i tried a few versions of that

Marchete: a lot of waits until 23?

MSmits: sounded good and i still think it does

UndercoverToad: yes

Marchete: well

Marchete: as it's cyclic

UndercoverToad: in the end you will beat me again. you always do that smits

Marchete: it's like 6 turns

UndercoverToad: i do some caching on that not to cast shadows in the same direction twice

MSmits: UndercoverToad i know and i am always unsure of that, this time is no different. I need a good ides

MSmits: idea

kovi: nice UndercoverToad

UndercoverToad: but true, some math can simpify it further

Marchete: that's what I said

UndercoverToad: thanks kovi

Marchete: from day N to 23

Marchete: make a count of days per orientation

MSmits: I'm not entirely sure what to do with growth in this sun-sim-to-23

UndercoverToad: you always doubt MSmits. but depending on your overall schedule you might even bypass before Friday

Marchete: then 6 the shadows * array

KCrown: how many nodes from day N to 23 approx?

MSmits: I tried growing everything to size 3

Default avatar.png Kolo9: niiice 2nd UndercoverToad

UndercoverToad: :)

MSmits: or not growing at all and just wait

Default avatar.png Kolo9: I started writing a sim and gave up because I realized I don't really know what to do with it. Made a couple changes to simple heuristic today and 102

UndercoverToad: i print the number of nodes I visit

Wontonimo: it's not cost effective for overall income to grow everything to 3e

Default avatar.png Kolo9: still have no idea when to remove trees. tried something and it made it worse

MSmits: Wontonimo i see

Marchete: number of nodes you visit + going to 23 sounds like MCTS....

UndercoverToad: that tree removal is still a hacky heuristic for me

jrke: i still strongly believe completeing before N days is not good

UndercoverToad: not even checking if the opponent started selling or score difference or anything

MSmits: i'm not sure you need to check this

Default avatar.png Kolo9: yeah I'm not checking opponent at all, not even simulating anything from next move

MSmits: either it's optimal to sell or it's not

Default avatar.png Kolo9: tried to update to complete trees that shadow too many of my trees next turn, but that didn't work

UndercoverToad: did you include shadows cast to opponent?

Default avatar.png Kolo9: well, checking how many of mine vs. opp are shadowed by the tree

Default avatar.png Kolo9: yeah

Marchete: complete at <23 must take into account shadows

Default avatar.png Kolo9: also I think I'm growing from 2->3 too much

Marchete: limit trees per size

UndercoverToad: my sim counts the suns for me and opponent with and without cutting the tree and compares

Marchete: it's a solution

Marchete: I think my shadow calc isn't very expensive

MSmits: UndercoverToad you mean your beam just considers completion and the completed state is one of the states that you eval

Default avatar.png Kolo9: I see Toad, thanks. I *think* mine would have been doing the same thing?

Marchete: eval is (and move gen)

MSmits: since you eval every state with your sun thingy

UndercoverToad: yes smits

Default avatar.png Kolo9: oh actually no because it only considered the next-turn shadow from the tree I'm cutting down

MSmits: yep same thing i do :)

Default avatar.png Khimich13: hi everyone! do you know if there is a way to keep playing clash after time is up just for training?

UndercoverToad: https://eulerschezahl.herokuapp.com/codingame/puzzles/

UndercoverToad: search it

MSmits: did you force a phasing order? I see a lot of players do complete-grow3-grow2-grow1-seed

MSmits: i could check a few games\

MSmits: to figure

UndercoverToad: no comment

Wontonimo: ^^ that is a very cost efficient method

MSmits: hehe

Marchete: he said it was irrelevant yesterday

MSmits: I'll check :)

Wontonimo: it can save 3 suns or so a turn

Marchete: and I can't see why

UndercoverToad: tell me your findings in DM

jrke: how can i make sorting in unordered set?

MSmits: will do

Marchete: you don't

Marchete: unordered is unordered

icecream17: gn

Wontonimo: gn all

Wontonimo: it's about the half way point for the competition

Ajaiy2: What do you think I should do to my code? Should I go another path or stay where I am? I'm currently using a algorithm which just checks for a good place to plant

KCrown: Im using algorithm only and Im at 666 ... I thin kI cna improve that by maybe 200 300 ... but then I think you need to search

dbdr: nice UndercoverToad

aangairbender: yesterady my simulation was kinda 6k/100ms, today its 300k/100ms and my beam search manages to search until the end of the game in 100 ms wtf

aangairbender: has bug for sure

dbdr: aangairbender with a narrow beam, you can go as deep as you want

aangairbender: dbdr, yeah I had 500 width and my bot didnt seed and new trees (my eval is just points + suns/3)

aangairbender: seems like too narrow

MSmits: jrke in my beamsearch i have both an array and an unordered set

MSmits: i sort the array, or at least, i use nth element, which is cheaper than sort

MSmits: max element to pick final move

MSmits: you dont do everything with just unordered set

MSmits: unordered set is just to check if you already have a state

KCrown: by beam do you gusy some form of monte carlo?

Marchete: it's just a isDuplicate()

LLG: how'd you go from 6k sims to 300k sims

Marchete: adding bugs

MSmits: 300k seems easily doable

aangairbender: LLG I rewrited my sim without any invalid moves checks

MSmits: if a sim is advancing 1 state

MSmits: maybe not with full sim to end on every move (with suns)

aangairbender: and assumed 2nd players always goes WAIT

aangairbender: MSmits but giving suns is a part of the sim, how can I remove it?

Marchete: he is saying simulate to the end

aangairbender: my sim is just state+action -> new state

aangairbender: but if player does WAIT it gives suns

MSmits: aangairbender i mean every time you sim 1 turn and you eval for beamsearch, you do a full calc to end for suns

MSmits: so basically youre simming 1 turn

MSmits: but you check if this action changes the final sujn count

jrke: why is this happening depth 25 in 66 ms beam width 400

jrke: :rolling_eyes:

Marchete: width 400 -> 4000

aangairbender: MSmits so I can eval only in the end of the day?

Zenoscave: How are you doing a width of 4000 :O

aangairbender: or I dont get it :sweat_smile:

Marchete: no I'm not

Marchete: I'm saying that if you have 66ms and you reach depth 25

Marchete: maybe you can increase the width

Zenoscave: and lower depth a bit?

Marchete: imo without enemy a depth 25 is noise since depth 4

aangairbender: that's smart

jrke: but i think there is bug cause thats large amount of nodes in small time

Zenoscave: depth 4 due to innacurate next day events of neighbor?

icecream17: i dont understand... how is this person at 2154th place beating me???

Marchete: because the enemy won't wait full days

zukarinkuari2: im making ro b l o x game

zukarinkuari2: u w u

zukarinkuari2: HAHAHAHAHA

Marchete: beam search is like a max without min

zukarinkuari2: print ("hello beach")

Marchete: but it's working

zukarinkuari2: imma play clas of code

zukarinkuari2: bnbabababababayeeee

Zenoscave: zukarinkuari2 quit

jrke: the one thing that looks good is i completed all that i seeded- https://www.codingame.com/share-replay/551847865

Marchete: nah, my sun calculation is still wrong

Marchete: movegen seems fine

jrke: did this line in statement was from starting - 'The theme and game for this challenge are strongly inspired by Hjalmar Hach's excellent board game Photosynthesis.'?

Marchete: no

limakk: neighbors keep update automatically or we have to update >

limakk: ?

limakk: oh it is cell number oh ok

UndercoverToad: jrke the official github repo still doesn't have that line https://github.com/CodinGame/SpringChallenge2021/blob/main/config/statement_en.html.tpl

jrke: but statement is having

UndercoverToad: i know. this means it's somewhat recent

jrke: oh yeah you can make out from this

icecream17: uhhh https://imgur.com/a/nd7SLAc

UndercoverToad: should we know the user you won against?

icecream17: oh, it somehow glitched game 6 up to game 28. nvm

JoshuaRC02: Does anyone know how to fix the playback for the event only showing grey images?

UndercoverToad: try disabling and reenabling hardware acceleration

UndercoverToad: or different browser

JoshuaRC02: thanks, that fixed it

The_ZimaBlue: https://www.codingame.com/contribute/view/6690febe95fb1659fa53b7f16b54bc0a9591


UndercoverToad: i'm not convinced by that clash

UndercoverToad: floating points with an absurd high precision that can cause precision issues.

UndercoverToad: constraints saying < 24 but a validator having 28

UndercoverToad: and overall doesn't seem interesting to me. at least do something about next day. like 23h to 1h = delayed

LLG: what do you guys look for when selecting a cell to plant a new seed?

The_ZimaBlue: richness

NinjaDoggy: avoiding shade on each other

NinjaDoggy: then by richness

dGrayCoder: how exactly do you guys make "AI" for these games?

dGrayCoder: Using Algos like Minimax or something else?

NinjaDoggy: depends on the game

NinjaDoggy: most people are doing beam search for this game

limakk: me doing if else :|

limakk: (19-36), (7-18), (1-6), (0) to find distance :p

Thienu: does anyone know how to test locally?

Thienu: ideally with lots of games

Zenoscave: damn depth 5 times out now

Ahriana: how to complete spring challenge :(( i dont know the rule

supershah: guys i can't see the game it shows blank screen

dGrayCoder: If I am not wrong, beam search does not consider your opponents moves?

supershah: I tried refreshing

dGrayCoder: @supershah close your browser and try again

dreadylein: depends, but most people opt to no consider the opponent at the moment

supershah: okay

supershah: still the same problem :(

RageNugget: is there a way to get back to a clash of code challenge, even after the timer is over? want to fonish that thing :/

UndercoverToad: try to disable and reenable the hardware acceleration or switch browsers

supershah: okay let me try that

supershah: it worked

UndercoverToad: nice

supershah: thanks

NinjaDoggy: the helpful undercover toad :O

UndercoverToad: being helpful is not my primary goal this contest

NinjaDoggy: :O he's going for the win :O

dbdr: a toad wants a new achievement

NinjaDoggy: do you plan on sticking with beam search? or are there plans for a new algo?

UndercoverToad: the problem is: i'm usually high early in the contest

UndercoverToad: but can't keep up the pace at the end

NinjaDoggy: yep seen this all too many times

UndercoverToad: i might go away from beam if i find out how to code that properly

NinjaDoggy: day 5: a sad defeated toad croaks for the last time in chat before going off to bed

UndercoverToad: you haven't even been around at the worst of my losses

NinjaDoggy: O.o

UndercoverToad: mean max, ghost in the cell

NinjaDoggy: I was there lurking ._.

UndercoverToad: oh

NinjaDoggy: ghost in the cell was like my first contest ;)

UndercoverToad: i didn't even know that you are here that long

UndercoverToad: was my 3rd

solistice: Good morning guys

NinjaDoggy: morning :)

NinjaDoggy: i'm about to head to bed :P

solistice: So, I've never worked with timings. Is it safe to say that I can just use something like stopwatch in c# to break off calculations whenever I'm close to the 100ms limit?

solistice: or is that risky?

NinjaDoggy: yea that's how it's generally done

solistice: so, if I understand correctly, I have 1s to provide first action, then 100ms for all subsequent?

Marchete: just reset the timer after you read inputs

UndercoverToad: i use stopwatch too

NinjaDoggy: that's correct

Marchete: everybody at C# uses stopwatch

Marchete: I even did in C++ :D

solistice: and from where to where should I time? the beginning of the while loop until writing the action?

UndercoverToad: but not System.Diagnostics.Stopwatch.StartNew()

Marchete: then what

Marchete: oh, it's a secret, shhhh

ddreams: start timing after the first read

dbdr: \o/

Marchete: /°\

LLG: I've been getting 407s for the last 15 minutes

Marchete: http://chat.codingame.com/pastebin/29cef6e3-ae9e-4342-b589-b326e172e3c1

Marchete: a wrapped stopwatch

Marchete: microsecond resolution (can be nano, but what for?)

Marchete: Start(89*1000) then Timeout() to check the timeout

Marchete: it's simpler for me

Default avatar.png NotSureWhyThisWorks: is there a way to calculate neighbours and shadows with bitboards or am I wasting my time? I'm new to bitboards

LLG: are you using cube coords or spiral coords?

Marchete: bitboards is hard

darkhorse64: and likely useless in the contest

Marchete: it's a way to calculate shadows, but you need some precalcs

Marchete: like converting sun orientation to a shift offset

aCat: how often do you check time?

Marchete: in my case: int[] sunOffset = new int[]{ 1,-7,-8,-1,7,8 };

aCat: because its slow operation by itself

Marchete: that means bit shift

Marchete: either left or right according to sign

Default avatar.png NotSureWhyThisWorks: LLG I am redoing my implementation so not sure which to use

Marchete: bitboard will be fast

aCat: yeah darkhorse64 probably right :(

Marchete: but it's not trivial

aCat: wasted few days on this but learned a lot

aCat: Marchete how often do you check time?

Marchete: then it's not wasted

aCat: I self this myself :P

aCat: *tell

Marchete: aCat you should adjust to avoid timeouts

Marchete: i.e. as few as possible while not timing out :)

Marchete: I'm not at that point yet

Marchete: I have sun calc bugs

darkhorse64: If you go the search way, a sim without optims is plenty fast enough. The real issue is the eval

Marchete: it depends on the eval

darkhorse64: I have 400k nodes/depth 20 in my BS but it's crap

Default avatar.png NotSureWhyThisWorks: ok possibly I will skip the bitboards for now then. My current bot is around 140 with heuristics so hopefully the eval works ok with search

Marchete: because depth 20 BS is crap

Marchete: yeah NotSureWhyThisWorks, bitboards are hard

Marchete: for me it's like N days of work

darkhorse64: depth 10 is no better

aCat: but satisfying ;p

Marchete: yeah, bitboards are fun (for geeks, ofc)

Default avatar.png NotSureWhyThisWorks: I am used to python so python me wants to just have lists and tuples and all that nice stuff

darkhorse64: bitboarding in fall challenge was more rewarding

aCat: more == the only way to go ;p

aCat: (nearly)

darkhorse64: The only thing I did was compressing my node up to a point I can use it as a hash key for removing duplicates. That was a huge speed gain

UndercoverToad: Marchete 10:03AM in my case: int[] sunOffset = new int[]{ 1,-7,-8,-1,7,8 };

that looks as if you stole my code :o

UndercoverToad: except that we swapped + and -

itzluku: guy what depth do u achieve and what % of possible move combinations do u evalutate+your rank: (depth,%,rank) ?

itzluku: guys*

Default avatar.png NotSureWhyThisWorks: what coordinate system is that sunOffset for?

Default avatar.png NotSureWhyThisWorks: axial?

UndercoverToad: assigning own IDs to the map and ignoring the ones assigned by CG

Default avatar.png NotSureWhyThisWorks: right

AntiSquid: agree with you darkhorse64

annaproxy: Just replaced all my bool[] with uints and it's not even faster D:

AntiSquid: what about the rest of your code? is that optimized?

annaproxy: Probably not ^^'

dbdr: profile before optimizing

Thienu: dbdr what's a recommended way to profile?

AntiSquid: ok found some evals to break into top 1k i hate the game even more now realizing what i needed . pure bs

jrke: i need a good eval

AntiSquid: it's only #800 or so but good enough

UndercoverToad: you have to code the beam search properly

AntiSquid: ya who doesn't jrke ? :D do you use any eval at the moment or minimal ?

UndercoverToad: still requires some skill

AntiSquid: i don't use beam search

jrke: i am messed up

UndercoverToad: > i hate the game even more now realizing what i needed . pure bs

AntiSquid: bullshit

AntiSquid: :D

UndercoverToad: oh :D

jrke: getting depth 25 in 66ms in BS i am 90% sure its bug

UndercoverToad: i read that as "it's easy to get a top rank, just code a beam search"

AntiSquid: no no .

UndercoverToad: it's possible jrke. if you have a very narrow beam

jrke: 400

jrke: beam width = 400

AntiSquid: i keep reading BS as bullshit though lol

UndercoverToad: that's insane. i have way less and sweating not to time out

UndercoverToad: lower depth as well

Clagus: it's like Elon said - abbreviations are cancer :P

AntiSquid: i think going lower depth also helped with rank

VizGhar: lower = deeper?

alchemsti: I'm impressed with people getting sub-200 without simulation / beam search etc.

alchemsti: I'm not doing a "proper" eval, i.e. using all information, but I'm not doing a trivial one either, and only ~450 :(

alchemsti: Guess I'll have to code up that BS. (ambiguity intentional :D )

Default avatar.png NotSureWhyThisWorks: I think there are a few people in top 100 without any simulation

Thienu: good heuristics can approximate searches pretty well in this game imo

alchemsti: Well, if your eval is good enough, you don't need to simulate

alchemsti: :D

alchemsti: Yeah, that was my thought too

alchemsti: but getting the heuristics good ...

Thienu: mines still pretty simple

alchemsti: And tuning the damn parameters

Thienu: and im top 100

alchemsti: Respect!

Thienu: but yeah beam search might be an easier way to get there :sweat_smile:

alchemsti: Do you want to give a vague description? I'm trying to balance things like shading my enemy, not shading myself,

alchemsti: and balancing cost vs payoff

alchemsti: and balancing harvest vs. growth

darkhorse64: Actually, heuristics tend to eval moves (not always) when bs evals states. So moving to bs may not be straightforward

solistice: ugh, transformed all the game code to c# for simulating

solistice: now I have to actually start thinking on what algorithm to use :')

jrke: depth 4minimax loses with depth 1 bot everytime :(

darkhorse64: your AI prefers to WAIT ?

jrke: yes a lot thats a bug i am trying to figure

supershah: procastinating by changing language instead of trying to write an algorithm

darkhorse64: Actually, it's more than a bug. WAIT is the end of a sequence so should only eval and compare WAIT, GROW + WAIT, GROW + SEED + WAIT. That's what euler said yesterday (he talks too much but it's a very thorough remark)

AntiSquid: 700s range :O Automaton2000 let's celebrate

Automaton2000: tell them to go to the left

AntiSquid: go to the left guys

Mourfette: I can't find my friend in the list to add him as an opponent. but he is silver like me, any reason?

RoboStac: the list is limited to the top 1000

RoboStac: in that league

Mourfette: ah, well, that explains it

alchemsti: darkhorse64 - yes but moves are just deltas between states. But it can mean needing to change a lot :/

LLG: my sims only takes about 60% of the total time my engine takes to complete 1 turn

LLG: idk where the other 40% went

ddreams: I think the search function should not have a top 1000 player limit

dbdr: Thienu: for profiling, it depends on your language, OS, IDE, ...

ddreams: I'd like to check out the catboss, for example

dbdr: I use perf on linux with rust

Thienu: ah alright, I'll have to look into it then, thanks

AntiSquid: 600s ! so ya just need to work the eval ... Automaton2000 give me some ideas

MSmits: UndercoverToad I have 1000 beam width and 20 depth and dont time out even with your sun calc :P

Automaton2000: man i am so bad at coding

MSmits: this is how useless performance is compared to eval

AntiSquid: what MSmits said

UndercoverToad: how do you even define depth? days or actions?

MSmits: actions, where i keep going until the last state is waiting

MSmits: so a day is generally 4 turns

MSmits: so my depth is 5 days more or less

MSmits: but as darkhorse64 says, with lower depth it isnt really better

MSmits: my eval is crap

MSmits: and until i figure out how it should be, i will not improve

darkhorse64: mine is worse

AntiSquid: i added some crappy extra heuristics and if you'd read the eval you'd agree it's crap, but it gave me higher rank MSmits, so yes eval is power

darkhorse64: Actually, I am not sure. I think my algo sucks even more

Default avatar.png Zedster82: mine sucks more

AntiSquid: we need to come up with a metric to see which eval is worse, we can't just keep bragging

RoboStac: if only there was some sort of leaderboard based on battles between bots

darkhorse64: yeah, I am complaining but there are 4k ppl behind. I don't want to look behind

AntiSquid: ya would be nice

UndercoverToad: 5k even

itzluku: imo depth = days but with only partial (your_next,opp_next) move tupels, because of limiting factors

jrke: i am not sure whats happening with me

jrke: is there in bug in my referee or in algo not getting anything or bad eval

ddreams: locally?

ddreams: I guess so, since you say "my referee"

UndercoverToad: https://www.codingame.com/replay/551986111 funny, how similar bots already got

Default avatar.png NotSureWhyThisWorks: test your eval against "return rand()"

UndercoverToad: and then I have the sun disadvantage in frame 28

Nagatwin: What kind of algorithm is that Euler ?

Mourfette: UndercoverToad you start by waiting, growing tree one, the waiting, growing tree 2 then seed. isn't it best to seed first i case of your seed location gets taken first? or is it taken into consideration in your process so you know there are no way it is taken in that case?

RoboStac: but you can't seed the middle until after the grow

Mourfette: http://chat.codingame.com/pastebin/ebaa5dcc-7e73-422f-9ec4-a9e0f28f11fc

Mourfette: oh, guess there is a char limit in chat :D

Default avatar.png BorisBarca: guys im getting this:Warning: your code did not read all available input before printing an instruction, your outputs will not be synchronized with the game's turns and unexpected behaviour may occur.

Default avatar.png BorisBarca: does anyone else have this problem?

darkhorse64: Skril stats likely mean beam width/nodes.

Default avatar.png BorisBarca: been trying to fix it for a couple of hours

Mourfette: you tried to console.Writeline but there are still inputs waiting to be read

ddreams: Do you use the c++ starter ai?

RoboStac: BorisBarca - it usually means you are outputting multiple prints per turn

darkhorse64: he does not spend all time searching

Default avatar.png BorisBarca: wait you can only do 1 action?

Default avatar.png BorisBarca: and i use starter ai

ddreams: one action per turn, but many actions in a day

ddreams: some people reported a bug in the input reader of the c++ starter ai

Mourfette: one per turn, not one per day. until you send WAIT, it is still the same day, but still a new turn

ddreams: something about not reading SEED and GROW possible actions properly

Default avatar.png BorisBarca: oh...

Default avatar.png BorisBarca: can you send link to right version?

ddreams: I used the IDE starter code, had no problems

RoboStac: https://github.com/CodinGame/SpringChallenge2021/blob/main/starterAIs/starter.cpp#L97

RoboStac: it's been updated - do you have those lines reading grow / seed ?

Default avatar.png BorisBarca: no I don't, I have tottaly something other

UndercoverToad: Nagatwin 11:10AM What kind of algorithm is that Euler ?

beam search

Default avatar.png BorisBarca: I noticed that the variebles don't match the ones in the statement

darkhorse64: with twists

UndercoverToad: and duct tape

RoboStac: are you actually using the starter from github or the one that was given in the IDE?

Default avatar.png BorisBarca: the one that was given in ide

RoboStac: ok, don't worry about any of the above then, that was fine

RoboStac: it's most likely multiple prints per input

darkhorse64: duct ? :slight_smile:

dbdr: yeah, noticed that too. hidden hint? :D

darkhorse64: he is trolling us mere mortals

UndercoverToad: i would never dare

ddreams: noticed what?

Default avatar.png BorisBarca: ok, I didn't understand what now, should I use AI from github or the one in IDE

ddreams: both are probably fine now, boris

Default avatar.png BorisBarca: ok thx

ddreams: but make sure you don't output anything before you have read all the input, and that you don't output multiple actions in a turn

ddreams: dbdr and darkhorse64, you think it's called duck tape? :)

UndercoverToad: DUCT = decoupled UCT

UndercoverToad: UCT = Upper Confidence bounds applied to Trees

AntiSquid: backpropagating beamsearch? :D

darkhorse64: double bs ?

UndercoverToad: no magic going on in my bot, very straight forward

darkhorse64: says #4

RoboStac: so we know the duct part of his bot now, what is the tape part?

darkhorse64: it's the tie that binds

UndercoverToad: tape = string

UndercoverToad: that's how I store my internal states

Nagatwin: Thanks UndercoverToad

tarriel: BorisBarca I usually get this message when I am printing debug info to the normal output, rather than the error.

Mourfette: What rules do you apply to choose best seed? no neighbor, not in line with the thrower?

Mourfette: At my level I see many just fillin the whole green center with their trees, but then most of them are in shadow all the time

LLG: how do you guys check for visited states?

UndercoverToad: hashsets

LLG: HashSet is slow for me because I have a Dictionary<int, Tree> and comparing those are very slow

LLG: maybe the dictionary is the problem

Mourfette: what's the int for?

LLG: locations

LLG: just so I can quickly get a tree's data by location

Mourfette: is that better than the tree class having the location index?

Default avatar.png Karlox: is it smart to go on c++ as your 1st language?

synchoz: if u know it well :D

synchoz: im just kidding but yeah C++ is great language to start with if u want to start with language that is not super easy but not super hard either like C

LLG: Mourfette my tree class does have a location index

Nerchio: why not

synchoz: damn why didnt i think of Tree class a C# bot develop :S

LLG: but for example, if I were to simulate growing a tree, currently I do state.Trees[grow_target].Size += 1

LLG: if instead of a Dictionary<int, Tree> i have a List<Tree>

LLG: I have no way of getting the correct tree to increase the size, other than iterating through the entire collection

ddreams: in C#?

LLG: yes

ddreams: then you can use array indexing

ddreams: C# lists are arraylists

LLG: yeah but then the index doesn't necessarily correlates to the tree's cellIndex

ddreams: it does if you use the same both places

Default avatar.png BorisBarca: cout << "GROW " << i << endl; This line sends me that debug message

darkhorse64: Use real arrays[37] [problem solved]

Default avatar.png BorisBarca: i is the index of cell

Default avatar.png BorisBarca: I'm so pissed of for this man

LLG: oh ddreams you meant like

LLG: when I'm reading trees from input

LLG: if cellIndex = 5 I do Trees[5] = new Tree...

ddreams: Boris, put a single "cout << action << endl" at the end of the main loop

ddreams: no other cout anywhere

ddreams: then you can only output once per round

ddreams: and always after you have read everything

Default avatar.png BorisBarca: I have cout << "Wait" << endl; at the end

derjack: two couts?

ddreams: and no other cout anywhere?

Default avatar.png BorisBarca: I have 4 more couts

ddreams: exactly

ddreams: so... you haven't done what I said

ddreams: make a "string action" and set it where you have the couts now

Default avatar.png BorisBarca: ok, if I understand you correctly can i have a queue of actions and then cout it in 1 for loop?

ddreams: you can only output ONE action per turn

ddreams: so no queue of actions

LLG: ddreams my State is a struct atm, not a class. Is there any way to initialize a fixed size (37) array of Trees in it?

Default avatar.png BorisBarca: So I can't have GROW 5 SEED 4 3 WAIT?

ddreams: Tree trees[37], I guess

derjack: BorisBarca no

Default avatar.png BorisBarca: aaah fuck

LLG: lemme see if it compiles

Default avatar.png BorisBarca: thanks a lot guys

Default avatar.png BorisBarca: i thought that you could make more actions in a single day

derjack: you can

ddreams: you can, but a day is many turns

Default avatar.png Mgs25: Hiiii!

limakk: per turn an action ?

derjack: you can do what you said, just once per while(true) iteration

LLG: compiler complains about Tree trees[37] -> Array size cannot be specified in a variable declaration

Default avatar.png BorisBarca: ok I think I got it

LLG: if I do Tree trees = new Tree[37] I get Cannot have instance property or field initializers in structs

alchemsti: which language LLG?

LLG: c#

LLG: idk if there's any merits in keeping my State a struct tho

LLG: might just make it a class

alchemsti: ha, sorry, can't help. You should consider whether you need it as a fixed size array -- or is generic size with reserve hint close enough.

Default avatar.png actualCoderTrevor: https://stackoverflow.com/questions/18772718/array-of-structs-example first result on Google :)

Default avatar.png actualCoderTrevor: The syntax of C# is just different enough from C++ to keep you guessing, lol

derjack: ++ is that different from # eh

Dahll: Guys what algorithm are you using ? I don't know if it is useful that useful to simulate opponent turn

ddreams: beam search

Momtaz: Can you get the last action your opponent made at the start of a round? Like if they completed a tree?

ddreams: no

ddreams: you can figure it out though

ddreams: but it was probably WAIT :p

Default avatar.png stefan-gg: is there any time limit in which i can go to silver ?

dbdr: until the end of the contest

ddreams: and later it will open up again

itzluku: the depth of beam search is limited to time and ram space with the selection of best options to get the best overall being choosed by heuristics? so even your sim has to implement some kind of heuristic to preselect from all possible options?

itzluku: chosen* xd

dbdr: itzluku the principle of beam search is that you limit the width

dbdr: that's how it differs from DFS

dbdr: BFS, sorry

itzluku: yeh ok so prettmuch with me kinda maxing my heuristic i have almost everything setup for beamsearch?

dbdr: can you give a score to a state and generate all possible next states?

itzluku: since i could just take top3 seed top3 grow and top 3 complete options as a limited width

itzluku: score yes

itzluku: gen all possible next states not for opp , so i have to do that

jrke: beam search is BFS in which you evaluate each node at each depth and keep max BEAM_WIDTH best nodes for next depth

dbdr: you don't have to do opp

itzluku: wut why

itzluku: are u not both making a turn the same time? thought thats why u can palce a seed on teh same index and both seeds get destroyed

itzluku: place*

jrke: dbdr do you still don't predict anything for opponent?

dbdr: I do predict something

dbdr: not super clear how much it helps

itzluku: @dbdr my thought was every possible new state is def by your next action combined with the action of your opp (your_move,opp_move) meaning u have nr of moves by u * nr of moves by opp as oevrall nr ove pos new states

Default avatar.png rc_legend: Hello

itzluku: and u reduce that width by saying u only make pairs of the best of those

Default avatar.png rc_legend: anyone here?

itzluku: but u would still need to calc everythinf for your opp* ?

Default avatar.png rc_legend: who can talk with me

itzluku: everything*

dbdr: itzluku to get started, juste suppose the opponent will WAIT. you can get top 10 with that

itzluku: wtf no way

Default avatar.png rc_legend: wtf

jrke: dbdr with good eval right?

jrke: and good depth

dbdr: "good" :)

Default avatar.png rc_legend: hello ?

UndercoverToad: i agree with dbdr, even top5 with a WAITing opponent is possible

Default avatar.png actualCoderTrevor: :O

UndercoverToad: might change during the week but i think it's really hard to simulate the opponent in a meaningful way

dbdr: I was #1 with that until recently :D

UndercoverToad: i only got up to #2 :(

dbdr: noob

UndercoverToad: jolin dien too over

jrke: btw what depth you guys reach in BS atm?

itzluku: still dont know what your main acc is lol

itzluku: toad

itzluku: :D

UndercoverToad: hover over my avatar and read the text

itzluku: lel

itzluku: moin meister

jrke: when i hovered over you first time i read 'cheating' instead of 'chatting'

UndercoverToad: and then do the same with my main account. that will tell you that i'm a noob

dbdr: lol

UndercoverToad: my cheating account :D

struct: the time you got 2nd

struct: https://i.imgur.com/vdsqIsf.png

itzluku: so the upside of just making your opp wait in the sim is, that u can have a higehr depth in your beamsearch, meaning u can evaluate more of your own possible choices?

geppoz: :O

geppoz: just added "if (false)" to my enemy prediction

RoboStac: hmm, struct has a smitsimax tab open. Secret tips for the contest?

geppoz: up to 1000 positions

geppoz: :O

dbdr: :spy:

geppoz: can be really that crap to predict?

itzluku: btw whats your function to score a board ? wouldn't the easiest methode be checking sun diff and point diff with changing the weigth of those to depending on teh day, so at the end points have more weigth and at the start/mid suns weight more ?

itzluku: method*

AntiSquid: and mctstalk in chat

struct: someone was asking on chat about simultaneous mcts

struct: So I linked him smisi

struct: smitsi

itzluku: two*

AntiSquid: :thinking:

solistice: what's your guys' approach: copy the state whenever applying an action in a sim, or just apply/undo/

solistice: *?

dbdr: copz

dbdr: copy

schachmatt: dbdr you also struggling to get used to qwertz?

itzluku: can u talk more about that?

itzluku: what to store at each new node

dbdr: I have US-int layout on qwertyz keyboard, yes :D

UndercoverToad: qwertyz? :D

dbdr: :D

derjack: on XP there was shortcut to change y to z and people were constantly hitting it

UndercoverToad: alt+shift survived even after XP

UndercoverToad: one i was in a local electronics store buying a hard disk another customer approached the sales person in need of a new keyboard

UndercoverToad: a bit of back and forth and it was clear that it was just changed to US layout

dbdr: good reason to buy new hardware

dbdr: oh, I set a low depth for testing and forgot to change it before sub :D

itzluku: stil lcant believe a sim where u just pretend your opp always waits gets top10

dbdr: try it and see for yourself ;)

itzluku: yeh u just motivated me to do that :D before i was like emh idk if i can do it

itzluku: meh*

struct: ok, say bye to your rank

struct: im coming

aangairbender: how big is your state size?

struct: /s

itzluku: LUL

dbdr: gogogo struct

struct: mine is 96 bytes

aangairbender: Mine is around 40

struct: 40 bytes?

itzluku: and beam depth?

aangairbender: oh, my bad, 40 bytes for trees

dbdr: screenshot time for the toad

itzluku: xd

aangairbender: struct its 61bytes total

itzluku: dbdr whats your state size

itzluku: and depth

aangairbender: I tried to make it less than 64 for cache line

itzluku: board+weight ?

dbdr: itzluku talk less and code more ;)

itzluku: na talk saves time for later xd

struct: I could make it 64, but I dont think its needed

aangairbender: how many sims can you do in 100ms?

struct: 1Mill+

KalamariKing: jesus

KalamariKing: chill

itzluku: i thought about traversing only 1 board through the tree and only save moves in each node, then i would only need like 48bit!!!

itzluku: but that would prob kill runtime?

aangairbender: wow, I optimized my code still around 300k (including generation all possible actions each time and selection random one)

struct: I didnt really care about optimizing

struct: tbh

aangairbender: still got 1M+ sims:joy:

struct: Its irrelevant

UndercoverToad: dbdr 01:04PM screenshot time for the toad

you know me all too well, I just did :rofl:

struct: if eval is heavy it will lower

aangairbender: but you still generate all possible moves and select random one for testing perfomance right?

struct: I generate and play until end of day and then eval

UndercoverToad: no eval during day already?

UndercoverToad: to keep the beam narrow

aangairbender: I see, I was also thinking about about doing eval in the end of the day only

UndercoverToad: and don't forget to submit struct

struct: I have

struct: Ill submit soon

struct: maybe tomorrow

UndercoverToad: you just made me laugh

UndercoverToad: or keep it. maybe you become the silver boss

struct: So many people in silver already

struct: damn

jrke: struct haven't you made any submit after getting down from 1st?

struct: I need to start coding

struct: I havent

Nerchio: struct you wrote that yesterday already :D

jrke: what could be the opening window for gold?

UndercoverToad: 300 sounds realistic to me

struct: I hope 10%

UndercoverToad: but i was wrong about silver too

KalamariKing: Anyone here know java

gmessier: I will be happy if it's around 600 :P

jrke: i thought max 1250 for silver

Hasuzawa: just ask this is the world chat someone will know

jrke: but they made 1850

KalamariKing: Why is nextInt() throwing InputMismatchException when the input is 0? It works for everything else

KalamariKing: I mean 0 as in string literal "0"

UndercoverToad: you mean random.nextInt()?

KalamariKing: (Scanner).nextInt

derjack: what lang

KalamariKing: Java

UndercoverToad: java

UndercoverToad: bug must be somewhere else

KalamariKing: Every other integer works and I know that the next token is "0"

UndercoverToad: like you reading more or less that you want

UndercoverToad: reading a 0 works fine

itzluku: https://www.youtube.com/watch?v=RLWuzLLSIgw

itzluku: great video

KalamariKing: Hmm, thanks It was working earlier so it's probably somewhere else

Nerchio: my eval is the dumbest i've ever seen and every small change completely crashes the evaluation

UndercoverToad: without clicking I expect a rickroll behind that youtube link

jrke: i can't make out any good eval

derjack: you dont know rick roll code?

KalamariKing: If there are two Scanner objects do they share a 'cursor'

itzluku: no jbait :D

struct: I think that video is overcomplicating

struct: Icebox explains it better

itzluku: link?

UndercoverToad: https://www.codingame.com/profile/5b4f89ffbaad7f5a6ad256595da624679763911

struct: There is no link sorry :p

struct: it was on a discord call

jrke: i can relate Fall challenge icebox and spring challenge 2021 struct both were first in beginning then ....

struct: I was only first due to testing

itzluku: xD

struct: Im only hoping I dont place at top 20

ddreams: hoping for a top 1000?

struct: no legend

itzluku: i mean if u set your opp to wait, then its still luck based by alot

UndercoverToad: because that top20 would mean you wasted your tshirt chance because of testing?

itzluku: tshirt? :O

itzluku: more motivation xd

UndercoverToad: 20 tshirts and 3 canvases up for grabs

itzluku: Pog

struct: yes

itzluku: thats why u have 2 accs HAHAHA

itzluku: jkjk

Default avatar.png NotSureWhyThisWorks: UndercoverToad do you have a collection of contest tshirts?

struct: I have more than 2

UndercoverToad: i have some duplicate tshirts, yes

UndercoverToad: how did you get more than 2 struct?

struct: do you have the cube one?

Default avatar.png NotSureWhyThisWorks: damn, gotta remove duplicates

struct: more than 2 accounts?

UndercoverToad: the old cube? no

UndercoverToad: but i have 2 of this https://img.printfection.com/18/21271/bT7r1IaOxZpPl8N/Next+Level+3600+-+CodinGame+Rubiks+Cube+-+Black+%28Front%29.png

struct: I dont have any tshirt

struct: nice

UndercoverToad: oh, read that again. you have > 2 accounts

AntiSquid: you deserve a CG hex shirt struct

Default avatar.png NotSureWhyThisWorks: tshirt design is decent

UndercoverToad: there is also https://img.printfection.com/18/5645/Rajypem8uxCz4xz/Next+Level+3600+-+CodinGame+Robot+-+Black+%28Front%29.png

itzluku: if they make a unique design for that hex game, would be sick

AntiSquid: i forget i even have it

struct: do you have the read stdin stdout?

Default avatar.png NotSureWhyThisWorks: that's cool I think I'm gonna try harder for a tshirt

itzluku: xd

AntiSquid: me? robot arm

UndercoverToad: yes, in gray

UndercoverToad: https://img.printfection.com/18/3872/BDcI0IOU3xhVh3n/American+Apparel+2102+-+CodinGame+-+Black+%28Front%29.png

struct: I was once offered a tshirt for bug reporting

struct: But I refused

itzluku: ?_?

UndercoverToad: severe bug?

struct: nah

jrke: why refused?

itzluku: your adress data is more worth than a tshirt ? xD

struct: I cant recall exactly what it was but it was nothing major

UndercoverToad: you don't even give the address to CG

itzluku: ah u get a code or sth for 3d party?

itzluku: dam that turtle is owning

UndercoverToad: yes, that's how it works

AntiSquid: i never see turtle outside contests

itzluku: price hunter efficiency driven

Violet.-.: hi i feel there's a problem with the system , my codes work just so fine in VS but not here on clashs

AntiSquid: i do i get euler games on submit and then they disappear ?

struct: c++

AntiSquid: why *

UndercoverToad: because you were unworthy

AntiSquid: why are they there in the first place lol

UndercoverToad: i see the battle

UndercoverToad: but you don't have a rank. did you submit twice?

UndercoverToad: game was still playing. you submitted. game finished and was added in UI

AntiSquid: hm maybe that was the reason

UndercoverToad: https://www.codingame.com/replay/552110096 there it is

UndercoverToad: 207 to 37, you lost ;)

KalamariKing: yes finally this took so long

UndercoverToad: you found the nextInt() bug?

AntiSquid: testing

KalamariKing: yup

KalamariKing: fsr I had a \n in one of my prints, which I guess threw off the scanner

TobiasA: is there going to be a boss for all the leagues?

Nerchio: except legend

TobiasA: k thanks

struct: still havent leveled up

struct: guess ill stay 29 forever

jrke: earn 1ex from anywhere and see

UndercoverToad: get 1 more XP

struct: yeah probably got stuck

UndercoverToad: just gave you an upvite

UndercoverToad: upvote

struct: ah

struct: lol

struct: thanks

AntiSquid: technically legend boss is always the #1 player in legend

UndercoverToad: hey you are lvl30 now :)

UndercoverToad: with 79XP. but I only gave you 1

struct: now Im ready for gold

KalamariKing: omg this took so long, who wants to see how poorly this goes

solistice: Can someone give me some small guidance? I have trouble disconnecting the main game from the simulation I am making without duplicating all code

solistice: I could use some small pointers

solistice: Here or in PM

KalamariKing: no way

KalamariKing: no freaking way

KalamariKing: #1 bois

KalamariKing: solistice elaborate?

solistice: so, I basically rewrote the java referee and game to c# to be able to have all actions and normal gameplay

KalamariKing: I thought they already had a referee

solistice: and then there is the main loop where it waits for input, so that's clear

KalamariKing: I forget who wrote it but str​uct should know

solistice: but now, in that loop I want to calculate the best action, so I call my method there

solistice: but for simulating in depth, I create copies of the game, but now I have to disconnect the main game loop where it reads input and so on from my simulation, where I just ignore everything

KalamariKing: I think I get it?

KalamariKing: How I did it was I had a func that would evaluate the best move, when fed a game state. For the top 'beams' I used the inputs, the lower branches used the game after said best move

KalamariKing: tl;dr write a func that takes in gamestate, then pass either inputs or past move

Nerchio: I just simulate the next states and then you eval them

Asterixk: solstice you cannot let the main loop cycle over, you need your own simulation loop inside the main loop

solistice: makes sense

solistice: thx everyone

KalamariKing: Sure

KalamariKing: Can you all believe it? I spent all this time worrying and perfecting, just to go undefeated by a long shot

schachmatt: how many players are there usually in gold and legend at the end of a contest?

KalamariKing: How many people are in silver rn

struct: 2632

KalamariKing: Thats a lot

KalamariKing: Oh welcome back str​uct

Asterixk: once i got legend on opening day, and there were about 100 players and it ended with around 500

struct: previous contest legend opened with 20 players

Nerchio: legend usually ends with less than 150 people at the end of the contest i think

KalamariKing: oh wow

KalamariKing: Thats not a lot

Nerchio: but depends on gold boss if its hard or not

struct: The best thing is to wait and get pushed

Asterixk: it was the one with the 2 racing pods per player. CSB i guess

Nerchio: you need to put quite some work into legend for sure

7amasa: Nerchio arent you gonna stream soon :D?

Nerchio: my code got messed up thers no point

Nerchio: i am just changing random variables now

Nerchio: with no hope in sight

Default avatar.png solavegeta: test

solistice: oh, i think it finally makes sense

7amasa: I think we could still learn alot through the though process, I did in the first stream Nerhcio

solistice: turns are not only actions we do, but also gathering and sun move and so on? right?

Asterixk: generating next state? yep

Nerchio: i mean you are at the same rank as me i can probably learn from you haha :d

Asterixk: i mean generating next day

7amasa: haha nahh I am just randomly trying stuff, however your first stream helped me a lot

struct: nerchio streamed?

7amasa: yeah on the starting day I think

Nerchio: but on my 2nd channel with only cg viewers

KalamariKing: How am I in the top 34% in bronze without seeding or shadows

struct: lol

Hasuzawa: believe me or not, I saw a bot crash in 2 turns from a top 20% bronze bot

Nerchio: every change i make to my bot needs to be followed by 150games vs my previous version ;p

Nerchio: breaks too easily

AllYourTrees: does anyone know of a website where you can play Photosynthesis?

jacek: CG :v

AllYourTrees: >.>

aangairbender: fyi rules are not the same

AllYourTrees: oh which ones are different?

aangairbender: I mean CG changed the original rules for this contest

struct: i dont think its simultaneous

The_ZimaBlue: https://www.codingame.com/contribute/view/66945acbc0788cc7154873b92f99ab093f4c

7amasa: I dont know why my bot works, but it does lol

Zanoshky: does anyone have unit test per round for java version?

Reading input files?

miszu: good morning children

Zanoshky: good morning master

Kellthazar: Hi!

miszu: anyone reached silver league?

Zanoshky: 2651 ppl did

Marchete: 2651 players

Kellthazar: 2651 people, to be precise.

Marchete: lol

Marchete: :D

Kellthazar: XD

miszu: god damnit

Marchete: that's contagious

miszu: let me try it again

miszu: anyone from the chat reached silver lol

derjack: no

miszu: forgot I am surrounded by developers lol

Marchete: what do you need?

Marchete: I'm botton silver anyways

Zanoshky: yeah, how can i help man?

miszu: I am botton silver too

Zanoshky: me to, i an mid silver

miszu: I barely made it yesterday

Default avatar.png BigGibbo: hello

Default avatar.png MrSharpFork: yes

miszu: 2006th in silver

miszu: i was like 1800 yesterday

Default avatar.png MrSharpFork: 1st in wood 3 :sunglasses:

Marchete: so what do you need?

Default avatar.png BigGibbo: on a scale of 1 to alphabet how do you like your cheese on toast?

k_mizev: how many % going to proceed to gold, who knows?

Marchete: 500

Marchete: according to previous contest

k_mizev: ah good, thank you, it is my 1st one

Default avatar.png Charlie.eilrahC: hello

Default avatar.png dabonitwagwan: wagwan

Default avatar.png NissanGTR205: Hello There

ddreams: General Kenobi

Default avatar.png dabonitwagwan: is that lewis by any chance

Default avatar.png Charlie.eilrahC: egg?


Mourfette: 1800 silver and reworking how to seed after I discovered I could throw to 2 cell away even if it's not in a direct line. that changes everything

Default avatar.png NissanGTR205: Hello Ethan

Default avatar.png Charlie.eilrahC: okay

Default avatar.png Daddy_Pig: wysssss me chaviessssss

Default avatar.png Charlie.eilrahC: hi dassy

Default avatar.png Charlie.eilrahC: daddy*

Default avatar.png Mr_Bowden_init: bruv

Default avatar.png lankyFish: my drillaaaaa

Default avatar.png sussybacka: wag11111111111

Default avatar.png sussybacka: ur such a sussy backa

Default avatar.png sussybacka: mr bowden

Default avatar.png sussybacka: :rage:

Default avatar.png sussybacka: or should i say

Default avatar.png sussybacka: harrison

Default avatar.png Charlie.eilrahC: you should

miszu: anyone who reached top silver without sims?

Default avatar.png sussybacka: shush

miszu: I believe if you have strong heuristic, you can do good moves at each turn

miszu: without sims

Default avatar.png sussybacka: i believe youre a nonce

aangairbender: miszu I am around top100 without sim

Default avatar.png Charlie.eilrahC: whats sim?

aangairbender: simulation

Default avatar.png Charlie.eilrahC: what do you mean by that?


Default avatar.png sussybacka: ur waffling

miszu: like in chess, you predidt couple moves in advance

Danifae: 378 in silver, no simulations :P

Default avatar.png Charlie.eilrahC: idk how to play this

miszu: how you guys handled? Is it bunch if if else and magic threshold numbers?

Default avatar.png NissanGTR205: what do we do here?

Default avatar.png MrSharpFork: ferrari > nissan

Default avatar.png Charlie.eilrahC: i dont know how to play this game

aangairbender: I have bunch of if else and some heuristics from notebook

Default avatar.png BigGibbo: u all smell

aangairbender: came up with some ideas on paper and implemented them

Default avatar.png NissanGTR205: i agree ferrari is good but nissan can be better

Default avatar.png Charlie.eilrahC: you on about clash?

Default avatar.png sussybacka: clash of clans is poggers

Default avatar.png Charlie.eilrahC: of course

ZarthaxX: aangairbender i saw that you memed with an eval of only score + suns/3, i guess you were trolling lol

Default avatar.png dabonitwagwan: what do you mean by sim ??

Default avatar.png Daddy_Pig: that was pure waffle

Default avatar.png lankyFish: shut up you batty boy

Default avatar.png Daddy_Pig: like bum dribble

Nerchio: i use score + sun/3 in the last 4 turns idk :p

Nerchio: and some bonus for finishing trees

aangairbender: ZarthaxX I am working on beam search, needed some eval function, so I did score + suns/3. It isnt good of course. My arena heuristic bot is much stronger

Astrobytes: That's 3 of your classmates kicked children, now behave or you get kicked too. Then you get banned.

ZarthaxX: ahhh your arena bot is different, ok

miszu: Astrobytes you kicked people just now?

Default avatar.png Mr_Bowden_init: oh now im really scared

Marchete: are you working on your bot, ZarthaxX?

Default avatar.png Mr_Bowden_init: im shivering in my boots

Astrobytes: Yes miszu.

LLG: are starting/stopping stopwatches in c# expensive?

aangairbender: I believe they are not expensive

ZarthaxX: Marchete trying but failing :)

Marchete: task failed succesfully

LLG: rn I have 3 different stopwatches that starts/stops every sim so I could track the time taken by move gen, sims and evals

ZarthaxX: im not suited for this game i guess

ZarthaxX: what about you marcho

Default avatar.png sussybacka: astrobyte on smoke

Default avatar.png sussybacka: pop off sis

aangairbender: LLG you can always remove them before submit

Default avatar.png dabonitwagwan: how do you move up leagues

Default avatar.png sussybacka: by being good lol

Default avatar.png dabonitwagwan: and positioions

LLG: yeah but idk if they affect my diagnosis or not

aangairbender: even if they add several millis that's not important

LLG: yeah cause I'm seeing total time = 98ms

LLG: but the sum of the 3 parts are just 92ms

LLG: so idk where those few millis went

Marchete: you can't pinpoint that much

KalamariKing: Starting/stopping clocks?

Marchete: 100ms is more like 90-95ms

LLG: stopwatches in c#, yes

KalamariKing: Or clock cycle fluctuations

miszu: what is more important when throwing seeds, to not be in line or to reach a higher richness?

ashelkov: Oups An error occurred (#407): "You reached the limit of plays for a period of time.".

Default avatar.png dabonitwagwan: http://chat.codingame.com/pastebin/6f0e95c0-351f-4a8f-bfc7-baac45523cd9

aangairbender: miszu it depends

KalamariKing: miszu that's the strategy part of the contest, you'll have to figure that out

LLG: I personally do shadows first, then richness

LLG: but yeah it depends

Gaurav.: print("Hello World!")

LLG: do you guys generate a lot of duplicate states when simming?

Mr_Yanti: print("help")

LLG: cause I think my bot is generating way too much dupes than it should

Marchete: use hashing to avoid duplicates

aangairbender: everybody uses some kind of hashset to remove duplicates

LLG: I do use hash

Gaurav.: print("what do u want?")

aangairbender: everybody but me

itzluku: fun part about sims is, your dont even need to know what the decition tree looks like

LLG: but the thing is, when the hashes match

LLG: you have to compare the actual content of the states

Mr_Yanti: print("shut up")

Default avatar.png BigBoyCharlie: u guys are sweats wow

LLG: which is slow for me

Default avatar.png BigBoyCharlie: how long u been playing?


LLG: cause I have a dictionary of trees in each state, and comparing those are slow

Default avatar.png NissanGTR205: so 50 states?

Default avatar.png BigBoyCharlie: u spoke no words. just mumble

Default avatar.png NissanGTR205: or 49 as hawaii is not a state

LLG: aangairbender right now my bot takes ~20ms each turn just to compare states

KalamariKing: actually yeah it is

LLG: idk how to improve that part yet

itzluku: is the school period over or why is this chat so bad rn

aangairbender: my bot times on on turn 2 with beam with 50

Default avatar.png BigBoyCharlie: nearly over bb

aangairbender: times out*

KalamariKing: there's a lot of trolls ig? its still school time in the US

Astrobytes: It's a class of kids yeah, I think I've kicked all but one

Astrobytes: Ah thanks struct

itzluku: gj

LLG: I'm setting depth 10 with beam width 100 rn

LLG: but it always times out at like depth 6-7

struct: well lower depth or width :)

struct: or make it faster

aangairbender: my advice is making lower depth, bigger width

LLG: >make it faster, that's what I'm trying to

itzluku: timeout because of runtime or memory?

LLG: runtime

itzluku: ah good to know

aangairbender: timout cause I exceeded 100ms

itzluku: python?

LLG: I'm on c#

aangairbender: rust, which is not usual for rust

LLG: struct, when I compare 2 hashes of 2 states for duplicate

struct: ah

LLG: if the hashes match, I have to compare the actual content as well, right?

struct: I dont do that

LLG: wait really? so you check all the dupes

struct: I dont check for dupes

Marchete: collision chance for a good hash is low

LLG: I mean, you sim all the dupes out

struct: no

aangairbender: LLG some langs provide that, for e.g. rust can create hashing code automatically

struct: I dont check for dupes at all

LLG: thing is, I don't have problems with different states having colliding hashes

LLG: I'm having problem with identical states

Marchete: identical states different hash?

LLG: since they have identical hashes, I have to check the actual content to see if they're dupes or not

Marchete: lol

Nerchio: that sounds very backwards

LLG: because that's how HashSet works in c# lol

Marchete: what hash are you using?

LLG: it first checks using GetHashCode()

LLG: then by Equals()

Marchete: ahh

ashelkov: can I do smth with it>?? Oups An error occurred (#407): "You reached the limit of plays for a period of time.".

LLG: I'm just using hash = 37

LLG: then hash += 397 * my_stuff.GetHashCode()

LLG: repeat until I run out of my_stuff

Marchete: override GetHashCode then

LLG: ^ that's my override

LLG: wait that code was wrong

LLG: hash = 37; hash = hash * 397 + my_stuff.GetHashCode()

LLG: the hashing function is fast

LLG: the problem is that when trying to add an identical state to a HashSet

Marchete: 64 or 32 bits?

LLG: C# goes: ah there's a matching hash, let's compare the actual values using Equals() to see if they're actually identical

LLG: ^ this part is slow

LLG: the hash itself is an Int32

Marchete: then override Equals

Marchete: Equals => return hash == o.hash

LLG: I also override Equals

itzluku: btw LLG width 100 ???

LLG: yes width 100

itzluku: wtf

Marchete: ask euler

aangairbender: LLG is that behavior for insert? or for lookup as well?

Marchete: he is top10 with C#

itzluku: when do u ever get to 100

LLG: for insert I believe

itzluku: wtf

AntiSquid: you can easily get over 1000

LLG: I don't do lookup on states anyway, just iterate over anything

aangairbender: then you should write better GetHashCode

itzluku: well ucan filter it up to like 20 moves id say

aangairbender: with lower collision chance

LLG: the thing is not with GetHashCode, I timed my hashes and they only take 1-2ms a turn

itzluku: and even picking like top 10 estimated out of them would be a solid width

AntiSquid: 3000 - 4000 nodes on average per depth (for most part) so you can have a width of that size

itzluku: wtf 100 xD

itzluku: ah

itzluku: u mean width for that

LLG: thing is, almost all collisions occured because the states are actually identical (which means it shouldn't be added)

AntiSquid: for my bot anyway

itzluku: i wouldnt cap that width

aangairbender: LLG your hashes are fast, but they cause a lot of collisions, resolving which is slow

itzluku: i thought that is the point, u dont cap that width

aangairbender: ah, I see

LLG: they collide because the actual content is identical

LLG: there's no way identical states won't have colliding hashes

AntiSquid: i want to yell at the screen "climb higher"

AntiSquid: gently

aangairbender: you can check with Contain before insert

aangairbender: so it will check hash only

LLG: but then won't Insert itself checks both the hash and the content?

aangairbender: then insert wont happen when hashes are equal

LLG: oh wait that's actually very clever

LLG: lemme try that

Marchete: yeah

Marchete: Contains is always the first thing to do

Marchete: in fact, how were you doing it?

LLG: ... I just called HashSet.Add

Marchete: ?!

aangairbender: but you need to check Contains for pushing to queue

LLG: yeah I know, it sounds very dumb now that I reflect on it

LLG: my thought process was that HashSet.Add already checks for duplicate so I didn't need to do anything

Marchete: according to the method, it seems so

aangairbender: my beam search isnt working:sob:

KelvinAndHubbles: My bot is always having a problem defeating the bots that sacrifice all of their trees and the end of the game. I have code which sacs the trees earlier depending on when it thinks the enemies trees will sac, but the enemy trees dont sac and instead they gain big tree advantage and the depletion of nutrient value that I try to lower

aangairbender: sim alone does 300k/100ms but beam search fails to do 5 depth with beam width 500

UndercoverToad: my width is below 50

struct: o.o

ZarthaxX: O.O

aangairbender: 0.0

struct: width 50 dfepth 100

UndercoverToad: ôô

UndercoverToad: as I said "below 50"

aangairbender: and you eval in the end of the day?

UndercoverToad: significantly below

UndercoverToad: after each action

miszu: I don't think sims is the key for this challenge

miszu: if only the top 10 people could answer that question lol

UndercoverToad: it is part of the key I think

aangairbender: sims always win, you can apply all your heurstic to the sim

ZarthaxX: i think eval is more key haha

miszu: def eval

UndercoverToad: both are useless for itself

aangairbender: eval is a measure how how the state is

ZarthaxX: by itself?

UndercoverToad: thanks grammar Nazi

ZarthaxX: np :)

ZarthaxX: just trying to help :/

UndercoverToad: i like mazelcop. Always willing to push me up

UndercoverToad: but now i want to submit and test something :(

Mazelcop: always a pleasure :)

UndercoverToad: how's your progress? still ideas for improvements?

UndercoverToad: i'm plateauing

Mazelcop: I'm trying to understand how to win this game

jrke: i am unable to find even an average eval ;(

Mazelcop: without must success

Mazelcop: *much

struct: Just wait until my NN is done

miszu: honestly, look at top performers and try to study how they do it

UndercoverToad: then we have the same problems

Marchete: they are the top performers

miszu: so study them!

Marchete: ok!

ddreams: study yourselves

miszu: struct ETA?

Marchete: :thinking:

struct: 2025

RoboStac: what if they can't understand what they are doing?

ddreams: what's the point of studying something you already understand?

aangairbender: their simulation finds good moves, so people can understand how to play this game

aangairbender: search find heuristics, which then boost search. it never ends

LLG: I ended up just using return GetHashCode() == obj.GetHashCode()

for my Equals() override

LLG: and accept that it might add a duplicate state if the hashes collide

miszu: I'll write a pseudo code that is fool proof for you guys

UndercoverToad: that's how I imagine struct and his NN https://youtu.be/os4DcbpL0Nc?t=1090

miszu: http://chat.codingame.com/pastebin/046bb844-adf1-482d-bd66-5d76d39370e1

miszu: ^ typical professor in university

ddreams: therestoftheowl

aangairbender: btw a lot of Japanese guys in the top

ddreams: they have a lot of experience with gardens

aangairbender: didnt know its popular in Japan

struct: :smile:

UndercoverToad: func? is that Go or something?

UndercoverToad: because in Kotlin it's just fun

miszu: pseudo code

reCurse: Doesn't seem realistic, only took 3 days to get it to work

miszu: are you planning to submit?

UndercoverToad: *click*

kovi: bonsai, so that is why tend to keep lvl1 trees!

7amasa: Nerchio congrats bro, impressive

Nerchio: thanks i guess :P

schachmatt: struct what data are you using to train your NN

struct: pen and paper

dbdr: that's why it will take years

schachmatt: the old fashioned way, I rate that

jrke: i want a eval but can't get what to do

reCurse: The OG NN

reCurse: The mushy messy kind

7amasa: Nerchio hahaha so modest

struct: nerchio destroys me in sc2 and in cg :(

Nerchio: :grin:

Nerchio: until you make a new submit

Rikus: LLG, AFAIK the hashing you are doing: hash += 397 * toHash Should be: hash = (hash * 397) ^ to hash;

Nerchio: these big leagues are kinda annoying tbh

struct: yeah

Nerchio: with that many participants they should probably rethink the league structure/openings

reCurse: Good thing instead you can ba... oh nevermind.

LLG: Rikus I made a mistake while typing those

miszu: why big leagues are annoying? Because it takes lots of time to find your position?

LLG: it should've been hash = hash * 397 + toHash

Nerchio: miszu well first of all theres a lot of matches at the start that are meaningless if you are at the top

Nerchio: i play around 20 games i can't lose almost every time

miszu: but but... what if it is a rare case that you could lose? :O

Nerchio: could save some server time :p

Rikus: gotcha LLG , still it should be XOR not ADD (IIRC, you have lower chances of collisions with XOR)

reCurse: Nerchio: batching used to be the way to get around that, so you only batch games you're interested into to get results, but that's no longer an option

reCurse: They limited it to the point even regular people hit the limits

reCurse: So now you end up having to submit more to get results

reCurse: They didn't think of coming up with an alternative :/

reCurse: Not like they will anyway I think

miszu: rewriting the best seed throw so it takes consideration the shadow

struct: what is the current cooldown_

struct: *?

reCurse: Not publically communicated but it's pretty aggressive

struct: I even hit it during testing

Rikus: someone in the chat mentioned 20 matches within a 5 minute span

reCurse: I've never seen people complain about play limits in the past 4 years of contest before

struct: yeah I saw lots of user mentioning it

KalamariKing: Why IS it so aggressive

kovi: there is a controversion support moderate submit spam from 50%...and wise batch from 5%

struct: to save servers

KalamariKing: Did other contests' games last as long as this one

struct: They could have made game 50ms

reCurse: Not sure how much good it did to servers, people still complain about submit times

reCurse: I think they made it 100ms because they couldn't fix the random timeout problem in FC20

struct: ah

reCurse: Pure speculation

ArT3MiS.w33: can we get unlimited time

ArT3MiS.w33: plz

LLG: Rikus I'll try XOR and see if it improves my bot, ty

KalamariKing: That would kill the servers

orangesnowfox: ArT3MiS.w33 what kind of "unlimited" :eyes:

Thienu: infinite search time!

Thienu: think of the nodes

AntiSquid: unlimited time :D calculate until the end of the universe

reCurse: You can get more time by optimizing

orangesnowfox: hahaha... If I had infinite search time anywhere...... lol

AntiSquid: can run crypto miner on top of the bot

orangesnowfox: lol, I was thinking more "cure for cancer miner"

ddreams: so noble

AntiSquid: if you get enough crypto you'll afford to do both, get your priorities straight

orangesnowfox: lol

ArT3MiS.w33: yoo guys chill

ArT3MiS.w33: XD

ddreams: cure cancer while chilling on your yacht

orangesnowfox: eww, yacht

KalamariKing: who decided yacht should be spelled yacht

ddreams: the dutch apparently

ddreams: mid 16th century: from early modern Dutch jaghte, from jaghtschip ‘fast pirate ship’, from jag(h)t ‘hunting’ + schip ‘ship’.

AntiSquid: probably worth searching for: "yacht etymology"

Nanosplitter: "The term, yacht, originates from the Dutch word jacht (pl. jachten, which means "hunt"), and originally referred to light, fast sailing vessels that the Dutch Republic navy used to pursue pirates and other transgressors around and into the shallow waters of the Low Countries" - Wikipedia

UndercoverToad: for me as a German that spelling looks perfectly reasonable

UndercoverToad: I write it Jacht. But English is always different

UndercoverToad: like address vs Adresse

AntiSquid: the dutch? bet it had something to do with the spice wars

reCurse: He who controls the spice...

UndercoverToad: i've never seen the Dune movie. But played the game for years

reCurse: I'm pretty excited about the new one, so I'm expecting disappointment

ddreams: You should read the book

Violet.-.: hi

ddreams: It's well written

reCurse: Though the art will be amazing regardless I'm sure

UndercoverToad: there will be a new one?

reCurse: Yeah later this year

Chainman: Good morning :grimacing:

ddreams: Good evening

Chainman: My ranking dropping so fast.

reCurse: With Denis Villeneuve as director <3

Violet.-.: do you know a book which has gathered all commands of python?

UndercoverToad: oh, a remaster. cool

UndercoverToad: i was disappointed about the 3D successor

reCurse: Oh sorry, I meant the new movie

solistice: are there any good guides / resources on how to start a good heuristic function? all new to me

reCurse: Not the new game

Default avatar.png N.HungC3KT: Heloo

UndercoverToad: oh. and i just realized that remastered is just a user mod

ddreams: solistice: double eval(Game &g) { return g.score; }

ddreams: go from there

Chainman: :joy:

reCurse: There is an actual new game UndercoverToad

UndercoverToad: does it run on linux?

reCurse: Asking the real questions

AntiSquid: probably

AntiSquid: what's the name ? :P

jrke: UndercoverToad are you doing beam search?

UndercoverToad: yes

UndercoverToad: i think we had that question already

AntiSquid: i mean it will likely be available for steam like most games and probably have linux support . witcher 3 runs on linux smoothly for me

reCurse: Searching for the beams of light

jrke: with any opponet prediction?

UndercoverToad: no

ZarthaxX: jrke is entering panic mode

jrke: yes i am already in panic mode

struct: he is stuck in a loop

UndercoverToad: me too, running out of ideas

jrke: me not getting good eval

ddreams: try spinning, that's a good trick

Chainman: I'm very dead, I need top 100 :sweat_smile:

jrke: so just beam search with optim and eval can give a good rank?

Chainman: But I don't think my eval with beam search will do it

miszu: do you consider a throw seeds if it shadows your own tree?

reCurse: Is it FC20 that popularized beam search? Never saw that algorithm mentioned so much before.

Chainman: Is anyone doing Reinforcement learning? lol

reCurse: Reminds me when everyone was talking about GAs because of you-know-who

Chainman: Also chokudai search hahah

ZarthaxX: maybe because struct said he used beam when cotnest started and conditioned everyone else

AntiSquid: ah damn now i get what FC20 is, was thinking it's a private contest

RoboStac: it was basically the best algorithm in the last 2 contests

UndercoverToad: i think it just fits here. little opponent interaction

Chainman: What else can you do? beam search makes sense to me.

reCurse: Oh it was popular in SC20 too...

KalamariKing: Beam search is all I know /shrug

Thienu: how does chokudai search differ from beam search? everything in google seems to be japanese

ZarthaxX: and HS reCurse?

ZarthaxX: well that was long ago

RoboStac: hs was years ago, no-one cares about it anymore

ZarthaxX: true

Chainman: @Thienu that is the question

UndercoverToad: chokudai = fixed depth, increase width

jrke: i am too much paniced:worried:

reCurse: Yeah and even if it was mentioned, it barely stuck around

struct: Thienu you increase beam width when you still have time

reCurse: Now everyone is beam this and beam that

Thienu: oh alright

reCurse: Feels like I'm on the set of star trek

Chainman: chokudai just uses time?

struct: its a simple algorithm tbf

ZarthaxX: tru

UndercoverToad: struct can understand and implement it wrong in just 5 minutes

reCurse: lol

Thienu: nice

ZarthaxX: jrke calm down lol, you wont go anywhere

ZarthaxX: i know you are afraid of having that high rank in your contest history, but that wont help

struct: yeah first time I implemented it wrong

ZarthaxX: well low rank

struct: first time I was saving the most common action

struct: >D

struct: damn this windows dev build so buggy

struct: Nothing works

reCurse: Insider?

struct: yes

reCurse: Well that's what it's for, beta testing

struct: I wanted to try the wsl gui

KalamariKing: almost like its called... a DEV build...

UndercoverToad: gui for terminal?

UndercoverToad: barbaric

reCurse: When it comes to "things I like about linux", gui comes maybe dead last

UndercoverToad: i like my i3wm

UndercoverToad: so fast

ddreams: I used i3wm like 15 years ago

UndercoverToad: it's that old? :o

reCurse: All the effort goes on the cli and it shows

ddreams: Initial release: March 15, 2009; 12 years ago

ddreams: not quite 15 then

UndercoverToad: i'm using it since 2017 maybe

Default avatar.png Lait-o: https://www.codingame.com/clashofcode/clash/report/1745835da6aa1c834d14e83db77352c96ffa397

Default avatar.png cromulus: hi

ddreams: perhaps I'm confusing it with wmii

Default avatar.png CameronWatt: i need to come up with a username when i code at home, for like this and github... hrmmm.

miszu: alright so I improved my bot quite a bit. Those throwing seeds are better now

KalamariKing: epic

Default avatar.png CameronWatt: 1337cod3r42069x

Default avatar.png CameronWatt: hows dat

ddreams: WattTheFatt

miszu: wow I am beating the 1000th place

Default avatar.png CameronWatt: lawls

Default avatar.png cromulus: im not a great coder any tips

ddreams: git good

Default avatar.png CameronWatt: practice

Default avatar.png cromulus: lol

Default avatar.png cromulus: i will

miszu: Data Structure and Algorithm, 6th edition

Default avatar.png CameronWatt: meh

ddreams: Skiena is more fun

Default avatar.png cromulus: does this site let me publish my games

UndercoverToad: yes if you stick to the SDK

Default avatar.png cromulus: cool

Kellthazar: Did some changes on my code yesterday... Now I think that I need to implement an ¨offensive shadow cast" on my throw seed validation. XD

Default avatar.png CameronWatt: protip for my aspiring devs here, and then i'll take my leave - don't just accept any offer and work for any company - look for those red flags, and don't say yes to everything they ask you to do. set your boundaries and be loyal to yourself first.

Default avatar.png CameronWatt: cheers all afk

UndercoverToad: that was random

jrke: no ideas for eval ;( i am very much panicedddd

ddreams: look for those red flags, jrke

UndercoverToad: go through a replay and analyze frame by frame

AntiSquid: doesn't that go for any job really? CameronWatt

UndercoverToad: what's happening? what would you want instead? why doesn't your bot do it? what to change to make it happen?

KalamariKing: ok wtf the teacher handed me a hamburger and said "enjoy your hotdog"

AntiSquid: i want it to lazer pew pew insta win

Default avatar.png dudenoah34: whay

Default avatar.png dudenoah34: what*

KalamariKing: lazer trees

Default avatar.png dudenoah34: :expressionless:

AntiSquid: you're level 3 you wouldn't understand dudenoah34

Default avatar.png dudenoah34: !rank

AntiSquid: !kick

KalamariKing: lmao

Default avatar.png dudenoah34: !rank

KalamariKing: if at first you don't succeed; try, try again

AntiSquid: the kick worked

jrke: euler do you have something like not completing before X days or like that

ZarthaxX: i think its not fair to keep asking about his eval lol

UndercoverToad: i didn't hardcode such stuff

AntiSquid: euler give just a bit of detail, 1 RAIC style level of detail

UndercoverToad: when you hardcode actions in a sim-based bot, it's because you are desperate

ZarthaxX: :rofl:

ZarthaxX: ^

ZarthaxX: so true

itzluku: :x

miszu: UndercoverToad you use sims?

AntiSquid: oh guilty i guess

UndercoverToad: yes miszu

UndercoverToad: i'm also eulerscheZahl in case you missed it

miszu: your username was revealing haha

AntiSquid: split personality

ZarthaxX: he is the bad toad here

reCurse: Thought the point to be undercover was no one knows :thinking:

KalamariKing: whats it like to be back at lvl 3

miszu: it's like in league of legends the character Blitzcrank, there was a costume for: defentivly not Blitz

geppoz: well to be undercover your icon should have toad inside, not outside :thinking:

UndercoverToad: enough chatting, back to understanding what's going on

Default avatar.png CameronWatt: AntiSquid yeah it does

AntiSquid: who does what?

AntiSquid: oh . found your last message

struct: im also going to close chat

KalamariKing: ok have fun

CouscousAgha: If both players cut a tree at the same round, do they get the same amount of points? And do nutrients decrease by 1 or 2?

ddreams: yes 2

miszu: submitting my code boys

miszu: let's see if I can go higher than 2025 position

aangairbender: gl

miszu: top 1500

miszu: going well

Wontonimo: go miszu go

Chainman: you beat me haha

LLG: I accidentally typed <= instead of >= in my code

LLG: and my bot actively avoid blocking my opponent

miszu: unit testing is your friend

LLG: instead of looking for moves that block

miszu: unit testing is the kind of friend you don't want to be but you know deep inside he will help you go grow a better person

ddreams: unit testing is for work

miszu: unit testing is a way of life

Chainman: AntiSquid beat me earlier :open_mouth:

AntiSquid: not sure why ping, but you welcome i guess

Chainman: nothing, cause first person I see on chat that fight me.

miszu: that top 1000 wall is real

Chainman: How does the search through future states work in terms of eval.

Chainman: I'm not sure if I should be eval(state)?eval(next_state), ?=[*,+]

Chainman: Or just take the state that lead to the best state for the max_depth

miszu: evaluation is the current you visit

miszu: and your root state will chose the child state that has the best eval

Chainman: Yeah but you are visiting future states in the graph.

miszu: right

miszu: each state has its own values in the eval

miszu: up to you if you want to use it or not

Chainman: yeah, not sure

Chainman: I feel there is a level of uncertainty the deeper in the graph, so need to consider that a less deep node with lower eval is sometime better than a path that had a higher eval deeper.

Smelty: sigh.

miszu: I believe it's all about the evaluation function

Smelty: yes,

Smelty: i have not managed to get a good scoring function going :(

miszu: if you have the winning recipee, you can win

miszu: what's your position?

Chainman: the eval :(

Smelty: yea you gottta have a good score

Smelty: er

Wontonimo: 6,000 people playing, that's a good number.

miszu: and can't break the top 1000

Smelty: cant break 1000 either

Smelty: been dropping ranks lol

Wontonimo: that's because there have been a lot of new stronger bots submitted. don't compare one days rank to another

Nerchio: you guys should introduce some bugs into your code

Smelty: w-

miszu: yeah I heard that people at the top dont' submit their best bot

miszu: in general

Smelty: i be confuzled

Smelty: i put a condition numberOfSeeds<2 for if you want to plant

Smelty: but its spamming seeds even when there are already 3

Nerchio: probably not updating number of seeds?

Gronahak: or you just found a bug in the implementation of the language you're using :p

KalamariKing: Print the numberOfSeeds var to the error stream right before the check, and print "inside check" or smth inside the check

miszu: Ocams razor theorem: I am sure he has a bug

KalamariKing: Are println's in Java expensive time-wise

Chainman: He has found a black hole I think.

Wontonimo: miszu, how easy it for you to make a few changes in your bots placement?

is1c1c: if you do multiple actions per turn, you have to update your gamestate pr. action and re-evaluate the validity of all other potential actions against the new state

KalamariKing: Also can you not grow a tree on the very first turn of the first day? Why is it not coming up in the possible_actions?

Hasuzawa: java println is printstream, I once commented out them and the answer was in time

miszu: Wontonimo I did a small change in my strategy and it helped me to go higher

geppoz: KalamariKing no sun points for it

KalamariKing: geppoz oh ok thanks, didn't see that

Nerchio: there should be a turtle emoji added to the chat for the submit performance

VizGhar: somebody can tell me about at least how deep should the beam search be?

VizGhar: I believe depth of 3 is too little

KalamariKing: Probably yeah

Nerchio: depth 3 of days or actions

VizGhar: actions :(

VizGhar: so i have to prune like hell

Nerchio: yeah it probably doesnt tell you much tbh

VizGhar: But at least I'm 100% sure I'm generating right nodes

VizGhar: And hardcoding even first moves is a little bit odd - always running into shadows

VizGhar: (against best players)... so I believe even them are not hardcoding first moves

Nerchio: i hardcoded actions not placements

VizGhar: But still... i'm more then happy with 200positions

VizGhar: yes Nerchio that is exactly what I wanted to do

Nerchio: my depth says 20k processed states and depth 1 thats kinda weird

Nerchio: bug?

VizGhar: http://chat.codingame.com/pastebin/be1d2c34-0827-480d-a3ac-eaae565064c3

Nerchio: yeah

VizGhar: yes :D you cant have 20k nodes at depth 1 :D

VizGhar: there are at most 9 actions in first day

Nerchio: well its on day 18

ClockSort: try to get 1 node at degth 20k

ZarthaxX: Nerchio do you go depth by days?

ZarthaxX: im curious about this

Nerchio: depth is 1 action

ZarthaxX: okey

ZarthaxX: maybe you were doing depth in terms of days

ZarthaxX: nvm haha

VizGhar: Interesting idea... but too late :D

ZarthaxX: what?

ZarthaxX: depth in days?

VizGhar: yes

ZarthaxX: you have half contest yet

ZarthaxX: :(

KalamariKing: Anyone have any resources on dealing with bitboards Or would anyone like to give a quick rundown

VizGhar: I'm rank 200. my target was top 500, so Im more than happy

Chainman: wow,

VizGhar: bitboards? what is the problem? you know bitwise operators right?

KalamariKing: Yeah, but how do you extract specific positions

ClockSort: it's not over yet, VizGhar :D

Scarfield: KalamariKing https://eprints.qut.edu.au/85005/1/__staffhome.qut.edu.au_staffgroupm%24_meaton_Desktop_bits-7.pdf

KalamariKing: Thanks

VizGhar: For example, these are all trees, that are mine, non dormant and of size 2: gameTurn.size2Trees & gameTurn.myTrees & ~gameTurn.dormantTrees

Chainman: That a cool resource

Chainman: I'm super stuck on understanding how to search through the states :(

Scarfield: that minus looking tilde :rage:

Smelty: o.O

Smelty: new sub improved ranking by 100

Smelty: its still fighting through though

Nerchio: ah ok that 20k states depth 1 was a bug in printing

Smelty: o.O

Chainman: do I Need to store the sequence of all states along each path in my beam search?

Chainman: I can't think of another way, because you need to know the initial action that lead to the best path.

Nerchio: you dont need to remember the path

Nerchio: first move is enough

Chainman: oh yeah, oops

Chainman: I'm just freaking out over everything. I'm not going based off any definitive guides.

VizGhar: Chainman keep the whole list of actions... easier to debug

VizGhar: remove it later

Nerchio: that is also not a bad idea

VizGhar: I can see that my bot wants to do GROW 19 - COMPLETE 8 - WAIT And suddenly I know why he picked that path

KalamariKing: why

VizGhar: that was example

Chainman: oh cool, thx

KalamariKing: right

KalamariKing: but why

AntiSquid: lol

AntiSquid: it's an open ended story KalamariKing, the hero's journey continues

Nerchio: but why :rage:

VizGhar: Automaton2000 -> job for you

Automaton2000: how do you get a second opinion

VizGhar: mg he is against me

Chainman: big questions

UndercoverToad: then write it BIG

Poostang: moves.get((int)(Math.random()*moves.size()))

Poostang: top of bronze

struct: rand() % actions.size() 300 silver

Nerchio: lol

Poostang: mod wins

VizGhar: wth... like for real Poostang?

AntiSquid: i'd sell struct for 3 silver, since jesus was sold for 30

Chainman: :hushed:

Nerchio: :joy:

struct: should 10k games be enough to test sim?

VizGhar: what do you think struct? :D

jrke: 10k thats huge according to me

AntiSquid: just submit first change to arena yolo

Marchete: how do you test that fast?

Marchete: I'm going with CG IDE

struct: locally vs my own version

Marchete: and it's dead slow

VizGhar: brutaltester probably

AntiSquid: inbreeding bots

Nerchio: i can play 100 games per 10 minutes only

struct: yes

Marchete: probably I'll setup brutaltester

struct: well testing sim is fast

Marchete: so far the sun calc and movegen is going good

struct: its like 4 games per sec

struct: on 4 threads

Marchete: I need to apply moves and check that it's similar

Marchete: I don't test sim locally, I prefer against servers

Marchete: or brutaltester

struct: im using brutaltester

Marchete: but I don't trust my code :)

jrke: how to test?

Marchete: ahh then yes

struct: custom referee though

struct: I can have both referee and my code wrong

Marchete: lel

ddreams: why not change to the official one?

Marchete: zenoscave did the referee, isn't it?

struct: im not using zeno

struct: Im using the one I made during testing

Marchete: P0 READING DAY:17 TURN:43 SUN:3 1 CALCULATE SUN!!! COUNT:13 9

Marchete: P0 READING DAY:18 TURN:44 SUN:13 9

Marchete: I'm happy

Marchete: btw exporting gamestate with C# is very simple for me

Marchete: http://chat.codingame.com/pastebin/b1e65514-8271-4f3b-b3be-75cddc94fe13

MSmits: Dear diary, the sun was out today, but that bully from across the field put his trees in my face...

Marchete: :evergreen_tree::seedling:

dmar: hi

Marchete: :sunny:

MSmits: you can put emotes in your messages

jrke: from 3 days i am searching for an average eval and still failing :(

MSmits: from your bot

jacek: try maximum eval

MSmits: not sure how but it's possible

dmar: :sunglasses:

Marchete: yes it's possible

MSmits: jrke same

jrke: maybe eval is not the issue maybe my sim has bug

Marchete: it always was

ddreams: output the right unicode symbol probably

MSmits: jrke my sim doesnt have bug, because i verified. But still have eval problems

Marchete: you can even animate some

Marchete: like the moon

jrke: how you verified MS

reCurse: Output is UTF-8 MSmits, you can print whatever in there.

MSmits: i pick an action with search, generate all opponent actions, then apply them to create all possible next game states. I save the list. Then on next turn i compare the new state, with the list and see if it's there

MSmits: it's always there

MSmits: ah nice reCurse

jrke: ok

MSmits: the tricky part is to only compare when you havent waited

MSmits: and when you have waited and opponent has waited, you can verfiy the sun point calc

Marchete: it seems you are somehow struggling with this game, smits

Marchete: or it's the normal way?

darkhorse64: wait acts a sync and you should only compare states in sync.

Marchete: I'm not on challenges usually

MSmits: no I am struggling

struct: eval its a bit hard to figure

darkhorse64: *as a*

struct: is*

MSmits: usually when my first full search is done, i'll hit top 10, then dropping later

struct: I spent 3 days until I found this eval

MSmits: i even was nr 1 with pacman for like a few hrs

dmar: yo join my dicord

MSmits: ended 50 or so

dmar: https://discord.gg/er3QgE3x

jrke: did eval is based on day?

Marchete: I don't have this problem, I was never that high

MSmits: right now i am ranked 900 though

BlitzProg: MSmits I'm top 100 with no sim and there are more people like me being like top 20

MSmits: i know

jacek: apparently only in holland you can get that high

reCurse: It's like the saying goes, 1st on wednesday, 50th on last day.

MSmits: heuristics work fine here

BlitzProg: heuristic is being unusually strong here

miszu: yeah, who has the best secret sauce

reCurse: Isn't that what people wanted since forever lol

MSmits: i am ok with heuristics, usually a search can do what heuristics can do, the search part is mostly a waste of time then

Marchete: szechuan dipping sauce

UndercoverToad: i don't like your saying reCurse

Marchete: reBless :rofl:

reCurse: But that's how it goes

UndercoverToad: i know :(

reCurse: I'm even being optimistic

reCurse: Level ramps up like crazy last weekend usually

struct: im already testing next one

MSmits: well it's a bit different these days with the larger participation

UndercoverToad: i liked the time when the contest ended on Saturday already

struct: statement mentions that only if else is allowed

Scarfield: lol

UndercoverToad: is it an escape room?

struct: only if you find the way out

MSmits: :)

MSmits: otherwise it's a prison

Ziink: MSmits it's my first time, how's the participation usually ?

reCurse: Judging by this chat it's time to do a bitboard stream

MSmits: for the last year it's been high 5k+

struct: You wont

MSmits: 2 years before that, around 2k

AntiSquid: if it were a fun game sure heuristics would be fun @_@

jacek: it seems the rarer, the more

reCurse: Yeah so according to priorities

UndercoverToad: or they do more promotion

reCurse: They should fall to once per year next

kovi: heurstic is always fun...for a while

MSmits: covid boosts participation too

kovi: heuristics

reCurse: And then the logical conclusion is to never do them again and gain infinity people next time

AntiSquid: only 1 contest per year ?

reCurse: That kind of engagement makes my head spin

jacek: so covid is CG conspiracy to boost contest participation

MSmits: sure

Enknable: recurse just stream all your knowledge

MSmits: seems as likely as the other conspiracies :)

Enknable: :pray:

struct: if he streams I subscribe

UndercoverToad: bring some time with you Enknable

Astrobytes: 0 contests = infinite participants. Mind blown. Now THAT'S strategy!

AntiSquid: well if they properly bureaucratised internally i am sure 1 contest a year is very likely

reCurse: If I kept my mouth shut I'd be promoted straight to marketing director

Astrobytes: :grin:

MSmits: you mean to keep your mouth shut? I am wondering about cause and effect here :P

AntiSquid: you can still get a t-shirt for your suggestion iam sure

reCurse: I am also willing to keep my mouth shut for the right price

AntiSquid: ooc and pacman were back to back though

AntiSquid: and ooc really burnt me out

Astrobytes: $10 and a year's free poutine. Final offer.

AntiSquid: 1 donut / day

miszu: poutine is good. La poulle mouille restaurant is da best

reCurse: You just used a stereotype, you're getting canceled next

Astrobytes: :rofl:

AntiSquid: more a case of cultural apropriation

Astrobytes: Hey, the grabbing the moose by the antlers thing was getting old.

reCurse: That's animal abuse now

Astrobytes: Hah! You're on form today :D

reCurse: Not even lol

reCurse: Allergies are killing me

AntiSquid: i swear there was something like a "warning for vegans : animal cruelty " on one netflix movie

Scarfield: they were eating meat

Astrobytes: Ah allergies suck. I consider myself lucky I don't suffer with any.

Scarfield: xD

Scarfield: i have hayfever which can be pretty annoying. but meat allergy would be the worst

Astrobytes: I wasn't referring to meat...

Lucky30_: reCurse please share your knowledge, i am a big fan, and i will watch it all

Scarfield: oh, didnt see reBless' comment xD thought you were joking on the vegan warning

Astrobytes: Though I did know someone who is allergic to red mullet.

MSmits: haven't eaten meat since march myself. I don't have a problem with meat, but animal cruelty is pretty bad in most places

AntiSquid: meat meat allergy? or shellfish / fish kind of stuff ?

Astrobytes: *do know

AntiSquid: i only heard some people having some rare condition problems with digesting meat prorperly so they avoid it

AntiSquid: hearsay

Scarfield: both would be sad

Default avatar.png Bogdan._.: hello

reCurse: All food allergies suck tbh, truly the worst

AntiSquid: 2 pages of food allergies listed is worst i've seen

reCurse: :/

Astrobytes: My nephew (few months old) and niece (just over a year old) are violently lactose intolerant. The nephew is worst, he has breathing difficulties and skin rashes.

Default avatar.png Bogdan._.: I am don't have allergies to food

MSmits: that doesnt sound like lactose intolerance, thats a milk allergy i think

AntiSquid: not joking, someone was recovering from food poisoning and they were recommended to avoid certain stuff and slowly introduce it into their diet

Astrobytes: No, both technically MSmits, since you mention it. Not just milk, anything with lactose.

MSmits: but thats weird, lactose doesn't actually enter your system does it? It gets broken up by bacteria, which causes the intestinal gas issues

MSmits: because you lack lactase, the enzym to break it up yourself

Astrobytes: The milk allergy itself is what causes the breathing difficulties/rash

MSmits: ah yes

reCurse: Yeah when you lack those, it happens

MSmits: thats what i meant

reCurse: I'm not even sorry

Scarfield: xD

MSmits: it's ok reCurse, i would have made the same joke :P

Astrobytes: And it's not just gas MSmits

ddreams: So you could be lactose tolerant and have a milk allergy, I guess

MSmits: i know

Astrobytes: Yes, though they're most often found together afaik ddreams

MSmits: personally i am just intolerant. Spanish ancestry I think

MSmits: lactose intoleramt

Scarfield: im just intolerant in general

Astrobytes: I thought you just meant intolerant.

MSmits: yeah i know, thats why i added that :p

AntiSquid: diary allergy

jrke: i am gonna beat my laptop can't get eval :sob:

MSmits: dont read diaries then

AntiSquid: dairy * lol

Scarfield: https://www.youtube.com/watch?v=zcUs5X9glCc

MSmits: as non-native English speaker I love messing with natives :P

Chainman: eval is destroying me

MSmits: and again that came out wrong

reCurse: Oh boy.

reCurse: We're headed straight into webchat removal.

Astrobytes: wtf MSmits

reCurse: So keep going guys

Hoyer: will the map size ever change?

MSmits: lol...

Hoyer: no, right?

ddreams: only if you play a different game

Hoyer: I'm thinking like at later leagues

Astrobytes: No Hoyer.

Westicles: logjam at the top, better add a new rule

Hoyer: alright thanks

AntiSquid: i feel unsafe when MSmits is in chat, maybe he should be banned ? Automaton2000

Automaton2000: how do you like challenges?

Chainman: Who is Automaton2000?

Automaton2000: i got a clash of code a la mode

MSmits: come on, you code c++, you can take unsafe

Chainman: lol

AntiSquid: not going down that road MSmits

cegprakash: omg silver is super competitive

Astrobytes: wth did you expect?

cegprakash: top 200 okay

cegprakash: but top 1000 are too strong

MSmits: time to dust off the ol' prune array?

Astrobytes: :rofl:

jrke: man man man in 3 days i can't get a eval

cegprakash: jrke new ppl are dominating in India

ddreams: keep praying

cegprakash: may be we are missing something intuitive

cegprakash: jrke there should be some greedy approach we are missing

jrke: till i get a better eval ceg

cegprakash: I'll tell u a simple eval

if(day < 15) score map control else score actual score

cegprakash: this should take to top 1000 start from there and tweak it

cromulus: can I code a game and make money off it on this site

Astrobytes: No.

cegprakash: cromulus no.. but u can use this skills to implement AI for real world problems where u work and earn money

cegprakash: this is for helping u grow the skills and to have fun as a community cromulus

cegprakash: just like gaming

cromulus: okay thanks

Chainman: This is a fun way to learn.

cromulus: yeh

cegprakash: but there are some crazy rewards if u finish in top 20

AntiSquid: cromulus lol

cegprakash: huawei stuff and t shirts from codingame cromulus

Chainman: :unamused:

AntiSquid: well technically it depends . if you sream onyoutube how you make the game you prolly get paid for the ads so ...

Chainman: I'll be ecstatic in top 100

Chainman: But that's unlikely at this point.

JP7: All right, I've been clash of coding for 4 days

JP7: finally coming back to competition

KalamariKing: lol gl

JP7: presently rank 2.6k

JP7: how many ranks do we think I can climb today

KalamariKing: in the comp? or in coc?

JP7: Comp

KalamariKing: jesus

KalamariKing: I've been at this all day and I'm still in 3k

JP7: oof, whats your current general strat?

JP7: My bot currently just tries to always have a tree/seed of all sizes on the board at all times, and then "completes" asap. Incredibly basic thing that has to be rewritten entirely to go up farther lol

Nerchio: sounds pretty good

KalamariKing: JP7 rn? I have yet to implement any new rules from the bronze category, so that's probably why And there's no searching future moves or anything

JP7: Ah, you've got plenty of room to grow then, not to worry

KalamariKing: Right

KalamariKing: But

KalamariKing: I've never done any of this before and its taken me 5 days to get where I'm at now

KalamariKing: I doubt I'll get out of bronze

Nerchio: you can do it ;)

KalamariKing: Btw why are clashes so easy

MSmits: you have to solve them in 15 mins is why

KalamariKing: Like I'm relatively slow at coding and I'm 372nd, got as high as like 220th before

aCat: hi Smits :-)

aCat: how's your player ?

MSmits: my bot? It performs badly, i like the sim and such though

Astrobytes: What about you aCat?

aCat: just finished engine

aCat: got some work-related stuff before

aCat: i made it low level

Astrobytes: Ah cool.

aCat: and still got only 180k states

aCat: ndea how to do better

aCat: but doesnt matter

Astrobytes: Sounds useable. What approach are you taking search-wise?

aCat: now I got flat monte carlo

UndercoverToad: i'm way below your 180k

aCat: and wish to somehow get to silver before writing any 'normal' algorithm

aCat: ah toad

Astrobytes: There are simple heuristics to get to silver.

MSmits: to get to top 100 i bet

aCat: I wanted to thank you very much for our talk before

aCat: I really learned a lot

UndercoverToad: you're welcome

aCat: (but my 180k are no eval, just search)

Astrobytes: MSmits: Yes indeed.

UndercoverToad: my eval is expensive

aCat: I'm still thinking what algo to approach

aCat: beam is nice, but we need opponent prediction

aangairbender: I gave up on sim/search, might be a bug somewhere idk, its just bad

UndercoverToad: i think a proper prediction can make the difference and win the contest

aCat: but your bot seems to work great euler

aangairbender: how beam search makes bot completing trees in the middle of the game? smart eval?

MSmits: yeah thats difficult

MSmits: if you value score points too much, it just starts popping them

UndercoverToad: there are still some days to go. and watching replays I see non-optimal actions that I can explain by lack of opponent handling

dbdr: well, your BS can see that completing them later leads to more points than completing them now

cegprakash: Rank 300 - 49.3 Rank 700 44.67

I'm 5 if conditions away from rank 300

UndercoverToad: you have to synchronize your beam. wait until all paths have finished the current day before starting the next

aCat: I'm always thinking watching replies why no early trees on the middle

UndercoverToad: my main problem is that I plan to spend the suns in future turns. and a bad move that gives more early reward (which I won't get, opponent will block me) causes me to play the bad move

aCat: even if it seems as a better position

struct: maybe Ill add that to my beam

struct: Currently I dont care if one is at turn 2 and other at turn 4

UndercoverToad: add what? early middle tree?

UndercoverToad: oh

UndercoverToad: i'm surprised your beam is working then. mine played total garbage without sync

aangairbender: what you mean by sync?

UndercoverToad: go 5 messages above

TobiasA: my bot times out at depth of 2:cry:

struct: do not allow states of different depth to be in queue

struct: turn* not depth

aangairbender: mine is fine then

MSmits: do you guys eval at end of day or at every action?

MSmits: I am currently doing eval after every action

struct: every action

MSmits: thought so

MSmits: i mean i guess you'll branch too much if you wait till end of day

aangairbender: I tried both

TobiasA: ooooh you are right

TobiasA: i am waiting till end of day thats why

TobiasA: ha hoi hoi ha he

AntiSquid: yay of course bot doesn't lose the game again in the IDE

TobiasA: if this doesn't work it is back to depression for me

aCat: ah so the beam holds not-finished days, and explore all the other statesto finally synchronize when the day is ended for all

aCat: I'll have to consider this somehow

MSmits: it's quite easy, just duplicate wait states (give them 1 child, an identical state)

MSmits: every depth level, check if any new states are not wait, if so keep going, otherwise end day

BrunoFelthes: MSmits what kind of search are you using?

aCat: ouh nice idea workaround

MSmits: beamsearch, same as euler, but without his eval. Not having much luck

MSmits: best rank i get now is about 700

AntiSquid: 600

aCat: anyone is trying some really multiplayer approach??

aCat: seems like no;/

AntiSquid: well i was 1st on bronze open briefly, so i guess i can still retire gracefully from contest :P

BrunoFelthes: but, how do you deal with the score in different days? I mean, if i score 10 actions, the 10h action can be 2 or 3 days after, so the action that did 3 days is better than the actions with 2...

MSmits: all days are the same

MSmits: every state is at day 1, then every state is at day, etc.

MSmits: days are synchronized

MSmits: states that wait, keep waiting till all states are done

MSmits: then it's a new day

BrunoFelthes: so, your bean stack is by day?

MSmits: no

MSmits: by action

reCurse: bean stack :D

MSmits: i just let wait states, wait again

dbdr: *lurker detected* ;)

BrunoFelthes: oh, i see...

reCurse: How? You have no vision, map hacker

AntiSquid: giant bean stack best way to win this

BrunoFelthes: how do you know how many plays 1 day can have?

MSmits: I know when all states are waitinh

MSmits: then the day is done

MSmits: sometimes that is 4 actions, sometimes 5

MSmits: so in some cases, the state just waits 5 times

MSmits: while another state is doing a bunch of things

JP7: Is there a setup guide for running games locally?

BrunoFelthes: Anyone are doing MCTS? I think that i will try it...

JP7: I've got the local webserver running, but am experiencing errors (and also don't know how to specify the code for each bot to use)

BrunoFelthes: MSmits, are you think that MCTS can be better than beamsearch for turn 15 to 25?

MSmits: like, a single player mcts, or both players?

BrunoFelthes: both

MSmits: and i assume you mean day 15 to 25?

MSmits: or actually 24?

BrunoFelthes: yeah, day 15

CharmyRosewolf: I want to try an mct--would be a good opportunity to learn some data structures XD

MSmits: it might work for the end of the game yes

MSmits: but mcts is not really simultaneous

MSmits: in its basic form

BrunoFelthes: But, do you think that it is too important?

MSmits: well it is somewhat

MSmits: you'll have two players reacting to eachothers moves, when they cant, due to simultaneity

Cleingoun: ah short question im doing the onboarding for dart and the example code gives errors?

reCurse: What about prescience

reCurse: Or maybe even spectre attack

MSmits: mmh try it with the smurf reCurse and get back to us :)

BrunoFelthes: I'm planning to do the oponent play for the day, and than my play, so, somehow, i'm reacting it...

MSmits: well then mcts might work, not sure

reCurse: What smurf

MSmits: the one we're not supposed to know about

ClockSort: :D

reCurse: You see smurfs everywhere, maybe you need to calm down with the recreational drugs

MSmits: i'm just kidding, I dont think you actually have a smurf this time

MSmits: emphasis on think

BrunoFelthes: reCurse is not doing this contest?

MSmits: well not on this account for sure

reCurse: I just would chop down all the trees anyway

reCurse: Less trees less pollen

Astrobytes: Lumberjack you say...

MSmits: ye Scarfield appreciates

Wontonimo: anyone know the config for Zenoscave's brutaltester ref so that it uses bronze rules?

Astrobytes: -3vel

Chainman: I'm overcomplicating, still writing my graph algorithm and I'm at 700 lines of code in python :(

RoboStac: probably -Dleague.level 3 before the -jar

RoboStac: assuming it's the same as others

particleflux: uh oh, so it defaults to wood rules?


Astrobytes: haven't seen zeno's version but yeah, normally it does

particleflux: don't have that one either, but good to know, need to check, that might explain some non-matching results

Wontonimo: Much thanks RoboStac ! that did it

Astrobytes: Admit it. It was -3vel.

CouscousAgha: i feel like top 400 silver things become luck based

Clagus: where can I find a schedule for gold/legend?

CouscousAgha: click on the league icon next to the timer of the event

Astrobytes: Click the silver league icon

miszu: how many people will move to gold?

Clagus: oh, thx guys

UndercoverToad: we can only guess. I go with 300

**Astrobytes gets out the crystal ball

Clagus: League opening: 5/12/21 (wtf british numbering??)

RoboStac: don't blame that on us

UndercoverToad: 5 years on CG. And I still have to think twice when I see these dates

Astrobytes: Eh? We dodd/mm/yyyy

miszu: oy' mate in that great inn it?

Astrobytes: *do

schachmatt: that's not british numbering

CouscousAgha: isnt it common sense to do dd/dd/yyyy ?

Wontonimo: we use dd/mm/yy because we have ss:mm:hh on our clocks ... wait ...

Wontonimo: we use dd/mm/yy because we have ss : mm : hh on our clocks ... wait ...

schachmatt: british would be 12/5/21

JP7: dd/dd !? :P

CouscousAgha: dd/mm*

JP7: I think so, yes

Astrobytes: Yes, we do dd/mm/yyyy

reCurse: Just weird it doesn't use locale, or isn't that a thing in javascript

particleflux: mm/dd is just plain confusing

particleflux: Should use ISO date and be done with it

Clagus: how so? it is british/usa no? but CG is France based so I would expect EU standards :P

Clagus: but anyway it starts at midnight?

Astrobytes: True reCurse. And lol, surely must be.

Astrobytes: Clagus: UK does not use the same as the US

reCurse: Anyway, estimated ETA for gold is 22 hours, legend is 22+48.

JP7: 'toLocaleDateString()' seems to be what we want

Astrobytes: For want of a better example, 9/11 for us is 11/9

RoboStac: it's weird that it doesn't do locale or french standard

JP7: which, yes, is js builtin

Astrobytes: Most (all?) of Europe use dd/mm/yyyy no?

Clagus: @Astrobytes - who is us? I thought it is both UK and USA which use the terrible month/day/year format

is1c1c: yyyy/mm/dd is superior fight me

Astrobytes: Clagus: USA = US. I'm UK and we do not use the USA system.

schachmatt: @Clagus nope, we (UK) use the one that makes sense

Clagus: oh, that's nice to hear, sorry then

JP7: @is1c1c use that if talking to computers. Humans already have the context to know the year, and the day is more immediately relevant

Clagus: still you use gallons, and other bullshit right? :D

reCurse: "we use the one that makes sense" says the country driving in the left lane

Astrobytes: Yeah, only in some ways

Default avatar.png JohnTravoltage: Is the source code for the Spring Challenge logic available somewhere? Or would I have to reverse-engineer if I want to make my own simulator?

Clagus: @JP7 - exactly!

schachmatt: I never said we consistently make sense :laughing:

Astrobytes: We have a strange mixture of Imperial and metric measurements

reCurse: :)

UndercoverToad: JohnTravoltage the code is even linked in the statement

Clagus: :D

miszu: there is the correct measurement and the US measurement

Astrobytes: Full metric would be a real blessing.

UndercoverToad: https://github.com/CodinGame/SpringChallenge2021

Default avatar.png JohnTravoltage: UndercoverToad Thank you! I tried to look for it but just couldn't find it anywhere :/

Astrobytes: It's linked in 'Technical Details', just before the 'Game Protocol' section near the bottom of the statement.

UndercoverToad: not sure if the link even shows up before Bronze

miszu: qq about bots being used for promotion. If everyone simply submit random bots until legendary league opens, does it mean everyone could get there assuming their code is better than random moves?

Astrobytes: Hm, should be there from the start imo Toad

UndercoverToad: in theory: probably. but won't happen, we want to compete for real

struct: I didnt test that

UndercoverToad: right, the link is always there https://github.com/CodinGame/SpringChallenge2021/blob/main/config/statement_en.html.tpl#L627

Astrobytes: I'm not sure there's a situation in a contest where that could happen.

Lowz: For the challenge, how does one do multiple actions on the same turn? To they just get appended to string? Like "GROW 0 COMPLETE 23"

UndercoverToad: thousands of players. you can't get all of them to not playing until legend

UndercoverToad: it's in my interest to have a small legend even

JP7: @Lowz each iteration of the loop is a new turn

KelvinAndHubbles: you can do one action per turn, multiple per day ^^^^^^^ above is accurate

JP7: not a new day

UndercoverToad: turn != day

Lowz: Ok thanks!

miszu: i guess les competition once you reach legends

UndercoverToad: there are more relevant games in legend

UndercoverToad: right now i have almost always have a perfect winrate for the first 30 matches

UndercoverToad: that's annoying

struct: not 100%?

UndercoverToad: current submit: 36 games played, all wins

struct: Just do what my bot did

UndercoverToad: i want to start losing to see what i'm doing wrong

UndercoverToad: 37% completed and still waiting for some action

UndercoverToad: but the game is less random than I expected. I'm consistently beating lower ranks

UndercoverToad: i've seen games where you have random lesses vs a bot in the 100s

ClockSort: nice humblebrag

ClockSort: i do like the low randomness here

reCurse: You're right, FC20 was much better when you could randomly lose to bots ranked 100 below

ClockSort: the ability to approach perfection with a good bot

reCurse: Fun times

UndercoverToad: the consistency is good

UndercoverToad: the huge silver isn't

reCurse: The only reason it's a problem now is because they crippled batching tbh

reCurse: They should have come up with an alternative first

KelvinAndHubbles: is there more people in Silver than there is in bronze right now? Seems wacked

reCurse: That's par on course

Astrobytes: That solution, imo, is a complete fail.

reCurse: Gold is when it starts getting tighter

**UndercoverToad never used online batches

Astrobytes: Yeah, but it's the fact it can affect you just doing stuff in the IDE

Eglerion: Is there a way to view the game rules in a standalone tab, without being on the IDE page?

reCurse: Not as far as I know

UndercoverToad: depends on your way of analyzing

reCurse: Maybe you can print the frame to PDF if you're lucky

Astrobytes: screenshot it?

struct: if you setup localy and go to localhost:8888/statement.html

UndercoverToad: if you go through the games frame by frame it's not a problem. but illedan managed to play a lot of games manually last contest

is1c1c: so what are ppl doing for their bots? im not rly an ai guy, so im in like low silver with some silly fuzzy logic bot

UndercoverToad: so many that he got contacted by thibaud who wanted to find reasonable constraints to lock out CG Benchmark but not humans

reCurse: Wait whaaaaat

UndercoverToad: he was > 1000 manual games last contest

reCurse: That's news to me

struct: wtf

struct: 1000 manual games?

Astrobytes: me too

schachmatt: manual games?

UndercoverToad: you also got a Thibaud?

reCurse: I never heard of a specific intention to lock out CGBenchmark

AntiSquid: what just pressing play my code in ide ?

Astrobytes: No, I was metoo'ing at reCurse's 'news to me'

reCurse: Only to alleviate server load

reCurse: Now I'm kind of upset

JP7: @Eglerion, I gotchu https://static.jpcode.dev/temp/cg_spring_2021_bronze_info.html

UndercoverToad: locking out CG Bench is my interpretation, sorry

reCurse: Ah ok

Astrobytes: These constraints are unreasonable in any case as they lock out human players

UndercoverToad: but thibaud asked if illedan was playing manually to get there numbers

UndercoverToad: these*

Default avatar.png EtherFrog: man, clashing in java is painfull

JP7: Yeah, its very verbose

Astrobytes: Clashing is painful. Choose your battles.

JP7: "Shortest" mode is effectively unplayable

TobiasA: i don't know what to do anymore my bot is a genius at first then as more trees appear it then causes it to time out even though it is set to depth of 2:cry:

Astrobytes: genius++

ZarthaxX: TobiasA timeout may be caused by indexing wrong too

ZarthaxX: check it locally

AntiSquid: why don't we all just play fun clashes together? best buddies for life

Default avatar.png EtherFrog: yeah the only people i beat in shortest are those that don't golf their code at all, and even then python might still be shorter

reCurse: No.

miszu: lack of unit testing could be an issue too

ZarthaxX: tru

Astrobytes: TrufaxX

AntiSquid: i like to clash while i'm trimming my nails EtherFrog, what's your fav time to clash ?

TobiasA: i don't know how to get inputs from the site

ZarthaxX: Falbytes

ZarthaxX: e.e

reCurse: Serious question, did anyone in the top100 ever used unit testing in their code?

Default avatar.png EtherFrog: dunno i started today

fvla: unit testing sounds like something you'd do if you can program really fast and generically

UndercoverToad: i can answer the unit test question with "no"

UndercoverToad: i know that others are doing it. like nmahoud e and also Royale I think

AntiSquid: what unit testing? like a script ? or create some unit tests by hand ?

UndercoverToad: player one as well (but he's not top100)

miszu: I reached legends in UTTT because of that. I was able to find the smallest suddle bug in my sims

Astrobytes: either or presumably AntiSquid

UndercoverToad: use turn input to convert to a testcase

UndercoverToad: expected action for obvious cases. or just verifying sim results

JP7: @miszu 'subtle' english is weird

miszu: yeah subtle thanks

kovi: as euler said, board conversion/generation sanity checks

Astrobytes: I will state that 'suddle bug' sounds nicer than 'subtle bug' :)

miszu: :)

fvla: is there a more inconsistent language than English?

Astrobytes: French?

fvla: haven't learned enough French to know

Astrobytes: Probably about the same. Maybe English is worse.

_Royale: UndercoverToad: I usually reproduce the board generation to compare games in the IDE with my local referee.

AntiSquid: you could google it fvla

UndercoverToad: thanks for confirming Royale (did I ping you?)

UndercoverToad: you wrote something like that in your caribbean post mortem

fvla: Google does give interesting results

reCurse: I'd say it probably falls more under automated testing than unit testing, but still

_Royale: UndercoverToad: I kept a highlight on my old nick :-)

AntiSquid: why do you ask about unit testing?

Kellthazar: currently my "should be completed" condition is: qtd_size_3 > 4 || day > 20 || react_to_opp_complete... Any other suggestion? :D

reCurse: I don't know, I saw miszu mention it several times and it made me wonder

UndercoverToad: to plan his next stream

reCurse: I didn't think anyone seriously competing would bother with those

Astrobytes: :D

_Royale: reCurse: yeah it just saved me from "clever" optimizations that completely broke my simulations :)

reCurse: But that kind of automatic testing though, sure.

miszu: the reason I mention is many people complain there is a bug in their sims. I figure to mention it as it will save time

reCurse: I've done it for physics game, just wouldn't really count as unit testing, formally.

RoboStac: yeah, the most testing I do is finding a way to test sim against the server (either by checking results in game or downloading replays)

RoboStac: but never anything specifically testing small parts

reCurse: Fun to know I'm far from the only one doing that part then :)

miszu: especially when I was bitboarding UTTT with many lookup tables, I wanted to make sure all the logics handling that is tested properly so I can shift my foccus on something else

miszu: I don't know, I like to go sleep knowing that my core functionality is fool proof (almost)

AntiSquid: idk, how do i check timeouts i generate lots of moves check time frequently try to brea at 20ms left and still timeout occasionally @_@ how do you unit test that? lol

miszu: which language?

reCurse: Not a unit test but you could keep expected metrics and break when they're breached

VizGhar: if (aboutToCrash) dont();

reCurse: We often do that in CI, monitor performance of builds and emit alerts when there's regression of performance according to expectation

struct: ASSERT() is the only test I need

geppoz: +1

miszu: assert is good too

geppoz: just fighting with: Answer: /tmp/Answer.cpp:237: void game::doSeed1(int, int): Assertion `sp2==parent->sp2' failed.

geppoz: when refunding doesn't match with parent sunpoints :D

miszu: AntiSquid I had that issue before with UTTT. Issue was I did a mistake in one of the function in the MCTS algorithm... When I wrote my tests it showed me exactly where it failed

miszu: :)

jacek: the 'tests'?

miszu: am I the only weirdo who does unit testing?

_Royale: UndercoverToad: oh I just realized who you are behind this nick :) Did you get too many PM/highlights?

jacek: oO

reCurse: miszu: I was mostly doubting on the part of what it gives for the time put into it in a competition setting.

reCurse: You need to be very time efficient in those contests

dbf: miszu, I done some unit tests earlier, but I agree it is easier to cactch sim issues if you compare sim results with next step input

UndercoverToad: chat gets laggy with many users online, mods can see all of them

UndercoverToad: https://imgur.com/a/BmQQwpa spot the scrollbar

reCurse: I don't consider comparing simulation output to referee output as unit testing

_Royale: Oh I see. I was about to suggest next contest should be named Code UndercoverToad.

reCurse: I think he has suffered enough with automaton.

ClockSort: I spent all weekend in 3000th place because I was indexing out of bounds in my array of map shade. Thanks, C++. A test might have helped :)

UndercoverToad: Automaton is finally dead

miszu: reCurse: you never had a scenario where you spend hours of debugging that turned out a stupid + or - sign or = <= sign?

reCurse: Protip: use your own array wrapper and assert on bad index.

reCurse: Sure, but that would require me knowing in advance what to test for

miszu: well if you do TDD, then as you code evertything is kinda tested. So the moment you start going crazy stuff well you can check everything in a single click

reCurse: That's a massive time investment

reCurse: Meanwhile you lose 100 ranks

ClockSort: I prefer to spend my time arguing about how TDD takes too much time

reCurse: Automatic comparison with referee output is very cheap and does a lot of the same job.

miszu: I was doing UTTT aiming for legends, however I had many small bugs and couldn't figure out. My AI was picking the wrong move out of sudden. So I took one day to fool proof my engine and sims and found out 3 small bugs

UndercoverToad: you didn't check for vertical lines at first

ClockSort: what is "automatic comparison" @recurse

reCurse: If you have map generation code matching the referee

reCurse: You can take the seed

reCurse: The sequence of inputs of each player

miszu: I work in a company where ppl do 0 testing. Like code is so garbage that I prefer to throw a brick into a PC than do some fixing. I did proper TDD and people noticed how big quality difference I give vs the garbage code

reCurse: And make sure your simulation gives the same result as referee

reCurse: That's automatic

reCurse: Also empirical testing

reCurse: Unit testing requires you to consciously choose what to test and what to check

miszu: unit test is to test one function

reCurse: And also make sure that test is bug free

miszu: so whatever you test should be simple

reCurse: Very time consuming in a contest

UndercoverToad: and update tests with changing requirements

VizGhar: I'm Android Developer and most of our clients are scared seeing time required for writing unit/ui tests

miszu: of course it's not full proof but if you have to pick, would you pick a code repo with 80% coverage or 0?

reCurse: I would pick the repo winning the contest

UndercoverToad: ok, the requirements are consistent in contests. engine won't chatnge

UndercoverToad: except for BotG maybe

Astrobytes: Contest vs real world remember miszu

miszu: the contest is how long? 10 days?

Astrobytes: 11 this time iirc

UndercoverToad: here we do horrible things to gain a few percent in speed

AntiSquid: ille did unit test botg btw

UndercoverToad: then he wrote the wrong tests

miszu: to fully test your engine it takes half a day

VizGhar: well I have nice and structured code :) maybe thats why im 250 rank

miszu: it's not a huge sacrifice but you gain more by foccusing your effort elsewhere

Astrobytes: I'm in silver, I stop now most probably

UndercoverToad: noo Astrobytes

UndercoverToad: go to gold

miszu: I would like to gold :)

Astrobytes: It's like pulling teeth

UndercoverToad: big wooden teeth

Astrobytes: :D

jacek: scottish teeth

struct: if I change mb and cpu, if I connect my current dirvers will I need to format or will it work without having to format?

struct: drivers i mean ssd

particleflux: which OS?

struct: w10

VizGhar: never heard of that linux distro

particleflux: ha :D

Astrobytes: connect your current SSD drive you mean?

Marchete: it's an useful desktop

struct: yes

Marchete: w10 + WSL2 = linux desktop year

particleflux: unsure of win10, I guess it *might* work, but you might need to adapt efi settings (AHCI stuff)

struct: my ubuntu https://i.imgur.com/4YxACsB.png

AntiSquid: w10 can be updated easily with Linux live USB

Astrobytes: Yeah make sure the BIOS settings match up with your hardware changes or you might be in for a world of s**T, otherwise should be OK

AntiSquid: just run the update

Astrobytes: You don't have *everything* on one SSD do you

struct: I dont

struct: I dont have anything that I need in the SSD

Astrobytes: Just system right

struct: pretty much

CommanderCero: brah std::max_element returned the minimum all the time

Astrobytes: Isn't there a backup option?

CommanderCero: and im wondering if im stupid (answer yes)

Astrobytes: Anyway, I think it should be OK struct.

struct: I see

struct: but maybe dev build is more fragile

Astrobytes: Oh dev build?

Astrobytes: Fuck that

Astrobytes: lol

struct: lol

Astrobytes: I mean Fk that

ClockSort: hey commander, maybe your values are all negative

jacek: :o

CommanderCero: nah they are positive, i've used the values for sorting and that worked as expected. Idk why it happens but im just using my own loop now

ClockSort: `int mx = a[0]; for(auto& a : arr) mx = max(mx, a);`

ClockSort: int mx = a[0]; for(auto& a : arr) mx = max(mx, a);

ClockSort: and then you have an empty array and you crash :D

CommanderCero: well if that happens I would have a problem anyways xD

VizGhar: hmm hitting beam width at depth 3 then 4 then 3 again seems wrong right?

Nerchio: what is depth

VizGhar: depth of tree (or maybe height)

VizGhar: distance from root

Nerchio: do you clear the queue after width ends and before you add children

VizGhar: I always remove the node I'm expanding (and that node is always on index 0 of my vector)

VizGhar: not using best data structures, but I'm just trying to make it work again

VizGhar: maybe I'm sorting incorrectly somehow... have to check

Nerchio: well i take X width nodes get children from those, delete the rest, add children and repeat from 0

VizGhar: you are ranked 55. I'll think about it :D

Nerchio: thats how beamsearch works (i think?)

ZarthaxX: yeah taking best X after each action

VizGhar: I didn't find any good resource on BS for trees

VizGhar: can you guys recommend?

Nerchio: no idea :S i mean the concept is not too difficult i guess

ZarthaxX: ^

Astrobytes: Essentially just a BFS with restricted breadth

VizGhar: sure... I cut the nodes after whole 1 layer of tree were expanded...

Astrobytes: Not sure if this is any use but: https://tech.io/playgrounds/11358/breadth-first-search-and-beam-search-comparison

Astrobytes: Just game tree nodes rather than maze cell nodes

VizGhar: So... f.e. expand everything from depth 5. Take 200 best items at depth 6. expand everything from depth 6 ...

VizGhar: looks like I'm doing exactly that. but incorrectly obviously

solistice: Ugh, i'm getting crazy, am getting an "Unhandled exception" somewhere after 7 rounds

solistice: and I can't seem to figure out what is wrong

VizGhar: hmm solistice can't help you... too little description

solistice: wish I could give you more

VizGhar: understandable, solving simillar problem

solistice: what depths you all are reaching when evaluating states?

Astrobytes: 0 with current state only :P

VizGhar: he is probably asking someone from top 10 :D

Wontonimo: solistice - depth 0 for me

Astrobytes: Well, looking at top 20 I feel a lot of heuristic bots are up top.

solistice: nah just in general

VizGhar: Wontonimo you mentioned, that you will you that depth 0 bot as mirror for your actual bot... still the case?

solistice: my simulation claims to run to depth 104

solistice: somehow I doubt that

Wontonimo: great link about beam search Astrobytes

Astrobytes: thanks Wontonimo

Astrobytes: Care to send me some inspiration and motivation in return? :P

struct: ok

struct: Im becoming lazy

struct: I cant code

Poostang: walking helps

Poostang: just watch out for sneks

Wontonimo: Hey VizGhar I just got brutal test up and going locally and am planning on coding my sim after dinner in about 3 hours from now. I can tell you then once i'm in the thick of it. but, yeah, the plan is to use the current bot as a heuristic

VizGhar: :thumbsup:

VizGhar: fixed that beamsearch... I was expanding one more item that I should... now back to evaluation

xdcomrade: what is the threshold on silver?

Lachrymosa: question about simming; When I look at the next possible move is instantiating an object that is the board with an implemented move ok to do for each possible step or does this get too cumbersome and I should think of a smaller solution?

xdcomrade: to pass into silver

VizGhar: what you mean

VizGhar: beat the bronze boss xdcomrade... he is threshold

Nerchio: Lachrymosa its a good start but in the end might be considered too slow

Lachrymosa: Ok, I am using Python3 and really only hope to Sim 5 moves deep. This being my first Sim and all

xdcomrade: thx @VizGhar :)

scionkiller: Where's the link to the github of the server code?

VizGhar: I cant imagine replace that structure with something non structural

VizGhar: are the structures really that heavy to instantiate?

Lachrymosa: If I do them in a dumb way I'm sure :p

Lachrymosa: the words bit register have been thrown around, well, a bit. Might try and use that in the object to keep it lean

Wontonimo: simming with Python3 Lachrymosa! you go! I've tried that in other competitions and the best performance i could get was 20x slower than c++

solistice: how does c# compare to c++ wrt speed?

Astrobytes: VizGhar: "fixed that beamsearch" - nice one!!

VizGhar: tnx Astro

VizGhar: now the more intelligent eval

Wontonimo: Nice ranking VizGhar !

Wontonimo: C# and C++ should be the same speed solistice

Wontonimo: (anyone here feel free to correct me as i am no expert)

VizGhar: tnx Wontonimo... its 2 days without submit. Just learning how the contests works. Completely rewrote my code

Wontonimo: do you use the brutal tester?

VizGhar: I'll pull it out tomorrow

Astrobytes: Completely rewriting your code is standard contest procedure

Wontonimo: you will not regret it VizGhar

Astrobytes: Just don't forget soem vcs

VizGhar: yeah... I wont do it again for this one

Astrobytes: *some

VizGhar: vcs? mean git?

Astrobytes: Whatever one works for you

ZarthaxX: VizGhar doing great for first contest !

ZarthaxX: idk if you did if else spaghetti complex stuff but anyway

ZarthaxX: really nice haha

Wontonimo: killing it even

ZarthaxX: totally

ZarthaxX: you too wonto

Wontonimo: Thanks ZarthaxX :D

Astrobytes: Hey VizGhar's pretty good ZarthaxX, Wontonimo too! You've been missing their activity recently OutoftouchthaxX

VizGhar: tnx guys... Hope I can push it to legend. Obviously asking proper questions here in chat helps a lot

ZarthaxX: wdym astro?

struct: legend or delete

ZarthaxX: what did i miss

Astrobytes: VizGhar and Wontonimo, up and coming CGers!

ZarthaxX: ah :P

Astrobytes: SlowwwwthaxX

Wontonimo: thank man. off to dinner. cya all tomorrows

Astrobytes: Maybe you should have a sloth with a pirate hat

Astrobytes: ZarthaxX

ZarthaxX: wot lol

Astrobytes: Cya tomorrow Wontonimo

ZarthaxX: im not slow :C

ZarthaxX: cya wonto

ZarthaxX: i wont edit a pic for that slot :P

ZarthaxX: sloth

Astrobytes: :rofl:

Astrobytes: Just kidding man. How are ya anyway

ZarthaxX: had an interview 2 hours ago

ZarthaxX: bit tired

struct: contest ends monday right?

ZarthaxX: and have class in 1 hour

ZarthaxX: :D

Astrobytes: Ooh, how's it go?

ZarthaxX: i think so

Astrobytes: *how'd

ZarthaxX: i think it went well

ZarthaxX: my gf took same interview yesterday with same recruiter.. so i knew the questions

ZarthaxX: haha

VizGhar: :D :D

Astrobytes: Hahaha well that's one way to do it :rofl:

ZarthaxX: hopefully they call me to continue the process

ZarthaxX: i mean, it wasnt abouts olving problems

Astrobytes: What if they call your gf instead?

ZarthaxX: was about talking about my life, current teacher job, uni

ZarthaxX: oh that would be amazing

ZarthaxX: i want her to enter :P

ZarthaxX: there space for both of us anyway haha

ZarthaxX: is*

Astrobytes: hahaha be careful what you wish for :D

ZarthaxX: why :c

ZarthaxX: they are hiring a lot of people tho

ZarthaxX: we know some that entered through this thing already

Astrobytes: You've never worked in the same workplace as your gf before have you

ZarthaxX: wedid the same subject last year and were in the team together there

ZarthaxX: but no, i havent worked :P

Astrobytes: Workplace is different. Like I said, be careful what you wish for :rofl:

ZarthaxX: well, breakup will be the solution in that case

struct: astro is scaring Zarthax

ZarthaxX: :D

ZarthaxX: yeah dude, super negative

Astrobytes: That's a bit extreme!

ZarthaxX: bad mod

ZarthaxX: we have been together for 2 and a half years already... i think we can handle that

Astrobytes: lol, I just mean it makes work life harder to deal with and work things become personal sometimes. I've seen it happen a million times, only happened to me once tho - so don't worry hard

ZarthaxX: i guess it makes sense

struct: I'm one ctrl shift away from deleting this dev build bs

ZarthaxX: but the company has many areas

ZarthaxX: we may not end on the same one

ZarthaxX: lmao

Astrobytes: Ah I thought you meant the same job ZarthaxX

ZarthaxX: so... quick explanation is that it's an IT Bootcamp, where you get prepared for 2 months and THEN you get into one of the teams existing in the company

King_Coda: never date your coworkers

ZarthaxX: existing teams*

King_Coda: thats what my dad told me

VizGhar: I'm running games against Skril l. that 157000 9/31ms numbers looks extremely scary :O

ZarthaxX: it's a very big company, that is looking to double their employees btw (16k more)

particleflux: brb adding random number outputs to my bot

VizGhar: o.O that's extreme number

Astrobytes: Gotcha ZarthaxX, sounds cool

ZarthaxX: mercadolibre if you have heard of it

ZarthaxX: but i guess it's more of a latin america thing

Astrobytes: I think I've seen the name somewhere before

Astrobytes: mercado is market right

ZarthaxX: they are like ebay, amazon, etc

ZarthaxX: right

ZarthaxX: you can put products to sell

Astrobytes: yeah, so free market

ZarthaxX: yup

ZarthaxX: their system works so nice tho, i have never heard anything bad from them lol

Astrobytes: Yeah, definitely seen it before

ZarthaxX: theyr deliveries are on point

ZarthaxX: their*

ZarthaxX: so anyway, that's all

ZarthaxX: hopefully i continue with the process

Astrobytes: Best of luck my dude!

Zenoscave: gz arthie!!!

Astrobytes: And to your gf also

Zenoscave: did your gf get a job there too? (missed the first part of gz)

Rikus: ZarthaxX join Nimble Giant, I can get you an interview in no time (specially considering that I'll be the one interviewing you + two other TechLeads :P)

Zenoscave: mmm yum. nepotism

Zenoscave: ;) ;P

Rikus: After all you are mlomb's friend, how bad could it be...

    • 5 years later **

-ZarthaxX!! Stop pushing changes without even compiling them and with 1 character descriptions!

ZarthaxX: :rofl:

ZarthaxX: i think this will end super bad lol

Zenoscave: http://chat.codingame.com/pastebin/48507067-7650-4aa1-a4c9-72dabe41830d

ZarthaxX: but that's a super cool offer ty <3

ZarthaxX: Zenoscave she did the interview yesterday

NightScap3: How can I send debug messages over JS without breaking the game?

Zenoscave: console.error.log

Zenoscave: i think

NightScap3: Thanks

Zenoscave: and gz ZarthaxX

Zenoscave: again.

struct: why does the login page have avx ZarthaxX?

ZarthaxX: ty :)

ZarthaxX: what?

Zenoscave: login page?

ZarthaxX: Rikus is that video games company cool btw?

Default avatar.png CameronWatt: that feel when a challenge makes you feel like a complete idiot

Zenoscave: I don't need a challenge for that CameronWatt. I always feel that way

Default avatar.png CameronWatt: lol

Astrobytes: Except when you're not an idiot ofc Zenoscave :P

Zenoscave: Name one time I

Zenoscave: I've done something non-idiotic ;)

Zenoscave: Like remember to sleep

Astrobytes: That's about the only time really

Zenoscave: Hah! Trick question! I forgot to do that even

Default avatar.png CameronWatt: haha

Rikus: ZarthaxX it is, we have been around since 2002, aka NGD Studios Everyone is super cool, tons of friends, board games, beers, etc etc (well beers right now are beers over Discord...)

Zenoscave: :beers:

ZarthaxX: wow :O sounds like a chill place to work

Zenoscave: well, looks like i'm moving to argentina

Astrobytes: tbf your question was unclear Zenoscave

Zenoscave: ;) jk I love my current job too much Astrobytes: When are double negatives not unclear ;)

Astrobytes: Zenoscave: WHEN I MISREAD THEM. EOF.

ZarthaxX: Rikus i would love to try in the future maybe, thanks again <3

Zenoscave: also, hi asrto

Astrobytes: *arse-tro

ZarthaxX: the heck

Zenoscave: lol you said it, not me

Zenoscave: hi zarthie

Astrobytes: Maybe I change to ArseTrollBytes

Zenoscave: hm.... :thinking:

Astrobytes: And hiya Zeno

ZarthaxX: hi pewpew

ZarthaxX: howdy

ArseTrollBytes: who's zeno?

Astrobytes: Hahahaha

Astrobytes: gg

Astrobytes: wp

Zenoscave: I had to rename it back before I got euler'ed

Zenoscave: (Reference to that time euler changed his name and I changed mine to euler)

Astrobytes: Yes, I was about to do it

Zenoscave: I figured ;)

Astrobytes: How's things anyway

Zenoscave: I broke top 100 yesterday for about 10 min

Zenoscave: broke above*

Astrobytes: Nice. Making a real effort?

ZarthaxX: nice1

fvla: I'm implementing a beam search for the first time in my life today

Zenoscave: yup I really am

fvla: glhf

Astrobytes: Since I really don't like the game much it's kinda hard to do anything lol. I got Silver but euler insists on Gold so maybe I'll try later.

VizGhar: what exactly you dont like?

Astrobytes: The whole game.

Default avatar.png kalman: Does anyone know how to add multiple commands on output? I did not see any instructions on it.

Astrobytes: I find it utterly soporific.

struct: This game should have been 3d

Astrobytes: kalman: in the contest?

VizGhar: don't do this to me astro... i hate looking up new words

Default avatar.png kalman: yep

Astrobytes: kalman: A day != a turn

Default avatar.png kalman: As long as you have enough sun points, you can take any number of actions. <- I would like to do this

Astrobytes: Every iteration of your game loop is a turn, but only when both players output WAIT is the day over, and becomes a new day

Counterbalance: It's 1 action per turn, kalman

miszu: funny how by just considering neighbors, you improve your code a lot

Default avatar.png kalman: but I see the boss is performing 3 actions until I do only 1

Astrobytes: I feel this could have used more clarity in the statement struct: do you agree? Many people struggling with the definition

VizGhar: if you output wait, your oponent still can output other actions

Astrobytes: ^

VizGhar: Well its standard board game... every "epoch" is composed of multiple "turns"

Default avatar.png kalman: oh, ok I get it, thanks

VizGhar: but for those who dont play the board games yes... it have to be confusing

VizGhar: (or for those who played only CSB)

Astrobytes: VizGhar: Yes, that's what I mean.

miszu: alright guys, time to submit my little update

Astrobytes: #1 or delete

miszu: ben la

VizGhar: 0.00 :D

Astrobytes: (I *am* joking)

miszu: 8/10 the first 10 games

miszu: GG

VizGhar: oh dbdr is back gooo

VizGhar: idk why I like him so much... every slovak hates hungarians by default :D

Astrobytes: It's the French part of him you like. Plus history has no meaning here! :D

Astrobytes: (that was funn though)

mybk: When the power of love overcomes the love of power the world will know peace.

Astrobytes: *funny

struct: yes I agree its a bit confusing

Astrobytes: You are not wrong mybk

Chainman: After contest are you still not allowed to share code on like github?

VizGhar: Yeah... All I want is peace... Peace of Ukraine, peace of poland and peace of finland

VizGhar: you are allowed... but why'd you do that?

Chainman: Are you russian? :scream:

Astrobytes: You can share a post-mortem report, code-snippets, but full code-sharing - no

mybk: for me I want peace for my brothers and sisters in Palestine

Chainman: Okay, so it's like the post-mortems I've seen, yeah thats' good

VizGhar: no... just imagined it.

VizGhar: mybk :pray:

Astrobytes: mybk 100% bro

VizGhar: you can share snippets. no problems with that

elderlybeginner: what's needed to make local simulations of the contest? Just to calculate different parameters even without graphical visualization?

Counterbalance: 2 ways: brutaltester and referee, or DIY referee

VizGhar: brutaltester sounds like the thing you want... don;t have link tho

elderlybeginner: i don't even know what brutaltester is. I see referee source on github only

elderlybeginner: this needs to be changed and compiled, and somehow connected as a server to my code?

elderlybeginner: that kind of tutorial on forum would be interesting

VizGhar: https://github.com/dreignier/cg-brutaltester

VizGhar: but can't help you more

miszu: top 1000 boys

Counterbalance: aka the first result when you search for brutaltester ;)

elderlybeginner: thanks "How does it work? Very simple" - this part of the description is misleading, thou :wink:

Counterbalance: yeah :)

Counterbalance: you'd need a JDK 1.8+, git and apache maven

Astrobytes: That's why you ask here for help

Astrobytes: There are Other Ways

Astrobytes: also hi Counterbalance

Counterbalance: hey astro

ZarthaxX: hi counter :*

Counterbalance: howdy zarthy :heart_eyes: :stuck_out_tongue_winking_eye:

ZarthaxX: doing alright and you

ZarthaxX: you got a bit romantic after private chat hehe

Astrobytes: :o

Counterbalance: yeah going for the inappropriate emojis

ZarthaxX: haha

Counterbalance: finished my referee

Counterbalance: now I need to do something with it

ZarthaxX: that's the hardest part :D

Astrobytes: No the hardest part is wanting to work on it at all :P

ZarthaxX: true :rofl:

Counterbalance: I'd say something about hard parts but that'd be more inappropriate than the emojis

VizGhar: jeez I'm not sure how to stop beam at day 24 :D Need some sleep. Byt

VizGhar: bye

Astrobytes: gn VizGhar

Astrobytes: :D

Astrobytes: Counterbalance :rofl:

ZarthaxX: Counterbalance damn boi

Astrobytes: Anyway, see you tomorrow guys n gals, good luck

ZarthaxX: gn astro

ZarthaxX: :*

Zenoscave: gn

struct: gn

Zenoscave: c-c-c-combobreaker

cegprakash: add a feature -> all weights screw up

mybk: git is helpful in that situation

mybk: just check what you changed

Default avatar.png easdasd: hello fellow professional python programmer. what is the function for cout in pyton?????????

mybk: print ?

Default avatar.png easdasd: bro it say system 32 print error

Zenoscave: "professional"

Whatar: print("string")

Default avatar.png easdasd: it say py is not a recognized batch command

Zenoscave: are you in the CMD prompt?

Default avatar.png easdasd: no i am in my computer

Default avatar.png CameronWatt: i am in a simulation

Default avatar.png CameronWatt: gf

cegprakash: alter a variable name. get different score

cegprakash: cegbugs

Smelty: hi

mybk: hi

ClockSort: hi

cegprakash: hi

cegprakash: can someone find a bug in this one: https://www.codingame.com/replay/552714820 skril just eats me like a cake

ClockSort: too busy with my own bugs :D

LeviathanProgramming: that's cuz you're cake

Smelty: o.O

Smelty: ceg hm lemme see

Smelty: may or may not be because you didnt bother with the center at all

cegprakash: he got there before me :(

cegprakash: and defended it

Smelty: lol

Smelty: also he shaded your trees

cegprakash: seriously man I added the best feature in the whole universe and he gets 172 points against me

Smelty: xD

Smelty: i added an accountant for selling trees that are shaded and got a 100 rank boost

Smelty: jk

HungryBurger: An... accountant?

cegprakash: nice accountant

Smelty: yes

Smelty: keep track of shadows

HungryBurger: I mean, I myself was looking at implementing a scrum master for the next multi-agent game, which is why it sounds like a cool idea to try sometime.

Smelty: hmm.

Smelty: well i aint complaining about ranks

cegprakash: I should stop watching replays with Skril he just ruins my entire motivation

Default avatar.png easdasd: hi guys im ben shapiro

AntiSquid: so?

LeviathanProgramming: so he's ben sharpio

AntiSquid: so?

AntiSquid: see nobody cares, easdasd

HungryBurger: ceg -- when that happens, try watching a few games where you curb stomp your rival totoro, to cheer yourself up.

easdasd: y u mad anti squid

HungryBurger: I like watching games where I lose (best wya to learn), until I start losing motivation. :-)

Smelty: hmm

Smelty: okr

Smelty: *ikr

miszu: nice I reached 718th

easdasd: ok but im kanye west

Smelty: anyone got ideas for bot improvements

miszu: take better decisions

Smelty: xD

Smelty: strat wise what adding

miszu: what's your position?

Smelty: 1154

Smelty: lol

Smelty: https://www.codingame.com/share-replay/552727736

AntiSquid: idk ... fixed a bug and expected to climb then dropped 1000 ranks, not exaggerating ,,,

Smelty: happens to the best of us

cegprakash: true

AntiSquid: was my reply to your bot improvement query Smelty

miszu: Smelty do you believe in shadows?

cegprakash: shadows are not ghosts lol

cegprakash: everyone believes it

miszu: some blieves the Earth is flat

miszu: Smelty, you should consider some shadow avoidance

AntiSquid: lol true miszu, its a cube actually

Smelty: ah anti

cegprakash: I don't use day anywhere in my eval except for day 23 not sure if it really matters

Smelty: yes i tried by planting less to tohers

Smelty: oh lord i added a bit of stuff and now its spamming seeds

miszu: wow, my rank got boosted to 664th

Smelty: c o n g r a t s

miszu: 665 now

miszu: can it go to 666?

miszu: 666!

cegprakash: grats.. my 2 day old bot ranks 200 higher than my current rank

cegprakash: such a shame

is1c1c: i just refactored my code to actually eval the game state instead of a sequence of actions. now its muuuch worse

miszu: before I submit a new version, I make sure I can beat my bot in arena

Smelty: congrats

cegprakash: is1c1c haha

miszu: you can do that by deleting your opponent AI and adding your arena AI

Smelty: at the beginning when i switched to eval game state i dropped 100

miszu: in case people didn't knwo

Smelty: yep miszu thats what i do

Smelty: i run 10 tests

Smelty: and if it wins at least 8 then i sub

cegprakash: gold opens tomorrow and I've a pleb bot

miszu: I don't think I will be able to reach gold yet

ClockSort: how pleb? I'm guessing Gold will be top 500 or so

cegprakash: yep definitely start with 500 in gold and it can go till 1000 before contest ends

cegprakash: or even 2000

cegprakash: there are 5 days

miszu: my grow algorithm and complete algorithm is pretty trash, anyone has a good heuristics for it?

HungryBurger: Try completing all your trees on the last three days?

Glucozen: HungryBurger , it's too late, nutrient have too low value at this moment

cegprakash: it's a balance

cegprakash: https://sayingimages.com/wp-content/uploads/perfectly-balanced-starving-meme.jpg

Smelty: o.O

HungryBurger: Haha, well, my simple heuristic starts harvesting trees on the 18th day, but haven't thought about when the opponent does it sooner.

Smelty: welllllll i just start selling my trees when im confident in my sun production

cegprakash: Smelty sush!!

Smelty: yes senapi

Smelty: *senpai

AntiSquid: ... damn this barely top 700

AntiSquid: the goal post keeps moving

cegprakash: cheers to 700 club

AntiSquid: 600 earlier today, but am not the only one improving so ...

ClockSort: woot, my code is 4680 lines and cannot be submitted. Achievement unlocked!

AntiSquid: how do you get to that many lines?

AntiSquid: i am still at 500 or so

AntiSquid: without comments i mean

Wontonimo: i'm at 136 lines with comments

Wontonimo: oh and 10 lines devoted to taunts

AntiSquid: :thinking:

AntiSquid: found perfect heuristics ?

HungryBurger: Distract by the opponent by taunting it?

Default avatar.png JBM: it's not a heuristic if it's perfect

ClockSort: you must measure the quality of the aircraft via its weight.

AntiSquid: or there are long chains of weights ? :P

ClockSort: i'm using a tool and including my cpp files in a chain, so Tree.cpp is included 11 times. That's the issue.

Wontonimo: that's right HungryBurger, gotta play the game

Wontonimo: the "default" python code is already 42 lines, so I only added 84 lines of code and 10 lines of taunt.

ClockSort: taunt is more important than sims

Wontonimo: but i've been crushing over those 84 lines like a maniac for the last few days.

AntiSquid: i have 3 lines of taunt

Default avatar.png JBM: I don't have taunts yet

Default avatar.png JBM: I'm real late on schedule

AntiSquid: how else will you get gold ?

Wontonimo: i think i should add more. maybe instead just quote My Neighbour Totoro

Default avatar.png JBM: wild guessing the opponent?

AntiSquid: no. you need to taunt them

Wontonimo: you are correct. what was i thinking

AntiSquid: i have a Made in Abyss quote

AntiSquid: similar art

Default avatar.png JBM: i'm hoping an appropriate retort will be enough

AntiSquid: of course it times out when i am about to win ... then send to IDE and no timeout ... geeez

is1c1c: i have this weird bug where its like i get an incorrect game state passed. like i'll be told i have a size 3 tree on some tile i already harvested..

is1c1c: oh nvm im just an idiot

cegprakash: what is the points written inside the bracket near richness in the game? I get different points when I cut that tree than what is shown.

DaNinja: richness+nutrients

cegprakash: but it doesn't match

cegprakash: it shows 8 points but when I complete it I get 9 popints

DaNinja: nutrients at start of day maybe

AntiSquid: ah you mean viewer isn't synchronized

DaNinja: *at start of turn

Lachrymosa: Hey I've seen some githubs share python script for Discord, but how are they implementing it? does it need to be called with a bot or is there some hidden console I'm unaware of?

is1c1c: shouldn't it be nutrients + (richness - 1) * 2?

Default avatar.png DJAMES: hi guys

cegprakash: is1c1c it should be but it isn't matching

cegprakash: in the viewer

cegprakash: when u hover a tree it tells u some points

cegprakash: that doesn't tell how how many points u will get

cegprakash: just some random number

KelvinAndHubbles: wow, implemented a shadow board feature to predict better with beam search and went down 100 places, thought it was just bad, but then 12 hours later realized I put >= instead of > and went up 400 places :/

Smelty: wow.

AntiSquid: broke into top 600, 550 or so . i still hate the game, make no mistake

AntiSquid: even if i win the contest .

Smelty: o.

AllYourTrees: why do you hate the game?

cegprakash: wow AntiSquid

cegprakash: what did u improve

AntiSquid: because it's a really bad game

AntiSquid: good night btw

AllYourTrees: night!

Smelty: nigthy nighty night

Noyotens: any spring alghorithm

Lysk: I'm impressed by the leaderboard movements generated the folks submitting

cegprakash: I think I also broke into top 600 hopefully

Smelty: lol

Smelty: aaand im in 115

Smelty: *1150

cegprakash: staring at leaderboard helps

Wontonimo: it does!

cegprakash: sometimes not.. 5 losses back to back :(

Wontonimo: doesn't hurt to also watch the replays

Smelty: yes.

Smelty: i just realized that my score calcs were using wrong variables o.O

Smelty: changing them didnt do anything tho-

Smelty: beat my old bot 7:3 resubmitting

aangairbender: dbdr did you improve your beam search?

Default avatar.png NotSureWhyThisWorks: anybody understand this from c++: "cannot bind non-const lvalue reference of type 'state&' to an rvalue of std::remove_reference<State&>::type' {aka 'State'}" I am trying to put objects in a priority queue

Smelty: hmm

Default avatar.png actualCoderTrevor: I'm rank 701 - why do I keep imagining what I'll write in a postmortem after I do really well? :joy::sob:

Smelty: *cries in 1200*

Default avatar.png actualCoderTrevor: Smelty your bot has already won in my eyes with the Rickroll

Smelty: lol

Smelty: just resubbed

Glucozen: how much node did you need to have by turn to start being effective ?

Smelty: so people actually have the patience to look at the match vs me past the monty python quotes

Default avatar.png actualCoderTrevor: In fairness I was watching your bot before you added those

Smelty: ah

Default avatar.png actualCoderTrevor: I think I need to spend some time optimizing my bot's speech. That's clearly his weak area.

Smelty: lol

Smelty: bot stop being stupid and deleting your trees so early :(

CharmyRosewolf: My bot says "Henlo!"

CharmyRosewolf: Do I win?

Default avatar.png actualCoderTrevor: Legend rank at least

Smelty: YES

Smelty: added new quote to say first round:

Wontonimo: i'm glad you are enjoying the quotes. i should add more

Smelty: "Imagine being a wood spirit lol"

Smelty: yes wontonimo

Default avatar.png Lunarhaven: why am I struggling to use a boost so much, aaaa

Smelty: hmm?

Smelty: csb?

Default avatar.png Lunarhaven: Ye, csb

Default avatar.png Lunarhaven: wait this channel is for everything on CodinGame isnt it >.>

ismail9999: @puni[-_-].oO r u here ?

Default avatar.png actualCoderTrevor: Lunarhaven totally but the Spring Challenge is happening and there are only two contests a year, so most of us are working on that. There's no good reason not to participate IMHO.

Smelty: yea

Smelty: but LunarHaven you can either take a chance and boost when dist>5000 or save each distance then boost the second round when its best

Default avatar.png Lunarhaven: alright, ty. I'm trying to get to a specific league for a class in school, and it has to b e in CSB, I'll try it out!

Default avatar.png actualCoderTrevor: gl!

Smelty: gl!

Smelty: what league r u aiming for?

Default avatar.png Lunarhaven: Silver, and I figured out how to make the boost work, but now my power wont go below 100

Smelty: oof

Smelty: so make a counter for boost

Smelty: and if you used a boost make it 1

Smelty: and only boost if it is 0, which means no boost so far

Smelty: because it defaults to 100 if you output boost wihtout boost

Default avatar.png Lunarhaven: I have a counter, that was like the first thing I did

Smelty: hmm weird

Smelty: check your thrust function then

Smelty: if it still doesnt work you can dm me your code and ill check it

Default avatar.png Lunarhaven: i will try lol

Smelty: ok

Rabeeb: what do u mean by boost actually?

Default avatar.png Lunarhaven: the CSB thing that makes you go super fast once a match

Rabeeb: I don't understand, CSB means?

Default avatar.png Lunarhaven: Coders Strike Back

Rabeeb: r u talking about this forest game?

Default avatar.png Lunarhaven: if you mean the spring challenge, no, Coders Strike Back is one of their other things that my teacher is making me do instead

Smelty: lol

Smelty: most people here are doing the contest, after all, its just twice a year

Smelty: my code is 754 lines long :flushed:

Default avatar.png Lunarhaven: :o

pmor: I'm up to 2k :\

Smelty: up to 1147

Smelty: but i recently shortened it

pmor: finally, i kicked catboss's ass

Smelty: lol

Smelty: what rank?

Smelty: i wanna right you

Smelty: *fight

pmor: had a bad search n replace that bugged my algorithm

pmor: 1st bronze right now

pmor: waiting to promote

Smelty: ahh, thats why i cant find you in silver

pmor: i have no doubt i'll get crushed in silver right now

pmor: my eval is pretty basic

pmor: and I need to implement some sort of pruning

Smelty: lol

FerrusDude: @pmor nice bot :D

FerrusDude: it popped up with me as I made my run to silver.

pmor: :)

FerrusDude: I tried to take more peeps with me but it was not in the cards.

pmor: can you tell where i stop hording sun points and chop trees?

FerrusDude: hehehe

FerrusDude: maybe

FerrusDude: :innocent:

FerrusDude: it worked very nicely for that tier. I was keeping my search narrow for the seed casting. Still testing my approach for durability.

FerrusDude: your the only one that beat me consistently. gg :D

pmor: hehe.

Smelty: xD

pmor: just tested against

pmor: 1st place silver...got crushed

Smelty: i first determine which action i want then eval each possible

Rabeeb: To me, this whole thing is sun arithmetic :3

FerrusDude: I always know it will get exciting when I see familiar 'faces' pop up

Rabeeb: Doing simple arithmetic on future suns performs pretty well

ZarthaxX: what Rabeeb

FerrusDude: I imagine it does.

ZarthaxX: you dont have complex stuff???

FerrusDude: Mine is too naive at the moment

ZarthaxX: how D:

aangairbender: finally fixed my beam search

Majeck: Hello

Smelty: e

Majeck: What happens if nutrition < 0

Smelty: it cant

Majeck: or is that not possible in the time given?

Smelty: it stops at 0

pmor: it caps at 0

Majeck: Oh ok

Majeck: Can I get 0 points for harvesting a tree then?

Rabeeb: Lol ig

ZarthaxX: Rabeeb are you doing search?

ZarthaxX: im curious lol

FerrusDude: no I think you get soil resource only

VizGhar: 0 + nutrient

aangairbender: you can theoretically, but in practice you will always get at least one

VizGhar: 0 + richness sorry

Rabeeb: @Zarthax no, just arithmetic on future suns

aangairbender: in the top games players cut around 18-19 trees total

Smelty: hmm

Rabeeb: @Zarthax shadow directions are known already

Smelty: my games, i get around 250 total points

Smelty: idk how many trees

ZarthaxX: Rabeeb just trying all actions to maximize sun production?

Rabeeb: yeah.. that's it :3

ZarthaxX: damn boi

aangairbender: Smelty if you opponent is afk maybe you get that much

ZarthaxX: gz :O

Majeck: Thanks for the help

Rabeeb: @Smelty what? 250?

PatrickMcGinnisII: I've seen a nutrient of 2, which is still a profit

Smelty: total points lol

Smelty: combined\

Default avatar.png NotSureWhyThisWorks: Ive had 21 trees cut in a single game

Smelty: hm

Default avatar.png NotSureWhyThisWorks: very rare

PatrickMcGinnisII: if you can gen 120+pts, u pretty much win imho

Smelty: lol thats me

Smelty: but i lose half games

PatrickMcGinnisII: i dont know how people do completes at day 13

Smelty: that ez

Smelty: i finish my first tree ~day 8

Zenoscave: PatrickMcGinnisII 140+ is more like it

Smelty: i just wait to complete more

Rabeeb: isn't that bad? @smelty

Smelty: lol

Rabeeb: keep the tree, get suns, chill

Smelty: like size3 not complete

Smelty: *full tree

Zenoscave: What Rabeeb

Zenoscave: What Rebeeb said**

Rabeeb: I said cutting trees is day 8 must be bad

Smelty: i mean like i can easily complete early its just that i chose not to

Smelty: i normally start slowly completing at 16

Rabeeb: lol you can hardcode anything

PatrickMcGinnisII: anyone track their trees, like how much they cost versus what they generate?

Smelty: and finish around 22

Default avatar.png actualCoderTrevor: Smelty you lose out on nutrient bonus if you do that

Smelty: noope

Zenoscave: I'm agreeing Rabeeb

aangairbender: rank 35 feels good

Rabeeb: I think the best hope is to get your AI to systematically find what's best