Chat:World/2021-05-12

From CG community
Jump to navigation Jump to search

Rabeeb: rather than hardcoding it

Smelty: actualcoder i also keep track of opponents trees, if it looks like they abt to complete than i complete

Default avatar.png actualCoderTrevor: wise

Rabeeb: yeah that's good @smelty

Rabeeb: I have that too

Smelty: @Rabeeb i tell them to complete when i have stable sun production, day 16 is the ai

Default avatar.png actualCoderTrevor: I should try to come up with something like that

Smelty: lol

Zenoscave: aangairbender do you search?

Wontonimo: PatrickMcGinnisII yes, trees cost is something i track. not generate though.

aangairbender: Zenoscave, yes, beam search. I was 140 rank without search and now 35 rank with search.

Rabeeb: How many of u using search algo here?

Smelty: i use scoring algo

Rabeeb: @zeniscave wow! how deep u go?

pmor: i just got my beamsearch working

Smelty: kinda depth 1

Zenoscave: How complex is your eval for beam ordering aangairbender? I use beam search

pmor: pushes

pmor: pushed me to silver

Smelty: nice

ZarthaxX: Rabeeb you dont need to @

ZarthaxX: and tab autocompletes a name

UndercoverToad: good morning

ZarthaxX: HI TOAD

Zenoscave: moin toad

Smelty: good night

Rabeeb: @smelty same here

Wontonimo: morning?

Smelty: lol

aangairbender: its somewhat heavy I would say, e.g. I calc shadows

UndercoverToad: 6:02am

Rabeeb: I don't predict/lookahead opponent moves

Smelty: 9:03 pm

Smelty: same

Wontonimo: no it isn't silly toad ... it's midnight

aangairbender: hey UndercoverToad, I finally fixed my beam search

Default avatar.png NotSureWhyThisWorks: anybody using sets and got a custom hash function for game states? I am new to this concept and not sure how you would hash arrays

Zenoscave: Well I mean do you have a lot of variables or just a few different considered? Mine is heavy and complex

Default avatar.png NotSureWhyThisWorks: any resources or tips would be appreciated

UndercoverToad: oh great

UndercoverToad: chromium changed the color of the top bar in an update :(

Smelty: F

aangairbender: nah, just sum of 4 variables, around 30 lines of code

UndercoverToad: it's gray now. I hate changes

Zenoscave: NotSureWhyThisWorks h = 17 foreach (v in vals) { h = h*31 +v }

Default avatar.png NotSureWhyThisWorks: zenoscave why 17 lol

Zenoscave: modulo largest prime less than the size of your hash table

UndercoverToad: prime number

Zenoscave: it's coprime to 31.

Zenoscave: well prime number too

ZarthaxX: aangairbender your eval is jsut 4 vars?

Default avatar.png NotSureWhyThisWorks: oh yeah that reminds me on a subject in uni years ago.

Default avatar.png NotSureWhyThisWorks: thanks

aangairbender: its sum of 4 vars, two of which are current points and suns/3

ZarthaxX: your eval is that simple?

ZarthaxX: your code sounds super simple and effective

Smelty: good scoring ai

aangairbender: I just added some future evaluation related stuff to eval

Smelty: thats the biggest part

Zenoscave: nice aangairbender

ZarthaxX: dude you are so beast

ZarthaxX: great results!

kovi: top100 is improving fast....heuristic went down from 30ish to 50ish

Smelty: f

aangairbender: kovi you dont have search?

kovi: finally it works but its not in top100

aangairbender: in game between us you completed all the trees and left the game board clear. It was perfect

Smelty: ^

UndercoverToad: that isn't necessarily perfect

UndercoverToad: you can still get points for suns

UndercoverToad: and a lvl1 is so cheap it pays back after 1 turn and you win after 2

VizGhar: you wont from day 23 -> 24

UndercoverToad: i'm saying you should still seed at the end

UndercoverToad: seed in day 21 => you can't complete it in time

aangairbender: I just enjoyed watching:joy:

VizGhar: in day 21 it makes sense 21-seed 22-grow for 1 sun 23-earn 1 sun and shadow enemy for 1

kovi: hmm, that was the searching one aangairbender

Zenoscave: but in case of ties

aangairbender: I know that extra trees could help when points are equal

VizGhar: but not sure why after UndercoverToad

UndercoverToad: then after that i still do it because i saw no reason to disallow

UndercoverToad: search tree gets so small

VizGhar: it is small indeed

UndercoverToad: i allow it to happen but scoring will prevent. or place a 0 cost seed

aangairbender: My beam search goes to day 24 every time

Westicles: Top 7 are awful close. Depth problem or just coincidence?

aangairbender: I dont even bound it by time

UndercoverToad: i run out of ideas

UndercoverToad: debugging the tiny things already

aangairbender: and still I eval after every action

UndercoverToad: https://www.codingame.com/replay/552718968 frame 125 I should upgrade the tree

Zenoscave: aangairbender what is your beam width?

Zenoscave: I can't imagine it's more than 100

jrke: what depth is good at beam width 700?

UndercoverToad: so I get 1 extra sun before cutting it

aangairbender: Zenoscave, its around 50

aangairbender: I made it dynamic to grow each day

ZarthaxX: oh god

Zenoscave: gotcha

ZarthaxX: wait aang, one question mhm

ZarthaxX: you doping depth by days or by actions?

jrke: beam width 50 ?

Wontonimo: that's pretty efficient aangairbender

aangairbender: I dont have any depth stuff, I just search while I have time, but it turns out I always finish search in 90ms, so full depth

jrke: i am having beam width of 700 + can go to depth 9-10 but still bad eval not letting me give a better rank

aangairbender: good eval is the hardest part imo

VizGhar: beam width 700 doesnt even makes sense imho

Wontonimo: why?

Westicles: wow, my plucky wood boss is up to 290 bronze

UndercoverToad: you have a boss?

Wontonimo: he just is boss

Westicles: not mine, the github one

Zenoscave: lol

jrke: zenoscave are you still heuristic?

ZarthaxX: aangairbender impressive :clap:

ZarthaxX: eval of 4 vars and that simple search

Wontonimo: what's really impressive to me is full depth to 24th day

Zenoscave: no

Default avatar.png LineBender: I calculate 1854 moves per second, but they all are wrong.... :(

Westicles: What's the dumbest thing you can do and get silver?

UndercoverToad: go to github, copy-paste, get disqualified

Wontonimo: random move other than wait

Zenoscave: that is the dumbest

Zenoscave: toad's i mean

Wontonimo: unless all there is is wait, then wait

Wontonimo: let me know if that works Westicles

Westicles: Wontonimo: for silver, really?

Westicles: surely not

Wontonimo: well, science says try it instead of argue

Westicles: That was the first and only thing I tried

Westicles: It got to bronze but barely

Wontonimo: okay okay ... try only seeding when you can see 2 squares away. Also, don't harvest unless you have at least 6 trees total

Zenoscave: 6 trees!?

Zenoscave: I've been doing 3...

Wontonimo: oh, and only seed as your last move before wait and only if you don't have any seeds out

Westicles: will do, thanks wont

Wontonimo: Zenoscave , i'm just throwing out stuff. don't take notes, it isn't the golden recipe

Wontonimo: it should be good enough to really throw a bronze bot up to silver though.

ClockSort: the trick to getting into silver is to be less stupid than the opponent. and that's not easy.

Zenoscave: gotcha

jrke: i want an eval and i am in top 100 but thats the problem from last 4 days for me :(

UndercoverToad: are you sure? the sim counts you shared sound really off. too high

Zenoscave: who's sim counts?

Wontonimo: oh, Westicles, if when placing a seed, don't place it in a straight line from your seeding tree.

jrke: Got 36491 nodes for DEPTH = 14

jrke: beam width 700

Zenoscave: Are you counting hashed duplicate states?

Default avatar.png Dakkad: Is it me or we're not getting inputs (tree data) if we wait while the opponent keeps on playing?

jrke: i don't have hash set i made beam class in which i store states of current depth and new noded for next depth

boi_led_egg: Players that are asleep do not receive input.

Default avatar.png Dakkad: Wow, thanks boi_led_egg

boi_led_egg: rules say that

Default avatar.png Dakkad: That was 3 hours down the drain, because i missed it from the rules!

Default avatar.png Dakkad: Thanks!

Default avatar.png Dakkad: "Players that are asleep do not receive input."

Default avatar.png Dakkad: Amazing.

Wontonimo: like real life

UndercoverToad: let's make a test jrke, give me a second

Wontonimo: well, at least they are not supposed to because that's considered not giving consent

UndercoverToad: take the following input (i only print WAIT as legal action to keep the stderr smaller, you have to generate moves yourself)

UndercoverToad: http://chat.codingame.com/pastebin/d404c310-58f9-44f8-8d8c-d715accc4443

UndercoverToad: set the depth to 3 and the beam really wide so you have no pruning. how many states?

jrke: one min lemme test it

UndercoverToad: depth=3 means 3 days in my definition

jrke: in my definition its 3 turns

jrke: i didn't get your input format

UndercoverToad: that's a problem I think

jrke: what are those -1 for

UndercoverToad: WAIT gives you suns and is a great action if your prune by actions instead of days

UndercoverToad: the -1 is the referee input. no neighbor for the cell

UndercoverToad: I get 6920 visited states btw (might include a few duplicates as I count before removal)

aangairbender: let me als otry that

Zenoscave: I got 359...

UndercoverToad: i'm counting everything, not just leafs

Zenoscave: same

Zenoscave: Removed my pruning. 1682

UndercoverToad: 1732 leaf nodes after 3 days for me

UndercoverToad: at least one of us is wrong

aangairbender: what that's without truncating the beam?

UndercoverToad: yes, no pruning for those numbers

UndercoverToad: but removign duplicates for the 1732

Zenoscave: No pruning no hashing so even with duplicate and internal nodes i only visit 1682

Zenoscave: I have a bug for sure

aangairbender: I have 81 lol

aangairbender: you really can do 2k moves on day 3?

UndercoverToad: move combinations

UndercoverToad: leading to distinct states

aangairbender: I dont seed from size 1 tree, that cuts some states

UndercoverToad: e.g. 1 state is the result of SEED 24 25|WAIT|GROW 25|WAIT|GROW 25|SEED 36 7|WAIT

UndercoverToad: let me test without SEED

UndercoverToad: for size 1

aangairbender: my bot wants to WAIT | GROW 24 | WAIT | WAIT |

VizGhar: and you make 1732 full days as nodes UndercoverToad? pretty nice

VizGhar: I make about 2000 actions :(

UndercoverToad: I get 81 visits after 2 days then

jrke: Got 200 nodes for DEPTH = 3 for 3 turns there are exactly 200 possible states can be same also

UndercoverToad: and 837 leafs after 3

aangairbender: UndercoverToad how can your bot SEED on turn 1? it doesnt have enough suns

Wontonimo: you can see for free

Wontonimo: if you have no seeds

Marchete: :eyes:

jrke: To perform a seed action, you must pay sun points equal to the number of seeds (size 0 trees) you already own in the forest.

UndercoverToad: and I shared a state where you have 2 suns already

aangairbender: hey Marchete, I have beam search working now

Marchete: noice

Marchete: when no 1?

aangairbender: UndercoverToad idk how my bot works then:joy:

UndercoverToad: no one?

Marchete: number 1

jrke: euler i am getting 200 nodes for depth 3 there are max 200 states for 3 turns

UndercoverToad: me? never :(

Marchete: that's the spirit

UndercoverToad: as Automaton said: "eulerscheZahl is a noob :D"

Marchete: how much wisdom in such little bits

Marchete: :D

aangairbender: euler my search finds 1864 in 3 days

jrke: and the state you have shared euler is having 8 valid moves at root depth

aangairbender: I removed not seeding from size 1 tree

UndercoverToad: terminal nodes? similar to mine then

aangairbender: its total amount, not terminal

UndercoverToad: hm

UndercoverToad: then I have duplicates or you are missing some

aangairbender: 1696 terminal states

UndercoverToad: 1732 terminals for me

UndercoverToad: close enough :P

aangairbender: my hashing stuff is automatic, so I am pretty sure there is no terminals

UndercoverToad: you mean no duplicates?

UndercoverToad: same for me, .net library does that

aangairbender: hmm, this is interesting

aangairbender: lets try 2 days

UndercoverToad: jrke 06:52AM and the state you have shared euler is having 8 valid moves at root depth

even the referee should give 10 actions, doesn't it?

UndercoverToad: 2 days => 139 terminal nodes

aangairbender: I have 152 for 2 days

UndercoverToad: http://chat.codingame.com/pastebin/83613ba1-ec5b-4063-b069-76d55ab1699c

aangairbender: and 16 for 1 day

PatrickMcGinnisII: see game of 256 total points

aangairbender: try 1 day:sweat_smile:

UndercoverToad: 20 :D

pmor: maybe I missed something, but do you ignore the other player moves to be able to condense the actions per action into actions per day?

aangairbender: print those please, I will print mine

pmor: actions per turn

UndercoverToad: http://chat.codingame.com/pastebin/e7ab5072-f0c4-4c95-b5b2-2e17d9a2d19b

UndercoverToad: and pmor we both talk about single player with a waiting opponent

pmor: Ah, ok..

pmor: makes sense now..thanks

UndercoverToad: https://www.codingame.com/replay/552718968 visuals for the state btw, frame 2

UndercoverToad: uhm, where is SEED 36 18 in my actions? :scream:

aangairbender: I didnt seed if I had a seed already

aangairbender: now I have 40 states for day 1

aangairbender: :joy:

supershah: how to show messages in game?

UndercoverToad: action message

UndercoverToad: just with a space between

supershah: ohh print action command?

supershah: got it

aangairbender: how do you share a pastebin?

jrke: uhm, where is SEED 36 18 in my actions? same in mine can't see that

UndercoverToad: do you remove duplicates for SEED a b|SEED c d vs SEED c d|SEED a b ?

UndercoverToad: paste it here

UndercoverToad: will convert if long enough

aangairbender: http://chat.codingame.com/pastebin/774a1440-fe54-4fb7-b066-bccf73fa3c21

UndercoverToad: that's 20 actions like mine

UndercoverToad: also no 36 18

UndercoverToad: oh wait, stupid me

aangairbender: why 36 18 is missing

UndercoverToad: there is no 36 18 as that's blocked

UndercoverToad: looking at the wrong replay

Marchete: :expressionless:

UndercoverToad: i copied turn 1 input but not the board

aangairbender: richness 0 you mean?

UndercoverToad: yes

jrke: these are the valid actions i am getting euler

jrke: 8

jrke: http://chat.codingame.com/pastebin/94cfbc03-5a6b-40c3-a06e-c953e44b3de9

UndercoverToad: same jrke. now count actions for the full day

UndercoverToad: so we agree on 20 terminal states after 1 day

UndercoverToad: @aangairbender

UndercoverToad: then to day 2, i shared the list above

UndercoverToad: http://chat.codingame.com/pastebin/83613ba1-ec5b-4063-b069-76d55ab1699c

UndercoverToad: 139 lines

aangairbender: I have this stats now D 1 20 D 2 259 D 3 3380

aangairbender: btw idk why my hashset size was 40

aangairbender: http://chat.codingame.com/pastebin/7a0c558d-c911-4ea7-ba2c-1cc5b01d3e27

aangairbender: ^ my states for day 2

aangairbender: its hard to compare, maybe we could try with 1 tree on the board only

jrke: mine for 1 day i mean till 1st wait

jrke: http://chat.codingame.com/pastebin/1e86e541-44d7-4aa6-b5b3-7d75ec9003c6

Marchete: on beamsearch why it's better to work with days and not turns?

Nerchio: for my beamsearch it seems to made no difference or made it worse so removed it for now

UndercoverToad: I don't find this line of yours: SEED 24 10|WAIT|GROW 10|SEED 24 11|WAIT

UndercoverToad: jrke there are more ways to have 2 seed actions

jrke: http://chat.codingame.com/pastebin/90e818c0-4e26-4dcb-a12f-2700a8d6e5bb

aangairbender: euler that sequence look ok

UndercoverToad: i know, i am wrong here

Marchete: SEED 24 10|SEED 36 7|WAIT| SEED 36 7|SEED 24 10|WAIT|

Marchete: is filtered by the hash, no?

UndercoverToad: yes, should be filtered

aangairbender: same state so should be filtered

jrke: i am using hash

jrke: not*

UndercoverToad: fix it

aangairbender: euler maybe you are not making some bad moves intentionally?

UndercoverToad: i want to generate all moves, must be a bug

UndercoverToad: i'll check after breakfast

aangairbender: you dont restore dormant state for size=0 trees

aangairbender: at least it seems so

aangairbender: oh, you have SEED 36 7|WAIT|GROW 7|WAIT so its not it

NinjaDoggy: pointless to generate all seed options :P

jrke: does that means my sim is bug free?

NinjaDoggy: what if you debug it for a long time just to find out it's a hash collision ;)

jrke: i don't use hash yet

NinjaDoggy: yea @toad

jrke: which is faster * or & in cpp

pmor: i would say, it depends.

Default avatar.png actualCoderTrevor: If they aren't overridden I would think * is never faster

UndercoverToad: hash collisions don't matter as there's still an Equals() function to do a real check

NinjaDoggy: true but you do that?

NinjaDoggy: isn't that super slow D:

UndercoverToad: jrke removing duplicates is crucial imagine you have a good sequence which you store as often as your beam is wide, just in different order

UndercoverToad: of course I do it

jrke: can i save a default class in hash?

NinjaDoggy: do you keep the equals() whole contest?

aCat: so you just use standard c# structures ? hashset or whatever?

UndercoverToad: yes

NinjaDoggy: like if you use a large enough mod, isn't the collision rate so low it doesn't matter?

aCat: not some my-own-mambo-jumbo transpozition table

NinjaDoggy: :joy:

Marchete: a good hash must have a very low collision

UndercoverToad: i don't have such a mambo-jabmo thing

jrke: how a hash identifies that state is equal do we have to code something for that also

jrke: ?

Default avatar.png Ximvu: It's generally a tradeoff between collision rate and memory usage.

NinjaDoggy: not even memory usage though...

jrke: suppose if there states are same but there root moves are different then how a hash will identify them as equal

NinjaDoggy: you generate a key(64 bit int) and just compare the key for equality

NinjaDoggy: instead of comparing the actual states for equality because chances of 2 states generating the same key is super duper low

NinjaDoggy: if you use 64 bits

Marchete: I agree

NinjaDoggy: something about birthday paradox and you can have sqrt(size) elements before expecting a collision :P

Marchete: I'm trying to use zobrist (I xor changes and not the whole gamestate each simulation)

NinjaDoggy: idk i don't do math :P

NinjaDoggy: is zobrist worth it though? there's like a total of 10 variables in a state

Marchete: imo use murmurhash / zobrist or anything proven

Marchete: not a invented one

UndercoverToad: now I get 181 states :/

Zenoscave: thanks euler fixed a bug with your debugs

NinjaDoggy: :O

NinjaDoggy: the helpful toad euler

Marchete: " non-cryptographic hash function"

jrke: looks my gameenigine bug free just i need a better eval but ....

VizGhar: tnx Marchete for new terms...

UndercoverToad: aangairbender you have these 2 lines:

UndercoverToad: SEED 24 11|WAIT|SEED 24 23|GROW 11|WAIT SEED 24 11|WAIT|GROW 11|SEED 24 23|WAIT


UndercoverToad: so you have a bug too ;)

Marchete: :D

NinjaDoggy: Marchete which one is better?

UndercoverToad: so all of us could improve the engine :D

aangairbender: That is weird

Marchete: ninja, zobrist is good for big gamestates with little changes each turn

aangairbender: these actions lead to the same state, dont they?

UndercoverToad: yes

UndercoverToad: that's why I say you have a bug

Marchete: mumurhash is more general

NinjaDoggy: if i have 15 variables for my state

NinjaDoggy: is zobrist worth?

UndercoverToad: depends on how many change

NinjaDoggy: wait nvm dumb question

UndercoverToad: and what state size they have

UndercoverToad: when 1 var can have 100 values it's reasonable with zobrist. for 1 million possible values it isn't

Marchete: Hash ^= Zobrist.TREE_SIZE[cellIDX, treeLevel]; Hash ^= Zobrist.TREE_SIZE[cellIDX, treeLevel + 1];

Marchete: this is for example a tree size change

NinjaDoggy: ah I see

NinjaDoggy: you're not bitboarding ;)

NinjaDoggy: or the example isn't i guess

Marchete: ??

Marchete: http://chat.codingame.com/pastebin/74d8df66-d055-417d-a2b4-498ee2263d3c

Marchete: this is the grow

UndercoverToad: but how to get there:

UndercoverToad: int cellIDX

UndercoverToad: that's an extra step already if you use bitboards

Marchete: I don't understand that

Marchete: my movegen gives cellIDX

Marchete: cellIDX as bit index

NinjaDoggy: yea nvm it's good

Marchete: not CG_index

NinjaDoggy: bitboard to generate moves

aangairbender: euler SEED 24 11|WAIT|SEED 24 23|GROW 11|WAIT SEED 24 11|WAIT|GROW 11|SEED 24 23|WAIT those 2 actions have different sun cost

NinjaDoggy: and then the hash is updated as if the board was storing the individual bits

Marchete: any gamestate change == bitboard + hash change

NinjaDoggy: separately :thumbsup:

aangairbender: If you seed before growing it takes 1 more sun

Marchete: you need to check if that's better or maybe murmuhash(byte[])

Marchete: I'd do it eventually

NinjaDoggy: do I just use the implementation here:

NinjaDoggy: https://sites.google.com/site/murmurhash/

Marchete: I guess so

Marchete: just make some simple tests

UndercoverToad: good point aangairbender

UndercoverToad: now I remember, I don't even generate such wasteful states

Marchete: but you actively do that UndercoverToad

Marchete: or you rely on beamsearch to prune these

Marchete: ah nvm

Marchete: you already asked

aangairbender: that's why I usually dont seed when I alaready have one

jrke: i print shadow like this

jrke: http://chat.codingame.com/pastebin/64b7ea24-f53d-47a9-909d-da2f71d1553c

aangairbender: I just commented that code for this test

UndercoverToad: > you already asked you mean answered?

Marchete: ohh beautiful print

NinjaDoggy: :O the mapping :O

Marchete: you should share this :D

aangairbender: gtg, have fun guys

UndercoverToad: bye, see you

UndercoverToad: and thanks for helping be debug

Nerchio: today gold opens right :D

UndercoverToad: yes

UndercoverToad: before you ask: 6pm

aCat: morning Nerchio

NinjaDoggy: 6pm what? D:

UndercoverToad: CEST

UndercoverToad: in 10h 11min

UndercoverToad: approximately

NinjaDoggy: thx :)

KCrown: whats thw cut off for gold?

UndercoverToad: that's in the decision of CodinGame

UndercoverToad: probably around 300

UndercoverToad: and 10-15 for legend

jrke: i want good eval :head_bandage:

Nerchio: hello aCat :P

jrke: finding from 4 days but every time i fail

Default avatar.png Kolo9: do only ~15 people really make it to legend? or just mean in terms of leaderboard today?

Default avatar.png Kolo9: haven't gotten into the contests for a while but I thought legend is a couple hundred at least?

UndercoverToad: 15 people on league opening is the norm

jrke: opening window for legend is top 15-17 then it increases as time passes

Default avatar.png Kolo9: ahh cool thanks

UndercoverToad: but in the end it will be more, competition really gets stronger on the last weekend

UndercoverToad: but i disagree with "a couple hundred", it will be around 100 in the end

UndercoverToad: sometimes a bit more (mostly on heuristic games) or less (simulation based games)

Default avatar.png Kolo9: :thumbsup:

jrke: was 79 or 89 in fall challenge at end

NinjaDoggy: since murmur hash generates a 32 bit output, can I just get 2 of them(with different seeds) and mash them together?

NinjaDoggy: or will generating the 128 bit version be faster?

UndercoverToad: *looks it up* 80 legend players in last contest

Marchete: http://chat.codingame.com/pastebin/3522a027-8f25-464e-b946-c85cf758966c

Marchete: from your link

NinjaDoggy: actually yea i'm stressing over optimal hashing speed too much lol

NinjaDoggy: should just take this implementation and roll with it

NinjaDoggy: much more gains to be found elsewhere in my spagetti code XD

Marchete: it's more about hash quality+performance

Marchete: a homebrew hash can have more collisions

morefood: hello world

NinjaDoggy: :thumbsup:

pmor: This is what I came up with awhile ago.

pmor: http://chat.codingame.com/pastebin/1e48aaad-83ea-409d-92d1-7572fc3f56a7

Shivzee: http://chat.codingame.com/pastebin/da19a57e-f6f9-4f57-8d00-2634e66e2b70

pmor: you just keep calling hash::combine(seed, value, value2, value 3

Shivzee: import random

print("hello world"+random.randint(0,10000))

Shivzee: :laughing:

UndercoverToad: i hate it when fixing a bug makes the bot worse :(

NinjaDoggy: :(

NinjaDoggy: it should honestly be illegal :(

UndercoverToad: now i get more states. when makes it harder for my beam not to prune the good ones

UndercoverToad: which makes*

NinjaDoggy: just aggressively prune seed moves during generation :)

UndercoverToad: i can give it a try

UndercoverToad: like no seed to direct neighbors

NinjaDoggy: I think you can be more aggressive :rage:

NinjaDoggy: like no seeding unless it's free

UndercoverToad: wow, that's a great idea :unside_down:

UndercoverToad: :upside_down:

Marchete: maybe just direct neighbors on current seed direction

Marchete: sun*

UndercoverToad: the effect will be very minor anyways

NinjaDoggy: is upside_down: supposed to be sarcastic? ._.

UndercoverToad: in this context: yes

NinjaDoggy: :(

UndercoverToad: i don't know what the actual meaning of that emoji is

UndercoverToad: the seed target will only matter in the first few rounds

pmor: its a smiling aussie

UndercoverToad: when more trees you can still spawn there starting from other trees

VizGhar: http://chat.codingame.com/pastebin/ed874874-4765-418b-9eb2-a6f81cf37dab

UndercoverToad: i'm more liberal than you

DetoBot: https://www.codingame.com/replay/552892837

VizGhar: I know... but I'm not as efficient as you

UndercoverToad: and i can't climb that high anymore :(

UndercoverToad: these other bots are bullying me

NinjaDoggy: :(

VizGhar: what an ugly replay DetoBot :D

DetoBot: What a strategy, keep increasing your sun points

NinjaDoggy: it's ok, just let it sit and it will climb naturally :)

DetoBot: :joy:

DetoBot: Was having a clear win there

VizGhar: Well your bot is much nicer that that one :P

DetoBot: Still I am calculating shadows in a wrong way :upside_down:

DetoBot: ah not me, my bot

UndercoverToad: I like the avatars looking at each other https://www.codingame.com/share-replay/552896754

UndercoverToad: and the other player obeying the toad

pmor: :laughing:

DetoBot: lmoa

DetoBot: :joy:

VizGhar: UndercoverToad are you using any of those hashing things? (zobrist)

VizGhar: Heard about it first time and it looks powerful

UndercoverToad: not for this game

solistice: are there any basic tips for heuristics? Math wise? Like making sure that values are normalized and so on? I can't seem to figure out something remotely correct

kovi: my bs reached the level of heuristical

UndercoverToad: but easier to extend and improve, isn't it?

kovi: i'm not yet sure how to add those heuristics, and if they can improve anything

VRtheKing: https://www.codingame.com/clashofcode/clash/174712153085eec9889cdd5c55505f043c958e2

Default avatar.png NotSureWhyThisWorks: Has anybody got the error: "provided invalid input. Expected 'SEED <from> <to> | GROW <idx> | COMPLETE <idx> | WAIT' Got "

boi_led_egg: no, but seems you didn't provide any actions

boi_led_egg: print("SEED 1 2") or something

aCat: or maybe you put a newline in your print

Default avatar.png NotSureWhyThisWorks: this is different to not printing anything right? I recall the error is a timeout if you don't print at all

aCat: (and part of it went to the next line)

aCat: yes

boi_led_egg: yeah, seems your print is wrong

aCat: not printing gives timeout

aCat: you printed space it seems

Default avatar.png NotSureWhyThisWorks: ok, I'll try debug thanks

jrke: not printing or even printing invalid command or typos

solistice: Not printing gives "xxx did not provide a valid action in time", no?

solistice: so probably printing something unexpected

Default avatar.png NotSureWhyThisWorks: I found I was printing a value that was only declared but not defined

dbdr: \o

solistice: o/

UndercoverToad: ~o~

raxkin: Hello!

raxkin: Gold league unlock at same time as silver one?

UndercoverToad: yes, in 9h

Nerchio: i think i had a bug in almost every part of my evaluation lol

Nerchio: not even sim

solistice: haha same, I'm struggling with the cloning of the state

solistice: nothing matches anymore

dbdr: my eval went from total crap to 2/3 crap yesterday

dbdr: I need to continue...

Zanoshky: How do you ask your code to go N depth for each possible actions. Lets say next 3 moves, and get the best node after each state players 3 moves?

while(!queue.isNotEmpty()) goes indetifnetly

Default avatar.png NotSureWhyThisWorks: dbdr do you consider all possible seed moves in your search?

dbdr: Zanoshky you can stop at a certain day. or when time runs out

Default avatar.png Raptcha: any ideas on mars lander 2?

Nerchio: dbdr what the hell you are 1st :D

Nerchio: and you say your eval is crap

UndercoverToad: first on Wednesday

UndercoverToad: to quote re Curse: 1st on Wednesday is 50th in the end

Nerchio: sure but if his eval is bad then what mine is :unamused:

dbdr: UndercoverToad only I'm a bit worried how much more depth there is in this game

UndercoverToad: same

dbdr: seems a bit too simple

UndercoverToad: thank god it's not a 1 month contest

dbdr: lol

aCat: :D

dbdr: i loved the 1 month format for locam btw :)

UndercoverToad: IT

UndercoverToad: WAS

aCat: I loved it for OOC

UndercoverToad: NOT

dbdr: taking it easy

UndercoverToad: ACAT'S

UndercoverToad: IDEA

UndercoverToad: as he told me once like that

dbdr: 1 month OOC?

Astrobytes: GOOD MORNING TOAD

aCat: yeah true

jrke: i am paniced paniced paniced no eval for me :(

aCat: but still I think monthly contests have their merits

UndercoverToad: 1 month locam was not aCat's idea. just CG trying something

Astrobytes: stop panicking

dbdr: fn eval() return random() }

UndercoverToad: for OoC the month was better suited than locam I think

aCat: yep

Astrobytes: Yes, I agree with that

aCat: less meta

dbdr: wait, was OOC really a month?

UndercoverToad: 4 weeks

aCat: agree with all hands

Astrobytes: Yep

MateoS: I dynamically set value of a variable: position 2500/2700

UndercoverToad: also good morning astro

MateoS: I set it to "1": position 900/2700

MateoS: coding...

dbdr: did I miss three of those weeks then? :thinking:

UndercoverToad: so OoC was so deep it didn't even feel like a month?

dbdr: I remember OOC as a normal contest

Astrobytes: lol

UndercoverToad: you got an early lead dbdr

UndercoverToad: you and kov i

dbdr: in OOC?

UndercoverToad: yes

dbdr: must be a different dbdr then

dbdr: I forgot everything

dbf: lol "seems a bit too simple" - I still can't figure out how to play :)

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

Astrobytes: Perhaps having Spring contest shortly after OOC clouded the memory a little :)

dbdr: OOC was a response to lockdown, I remember that :)

UndercoverToad: 9th place after 3 days https://github.com/dbdr/codingame-leaderboards/blob/0be1d0e49ac89433c041bd62e783db8c78bc2548/challenge/ocean-of-code.tsv

dbdr: I activated the leaderboard saving for this contest, by the way

dbdr: 9th is a lead?

**dbdr got spoiled by sc21

UndercoverToad: high rank at least

dbdr: true

dbdr: in my early contests I was much slower. got decent ranks in the later part only

dbdr: experience definitely helps a lot

UndercoverToad: in my first contests i often got a #1 spot on day 1 or 2

UndercoverToad: not i learned that it's a marathon and not a sprint

UndercoverToad: early lead is worthless you don't design your code properly and drop later on

dbdr: #talent

dbdr: might give you good intuitions about heuristics, eval, which can also make the difference later

jrke: wooo dbdr congrats running first

dbdr: thanks jrke

dbdr: I changed a false to true, went back from #8 to #1

jrke: also can be in top 100 if i got an eval that works

jrke: lol

dbdr: that run I lost my first match against #80 or so, so I first thought the change is bad

UndercoverToad: the game is surprisingly consistent, there losses are extremely rare

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

Nerchio: its true, i consistently lose to everyone

jrke: from last 10 mins i am getting that

dbdr: jrke take a break, relax, go for a walk

Shivzee: are there bots playing in clash of code?

Shivzee: i always see some people 24/7

UndercoverToad: yes

Nerchio: passionate clashers

UndercoverToad: https://www.codingame.com/forum/t/codingame-bots-for-clash-of-code/131137

Astrobytes: https://www.codingame.com/blog/clash-of-code-time-has-come-for-clash/

UndercoverToad: Astrobytes won, google fooled me on the first linkl

Astrobytes: Well, at least both different links this time ;)

Astrobytes: Your one works too

UndercoverToad: lucky me

jrke: dbdr can't go for a walk in corona times

UndercoverToad: not even alone in the park?

Zenoscave: turns out I had a bug that wouldn't seed on the outermost cells

jrke: for that i have to buy the park we are getting like 400k+ cases daily

dbdr: ;(

Zenoscave: Man that's crazy jrke

Zenoscave: I'm sorry to hear your stuck

dbdr: taking a shower or a nap also works

jrke: better to work on eval maybe if i got....

dbdr: not if you are tired

Astrobytes: ^

dbdr: there is still penty of time

jrke: i am not tired yet

UndercoverToad: taking a break can help you to get a fresh mind

Zenoscave: I am. it's 2AM again

Zenoscave: I need sleep

Zenoscave: gn

UndercoverToad: even when you are coding for some hours already: take a break

Astrobytes: gn pewpew

UndercoverToad: see you on league opening pewpew

Zenoscave: is that tomorrow?

Zenoscave: err. today?

UndercoverToad: in 8h

Zenoscave: How many to gold you think?

Zenoscave: top 400?

jrke: euler i was continously taking break from last 5-6 days but still no progress

UndercoverToad: 300 but i don't really know

jrke: i think between 300-400

Zenoscave: I might squeeze by

Di_Masta: Hi, did someone come up with a good idea when to complete trees in the contest game, for a heuristic bot!?

Di_Masta: I've tried several ones but none is working well (complte every time when I have sun; complete when I have more trees than the opponent; ...)

UndercoverToad: i still have no idea if i'm choosing a good moment

Astrobytes: Have you tried completing later in the game?

UndercoverToad: who?

AntiSquid: tree completion requires some indepth analysis, train an NN for it

Astrobytes: Di_Masta

AntiSquid: just that . 0 or 1 output for whether it's the right time to complete :D

Di_Masta: hm I haven't will do, I'm implementing MCTS but I want a nice bot for the playouts

Default avatar.png actualCoderTrevor: Di_Masta my bot completes any time a tree is expected to cause me to get a negative net sun points by shading my own trees versus shading my opponents trees in the future

solistice: Can someone with some prior experience help me to get me started with the heuristics? It's baffling me

solistice: Btw, the #fr opens by default, can I change that in some way?

Di_Masta: @actualCoderTrevor sounds nice

Default avatar.png actualCoderTrevor: Yeah it wasn't a trivial calculation though. I probably should've focused on simming. Oh well.

Default avatar.png actualCoderTrevor: solistice I don't mean to ignore you but not sure what advice to give. Start with interpreting the valid moves you're given and play with some formulas for choosing the best one

AntiSquid: you can change your location solistice

Default avatar.png actualCoderTrevor: Then watch the replays and see what your bot does that's stupid or doesn't do that's obvious and program that behavior in

Nerchio: lol solistice doesn't want to see fr chat :D

Default avatar.png Zenkov: a

AntiSquid: well imagine you get defaulted to RU chat but don't speak russian

Nerchio: that makes a lot of sense :thinking: although we could probably talk a little bit

Default avatar.png actualCoderTrevor: From here I can a) Tweak my heuristics and fill in some of my TODOs, b) Get back to simming and start some kind of search implementation or c) Add more dialogue to my bot. What would be the most productive?

Default avatar.png actualCoderTrevor: Oh or d) start some kind of offline battle arena

Nerchio: c sounds best tbh

Astrobytes: lol

Nerchio: will give you the best results for sure

Default avatar.png actualCoderTrevor: That was my feeling as well. It will be good to motivate me to keep working.

Default avatar.png actualCoderTrevor: It's also what I've put the most thought into.

AntiSquid: c takes least amount of time

AntiSquid: you can meanwhile think what to do next

Default avatar.png actualCoderTrevor: Good point

Default avatar.png 2kiran: is anyone there!

UndercoverToad: https://www.codingame.com/replay/552965125 that's a completely different play style :o

UndercoverToad: and it's somehow working

Nerchio: my bot does that sometimes

ddreams: have seen a few that get a lot of sun points

UndercoverToad: but not in the top ranks

Nerchio: but yeah.. sometimes loses because of late completion so

ddreams: game depth++

Nerchio: i dont think its optimal

RoboStac: he doesn't always do it either

Nerchio: it feels like a backup plan when you fall behind :p

Nerchio: with completing trees

Default avatar.png Mannava_Goblin7: #clash

VizGhar: I'm counting just earnings and my beam is cutting down the trees... i don't get it

Default avatar.png Mannava_Goblin7: #clash

Default avatar.png actualCoderTrevor: I imagined a lazer beam slicing through the forest when you said that

VizGhar: :D

UndercoverToad: you have to give a reward for still having a tree that you could cut later

Whatar: guys any idea on whats the percentage of silver bots that will be automatically promoted to gold once its out?

AntiSquid: hard to tell :P

AntiSquid: i go with 25%

Whatar: thanks

dbdr: oh, I found a bug :)

ddreams: what bug?

ddreams: (trying to invite hints) :p

dbdr: a bug in a secret feature ;)

ddreams: ooh

Nerchio: time to fall 20 places after you fix it

dbdr: that's not the point

dbdr: Nerchio, it's the kind of case where that could definitely happen

Chainman: hey

Danifae: no gold league today?

dbdr: tonight

Danifae: League opening: 5/13/21

UndercoverToad: in 7h

Chainman: 05/12/2021

ddreams: so in december, gotcha

Chainman: yep, American date times lalalal

ddreams: iso8601 <3

AntiSquid: why is the month before the day anyway? :D

UndercoverToad: why is the year *not* in front?

UndercoverToad: much easier to sort with yyyymmdd

DocDave: ^^ this

AntiSquid: "American colonists favoured the monthly format, while the British Empire drifted towards the European style of dd-mm-yyyy." oh it's the brits that are to be blamed to begin with

Michael_Howard: https://xkcd.com/1179/

Default avatar.png NotSureWhyThisWorks: 21 trees completed and 1 left. So 22 must be possible https://www.codingame.com/replay/552993130

AntiSquid: they modified the speech bubbles

AntiSquid: now long text won't display at all

Michael_Howard: Euler's speech bubbles are still showing lots of text.

UndercoverToad: because I have a lot to say

UndercoverToad: you'd better listen

jrke: damn no better till now :(

Michael_Howard: I do :)

AntiSquid: not big enough to be cut off

UndercoverToad: OoC had a bug where you could make the whole replay laggy by printing too much

AntiSquid: hm maybe it's just me?

AntiSquid: his speech bubbles don't show text for me

UndercoverToad: the SDK has as way to limit the size in pixels. text will just end with ... if too long

UndercoverToad: but it's removing 1 char, rendering to see if it fits and so on

UndercoverToad: that rendering over and over takes some time if you print a whole novel.

Michael_Howard: AntiSquid can you see in replay? https://www.codingame.com/replay/552997338

AntiSquid: ya, maybe i need to refresh tab

Michael_Howard: Never mind my bot - it was seeding where it's more expensive & crowded. :dizzy_face:

Michael_Howard: Watch out for those + & - signs kids!

UndercoverToad: :D

AntiSquid: had this tab open for days, wonder when it will break

UndercoverToad: don't you turn off your computer?

AntiSquid: suspend

Default avatar.png aldrinm: yea. got into silver !

AntiSquid: got past a wall of few thousands just to face another wall of few thousands? congratulations ! :D

Nerchio: so will we get 1000 gold players before legend opens?

AntiSquid: i assume so

Ajaiy2: After looking at the original game, I think there would be different types of trees at gold

AntiSquid: no

cegprakash: aldrinm welcome to the zombie island.. everyone are zombies here eating each other alive

Ajaiy2: Why not, AntiSquid?

AntiSquid: why yes? Ajaiy2

Ajaiy2: Its just a guess, what do you think though?

AntiSquid: i told you no.

Hoggins: Rule change will be a disaster. This means all previous work should be thrown away. Competition can be shorter if that was their plan

AntiSquid: hm, usually statement would tell you from bronze on: no more rule changes

AntiSquid: not anymore

Ajaiy2: Why are you being so dramatic, Hoggins? You're scaring me

AntiSquid: scaring? :/

Ajaiy2: Because I wrote 285 lines of code and I wouldn't have the heart to just dispose it.

Hoggins: just imagine how much code was created by other 5k ppl - this can be a huge book

AntiSquid: Ajaiy2, he is saying that's what a rule change does, forces you to dispose of your code and start over

AntiSquid: 285 isn't much

Ajaiy2: Well, I am adding more

Ajaiy2: That's why

FatIvan: I would be surprised at new rules in gold with no new rules in silver. I am surprised that they allow actions to take place in the shade though, that was the biggest departure from the board game.

FatIvan: Thought that might have come in when silver opened but it didn't.

AntiSquid: sounds like an annoying rule, no actions in shade

FatIvan: It's a major part of the strategy in the board game. Even if someone gets a valuable hex you can block them from growing by shading them.

Nerchio: i mean that would almost trivialize the game i think very few actions then

Nerchio: but more opponent interaction perhaps

AntiSquid: game might have been better that way, i don't know .

Ajaiy2: They better add a new variable which shows if a tree is spooked

FatIvan: You certainly don't grow as many trees in the board game.

AntiSquid: you can add that yourself Ajaiy2

AntiSquid: i see FatIvan, the board game sounds more strategical

Default avatar.png actualCoderTrevor: I would like to see more days so a winning strategy is better differentiated from a losing one.

AntiSquid: maybe it's changed to explode possible states :D

FatIvan: Definitely a different pace. Becomes very busy with 4 players too.

Ajaiy2: Maybe you can chop down opponent's trees

cegprakash: we can do that?

Default avatar.png aldrinm: are there rules changes expected or is everybody just speculating ?

AntiSquid: wouldn't 4 player be very random ?

Ajaiy2: Imagine winning against 3 AIs

cegprakash: 17 wins in first 18 games? is this a dream?

FatIvan: I think 4 players would be messy for the contest but it is fun on the table top.

Default avatar.png actualCoderTrevor: aldrinm just speculating. I've heard many times here that rules won't change.

AntiSquid: the board game is also in turns right ? FatIvan

Default avatar.png aldrinm: ok. makes sense. else that would mean going back to the drawing board

Ajaiy2: I think we can have some kind of powerups at gold. I mean, how cool would that be?

FatIvan: Yes, with each player taking all of their actions for the turn before passing to the next.

Default avatar.png aldrinm: if they were to change rules, then adding a new variable makes more sense than changing an existing one. so powerups would be nice

FatIvan: There is a rotation of which player goes first each turn.

AntiSquid: sounds you'd be really happy if you made a bot for an actual game Ajaiy2

Ajaiy2: Yeah, I'm also on game development

AntiSquid: CG tries to keep games simple also rule changes won't happen at this point

AntiSquid: maybe after contest if people demand it, but i don't see it

AntiSquid: also rule changes break bots so VERY unlikely to happen

AntiSquid: this isn't general game ai arena :P

cegprakash: AntiSquid true.. I'd love to see a higher initial nutrition for late game battle.. but that can break so many bots in top

cegprakash: so it's not fair to change rules

Michael_Howard: They won't change rules, but if they did, they'd give notice & put it in the Gold intro that rules will change in Legend.

AntiSquid: don't ping me, i don't demand changes

dbdr: I am pushing you hard UndercoverToad

Default avatar.png JerryRat: hello

Default avatar.png JerryRat: where are you??

ddreams: I wish I knew

Default avatar.png actualCoderTrevor: Just finished this: https://www.amazon.com/Bandai-Hobby-Noodle-Spirits-Chronicle/dp/B089DGYZTY can recommend

solistice: which hash functions you guys using?

AntiSquid: i don't get it, did you 3D print that actualCoderTrevor ?

Default avatar.png actualCoderTrevor: No it's a model kit

UndercoverToad: do that before legend opens dbdr

dbdr: noted

AntiSquid: what do you use it for

Default avatar.png actualCoderTrevor: You just put it together. It's displayed proudly on one of my shelves right now

LLG: I'm probably gonna redo my entire eval later today

LLG: it's both slow and inaccurate

LLG: I changed a coefficient and now my bot is holding 100 sun til the end of the game lol

UndercoverToad: in plants vs zombies this would be a good thing

Westicles: They've made unexpected rule changes before to fix things. There was that one where the first player had turned out to have a small advantage

ddreams: doesn't one of the players here have an advantage?

UndercoverToad: i think the upper player has because of who gets shadow first

Michael_Howard: Surely they could fix that in the seed generator without changing the rules.

dbdr: how?

Michael_Howard: if coinFlip() { swapStartingPositions() }

dbdr: it's already random

ddreams: I think the only way to fix it would be to battle both sides each time

dbdr: agreed, then add scores

ddreams: no, that wouldn't be correct

ddreams: or, it'd be a different game

Default avatar.png elijah.toppo: My algorithm is taking too long, any idea how to preempt running in python?

dbdr: it would be a fairer game

ddreams: maximizing own score vs. making sure you're beating your opponent

dbdr: if you just count win/loss, with swap you will get too many draws

ddreams: count score as tiebreaker then

dbdr: that's exactly the same

dbdr: if you lose twice you cannot have higher score

ddreams: true dat

KalamariKing: How many of you are bitboarding this contest

Queuebee: I'm still trying to think on how to do that but I really want to

TobiasA: KalamariKing what is your rank?

ddreams: https://www.researchgate.net/publication/279031895_Bitboard_Methods_for_Games

Queuebee: yeah I read that

ddreams: good start :)

struct: hi

struct: im bitboarding, its easier this way

KalamariKing: oh hey str​uct

Queuebee: but I'm coming from basic python having a hard time understanding all these shifty thingies

KalamariKing: TobiasA bronze, but only because I keep timing out

TobiasA: hehe me too

AntiSquid: i use a simpler bitboard .

ZarthaxX: KalamariKing i am too

Queuebee: simpler??

ZarthaxX: bitboarding i mean

AntiSquid: less headaches

KalamariKing: I know HOW to bitboard, I just wanna know how feasible it is for this contest, and what bitboards in all you use

ZarthaxX: it makes stuff easier to calculate honestly

KalamariKing: And how do you select the nth bit? As far as I've gotten is bit-shifting the bitboard n times to the right and bitwise-'and'ing 0x00...01

Queuebee: do you have a bitboard for each type of tile/tree (per player)/shadow ? or can it be squished into one? and is it then possible to translate something like SEED x y into some crazy 1 operation on the board?

AntiSquid: lots of things can be done

Queuebee: Does a solution from top 1000 people usually get revealed at the end?

KalamariKing: If not do people usually publish their code

ddreams: many top players post postmortems

DomiKo: but we don't share code

Queuebee: but the postmortems are too hard for me to grasp :disappointed:

**Queuebee goes back to lurking

Astrobytes: How would you expect to understand full code then?

ddreams: Practice practice

Queuebee: by connecting the words in post mortem to the code, I guess

struct: sharing top code ruins the game

Astrobytes: But how would you know what you're looking at?

Hasuzawa: 3k players in silver, that is half the players. is this normal? (first time contester in CG)

struct: my code is unreadable

KalamariKing: Almost 3k in bronze too

struct: Even I cant read it

UndercoverToad: but you are not a top player with interesting code :boom:

struct: Toad that is it

struct: Im gonna take your spot

Chainman: :grimacing:

RoboStac: he might be, we're still waiting for him to submit his better version

UndercoverToad: robo you don't handle the end of game yet, do you?

RoboStac: in what way?

UndercoverToad: https://www.codingame.com/replay/553059229 last day

UndercoverToad: you upgrade a tree for 7 suns

KalamariKing: in java, ints are 4 bytes, right Which means 8 bytes --> float

RoboStac: it's calculated a guarenteed win, doesn't matter if it's not the optimal score

mybk: https://www.w3schools.com/java/java_data_types.asp

UndercoverToad: ah, you check the actual winning

RoboStac: yeah

UndercoverToad: i'm still in single player optim mode

RoboStac: I win a disturbing amount on drawed score + more trees

RoboStac: but a win is a win

KalamariKing: thanks mybk

ddreams: just for fun, how many points do you top guys score against the default AI on a board without holes?

UndercoverToad: and i'm stilling trees too early in that game :(

ddreams: or, this seed: seed=-5057826633060784100


RoboStac: I was worried you were going to show me a game I lost where there was a path to victory

ddreams: for the first time I reached over 200

RoboStac: as I thought my end game solving was actually pretty secure

mybk: KalamariKing np, ;)

UndercoverToad: 196-0 vs default

KalamariKing: have you ever scraped together code and somehow it works but you don't know how

struct: 220 vs default

UndercoverToad: but i sell trees early to get points before the opponent - which isn't a good strategy vs that bot

UndercoverToad: https://www.codingame.com/share-replay/553080392 but could actually help me debug

Chainman: I hope I know what I'm doing right now :cold_sweat:, been writing first beam search and simulation.

ddreams: yeah, like I got 202 vs the bot and 95 vs you

UndercoverToad: i'm always selling too much mid-game

struct: you can thank me for default for being random deterministic

ddreams: this is with 0 search though

ddreams: thanks structyboy

UndercoverToad: was it random nondeterministic?

UndercoverToad: these are the worst

struct: yes

Chainman: you forced him to get 0 points

struct: I complained on day 1

RoboStac: I only score 90-19 vs default :(

UndercoverToad: but you win

RoboStac: so sure it's going to win on day 18 it stops doing anything

Queuebee: lool

UndercoverToad: a good horse only jumps as high as it has to

UndercoverToad: my bot is a blind horse

codingWhale: a good blind horse

UndercoverToad: somewhere around midgame i screw up by selling everything

RoboStac: your the bot I've been optimising against because I struggled so much being behind from that point

UndercoverToad: looking at my last battles you did a good job with that

solistice: I'm lost... created a GetHashCode function and deepcloning my object return a different hashcode

RoboStac: yeah, but now I'm still at the same rank and just losing somewhere else

solistice: now to try and figure out what is wrong :D

UndercoverToad: then you should revert to the old bot

KalamariKing: does the hashcode take into account memory locations

KalamariKing: or smth like that

solistice: it shouldnt

7amasa: When does gold open?

struct: how would that work?

ddreams: well, they open the league and let players in

KalamariKing: idk just guessing, if the deepcopy is working successfully then that's all that would change, I would think

UndercoverToad: gold in 5h

7amasa: Thanks!!

struct: top 500?

UndercoverToad: i hope not

struct: just make me boss idc

ddreams: top 612 preferably

UndercoverToad: you have a search, you take too much time

UndercoverToad: i bet it will be a heuristic bot. probably python

itzluku: i need to chaneg my model for the sim :(

itzluku: change*

struct: I think im going to work on the sync issue now

struct: After that I will only work on eval

KalamariKing: should I use an array of bools (1 bit each) or a bitboard

KalamariKing: does an array have overhead?

struct: bitboard

RoboStac: the main point of bitboarding is to let you do operations on multiple things at once - having an array of bools would break that

struct: 64 boolean is 64 bytes

KalamariKing: but a boolean is 1 bit, not 1 byte

RoboStac: eg I can count trees by seeing how many bits are set in one uint64 (which is a very cheap operation) - having to iterate an array wouldn't do that

struct: bool arr[64]; cerr << sizeof(arr) << endl;

struct: 64

RoboStac: bools are almost always represented by bytes because bits aren't easy to use

blasterpoard: KalamariKing you can only address a byte, so if you create an array where every item can be individually adressed, then each one has to take an entire byte

struct: I can calculate shadows with shifts

RoboStac: there are some exceptions (c++ std::vector<bool>) but I still don't think there is a quick way to get the number of set bits

blasterpoard: imho vector<bool> is just a mess that should have a different name

RoboStac: yes

RoboStac: I'm pretty sure everyone thinks it was a mistake by now

struct: never used it, is it that bad?

ddreams: probably 15 years ago too

Queuebee: since the code size is...? 100kb? do you hardcode masks/lookup tables or generate them at the start?

Queuebee: max code size*

struct: I have them hardcoded

RoboStac: it's just awkward as standard c++ things don't work properly with it (as you can't take the address of an element) and it's mostly slower than having a vector of bytes

struct: ah I see

RoboStac: plus it catches you by surprise because no other type changes size when stored in vector

blasterpoard: the first time I learned about it was when I was wondering wth is valgrind trying to tell me

blasterpoard: there is no indication that vector<bool> behaves differently than other vectors

ddreams: after two days, it appears I have managed to improve my bot

ddreams: let's see if the battles confirm it

DaNinja: 900k sims per turn doesnt help much when this eval sucks

VizGhar: My eval most probably sucks because my bot sees 40moves ahead, but ignoring opponent movements :D

ddreams: that's not why it sucks

VizGhar: I'll try to give my opponent head

ddreams: umm..

ddreams: nice, jumped 300 ranks

VizGhar: hey you are 5 ranks behind... let me be

ddreams: cya later alligator

Chainman: after 2 days my bot is worse :( lol

KalamariKing: For bitboarding, should I:

-  4 bitboards, each with the stage it corresponds to (e.x. stage0 acts has a 1 at each seed loc)
-  1 bitboard, with each cell having two bits, 00=stage 0, 01=stage 1, etc (requires 16-byte variable or stitching together two longs, idk how to do either but I bet I can learn)

Nerchio: imo you dont need so much optimization

Nerchio: just try to avoid too much mess

Nerchio: i have 1 bitboard per tree size

Nerchio: works fine

KalamariKing: Ok thanks

KalamariKing: I'm new to all this so I'll be needing some guidance from all you masters

Astrobytes: VizGhar 12:35PM "I'll try to give my opponent head"

rofl:

Default avatar.png elijah.toppo: My heuristics algorithm was doing much better than beam search, it seems.. Or I've done it wrong. :disappointed:

UndercoverToad: i try to get my opponent's head. decapitating sounds like an option

VizGhar: Astrobytes ouch... yeah. sounds quite... not right

Astrobytes: :D

VizGhar: toad probably didnt understand the reference i believe

KalamariKing: Nerchio then to get a cell's stage, I have to go through each bitboard, right?

Astrobytes: Just as well really VizGhar ;)

UndercoverToad: giving a headstart I suppose

UndercoverToad: or tossing a coin?

VizGhar: giving head = blowjob

Nerchio: KalamariKing you mean treeSize on a cell? yeah you need to check each bitboard

UndercoverToad: kick!

KalamariKing: UndercoverToad that was the joke tho, he unintentionally said it

KalamariKing: Nerchio thanks

KalamariKing: how come java freaks out with while(false) but not if(false)

Chainman: What does the 61.95 mean, I notice it hasn't changed much at all.

KalamariKing: Nerchio sorry for the hundreds of pings, but how would you select cell n? right-bitshift the bitboard n places and bitwise-and with 0x00...01?

KalamariKing: Chainman where

JSboss: kalamariking - while(false) is unreachable, whereas if (false) is just dead. Java won't compile when unreachability is detected.

UndercoverToad: yes, sorry for pinging you Nerchio

Astrobytes: Nerchio must be upset with all these pings

Chainman: How does the score work I mean?

Chainman: in the leaderboard

KalamariKing: we should really stop pinging Nerchio its probably annoying

UndercoverToad: somehow this chat account is gaining some followers despite not doing anything besides chat

Nerchio: i don't get any pings sorry to disappoint lol

KalamariKing: Chainman I have no clue, but does cg have a faq with it? idk

UndercoverToad: how is that possible Nerchio?

UndercoverToad: external client?

Chainman: lol, I followed because it is for chatting.

VizGhar: Nerchio tell us

Nerchio: idk guys ask codingame stuff :D

UndercoverToad: staff?

RoboStac: chainman - it's trueskill based (https://en.wikipedia.org/wiki/TrueSkill)

Nerchio: i must have disabled alerts long ago

Chainman: It says in your profile it is chat account for eulerscheZahl lol

Chainman: Not really undercover at all

UndercoverToad: i just wanted to use that profile pic

virus_coder99: hello word

Nerchio: KalamariKing 1L << position;

Mourfette: Is it possible to learn this power?

struct: I get pings 10% of the time

struct: Its strange

UndercoverToad: and lots of false positives

KalamariKing: str​uct is this a ping

Chainman: O for sure RoboStac, wasn't sure if it had more meaning

UndercoverToad: when it comes to classes and structs

struct: didnt ping

struct: is not even red

KalamariKing: lmao there's a 200b in the middle that's why

KalamariKing: unicode 200b

KalamariKing: zero width space

Chainman: whenever I use a struct in my code.

KalamariKing: just making sure it works ;)

struct: red but no ping

Nerchio: servers are busy with my submits

UndercoverToad: i'm at 67 already, was spamming a bit in frustration

KalamariKing: 67 submits? Or 67th in the contest?

UndercoverToad: 67 submits

Nerchio: i change magic variables but i think if i dont add anything bigger then no progress

KalamariKing: Oh wow

UndercoverToad: let's make it 68

KalamariKing: I have like 3

Nerchio: im on 77 submits

Chainman: I'm at 5 hahah,

Default avatar.png actualCoderTrevor: Where do you get the number of submits?

Chainman: Really just don't have anything good to submit.

RoboStac: history button on the left

Nerchio: history left side of the screen

Nerchio: :rage:

Default avatar.png actualCoderTrevor: Thanks

Default avatar.png Cjx_1: 77 :0

Default avatar.png actualCoderTrevor: I have 49 - thought it would be more

Nerchio: well like 30 of those are today

Chainman: I went all out writing my first simulation and beam search algo and it's taking me days.

Chainman: And maybe all today improving it.

UndercoverToad: you will get better over time

KalamariKing: guys I'm doing it, the bitboard is working somewhat

struct: already?

KalamariKing: well

KalamariKing: I got one function working

Chainman: haha nice

KalamariKing: Which counts for something at least to me since this is my first time using bitboards

Numby: Using bitboards do you still calculate shadows with a loop or possible to do with just bit operations?

struct: no loops

UndercoverToad: huh?

struct: only shifts

UndercoverToad: i still have a loop for the length of the shadow

ZarthaxX: you can remove that toad

UndercoverToad: loop unrolling?

ZarthaxX: nah

ZarthaxX: oh god my voice is broken after class

UndercoverToad: then i'm confused

ZarthaxX: just finished with kids :P

UndercoverToad: i can't hear you, we are not on discord

Numby: Yeah I cant figure out a way to get shadows with just shifts

ZarthaxX: i know :P

struct: euler my board as 3 bit pad minimum

struct: I dont need loops

Nerchio: you mean 3 bit holes?

struct: yes

Nerchio: makes sense i followed a guide from research paper did like they told me :D

jfaixo: protip :o

struct: I used paint

Nerchio: was 3/2/1/1/2/3 empty spaces

aCat: yeah 3 bits offset is better

Nerchio: so i need to clear after each shift

KalamariKing: Quick interjection here when it says "n language assist interrupted" how do you get it back? I've just waited until it comes back somehow but is there a way to force it?

aCat: but I encoded same as Nerchio anyways ;]

Numby: So instead of adjacent bits representing adjacent board indices, you have some padding/weird logic such that a shift produces the shadows? Is that even possible O.o

aCat: yep

KalamariKing: Numby yes actually, its a bit too mind-warping for me tho

Numby: But there's 6 directions and only 2 shifts hm

RoboStac: you shift by different amounts each day

Nerchio: the secret is in the numbers

Numby: I gotta sit down and do that math. I didn't even think this would be possible

RoboStac: so each neighbour hex is always a constant offset for that direction

Nerchio: https://core.ac.uk/download/pdf/33500946.pdf

RoboStac: eg on a square 8x8 grid you'd shift 1 for left/right and 8 for up /down

Nerchio: its not a virus :grinning:

DetoBot: well I am using bit boards

Numby: in order accommodate the padding, how large of a variable you're using to store the 37 cells?

Nerchio: for ppl who want to use bitboards theres something about hexes and shifts

DetoBot: it generating moves efficiently

KalamariKing: thanks Nerchio

KalamariKing: wait I already read that

DetoBot: my only problem is eval fnc and search tree

KalamariKing: letsgoo

Nerchio: reading it once is not enough probably :D

RoboStac: you probably don't actually need any of this (I'm still using official indexes + loops), but it's an interesting optimisation

KalamariKing: oh yeah lol, I've printed it and pored over the pages

Nerchio: especially if you are a slow mind like me

Numby: Ah that paper just has hex boards too and pictures. Seems to be a great resource, thanks!

DetoBot: oh no

KalamariKing: oh YES

DetoBot: i did a few steps more that the article provided

DetoBot: still no problem

DetoBot: nice article

Reiten: If I have a size 3 tree in the center(index ), does it mean I can plant a seed anywhere on the field?

struct: yes.

KalamariKing: oh sick

Reiten: I see then BFS it is. Thanks

KalamariKing: Are java classes efficient

Nerchio: depends whats the job

KalamariKing: a container for grouping a few vars

Nerchio: why not

Nerchio: what else you want to use in java :D

KalamariKing: ok thanks :D

struct: use structs its faster

KalamariKing: explain the difference

Nerchio: java has no structs

KalamariKing: yeah I thought that was cpp

ddreams: and many other languages

KalamariKing: oh really?

KalamariKing: interesting

KalamariKing: So it's not too costly to use classes as a container for a few variables?

struct: its what they are made for

KalamariKing: Or should I maintain a 2d array

Nerchio: no just dont create thousands of them all the time and you should be fine

TobiasA: the highest my bot as gotten is 95 points and it can never go higher than that it seems. it is miserable

TobiasA: i have run out of ideas

ddreams: when you watch your bot, does it do what you want?

ddreams: if not, you have an idea

TobiasA: hm?

Default avatar.png Tuo: a good bot seems to do random stuff and still wins :)

ddreams: doesn't seem like that in this game, in my opinion

aangairbender: hey guys

ZarthaxX: oh the god is here

ZarthaxX: hello

aangairbender: my bot went from 30 to 40 :sweat_smile:

aangairbender: time to work on eval

struct: my bot went from 1st to 383

ddreams: what, am I beating you now?

aangairbender: struct submit new one, I know you have it

struct: I have but is not that better

ddreams: when I finally got this bot better, it beat my old one 96% of the time

ddreams: thought something was wrong at first

aangairbender: I played 3 games with an old one, it did 2/1 so I submitted

aangairbender: well, I knew it has to be stronger with new approach

ddreams: I thought so too, two days ago after implementing bitboards

aangairbender: but submit is pretty fast here

KalamariKing: Is it worth rebuilding the bitboards per turn for simplicity

ddreams: why not?

KalamariKing: idk, speed

KalamariKing: gives more time for eval

aangairbender: rebuild from what?

KalamariKing: the input loop

aangairbender: ah, I though about simulation

aangairbender: I store no data from previous turn

KalamariKing: Also how can you make the language assist recover, it always keeps dropping

ddreams: how much time do you think it takes?

aangairbender: I store only initial richness/neighs

KalamariKing: d​dreams well idk, I've never worked with bitboards before

aangairbender: bitboards might be slower than simple arrays

aangairbender: but they allow low memory usage

ddreams: I don't think you need bitboards here, but if you want to learn and it's your first time, do everything for simplicity

ZarthaxX: they are cache friendly

ZarthaxX: :D

aangairbender: I have trees encoded in bitmasks

KalamariKing: I have to take the fastest approach because it keeps timing out, so wouldn't bitboards be fastest

aangairbender: KalamariKing what is your state size?

KalamariKing: I'm using bitboards/bitmasks interchangeably here

KalamariKing: aangairbender right now, about 60 bytes

ddreams: profile your bot?

aangairbender: so its less than 64, no need to optimize memory anymore

aangairbender: actually its better to profile your bot and see critical spots

ddreams: bitboards isn't mainly for saving space, but for doing operations in parallel

KalamariKing: That's what I want to do

KalamariKing: Using arrays it's massive, so I switched to bitboards and only now is it about 60 bytes

Default avatar.png Cjx_1: any python guys at silver on?

ddreams: depends on what it takes to be a "python guy"

aangairbender: top17 uses Python

Noyotens: the gold league is open ???

KalamariKing: is it?

aangairbender: not yet

Noyotens: idk

ddreams: nay

KalamariKing: I thought not

Noyotens: ok thx

Chainman: when gold opens I will move up in silver :) lol

KalamariKing: is there a way to go back a leauge?

KalamariKing: league*

Noyotens: NO

KalamariKing: That was punctual

Chainman: What if you submit a worse bot

KalamariKing: Thought not

ddreams: No, you can't drop leagues

KalamariKing: If you submit a trash bot can you go down leagues then

ddreams: no

KalamariKing: Or is it like once you're here, you're her

KalamariKing: e*

peerdb: yep

KalamariKing: hmm ok

KalamariKing: There's no primitive of 16-byte length so is there a way to a.) create your own or b.) declare, say, 'type long with length 16 bytes'

ddreams: "short"

KalamariKing: Short is 2 bytes

ddreams: oh, 16 BYTES

KalamariKing: yes BYTES

ddreams: in Java, no

derjack: language?

KalamariKing: java

derjack: BigInteger?

KalamariKing: I know there are differently sized integers and stuff but do any primitives reach 16 bytes

derjack: nope

KalamariKing: hmm

KalamariKing: alr thanks

ddreams: why do you want that anyway?

KalamariKing: Two bits representing each cell all in one bitboard

KalamariKing: About 9 bytes

KalamariKing: I think the largest (long and/or double) only reach 8 bytes

Noyotens: i am 1126 rd

UndercoverToad: th

peerdb: sth

ddreams: sounds complicated anyway

KalamariKing: wdym

ddreams: 2 bits to represent tree size?

KalamariKing: instead of the bit at n, its the two bits at n*2

KalamariKing: the size is the integer representation of those two bits, e.x. stage 0 is 00, stage 3 is 11

KalamariKing: so bit-shift `stages` n*2 bits, and then get the integer rep of (stages & 3L)

Dahll: Someone managed to make AlphaBeta work?


ddreams: In the past, yes :D

ddreams: here I'm ignoring the opponent's moves

Dahll: xD I mean to this chellenge

KalamariKing: Seems faster than checking 4 different bitboards right?

ddreams: I don't think so

Dahll: Thks !

KalamariKing: why tho?

KalamariKing: I'm new to all this so I'll need explanations behind your reasonign

reCurse: You just complicated your shifting for no good reason

KalamariKing: why is that more complicated tho?

ddreams: I don't know for sure, but I guess the conversion to and from the size will be a big part of your cpu time

reCurse: Your board no longer holds in 64 bits

ddreams: often I am looking at only a certain type of tree

reCurse: Checking 4 different boards comes for free since they're contiguous in memory

reCurse: And also what ddreams said

KalamariKing: Okay thanks

KalamariKing: Can a constructor call another overloaded constructor of the same class

aangairbender: after submitting lost 3 games due to timeout (which never happened before) and because of that I climb veeeery slow now. No more timeouts btw

reCurse: This is the kind of question you can google

KalamariKing: yes but google requires a new tab and I can keep typing while you all are answering

KalamariKing: But fine

FrancoisB: -_-'

reCurse: So take other people's time to compensate for your laziness?

AntiSquid: KalamariKing https://www.krumpli.co.uk/wp-content/uploads/2020/06/Fried-Breaded-Calamari-5-768x1024.jpg.webp

KalamariKing: why are you like this anti

miszu: good morning children

ddreams: good morning child

miszu: KalamariKing which language you are talking about?

KalamariKing: miszu java

KalamariKing: I learned no, so I created a new func to act as an initializer and called the initializer per each constructor

miszu: from my best understanding, you cannot call from one constructor to another because... how would you?

KalamariKing: exactly

miszu: and if you feel that you want to call another constructor then it is an indication of a bad smell in your code ;)

reCurse: Um... no?

ddreams: ^

KalamariKing: yeah ik, I'm transitioning between a few things rn and just making sure the new stuff works

miszu: yeah

ddreams: of another overloaded class, reCurse

ddreams: in the same hierarchy

KalamariKing: pretty much everything is overloaded, eventually it will get whittled down tho

reCurse: He said same class

KalamariKing: Same class different constructor

KalamariKing: Not possible afaia

ddreams: oh, ok, misunderstood then

Radewoosh: Guys, I'm getting strange runtime error sometimes and I want to test my code locally, is there any tutorial on how to run the tester from repository?

ddreams: the readme itself?

Radewoosh: huh?

Radewoosh: the readme tells nothing technical

Radewoosh: https://github.com/CodinGame/SpringChallenge2021

Rabeeb: @ddreams sameee I am ignoring opponent moves too

reCurse: Oh hey Radewoosh

UndercoverToad: a legendary grandmaster

reCurse: Don't think there's an official tutorial afaik

ddreams: Radewoosh: https://github.com/dreignier/cg-brutaltester

UndercoverToad: there's a forum post, 1 second

Rabeeb: btw how to make text red?

ddreams: Rabeeb: like this

KalamariKing: wdym

UndercoverToad: not that brutaltester link, doesn't really answer the question

KalamariKing: Rabeeb pings? just type someone's name and it will appear red for them

peerdb: how many people do you think will be put in gold when it opens?

Rabeeb: @KalamariKing is it red to you?

KalamariKing: Yeah

Rabeeb: I see, smart!

KalamariKing: Rabeeb you don't need the @ sign btw, also you can tab complete (e.x. 'rab[tab]' --> 'Rabeeb')

UndercoverToad: https://github.com/CodinGameCommunity/ocean-of-code there's a short expanation how to run it offline, same applies to this contest

Rabeeb: KalamariKing thanks

UndercoverToad: see also: https://www.codingame.com/forum/t/how-to-run-ocean-of-code-github-project-locally/168041/3

Wontonimo: hey @Rabeeb , i used to use the @ all the time also

reCurse: Huh. That's the first I hear of this github

ddreams: and github is pretty famous by now!

reCurse: ...

Rabeeb: @Wontonimo your text isn't red. probably needa tag first

KalamariKing: I think re​Curse meant the repo

Chainman: @Chainman

Chainman: Chainman

KalamariKing: Chainman

Chainman: You can't ping yourself

KalamariKing: shame

Chainman: Just wondering lol

KalamariKing: KalamariKing testing

KalamariKing: he speaketh the truth

Chainman: @KalamariKing

peerdb: thanks for the links UndercoverToad, im defo gonna try it tonight

Rabeeb: Rabeeb testing

Rabeeb: not work :(

Wontonimo: anyone else excited to see the chaos of Gold opening today?

Rabeeb: UndercoverToad yeah a lot of help

UndercoverToad: if you want to use the brutaltester, check this fork of the referee: https://github.com/LSmith-Zenoscave/SpringChallenge2021

Wontonimo: i added a pull request in brutal tester to add that link

Rabeeb: Wontonimo idk, getting to gold isn't that difficult, getting to legend sure is

aangairbender: did you fix your bug euler?

UndercoverToad: oh, thanks. I missed that

UndercoverToad: already got merged to the brutaltester readme

peerdb: Wontonimo I am excited yeah, curious to see if my rank 187 will enter gold

KalamariKing: http://chat.codingame.com/pastebin/fc0ee3b6-d01c-4e85-8be6-21c86403b21f

UndercoverToad: i did and it got worse aangairbender. so the bug is back in place now

KalamariKing: oh come on that was only 4 lines

Wontonimo: i'll take all the accomplishments i can get, no matter how small others say they are!

UndercoverToad: not generating all possible SEED actions

Wontonimo: peerdb I'm close to you so possible I'll follow you

Rabeeb: @peerdb shouldn't it?

Rabeeb: 187 should be good to go

miszu: KalamariKing you could open the java bytecode and see what it does

miszu: there is no guarantee what the compiler does between side effects

Rabeeb: btw, how many of u are actually using beam search?

ddreams: it'll almost certainly be optimized

miszu: ddreams yeah for sure

ddreams: and the bytecode doesn't tell the entire story

ddreams: JIT says hi

miszu: ddreams well... it should

UndercoverToad: KalamariKing you can try https://godbolt.org/

miszu: jvm runs the bytecote

KalamariKing: thanks noteuler

Radewoosh: UndercoverToad: I'm getting an error trying to run it, but looks close, thanks

ddreams: it's compiled to native code first

Wontonimo: what's the querystring thing that you add to turn off chat? somethinng like ?disablechat

UndercoverToad: KalamariKing https://imgur.com/a/irW8MN5

UndercoverToad: 2 functions

UndercoverToad: you can fiddle with compiler options

KalamariKing: Wontonimo at the end of the url type ?disableChat

UndercoverToad: Radewoosh and error message worth sharing? So far I only ran it from IntelliJ directly

UndercoverToad: any*

ddreams: I have probably encountered your error message too.. I bumped into a lot

Radewoosh: no main manifest attribute, in ./target/spring-2021-1.0-SNAPSHOT.jar

KalamariKing: Yeah so it stays as separate funcs I thought I read somewhere java was aggressively compressed, coulda been c++ or smth though

KalamariKing: Thanks

Radewoosh: In ocen of code repository there was a file main.java

Radewoosh: While there is no such one

Radewoosh: There is TestMain.java

Wontonimo: KalamariKing can't believe i guessed correctly but didn't try it. Thanks for confirming :D

ddreams: I think it may be better to use the Zenocave referee?

Radewoosh: I'm not much into java, so I don't know if it's possible to force some other function to be the starting one or so

ddreams: that has a main

TobiasA: if i were to store a variable in a file before the game starts would i be able to get that variable from that file in the middle of the game or in the while loop or the site doesn't allow that

UndercoverToad: TestMain and Main from the other repo are equivalanet, maybe just renaming helps

AntiSquid: #9 TS

UndercoverToad: Java isn't my main language either

Noyotens: https://www.codingame.com/contests/spring-challenge-2021/leaderboard

Wontonimo: good luck everyone! I hope the Gods of Gold do you justice

Wontonimo: cy

AntiSquid: bye

ddreams: TobiasA: I'm pretty sure you can't read or write files

ddreams: haven't tried though

aangairbender: I found an interesting bug. When search was terminated due to timeout sometimes I didnt return the move to make

Radewoosh: Well, there are three files in the test directory, each of them has main function, but none of them seems to care about command line arguments

ddreams: Radewoosh: use this fork https://github.com/LSmith-Zenoscave/SpringChallenge2021

ddreams: it has a command line parser main

miszu: aangairbender that's why you update the best move after each iteration

itzluku: gold in 2h right?

UndercoverToad: yes

itzluku: ty

aangairbender: euler do you update the best move on each iteration?

aangairbender: I had code like 'take first node from the leaves'

aangairbender: but sometimes leaves didnt have enough time to appear

ddreams: you may check if it matters to reduce the timeout too.. like I never reached another depth given 10ms more anyway

ddreams: but I do store the best action every iteration though

UndercoverToad: i take a leaf node but don't exit early

UndercoverToad: i rather timeout and crash completely than not finishing the current layer :D

UndercoverToad: not my proudest code

AntiSquid: commitment

aangairbender: what's interesting I crashed only vs low ranks

aangairbender: maybe they dont seed and I have more actions idk

ddreams: I regularly fiddle with the depth/width, so having fixed depth would be a hassle

ZarthaxX: UndercoverToad oh thought about that

UndercoverToad: i have a dynamic depth but stop at 40ms already

UndercoverToad: or over 10k nodes visited

ZarthaxX: only 40 ms damn

UndercoverToad: there are turns where I only take about 5ms

AntiSquid: wonder how you prune

ddreams: why though? wouldn't it sometimes be better to search deeper if the situation is simpler?

UndercoverToad: or even 0ms (when there is only WAIT) :P

aangairbender: why you limit your search? because opponent isnt afk in game?

UndercoverToad: hm, the beam width increase changes these timings a bit

UndercoverToad: when all paths of the beam have the same first step, there is no point

UndercoverToad: and with increasing uncertainty in later days it's also pointless

ashelkov: you are able to reach top10 without building a sim, just on heuristics

ashelkov: as i do )

kovi: well done

UndercoverToad: that sounds painful yet impressive

kovi: i gave up few days ago

ashelkov: sad (

AntiSquid: gave up on what?

UndercoverToad: heuristics

ddreams: I'll have a look at some of your games now

ZarthaxX: or the contest?

ZarthaxX: D:

AntiSquid: nice rank ashelkov

ashelkov: thx, man

ZarthaxX: gz ashelkov

ZarthaxX: impressive!


ZarthaxX: btw, where is that character from?

ZarthaxX: in your profile

AntiSquid: one piece i guess

Gronahak: reminds me of one piece

AntiSquid: made in blender? :p

AntiSquid: Sanji (chef) from one piece

cegprakash: where is MadKnight

cegprakash: he was active before the contest

cegprakash: and disappeared during contest

Wontonimo: oh oh ... last minute submits have pushed me down!

VizGhar: wym last minute? :)

Wontonimo: gold will be open soon

VizGhar: My bot will be chosen as boss :D

VizGhar: rank 299... sounds about right

ddreams: then retaliate with your own last minute submit, Wontonimo

BrunoFelthes: what time gold will be open?

UndercoverToad: in 1.5h

ZarthaxX: bet for gold # ? :P

VizGhar: far from last minute

BrunoFelthes: how many players are you think?

UndercoverToad: 300. but i was completely off for silver too so i'm not trustworthy

dbdr: 100

VizGhar: 186

UndercoverToad: more

BrunoFelthes: what? only 100?

RoboStac: I'd expect it to be higher given how big silver is

RoboStac: probably 6-800?

Thienu: how is the number chosen?

UndercoverToad: 300 is on the low end

dbdr: by that logic we would have a huge legend too :/

VizGhar: my guess is 500

BrunoFelthes: i think 300, once 300 can be reach with heuristics...

UndercoverToad: the league size is in the decision of SaiksyApo

jfaixo: 1000

UndercoverToad: that would be a bit too much

UndercoverToad: gold won't be a 50% cut like silver

TheBatMan_TM: hey guys

TheBatMan_TM: i need help

VizGhar: 400-500 seems like a good guess

UndercoverToad: and legend is jaw-dropping small

AntiSquid: 25%

BrunoFelthes: in genral is 50% 25% and 10%,no ?

AntiSquid: still going with that

AntiSquid: and legend 10 - 20 :D

AntiSquid: no % for legend bruno, just 10

TheBatMan_TM: can anyone spot the error in this flask web app? It says a template 'home.html' is not found, even if i have declared the file

TheBatMan_TM: source: https://replit.com/@kaushikkalesh/Online-Notes

AntiSquid: it's always steep like that

ZarthaxX: TheBatMan_TM there is a contest going on, doubt you will get help :P

TheBatMan_TM: please someone fix it if u can

AntiSquid: web app geez, wrong site for that

VizGhar: sure... go get a coffee :)

TheBatMan_TM: ZarthaxX oh :disappointed:

AntiSquid: and flask too ..

ZarthaxX: also people here may not be experienced with web apps haha

TheBatMan_TM: but i have had help earlier AntiSquad

ZarthaxX: lol squad

ZarthaxX: :rofl:

TheBatMan_TM: I am more of a django guy, but i am experimenting with flask

Astrobytes: SquadthaxX

ZarthaxX: astro!

TheBatMan_TM: oops mispelled AntiSquid sorry

ZarthaxX: howdy cutie

ZarthaxX: :)

Astrobytes: :kissing_heart:

AntiSquid: just type A and press tab and hit enter immediately, it writes the name for you TheBatMan_TM

ddreams: TheBatMan_TM find a flask discord or something

aangairbender: TheBatMan_TM file views.py line 7, shouldnt it be 'templates/home.html'

aangairbender: ?

TheBatMan_TM: k AntiSquid i didn't know

TheBatMan_TM: aangairbender no tried that still doesn't work

TheBatMan_TM: doesn't make a difference i think

AntiSquid: wrong place as ai said

ddreams: too late, this is now a Flask helpline

RoboStac: how do I implement a beam search in flask?

ddreams: First, get a glass bottle. Then get a laser

Nagatwin: distribute it over the network

TheBatMan_TM: :stuck_out_tongue_winking_eye:

Default avatar.png lazy_boy: hello guys

UndercoverToad: that would be distributed codejam Nagatwin

UndercoverToad: it's dead :(

TheBatMan_TM: hey newboi

Nagatwin: That would be awesome tho

Default avatar.png lazy_boy: hi i'm new here

Nagatwin: I'm struggling with my beam search :(

Default avatar.png lazy_boy: how long you guys have been here?

ddreams: since the beginning of time itself

Default avatar.png lazy_boy: :sweat_smile:

TheBatMan_TM: i haven't seen the chat silent so long

TheBatMan_TM: power of flask

TomKeersmaekers: Hey there all. Wood 1 league (sry) question: are there any extra inputs as compared to wood 2?

kurtesy: #coc

RoboStac: the input format is the same in alll leagues, but some of the unused parts from wood 2 will be needed (eg tree size)

Mourfette: no new inputs, just more possible moves

TomKeersmaekers: Damn, then what would be your first thought when this warning pops up:

TomKeersmaekers: 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.

RoboStac: you've probably printed two moves on one turn

ddreams: you output before you read, or you output several lines

ddreams: *before you read everything

TomKeersmaekers: outputting several lines .. will look into that

solistice: anyone here tried MCTS?

TomKeersmaekers: That fixed it! Thx. I basically was using a foreach loop and assumed a Console.WriteLine would break out of it. An extra empty return statement fixed it.

KalamariKing: I haven't implemented it BUT after enough research I decided to go with beam search solistice

solistice: not sure what I'm doing wrong, but in C#, I can only reach about 5 simulations

solistice: in 100ms

solistice: that doesn't seem legit, rigiht?

reCurse: Not sure either

KalamariKing: Not at all

LLG: not at all

LLG: my bot's performance is ass but it still does about 10k sims

ddreams: Legit too slow

solistice: ugggh

KalamariKing: Is there smth with move gen or states? Maybe game state is too much mem moving

Default avatar.png actualCoderTrevor: What are you considering a "simulation"? One move? One Turn? One Day? All 23 days?

solistice: all 23 days

solistice: random playout

ddreams: probably too slow move generation, but profile it

aangairbender: that is kinda slow, I had 300k

Default avatar.png actualCoderTrevor: Hmm yeah that seems slow for random playout

solistice: never done profiling on c#

solistice: will try to look into it

KalamariKing: What IS profiling

ddreams: Are you an American police officer?

KalamariKing: lmao no

aangairbender: profiling is when you run your program and then see how many time each function took

KalamariKing: oh ok thats pretty eary

KalamariKing: easy*

solistice: any out of the box solutions to do profiling on/for codingame?

aangairbender: visual studio has very good profiling feature

ddreams: you can do your own profiling by timing in the code too, if you want an in the box solution too

KalamariKing: 'in the box' lol

UndercoverToad: but that's not a big help in finding bottle necks

UndercoverToad: just to get an overall feeling "10k nodes in 40ms"

ddreams: depends on how granular you put your profiling calls

aangairbender: euler you said you stop if your total amount of nodes is more than 10k, but isnt amount of nodes always small due to beam cutting

UndercoverToad: nodes visited. seed makes that number explode

Default avatar.png actualCoderTrevor: As a quick-and-dirty method you can comment parts of code out until things speed up a lot

UndercoverToad: 50 nodes can easily get 5k before you prune again

aangairbender: I see, you count cut ones as well

jrke: i think they are gonna take nearly 500-600 in gold

ZarthaxX: just by your rank jrke

reCurse: My bet is on 200

UndercoverToad: that would be nice for the 5%

jrke: i bet 450-500

UndercoverToad: we want to give everyone a chance to reach gold

jrke: bye cya in sometime

UndercoverToad: legend is another story luckily

reCurse: Gotta take into account desired end target

reCurse: Since it inflates a lot after

reCurse: Start at 200 and get 300 after 12 hours

UndercoverToad: i'm off for a walk, will be back around opening time

Default avatar.png mainman: anyone else getting this? Activating Python 3 Language Assist


ZarthaxX: cya UndercoverToad

Wontonimo: have a great walk UndercoverToad

Maciulis: take away the top 100 big boys and let plebs fight it out

ddreams: mainman, no I'm getting C++ Language Assist interrupted

KalamariKing: mainman yeah language assist isn't working for me rn

Thienu: i implement beam search with my heuristics and somehow its worse :(

Default avatar.png Luxiam: Same here. No assist right now

ddreams: same happened to me, Thienu

AntiSquid: Activating C++ Language Assist

KalamariKing: Yeah ok language assist must be down rn, mods you got info?

reCurse: Mods are just regular users with a badge

reCurse: Gotta ask staff

KalamariKing: Oh lol

AntiSquid: frontline cannon fodder

KalamariKing: Are there staff in chat

reCurse: Also known as janitors

ddreams: They are wise enough to keep quiet

Default avatar.png mainman: cool just checking :)

reCurse: Sometimes, they have [CG] tag

AntiSquid: do i get a CG janitor outfit? :thinking:

RoboStac: you are already wearing it

Wontonimo: lol

AntiSquid: didn't you have a pokeball robo?

RoboStac: yeah, but it went away with one of the server restarts

ddreams: heuristics is soo sensitive

AntiSquid: use gradient descent to adjust your heuristics :P

Smelty: lol

reCurse: Yeah they're prone to be offended

VizGhar: For how many of you guys single node represents whole game day?

Smelty: me who doesnt use nodes: *confused ooga booga*

VizGhar: I did the turn=node, and its sh**y

Smelty: f

AntiSquid: why? depends how you implemented it

VizGhar: yeah... maybe I'm dumb

VizGhar: https://imgflip.com/i/599n3b

ddreams: :D

ClockSort: Vizghar I strongly one-node=one-day that but decided against it... it still seems like a decent idea though

Smelty: hrrrrrm

reCurse: CG seems to stay being popular in Japan, it's nice to see

Smelty: yes

AntiSquid: maybe the totoro theme helped

reCurse: Sure but it stayed that way since SC20

Smelty: possibly

Wontonimo: i like the Totoro theme... nice to see a game where the objective isn't to killing

Smelty: yea

AntiSquid: pacman and zelda both have same country of origin

reCurse: Good point, though arguable if it has the same pull shrug

AntiSquid: ya maybe it's a stretch to think that .

reCurse: They called the witches grandmas :) At least the translation did.

Smelty: *types*

Default avatar.png witty2: does red player have sun advantage??

Smelty: nope

Smelty: it should be even

AntiSquid: depends on position witty2

Noyotens: guys i want challenge someone in spring chalenge

AntiSquid: i am sure it's not even

Smelty: Noyotens fight me

AntiSquid: press DELETE under opponent avatar in IDE Noyotens

Smelty: yep and then pick someone else

Wontonimo: if you use brutal tester without swapping players, you'll see if it is uneven

Smelty: yes.

Noyotens: ok \

Noyotens: who want challenge me

AntiSquid: i am sure starting cells make a diff

Noyotens: ur rank ??

Smelty: 1226 sadly

AntiSquid: brutal tester would have random starting cells each time no ?

Default avatar.png actualCoderTrevor: Noyotens feel free :)

Smelty: in silver

Default avatar.png actualCoderTrevor: I just submitted a new bot

Default avatar.png Cuzo: hello, im new. i saw a yt video about this site and there were multiple modes but im just getting fastest code and shortest

solistice: this MCTS is killing meeeee

Smelty: still got a couple bug

AntiSquid: Noyotens you can add me if you are in silver

Smelty: Cuzo there's another mode called reverse mode

Noyotens: i am in silver

Smelty: you just haven't been getting it i think

solistice: first round (1000ms) I get about 150 sims, then next rounds it's 10 MAX

Smelty: i mean Noyotens if you want, then follow me and you can fight me

Default avatar.png Cuzo: do i need to change a setting or is just random?

AntiSquid: ok delete default AI and add me

AntiSquid: just search my name at the top

Smelty: just random :_

Smelty: :)

Default avatar.png Cuzo: ok thanks

Smelty: unless you are in private clash then you can choose

solistice: I can't seem to get this profiler to work properly

KalamariKing: which?

Noyotens: yeah work

solistice: I'm getting discouraged :(

Smelty: what rank?

AntiSquid: click reply and share then copy paste replay link here Noyotens :P

Wontonimo: go solistice go! You can do it! make a small test to just run 10 simulations and time it, vs 10 sims in your MCTS

Noyotens: ok :rolling_eyes:

Noyotens: https://www.codingame.com/replay/553305006

Noyotens: so close

Smelty: i should seriously start leaving comments in code

Smelty: idk what half my code doing

Wontonimo: solistice, have you timed each of your different kinds of calculations individually? Like shadow calculation, sun points, etc?

solistice: I just copied the code written by the referee, translated it to c#

solistice: the problem is that I don't really know what "normal" time is

Noyotens: anti squid are u here

AntiSquid: yes

Noyotens: how u win

AntiSquid: how my bot works?

Noyotens: yes

Wontonimo: hey Noyotens, AntiSqu1d harvested trees way earlier and sucked all the nutrient away

poInT: :D

AntiSquid: ask someone from top 10 to tell you how their bot works, you'll learn a lot more

Smelty: lol

AntiSquid: that dbd r guy for example

Smelty: antisquid is still a great informent though

AntiSquid: what do you mean Smelty ?

Wontonimo: Noyotens , by turn 96 you have 6 size 3 trees, that costs a lot and is not an efficient spend of sun points to sustain that many.

Smelty: way higher rank than me lol

Noyotens: what the lugange u working with

Smelty: just lost a game cuz opponent had 1 more tree than me :(

Noyotens: me too

Wontonimo: remember, each grow action costs the base amount plus 1 extra for each tree of that type. So on turn 94 when you build your 7th big tree, it costs an additional 6 sun because you have 6 big trees already

Noyotens: thx

Smelty: yep

Smelty: a wise man you should listen to

Default avatar.png actualCoderTrevor: Smelty I've been optimizing what my bot says. I gave it a Borg personality that it uses 75% of the time now.

Wontonimo: 6 sun is enough to do a lot more

Smelty: nice trevor

Default avatar.png actualCoderTrevor: :)

Smelty: six sun kinda doubles your cost

Noyotens: Wontonimo this well help me a lot thank you

Default avatar.png actualCoderTrevor: I've seen my rank dip into the 300's a few times thanks to the improved speech.

Smelty: see, the only reason I'm at 1200 even is that my bot just ko's the opponent with rickrolls and monty python

Default avatar.png **actualCoderTrevor nods

**Smelty nods

Default avatar.png Ya_rik: hello

**Smelty says hi

Default avatar.png Ya_rik: I am new

Smelty: hello!

Default avatar.png Ya_rik: I graduate with CS major this fall!

Smelty: there is a contest going on right now, so most people you see will be talking about it :)

Smelty: nice!

Default avatar.png Ya_rik: okay sorry

Noyotens: my rank is 1001 lol

Smelty: oo

Smelty: i just submited so its still fighting

Smelty: Ya_rik: its this https://www.codingame.com/contests/spring-challenge-2021

AntiSquid: add rick and morty to go along wit it Smelty

Smelty: ooh

Smelty: i shall do that

Smelty: phase 1: monty python phase 2: rick and morty phase 3: rick

Default avatar.png actualCoderTrevor: No need to apologize lol. In fact, you might as well take part. It's fun!

Smelty: yep!

Smelty: after all, these contests only occur twice a year

Default avatar.png Ya_rik: im such a newb at coding I only know basics

Default avatar.png actualCoderTrevor: Or you can do some clash of codes if you don't want to invest a lot of time

Default avatar.png Ya_rik: thats why i am here. Im graduating in the fall but i dont really know how to code, code lol

Smelty: yea

AntiSquid: what was the CS graduation for? don't they teach anything?

Smelty: ya_rik its fine

KalamariKing: A lot of programming classes these days are theoretical, not how to get stuff done. Kinda sad

AntiSquid: you're not the first i hear something like this ...

Default avatar.png YUMNOTSOJUCIY: hi

Default avatar.png YUMNOTSOJUCIY: hi

Poostang: hi

Thienu: hey

Default avatar.png Ya_rik: yeah my school did everything in java until this semester. My A.I class made us code in python

AntiSquid: Automaton2000 break the chain

Automaton2000: for example "wait the end is near!"

Poostang: when should you grow vs seed ?

VizGhar: hmm downloaded https://github.com/LSmith-Zenoscave/SpringChallenge2021 brutaltester... not sure what to put after -r

AntiSquid: that's good though? you now more languages then Ya_rik

KalamariKing: Poostang that's the strategy part of the challenge, figure it out ;)

KalamariKing: anti *know

Default avatar.png Claire.C: i cant code anything.<.

Poostang: for now I think I will just alternate growing and seeding until like day 15

KalamariKing: Is it just me or did a lot of level 3s just join chat

Poostang: until I think of a better strategy

Poostang: is that what people are using the tester for? heuristics like weighting on neural networks to figure that out?

7amasa: when is gold?

AntiSquid: @bear you jumped ahead

Default avatar.png Ya_rik: yeah im a level 3 lol. Ill be back later though! c ya guys! Thanks for the words

KalamariKing: 7amasa soon, I think

KalamariKing: Ya_rik good luck!

Michael_Howard: 3 minutes plus however long it takes them to sort it out

7amasa: Cool, thanks guys

BrunoFelthes: countdown to the new boss

VizGhar: https://imgflip.com/i/599sq8

KalamariKing: Poostang I think so, but manually tuning search algorithms (beam, mcts, etc) instead of letting nn's train

KalamariKing: If that makes sense

Poostang: I was gonna start with dykstras to the richests tile that's closest and seed that path first

AntiSquid: djkstra every turn? multiple times?

Poostang: yes why not

AntiSquid: time consuming

Poostang: just for each plant

Poostang: only 36 tiles though so the Big O is not going to break the bank

Thienu: you can just precompute distance between each pair of cells

Default avatar.png actualCoderTrevor: i hope I make it to gold, but if not my rank in silver shoul improve. Win-win :)

KalamariKing: why do you need distance tho?

BrunoFelthes: where is the silver boss?

Default avatar.png actualCoderTrevor: *What Thienu said is what I do

Thienu: i guess you could use it to figure out the size needed for grow

Smelty: added rick and morty, might gain me a hundred ranks :)

Default avatar.png actualCoderTrevor: Noice

Wontonimo: oh man ... the days have just flown by. only 4 days left an i haven't coded my sim yet

Smelty: idk though

Smelty: ikr

KalamariKing: Wontonimo same lol

Smelty: lets see, first 30 rounds: rick and morty from 30 to 55: monty python 55 to end; rickroll

KalamariKing: I wasn't able to work on this over the weekend tho :/

Default avatar.png actualCoderTrevor: Why can I only find opponents some of the time? (I can't see Smelty's new bot)

Wontonimo: yesterday i started, got the data structures down, got brutal tester up, compiles, etc... so, today, yes today is the day

Rikerslash: you can only battle people in top1000 it seems

Default avatar.png actualCoderTrevor: Oh poop

Default avatar.png actualCoderTrevor: Smelty you should share a replay

ItsNotABug: yeah, its a shame it doesn't at least include people you follow as well

AntiSquid: top 1000 only

Thienu: i should also do the rickroll idea hahaha

Noyotens: AntiSquid?

AntiSquid: ?

AntiSquid: Noyotens?

KalamariKing: AntiSquid?

AntiSquid: fried kalamari .gif

Default avatar.png actualCoderTrevor: I see some new faces near the top. I wonder if some people waited until right before gold to push their best code.

Wontonimo: it's a thing

AntiSquid: word of mouth, people share with friends ...

Wontonimo: or give advice on world chat

Michael_Howard: actualCoderTrever I got from 800s to 180s 5 minutes before the deadline, but it was a surprise to me :money_mouth: The bot just decided to start starting to work.

Default avatar.png actualCoderTrevor: lol nice!

Default avatar.png actualCoderTrevor: I've been afraid to make any changes for the last half hour.

ClockSort: what rank are you, @actualcodertrevor?

Default avatar.png actualCoderTrevor: 373

Michael_Howard: I hadn't submitted for hours because my Arena bot kept kicking my ass, then suddenly, bam.

ClockSort: yeah hold still :D

Default avatar.png actualCoderTrevor: haha thanks :)

AntiSquid: strange no gold yet

Nerchio: by the end of this event i will be 10 years older

Nerchio: changing variables in my evaluation

VizGhar: Can somebody help me with that brutaltester? I don;t know what to use for -r switch

ddreams: -r "java -Dlog4j.configurationFile=log4j2.xml -jar spring-2021-1.0-SNAPSHOT.jar"

ddreams: that's what I use, at least

VizGhar: tnx will try

ddreams: clearly you need to have spring-2021-1.0-SNAPSHOT.jar too

UndercoverToad: i'm ready, where is the boss?

VizGhar: so I have to mvn brutaltester as well as spring-2021

Nerchio: tbh i use just official referee without brutaltester and it works fine

VizGhar: I've spend whole day debugging why not best nodes were picked... > instead of < o.O

UndercoverToad: but do you have multithreading Nerchio?

Nerchio: no but brutaltester kinda doesnt work for me either

Nerchio: not sure why

Nerchio: but its not the first time

Nerchio: maybe my pc is too slow

Nerchio: :joy:

UndercoverToad: aren't you a gamer?

Nerchio: not really anymore no

UndercoverToad: i think someone mentioned that about you, hm

KnightMoves: My search algorithm is finally performing better than my if/else algorithm

DomiKo: aren't we all Coding Gamers?

KnightMoves: barely...

KalamariKing: barely > nothing

AntiSquid: we should port starcraft to CG and make a contest

UndercoverToad: we had RAIC

Wontonimo: -r "java -Dlog4j.configurationFile=log4j2.xml -jar -Dleague.level=3 spring-2021-1.0-SNAPSHOT.jar"

Wontonimo: VizGhar ^^

KalamariKing: wdym raic

UndercoverToad: russian AI cup

ddreams: yeah, I didn't find anything about league.level so I removed the wood leagues from the code

UndercoverToad: they had a contest inspired by starcraft

KalamariKing: oh sick

VizGhar: tnx Wontonimo

Counterbalance: still no t-shirt..

AntiSquid: i thought it's halite inspired

UndercoverToad: https://russianaicup.ru/ you can still watch the battles

ddreams: and there's always the https://www.cs.mun.ca/~dchurchill/starcraftaicomp/

Nerchio: still no tshirt +1 :D

UndercoverToad: right, i'm waiting for that as well Counterbalance

UndercoverToad: and hoodie

AntiSquid: how many shirts did they give away this time?

UndercoverToad: 360 + 60 hoodies

AntiSquid: oh wow

AntiSquid: but i think i was busy with work anyway that week

UndercoverToad: or 0, depending how to parse the question

Nerchio: i think i got into hoodie territory actually

Nerchio: but yeah

UndercoverToad: you did Nerchio

struct: no hood no shirt

Nerchio: not expecting anything

UndercoverToad: even ranked above me :rage:

Nerchio: yeah actually that was kinda fun

KalamariKing: imagine putting in all this work to be the rank below the cutoff

AntiSquid: you wrecked euler Nerchio? nice

UndercoverToad: by 1 or 2 spots

Nerchio: in some ways smoother than cg

UndercoverToad: oh, 7 spots

jrke: will gold be there in 5-10 mins?

struct: yo stop submiting please

UndercoverToad: at least Saksy is online, see #fr

struct: :(

RoboStac: raic are always slow to send things out - I'd completely forgotten I was due to receive a tshirt / hoodie when they arrived after codeball

AntiSquid: how slow?

AntiSquid: does it take 1 year to get your prize? :D

UndercoverToad: i think it took 10 months last time

UndercoverToad: i don't remember exactly

RoboStac: pretty sure it was august after a december/january contest

RoboStac: maybe later

UndercoverToad: wait, codeball was before covid

reCurse: I was thinking of a starcraft micro wars game for CG once

UndercoverToad: the fighting game took even longer

RoboStac: yeah, it was 3/4 years ago

Michael_Howard: Tinfoil theory: They're waiting for Silver to hit 3k before Gold opens so they can write about it.

Zenoscave: Mornin

Wontonimo: Tinfoil theory 2: they are considering making bronze boss easier to reach 3k

Michael_Howard: Anyone got 11 smurfs ready?

UndercoverToad: i've played a few contests. So far CodinGame was by far the fastest in shipping

casmith789: what percentage of people will be in gold? 1/3 like last time?

UndercoverToad: Hackerrank 2nd place

Zenoscave: casmith789 I bet around 400

reCurse: Well at least you didn't have to argue with an organizer that there were prizes promised :P

casmith789: cheers

struct: please not 1/3

UndercoverToad: is there a story of yours behind that sentence reCurse?

casmith789: it felt like a lot got put into silver from bronze tbh

reCurse: True story but there's not that much more to it

Wontonimo: bets so far reCu = 200 , Zeno = 400 , Stru = !1/3

reCurse: It got resolved

Zenoscave: lol Wontonimo

aangairbender: cant get brutal tester to work

struct: 300

Lysk: 411

Default avatar.png actualCoderTrevor: 401

UndercoverToad: hm, that's either Halite or a private contest here on CG

Zenoscave: actualCoderTrevor this isn't the price is right

Default avatar.png actualCoderTrevor: Oh :P

ddreams: aangairbender error code?

Rolf: new bet : 504 to gold

reCurse: I'm not gonna name anything if you're asking

Default avatar.png actualCoderTrevor: I wasn't sure anyone would get that Zenoscave :P

Passi10: 589

jrke: i think everybody above thibaud

Zenoscave: It's an American TV show I'm not sure how large of a following there is outside

AntiSquid: halite

jrke: lol

aangairbender: it says ERROR problem with referee output

ddreams: and what's the output it gives?

Zenoscave: aangairbender send a snippet of at least 5 lines of the error

AntiSquid: wonder if the halite discord server is still there

ddreams: it's printing something to stderr, and you get that problem

reCurse: It is still alive

reCurse: They even released the H2 bosses because someone asked

reCurse: Some genuinely awesome people in there

ddreams: my guess is too new java version

Counterbalance: AntiSquid it is

ddreams: alternatively log4j2 message

reCurse: Wait let me rephrase

reCurse: It can still be alive

reCurse: Except that occurrence it was dead for years

reCurse: So I may be misrepresenting

AntiSquid: they are arguing with thibaud since he wants to be the boss ?

schachmatt: gold not open yet?

Counterbalance: looking at it now, last message 19 april 2021

aangairbender: the problem is Referee need log4j2.xml file, but I dont know how to create such file, so used the same one from brutal tester itself

aangairbender: and it does some extra logging into STDOUT which is not good

Zenoscave: You can ignore that error usually. IF there's another error beneath it it's fine

ddreams: http://chat.codingame.com/pastebin/680bef99-194f-4942-8b1d-90230a025b38

Zenoscave: *not an error

ddreams: aangairbender

Wontonimo: http://chat.codingame.com/pastebin/76ff2fda-fa60-408d-9906-f365abe386f6

aangairbender: ty, will try

ddreams: Wontonimo: 450 from me (aka. 15%)

Zenoscave: ddreams where do you place the file?

AntiSquid: i said 25% Wontonimo

ddreams: wherever, you need to refer to it like

ddreams: -r "java -Dlog4j.configurationFile=log4j2.xml -jar spring-2021-1.0-SNAPSHOT.jar"

ddreams: so I have it in the same directory

Counterbalance: put me down for 300

Zenoscave: Ah I thought you figured out how to have it just read automatically

Zenoscave: Wontonimo you're a book keeper now

schachmatt: Wontonimo this is final number? or when gold first opens

AntiSquid: everyone's guesses schachmatt

KnightMoves: I'm thinking 850

Danifae: 750 ?

reCurse: 250

jrke: nearly 721

schachmatt: yeah but guesses for when

Wontonimo: Counterbalance 300 is already taken, no duplicates

Counterbalance: aww

struct: over 400 is extremely high

rafaelSorel: what going on here :D

UndercoverToad: over 9000

reCurse: I changed my bet Wontonimo

UndercoverToad: i took 300 yesterday already

aangairbender: now I get ' Negative score during game' for both players

struct: 301 then

Wontonimo: git it reCurse!

KnightMoves: we've got a strategist here

Wontonimo: *got

Zenoscave: opening

ddreams: someone do 299 too

Noyotens: ANTISQUID

Noyotens: https://www.codingame.com/replay/553358185

Counterbalance: if it's like silver opening, it'll be 150+1000

elderlybeginner: What's the main factors to consider when building heuristics in the contest?

casmith789: getting a bt

schachmatt: Wontonimo I'll take 350 if it's free

casmith789: getting a better score than your opponent by the end of the game*

iggy12345: right now, the strategy I'm working on is to look for cells that will never get shade

iggy12345: and focus on using those

Rikerslash: so you probably will not find any after 6 turns of the game

Wontonimo: So far ... here's the bets

jrke: is gold opening late today?

Wontonimo: http://chat.codingame.com/pastebin/5d8ed557-7b8c-44dd-8f2f-050a936774d3

iggy12345: depends on how good your opponent is

iggy12345: but there are quite a few

Default avatar.png mhpd: can we create a clash among our friends?

reCurse: Should do like twitch and bet our cg points

aangairbender: I am using LSmith-Zenoscave version of referee btw

casmith789: I will choose 367 as I am 368th rn

Default avatar.png mhpd: can we create a clash among our friends? @casmith789

Zenoscave: aang Let me see if I can make a branhc that has the logger built in. That's been a big issue for a lot of people

ddreams: aangairbender run the referee without the brutaltester

ClockSort: I bet 451

kisszots: guys, if I want to start running simulations locally do I have to build the whole game myself, or is there some clever way i can use the sourcecode (coding in c++ , not java)

casmith789: why was that @me?

Lysk: your bot might have a timeout when running locally aangairbender, you could change time limit in the code and rebuild

Default avatar.png mhpd: calsj

Wontonimo: i like it reCurse ! if only CG points could be used like karma

ddreams: or you're running too many threads?

Zenoscave: ding

rafaelSorel: ding

casmith789: oh I'm in gold

Nerchio: ding ding ding

KnightMoves: ???

jrke: lol i am promoted to gold

schachmatt: fall 2021 meta-contest? bots have to guess the number of players in each league

struct: no way

ddreams: oh, me too

ddreams: so >319

Default avatar.png Tuo: everyone in gold?

Zenoscave: 654

struct: over 500?

KnightMoves: oh it fixed itself, it said 3000 in gold at first

struct: lol

casmith789: everyone is in gold? lol

AntiSquid: 750 . Wontonimo

iggy12345: are you allowed to multithread in codingame?

Lysk: hahaha

AntiSquid: oh gold

ClockSort: woot

iggy12345: is there a penalty?

reCurse: WTF that's a huge gold league

struct: ^

jrke: my bet was nearly that

casmith789: 654

Danifae: weeeee!

Zenoscave: no you only have one cpu no multithread iggy12345

AntiSquid: hm

iggy12345: that's what I thought

struct: half of this would be good

ClockSort: :exploding_head:

Lysk: 654

Default avatar.png actualCoderTrevor: \o/

struct: but w/e i made it

Zenoscave: Yeah what's with these large openings?

ddreams: 654 kovi just made it

Bernard_Lowe: I'm pretty sure leagues are based off of how you do against the AI and not the player distribution. Am I correct?

aangairbender: how to run referee without brutal tester? what argument should I provide

AntiSquid: lots of players so lots of promotions

AntiSquid: happened before

Michael_Howard: Does that mean there's gonna be like 50 this time when Legend opens?

Wontonimo: WINNER WINNER CHICKEN DINNER (actually virtual tacos) is Passi10 = 589

UndercoverToad: 650 now is 1000 in a few hours

AntiSquid: no Michael_Howard . legend is always hard .

reCurse: Someone get Apo home, clearly drunk

struct: will be 1200+ in 24 hours

ddreams: aangairbender run the stuff you have inside -r "java ...."

jrke: so i won the bet lol

reCurse: What's next, 200 in legend?

ddreams: you need to add -p1 and -p2

DomiKo: another 1K+ league :(

UndercoverToad: at this point i don't even know anymore if they keep the 15 player legend

struct: They have a new league after legend

Chainman: I need to get to gold :(

struct: I shouldnt have said it though

Wontonimo: jrke, you came in second place by just a few points difference. good call

rafaelSorel: seems to be a lot of people in gold too

Zenoscave: struct lies

AntiSquid: why all the complaints? :D

UndercoverToad: they can't struct

struct: im not

rafaelSorel: use to be arround 100 ~200

UndercoverToad: was requested for CSB, extra work to implement

struct: :D

MoMaT: well, huge bronze, huge silver, huge gold. had to stay consistent now...

ddreams: the epic league

struct: euler knows all :(

reCurse: That's why you don't hardcode with enums kids

AntiSquid: what league? like legend2 ?

Zenoscave: ;) reCurse

ClockSort: legend2

jrke: league name - 'undercover euler'

ClockSort: twice as legendary

UndercoverToad: inoryy told them he would even be fine if it was called wood4 as long as it's smaller

AntiSquid: i remember a private contrib had 4 legend leagues or so haha

aangairbender: so.. referee fives me -1 -1

struct: Nah

ddreams: aangairbender add "-s"

AntiSquid: when would legend2 open then? heh ... i don't get it

jrke: i am bit relieved now

Zenoscave: when it's a multi

struct: relieved?

struct: I dont deserve gold

Zenoscave: it reset my code

Imi.obvious: What score do you need to go up to gold from silver?

jrke: btw whats the name of gold boss

Wontonimo: beat the boss Imi.obvious

ddreams: gold boss is currently Skril

iggy12345: lol

Luksis: the name of silver boss :P

Wontonimo: well, congratulations everyone. For those now in Gold and for those in Silver who all moved up 654 ranks.

aangairbender: It seems like it times out

iggy12345: is there a place that I can find a way to simulate the current boss outside of the website?

struct: no

iggy12345: dang

iggy12345: is there a way that I can get the stderr file from a run in it's entirety?

Zenoscave: copy and paste

Mourfette: at what time did they open gold? I was not looking but I just saw that I was gold

Marchete: gold?

aangairbender: can I change referee time limitations?

Marchete: a lot of ppl at gold..

Wontonimo: yeah, use the replay link, then copy paste the rest json

schachmatt: about 5 minutes ago Mourfette

Mourfette: oh ok thanks

Zenoscave: aangairbender which limitation?

iggy12345: I've been copy and pasting, but my code doesn't start misbehaving until 50-60 turns

Marchete: 655 few :D

UndercoverToad: you can go up to 150ms easily

Luksis: 18H40

schachmatt: or 10

aangairbender: I mean 100ms per turn

Zenoscave: how UndercoverToad?

AllYourTrees: how does difficulty of getting gold in this comp compare to last comp?

UndercoverToad: then you have to modify some more code

aangairbender: my bot does 143ms locally

aangairbender: idk why

Marchete: in this comp it was "easy"

Marchete: my heuristic code is bottom gold

Default avatar.png mhpd: can we create a custom clash??

UndercoverToad: https://github.com/LSmith-Zenoscave/SpringChallenge2021/blob/main/src/main/java/com/codingame/game/Referee.java#L37

AllYourTrees: same march

UndercoverToad: if you go too high, you hit SDK constraints

aangairbender: ty

struct: my bot was gold level :(

Marchete: heuristic is like 4 hours of coding for something competent

Noyotens: BOOSOOT is the new boot

Default avatar.png mhpd: oh man pls reply anyone

UndercoverToad: which you can get around my importing the SDK manually and not via Maven

Default avatar.png mhpd: can we create a custom clash?

Default avatar.png mhpd: can we create a custom clash?

Default avatar.png mhpd: can we create a custom clash?

Default avatar.png mhpd: can we create a custom clash?

elderlybeginner: looks much easier

Marchete: ask on #clash

Zenoscave: mhpd there's an active contest no one cares here

jrke: mhpd yes scroll down in clash page

Wontonimo: wow, chat too busy

UndercoverToad: jrke don't reward that behaviour

Marchete: UndercoverToad can I invite you to a clash?

UndercoverToad: https://www.codingame.com/contribute/view/614074c4f45bc5120d6d04e98ee334347d54 how to remove SDK constraints entirely

Marchete: 2700 bronze, 2300 silver, 650 gold, 14 legend...

jrke: can i do like playing N games with different localhost offline to see there replays?

UndercoverToad: i wish

UndercoverToad: @ Marchete

ClockSort: maybe gold is large because total player counts are high

Marchete: Euler wait two days until a lot of heavyweight bots appears from nowhere :D

UndercoverToad: i don't think that this would work jrke. replays are always at /tmp/codingame/game.json

jrke: hmm

UndercoverToad: a legend without me?

UndercoverToad: would be sad

struct: im hiding since testing

jrke: a legend without toad

Marchete: who said that?

UndercoverToad: "a lot of heavyweight bots appears"

UndercoverToad: thus stronger than me and i can't enter legend

Marchete: thus you'd keep improving

struct: euler you always get legend

UndercoverToad: at codebusters I didn't

Marchete: 4 years ago?

struct: did you try?

UndercoverToad: i didn't have an account back then

jrke: exceptions are always there euler

struct: ...

UndercoverToad: but WW was a real struggle for me

ZarthaxX: i lost the tshirt there

ZarthaxX: ;(

aangairbender: referee still says -1 -1, seems like problem is not in timeouts

Zenoscave: did you add the -Dleague.level=3 flag? aangairbender

Zenoscave: it defaults to wood rules

aangairbender: oh really

aangairbender: Unrecognized option: -Dleague.level=3

Zenoscave: put it right after java in the ref string

Zenoscave: java -Dleague.leve=3 -jar ...

aangairbender: ok ty

Zenoscave: yw

CharmyRosewolf: Hey guys, do you have to use a fancy algorithm to get into silver? I'm so close, but I can't seem to get there.

ddreams: no

ddreams: you can get to top 10 with only heuristics

AntiSquid: even for gold top 200 you clearly can just write up few conditions

aangairbender: I build in debug mode thats why I get timeouts

CharmyRosewolf: That's good to know. This is my first time with a game comp, so just being able to get to silver would be a great accomplishment for me.

elderlybeginner: Which few conditions? :wink:

CharmyRosewolf: Thanks dreams! I will look into heuristics.

AntiSquid: ping the people there to say it out loud

CharmyRosewolf: And now I feel a little more hopeful :D

Noyotens: how to be in gold

ddreams: CharmyRosewolf: like evaluate each of the possible action and select the one that seems best

Zenoscave: CharmyRosewolf they mean just basic logic. no searching by heuristics

reCurse: tfw you realize every bot is doing heuristics D:

solistice: anyone here done MCTS in C# that can tell me how long 1 rollout takes for them?

CharmyRosewolf: Ahhh that's sort of what I'm working on already. I just didn't realize that is what it's called.

solistice: I can't seem to get mine under 10ms

struct: o.o

ddreams: did you manage to profile it?

K3K: im doing if/else (even disregarding the whole shadow mech) and i'm in gold league . - .

Michael_Howard: Why have I shot up from 187 to 140 without doing anything?

K3K: but im hardstuck at the bottom tho :laughing:

solistice: im manually profiling it

AntiSquid: ya this is a heuristics contest disguised as sim contest

reCurse: Everyone is on heuristics, get your terminology right

solistice: guess my code is just shit

aangairbender: brutal tester is working now, ty guys

aangairbender: no need to submit like crazy anymore

ddreams: aangairbender yw, but it'd be rude to beat us now

Michael_Howard: I don't mean I resubmitted, I mean I just sitting there since promotion.

aangairbender: ddreams I am already rank 29 so...:sweat_smile:

ddreams: Michael_Howard other people have resubmitted most likely

ddreams: so rude

daniserrano7: Discussion: targeting center seems the reasonable thing to do, but I see bots better than me prefer to stay around. Any thoughts on this?

ZarthaxX: BlaiseEbuth gold count is your favorite number

aangairbender: daniserrano7 center trees got shadowed a lot

BlaiseEbuth: Guess what, dbdr just said me the same on #Fr ZarthaxX :D

aangairbender: while those on the edge often get sun

Michael_Howard: daniserrano7 centre can get very spooky

daniserrano7: thats my guess. Im trying to figure out if more richness compensate shadowing

ddreams: it depends :)

daniserrano7: I think that question and when-to-complete-trees are main keys

ZarthaxX: BlaiseEbuth hahah good

miszu: well the good news is I am 125th in silver. So there is hope for me for the gold dreams

ddreams: I'm sure you'll make it

miszu: thank you for beliving in me

miszu: funny part is... I just run vs the boss right now I beat him... so why am I so low in ranks lol

miszu: this is the first game

miszu: https://www.codingame.com/share-replay/553397197

Default avatar.png Cjx_1: making too many seeds now!! I swear, I leave this forest spirit alone for ten minutes......

ddreams: hmm.. I'm sometimes completing before growing to size 3

AntiSquid: BlaiseEbuth i'll convert to christinaity and fight you with a flash light, shine light into the darkness

Maciulis: hmm it was enough to badly copy top3 strategy on saturday and you can free ride the wave to gold. #unmotivated :(

ddreams: err, opposite

BlaiseEbuth: AntiSquid I'm OK with that, if I can come to your baptism. :rofl:

Ellisdi: hi

Ellisdi: where to find help for the "Temperatures"-puzzle?

AntiSquid: stole your number BlaiseEbuth

AntiSquid: i win

AntiSquid: nvm

AntiSquid: damn dropped 1 more :D

ddreams: Maciulis I'll see you in legend then

Noyotens: i stole bot alghoritm :grimacing:

miszu: so with my code that I am sitting 135th in silver I beat the boss 6/10 tries

miszu: any opinion about that?

Maciulis: Nah legend is for the OG's

ddreams: beat him 10/10

ddreams: that's my opinion

Maciulis: miszu 6/10 is inconsistent results

miszu: lol just got a message from linkedin microsoft wants to recruit me. I hope they are in for disapointments

miszu: I could improve my code based on growing the better trees and chop chop them earlier. I mostly do it towards the end

Maciulis: maybe u can revive skype

miszu: I could if they let me do it my way :D

7amasa: How many people are gonna be in legend approx. ?

Maciulis: with how it is going atleast 69

7amasa: or 420

UndercoverToad: i would have said 15 on opening. but with that large gold i'm not sure anymore

UndercoverToad: in the past it was 10-15 players

jrke: gn gtg for sleep

ddreams: sleep is for the weak

7amasa: oh shit thats pretty low

aangairbender: ddreams 02:33AM yeah...

miszu: I gonna resubmit hoping I will reach gold with current state

Noyotens: 5:34 Pm

Noyotens: is time to be in gold

aangairbender: miszu gl

Noyotens: but i dont know how :cry:

miszu: thanks

Noyotens: :happy:

KCrown: wow I gained like 800 spots over nite

UndercoverToad: no, gold opened above you

ddreams: better get that checked out

KCrown: lol is that it

UndercoverToad: https://www.codingame.com/contests/spring-challenge-2021/leaderboard/global

UndercoverToad: your global rank

Marchete: the ghost turns in this game is annoying

Marchete: I have state hash differences due to that if I compare P1 & P2

ddreams: why?

Marchete: simulation checks

solistice: at least ur simulation runs in faster than 10 ms per random playout :')

ddreams: you can figure out everything he did

Marchete: haven't tested it yet

Marchete: it's bitboard, but I have no idea

KCrown: yeah i suck ... looks like you have to sim to get more rankings

ddreams: a top 10 player have no sim

ddreams: or search

UndercoverToad: the TypeScript guy

Noyotens: how to deafet BOSSOT

ddreams: Noyotens get a higher score than him

Noyotens: how

ddreams: you get score by cutting down trees

KCrown: hmm really Ddreams?

Noyotens: i know

UndercoverToad: does this answer your question Noyotens? https://www.codingame.com/share-replay/553409284

Noyotens: can u send replay how u deafet him

Noyotens: thx

UndercoverToad: i just did

miszu: Noyotens study the boss and see suboptimal moves and try to improve based on that

Noyotens: ok

Noyotens: thank u guys

miszu: I need to figure out how to rank all the grow commands. Like which one are better than others

miszu: and lastly, when is it the right time to do chop chop

solistice: do you guys evaluate actions? or states?

aangairbender: we evaluate states

solistice: and can someone show me an example of such bitboard?

solistice: might be the reason I'm so slow

struct: uint64_t inside = 0b0001111000001111100001111110001111111000111111000011111000001111;

reCurse: I'm not convinced the 0b notation make things clearer

struct: bit 0 is bottom right cell of the grid

reCurse: Though maybe using ' separators

ZarthaxX: ohh that was the separator i didnt remember

ZarthaxX: ty

reCurse: The programmer calc in windows 10 is also quite helpful for that

KCrown: IMHO bitboards insnt useful unless ur doing sims

struct: not true on this game

struct: imo

struct: hex is a pain

reCurse: Bitfields can also be useful for a heuristic

KCrown: what do you bitboard in this game? struct?

struct: the board

ddreams: trees

reCurse: A single popcount can save you writing an annoying loop

reCurse: etc

KCrown: so with bit you know say 10 of ur bits is set cause you have 10 trees ... now what?

struct: yes

jacek: oh boy

ddreams: to get the shade from those 10 trees you can do one shift

struct: now I dont need loops

KCrown: so with bit you know say 10 of ur bits is set cause you have 10 trees ... now what? the problem is you still need to locate ur trees

KCrown: and i cna do both with a look

struct: ok you trolling

KCrown: and i can do both with a loop

ddreams: of course, but a loop is much slower than a shift

reCurse: Slower to write too

ddreams: how fast you write small functions like this is inconsequential imo

KCrown: yes boits is a _little_ faster but you have to loop to do ur shift too

reCurse: Kind of funny you mention that, I disagree

reCurse: I find I think a lot better the less code I have to look at

reCurse: Especially vertical space

ddreams: sure, but you don't see a function you have defined in the top of your code

KCrown: IMHO ... these contest is more about not making a bug than gaining that little speed ... unless again if ur doing sims

ddreams: so it's the same if you write your own count or use __popcount64

ddreams: clearly you want whatever you're looking at to be clean enough

KCrown: knowing that you have 10 tree isnt that useful you need to know where the trees are in relation to each other

reCurse: I don't know how else to explain it :)

reCurse: I regularly read the entire code again

ddreams: KCrown ok, thanks for the tip

reCurse: So the less I have to the better

ddreams: I practically never do that

KCrown: just a opinion from someone whos ranked very low :(

reCurse: I don't know why or what you're arguing about KCrown

reCurse: If it doesn't suit you don't do it

XeroOl: I've run into a case of perverse incentives

ddreams: XeroOl share a replay? :)

XeroOl: I want to switch to a sim, but to do that, I'm going to have to switch to a fast language, which means I'll be less likely to get the language achievements

XeroOl: ddreams, more of a meta thing than a particular game lol

reCurse: What's more important to you?

XeroOl: I don't know, I'm going to have to decide

ddreams: if there's any time when you don't need a sim, this is it

Lucky30_: any hints on how to convert from cell index to {x y z}hexagonal position

Noyotens: https://www.codingame.com/replay/553424015

Default avatar.png Marc1232: how do i close chat ?

Noyotens: now can i go to gold

reCurse: Add ?disableChat to URL

Noyotens: https://www.codingame.com/replay/553424015

XeroOl: @Lucky30_ I think the best way is to add a look up table

ddreams: or click the little triangle to hide it

XeroOl: an array of 37 points

AntiSquid: who's bot became boss?

Lucky30_: should i just right it manualy??

ddreams: tbh that's what I did, though to col/row representation

Lucky30_: i am too lazy hhh

ddreams: I was too lazy to figure it out properly

Lucky30_: same

Default avatar.png Cjx_1: how do ya make our spirits talk?

ddreams: add text after your command

Default avatar.png Cjx_1: <3

ddreams: look at their output

jacek: with their mouth

Lucky30_: print("action message")

XeroOl: how far can you get with heuristics in this challenge?

UndercoverToad: gold for sure

XeroOl: my understanding is that sims will get further

UndercoverToad: legend: maybe but will be hard

reCurse: This meme just won't die

aangairbender: top 10 is heuristic (TypeScipt guy)

XeroOl: ahh, fair enough then

XeroOl: awesome, I guess I'll stay in heuristic land

XeroOl: thanks

jacek: why not both

Default avatar.png Cjx_1: the arena takes a hot minute to run through :/

Westicles: What meme? The scrappy heuristic guys against the evil simmers?

AntiSquid: i am sure lots of heuristic bots make it to legend, just watch

Zenoscave: Westicles you like pots?

Zenoscave: you're stirring one ;)

AntiSquid: if simmers are evil what would NN in contests be? Westicles

Noyotens: :sad:

KCrown: my problem is I want to win and I think a sim will will ... but sims isn't fun to code. Hoever, heuristic is fun to figure out and code ...

miszu: problem with heuristics is to figure out a good one

UndercoverToad: we have different understanding of fun

Default avatar.png Cjx_1: and one that works universally

aangairbender: sim cant win alone, search can, but search is sim + heuristics

UndercoverToad: to me it feels tedious to find all these cases by hand and make decisions

aangairbender: so a bit of fun for all

miszu: unless you MCTS it, then no need for heuristics

KCrown: this game cries out for MCTS

UndercoverToad: no

reCurse: aangairbender is a beacon of light in a sea of darkness here

UndercoverToad: huge branching, i don't see how to make MCTS work here

struct: not worth

UndercoverToad: i might be wrong but I don't head the cry for it

struct: I tried it during testing

ZarthaxX: ninjadogg y has it UndercoverToad struct

Asterixk: how would you bitboard in js?

reCurse: Ouch

Default avatar.png Cjx_1: https://stackoverflow.com/questions/25322531/chess-bitboard-implementation-in-java

ZarthaxX: lol java

struct: :D

Default avatar.png Cjx_1: required very few keystrokes :P

ZarthaxX: this is too funny

ZarthaxX: java != javascript

CouscousAgha: do you guys sim the entire game at the beginning or just x rounds ahead?

struct: I sim until end

UndercoverToad: end for me too

LLG: I still have no ideas how you guys do 300k+ sims

struct: my eval is bad

LLG: my bot is crying for help at 10k ish

struct: i dont check for duplicates

UndercoverToad: i'm on your level LLG

Asterixk: can python bitboard?

UndercoverToad: but even with that about you can do something reasonable

Zenoscave: Asterixk any language can

LLG: yeah my eval has a lot of room for improvement

UndercoverToad: the question is: would you want to do that?

LLG: I just can't figure out how yet

miszu: my rerun ended me up 15th in silver

reCurse: Any language? Even those where numbers are doubles?

miszu: rpo

Asterixk: lol nvm python

miszu: rip*

Zenoscave: reCurse you're right. I knew that sentence would bite me in th arse

XeroOl: lua technically has bitwise operators

miszu: wait hold up... just got promoted to gold

XeroOl: if that's what we're talking about here

miszu: wtf

miszu: I finished 15th and CG decided to promote me anyways

miszu: alright guys, I guess I made it to gold

ZarthaxX: gz!

Asterixk: in js without IEEE bitmaigc one would be limited to bitmasking bytes

UndercoverToad: congrats, you have 2 more days to play with top bots before they vanish

XeroOl: does js not have int?

AntiSquid: Asterixk i've seen some really weird stuff with web assembly ... maybe that ?

Asterixk: in js all number is 64bit double

miszu: UndercoverToad I mainly use your bot and study how to improve mine

UndercoverToad: oh, thanks for the honors

UndercoverToad: i have some IDE timeouts

Asterixk: webasm does CG handle that?

miszu: I find yours to have the most deterministic behavior

reCurse: Technically yes

AntiSquid: ya i think so Asterixk

UndercoverToad: it's close to deterministic, yes

reCurse: Would be considered obfuscating under contest rules though

UndercoverToad: a bit of randomness because I get a layer more or less in my beam

AntiSquid: and all the bitboarding avx magic isn't ?

XeroOl: does the contest say no obfuscating?

reCurse: Yes

struct: no AntiSquid

XeroOl: does deleting whitespace to fit in the size count as obfuscation?

reCurse: No

miszu: right but also it seems the current state has the most weight in your eval. I can almost always tell what is your next move

Asterixk: i see, interesting but thats another rabithole maybe harder than chaining bytemasks

XeroOl: does having a large hardcoded neural network that does all the heuristics count as obfuscation?

AntiSquid: better ask staff, doubt it makes sense to call it obfuscating

XeroOl: where the entire code is a giant array of mystery numbers

Westicles: Obfuscating is pretty vague. I had a contribution rejected, they said I obfuscated the solution by using single-space indents

Zenoscave: euler why do you only use 50ms?

reCurse: Obfuscating usually means extreme examples where the code is literally unreadable

AntiSquid: NNs are definitely not considered obfuscation since there were NN in past contests, so why would webasm be ?

reCurse: For example, encoding an executable binary

UndercoverToad: because I want to refactor that part anyways

miszu: like people's code without unit testing :D

struct: basicly my code

Zenoscave: gotcha

miszu: *miszu got kicked out *

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


AntiSquid: just add few comments to explain the code for readability Asterixk

reCurse: Webasm would fall under that

reCurse: Most forms of code transformation would fall under that

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


Noyotens: what is this

Noyotens: error

UndercoverToad: you have to wait a few minutes

reCurse: Or a few hours

Noyotens: ok

Noyotens: soooo

UndercoverToad: and then you should play less games not to get it again

Asterixk: yeah that's a bit farfetched just for bitboarding concerns

AntiSquid: about an hour for me each time, min

ddreams: is that IDE plays?

UndercoverToad: yes

Noyotens: the time is to slow

UndercoverToad: they lowered the limits

reCurse: Isn't that increased

reCurse: Philosophical :thinking:

UndercoverToad: lowered number of plays allowed

struct: already 790 in gold

ZarthaxX: wtf

UndercoverToad: we are an inclusive community now

Westicles: Pretty good streamer on. He's in gold with 350 lines of python.

ZarthaxX: oh nice

Whatar: HexTree is a cool guy

Whatar: what do you think Automatonn2000

jacek: UndercoverToad not more 5% eh

Smelk: Hello!

UndercoverToad: 5% of what?

Smelk: My code got reset when switching to gold :( Is there a way to get back the current submitted version?

struct: yes

struct: click history on the left

Smelk: Ooh perfect, thank you very much!

Chainman: wait how does the timeout work?

UndercoverToad: you are slow, you lose the game

Chainman: lol

Chainman: I mean I'm getting 2-3 seconds for an entire day I think. but it doesn't timeout?

jacek: huh?

Kafeine: 100ms per turn

UndercoverToad: start the timer after reading the first line of input

Chainman: at the start of the day?

Chainman: 1000 ms per day?

UndercoverToad: for each turn

Kafeine: 1st input start of timer for the turn

Chainman: oops

Kafeine: 100ms per turn

Chainman: nvm 1000ms is for first turn

alchemsti: I saw multiple statements that top 10 "Typescript guy" is heuristics. How do we know that?

XeroOl: because it's typescript lol

UndercoverToad: because he confirmed that here on chat

jacek: you can see others's code by pressint alt+F4

XeroOl: please don't, lol

UndercoverToad: grow up jacek

UndercoverToad: to a size 3 tree

UndercoverToad: and then complete yourself

jacek: not enough sun points

Chainman: okay getting 43 ms for a turn now

Chainman: looks like the turn before it times out it is 96 ms

Chainman: I can't print after it passes 100ms to see how much it went over?

jacek: no it will timeout before that

reCurse: Would be a nice feature but no

jacek: sometimes you can get lucky and it can be 5-10% over 100ms

Chainman: crap, will need more messy debug to see how much it goes over 100ms

Chainman: But this is unforunate cause my beam search is depth=1 and width=1 I think. I did something wrong.

Chainman: nvm it was depth=2, it passes at depth=1.

Chainman: too slow

sprkrd: Unless you've written an extremely efficient sim, using bitwise operations and all that, it can get easily over 100ms even with depth 1

sprkrd: Depth 1 is actually depth 2 because moves are simultaneous, so you have to simulate |A|x|A| transitions (being |A| the average number of actions per player)

sprkrd: Unless you effectively mean depth = 1 is half a movement :)

Chainman: yes depth=1 is like depth=2

Chainman: for my algo

Chainman: so it is really good at depth=2 technically at like 3 ms

Chainman: but as soon I go to depth=3, it times out at day 8

sprkrd: That sounds about right. That's when the number of actions grow too large. At the start is just a few actions per turn (most turns will be only the WAIT action)

Zenoscave: sprkrd many players assume opponent is a WAIT only bot

UndercoverToad: but the opponent is mean and doesn't just WAIT

orangesnowfox: tfw I just gave up on the compo and am doing random bots

UndercoverToad: can I get another opponent please?

Zenoscave: lol toad

Zenoscave: I think the matchmaking knows when I feel good about my submit and decides to rek it

ZarthaxX: i like your hypothesis

Default avatar.png GamingBob: I agree wholeheartedly.

dbdr: good thing with gold: smaller league to climb bad thing with gold: I play Mazelcop on match 1

Mazelcop: :D

UndercoverToad: mazel tov

UndercoverToad: i got the round orange fruit

UndercoverToad: or is it a ball?

dbdr: ping ponb maybe

Default avatar.png Xezs2774: hi

Default avatar.png Xezs2774: how long you guys been here

AntiSquid: too long

Queuebee: (reaction to msgs from 1 h back) you talked about heuristic solutions being in legend, would that be without any simulation? Or just like a one-turn look ahead

AntiSquid: maybe 1 turn look ahead is plenty

Kuraishi: Can you complete a dormant tree?

pmor: no

orangesnowfox: It's... Dormant

Kuraishi: ty

Default avatar.png DamianS6: Guys, I've made it to the silver with simple if/else bot, I could try improving it but I doubt I'd get to the gold anyway and simulations and algorithms you're all talking about seem to be cooler :wink: How can I begin with some AI algorithms? Do you maybe know some simple tutorial I could make use of here? I've never done it, I did some googling but it doesn't seem so simple to learn it in 2-3 days... I code in python if it matters

jacek: :thinking_face:

gmessier: Maybe try: https://www.codingame.com/learn

jacek: people here use something called beam search

Westicles: people here write crazy fast optimized code, but python is like, what, 20x slower than the good ones?

Counterbalance: DamianS6 I'd stick with heuristics for now if I were you - that's enough to get gold, which would be a good achievement for a first contest.

King_Coda: *sigh*

King_Coda: ugh

King_Coda: I hate people sometimes

King_Coda: How's everyone doing with the contest

WolfDarrigan: Being optimistic, but not optimized and as such holding up the bottom of Bronze

Westicles: Top4 is all French and US. All other countries are doing terrible

dbdr: Westicles top 4 has max 4 countries

Counterbalance: :joy:

dbdr: Top4 is all French and HU. All other countries are doing terrible

Uljahn: Top1 is Java. All other languages are doing terrible

dbdr: :D

Marchete: I'm ashamed of 2nd and 4rd

dbdr: Marchete?

Marchete: *3rd :D

Marchete: just quit dbdr

Marchete: you are 4th

Astrobytes: 3rst or 4rd, make yer mind up

Marchete: you dishonored your country

dbdr: #5 -> #ragequit

dbdr: wait

Marchete: according to westicle_s it's the same

Marchete: also france has 2500 players

Astrobytes: How many playing in total?

Marchete: 6343

Astrobytes: Not bad.

Astrobytes: Oh siman incoming

Marchete: hungary 92 -> 3 top50

Marchete: 1 top 10

Astrobytes: :D

Marchete: japan 400 -> 9 top 50

NinjaDoggy: woah java first :open_mouth:

Marchete: :D

Marchete: nice

Astrobytes: Yeah, the Japanese guys have really gone in hard the last few competitions!

Marchete: 11th typescript, impressive too

Westicles: CG started advertising on used underwear vending machines

dbdr: #16 perl

Astrobytes: What contest was the chokuda i search used on initially? The one that was really popular on jp twitter

dbdr: pacman I think

DomiKo: HS

Astrobytes: Hypersonic? Recently?

BrunoFelthes: GO GO Java

jacek: or java java go?

Astrobytes: Gabba Gabba Hey?

Marchete: the referee auto pass a day when players only have WAIT moves and still not oppIsWaiting?

VizGhar: yes... it only says, that you have more actions available then him

VizGhar: you can be as**** during those moves :D

jacek: oO

Marchete: WAIT GROW

Astrobytes: Just don't give your opponent head right VizGhar :rofl:

Marchete: asleep WAIT <--- This is just skipped or not?

VizGhar: right :D

Marchete: if one player is asleep and the other only have a WAIT as possible

Marchete: ahh

Astrobytes: that ends the day

Default avatar.png xkral-tr: hi

Marchete: but the referee auto do that, or it expects the last WAIT?

Astrobytes: ask struct

Marchete: struct

struct: yes?

Marchete: about asleep and WAITs

Marchete: turn N0: WAIT GROW

struct: I dont know

Marchete: ahh OK

struct: it probably waits for wait

Default avatar.png Gedzius: "The sun's direction will therefore always be equal to the current day modulo 6." does anyone know what this means in simpler terms ?

Marchete: day%6

Default avatar.png Gedzius: ophhhh

Astrobytes: current day % 6

Default avatar.png Gedzius: im retarded

Default avatar.png Gedzius: ok thanks

Astrobytes: argh, I am too slow

HackingHues: wait do trees in shadows still earn sun points...

jacek: no oO

AlMualem: to my understanding no

pmor: only if they are larger than the tree castin gthe shadow

AlMualem: guys,whats the big difference between bronze and silver regarding the rules?

HackingHues: ah that makes logical sense. Is it the full sun points of size minus shadow size

Wontonimo: none

pmor: same rules

Marchete: ok I think I have the problem in my state, the asleep player has no idea what's going on

Wontonimo: just harder opponent bots

AlMualem: so,just the bot becomes better...

Marchete: but as the referee isn't sending me the state is expected

Marchete: why did they do that?

AlMualem: so i have to come up with a better strategy....ok...thanks guys! <3

Marchete: if I can't do anything just send the gamestate with "asleep" or whatever

Wontonimo: AlMualem, the upside of being in Gold is that your bot won't get pulled down by a crazy loss to a super weak bot, because there arn't any

Marchete: I'm bottom gold

Marchete: so I can't do worse

Wontonimo: best place to try out new stuff

Counterbalance: yeah referee sends 1 legal action WAIT

Skril: https://www.codingame.com/replay/553519906 frame 60, really wanted a seed there :-)

ddreams: spam seeding

Marchete: game of acorns

ddreams: nice bot skril

ddreams: what are the numbers you're saying?

ddreams: thought the first was turn/day or something, but no

Marchete: cthulhu invocation

CouscousAgha: what's the % of gold players that will advance to legend?

Marchete: 14

VizGhar: very very small

CouscousAgha: top 14%?

Marchete: top 14

Skril: ddreams tahnks :-) in arena it's count of bad opponent prediction/turn, in this replay it's incomes

Marchete: it's usually really small

Marchete: 20 players at first

Marchete: then it starts growing

Marchete: to aroun 80 - 100 players

CouscousAgha: and if u get to legend u cant demote to gold?

ddreams: I see

Marchete: no demote

Skril: then number of days simulated and depth

Marchete: you can even crash your bot, you are a legend

CouscousAgha: my goal is to get to legend without any sims

CouscousAgha: just a heuristic

Marchete: you need to go top 40

CouscousAgha: that's gonna be the challenge

VizGhar: well gl then

VizGhar: i believe impossible

King_Coda: hhhh

King_Coda: Do you ever just get on a roll with coding, then suddenly just lose the will to do anything

King_Coda: I was doing great until suddenly I guess I just aren't anymore

Whiskee: coding is a continuous swing between feeling like a god and feeling like a moron, yes

KCrown: they must have just expanded gold

CouscousAgha: btw why my lvl is stuck at 4?

Marchete: 99% moron here

King_Coda: Ugh, everything just feels gray now

King_Coda: I need a more reliable distraction

King_Coda: I know, I'll just go make a webpage

King_Coda: Only 10% of codingamers actually do CoCs

Marchete: nah, this sim is not working :unamused:

Marchete: I can sim 1 turn, but if at turn 0 I want to sim until endgame, I don't get the same final state

NinjaDoggy: O.o

NinjaDoggy: wait how...

CouscousAgha: anyone can tell me how to I unstuck my account lvl

CouscousAgha: it's been lvl 4 for ages

Default avatar.png CameronWatt: what bitwise/logical operator makes two values of false, true?

Marchete: predefined moves

Marchete: If I know what move to pick on both players

Default avatar.png Weirdo1_1: Hello Everone

WolfDarrigan: nand?

Marchete: In theory I can sim all

Marchete: it's just for simtesting

NinjaDoggy: @CouscousAgha you gain exp by completing puzzles in practice or getting to higher leagues in contests

Default avatar.png CameronWatt: interesting yeah

Westicles: nor

Default avatar.png CameronWatt: nor is closer yep

Default avatar.png CameronWatt: thanks guys

CouscousAgha: even if im 111/111 xp i should do an achievement?

NinjaDoggy: also level doesn't really matter :/

NinjaDoggy: just do contests :)

AntiSquid: YES! Got Captchas! Now the real game begins!

Westicles: I am best at the tractors

reCurse: Should do clash of captchas as a new game mode

Default avatar.png CameronWatt: LOL

NinjaDoggy: :O reCurse is here to chat :O

Nerchio: ashelkov must be a magician with typescript in top10

NinjaDoggy: or is he secretly winning the contest again :thinking:

reCurse: I'm mostly just shitposting

reCurse: Helpful at times

NinjaDoggy: nice nice

reCurse: (I hope)

dreadylein: this was google recaptcha ?

Astrobytes: Spamming submits

Default avatar.png CameronWatt: ive attempted to write selenium code that clicks recaptchas... didn't work so well

dreadylein: you need to set the dom values back to the values they had when it wasnt automated

reCurse: So much effort to save a few cents an hour

dreadylein: eh captchas are fun :)

dreadylein: aside of that, you aint wrong :P

XeroOl: screw heuristics, it's hardcoding time :)

[CG]Thibaud: +1

AntiSquid: what's the difference ?

dbdr: are you playing [CG]Thibaud?

reCurse: The only way this makes sense is if you're hardcoding perfect play

[CG]Thibaud: yeah I decided I didn't want to stay in Bronze

XeroOl: @reCurse, I'm hardcoding in somewhat-decent play for the first 5 or so days

reCurse: Then that's just a heuristic

miszu: I like how there is repulsion of being in bronze

[CG]Thibaud: but I do the minimum. No classes, no computing of shadows

King_Coda: I'm just glad that 14 year old girls aren't hitting on anyone in chat

KCrown: FBI!

King_Coda: That was a huge problem a week ago... :frowning:

Nerchio: this man right here

Marchete: wth I'm always off by 2,2 suns

Marchete: on a full rollout

King_Coda: SO many 14 year old girls

Marchete: I think it's because these 2 suns at start...

miszu: wait what? What 14 years old girl?

King_Coda: :worried: i'll never understand them

XeroOl: on codingame?

XeroOl: that happens?

Marchete: nvm, it's not always 2 suns :S

King_Coda: They came into chat a week ago and started hitting on everyone

King_Coda: yeah on codingame

King_Coda: It was reaaaaallly weird

King_Coda: It got so bad that I had to send screenshots to the community manager

AntiSquid: ya well do you think any girls come here and do that ?

miszu: how bad was it?

AntiSquid: you don't know who's on the other side of the line

reCurse: A dog

Default avatar.png CameronWatt: that is weird

King_Coda: AntiSquid

reCurse: It's always a dog

AntiSquid: always a dog

King_Coda: They were girls, i can assure you

miszu: "I have no idea what I'm doing" meme dog

King_Coda: They all seemed to target me for whatever reason

King_Coda: I guess it's because I'm the closest to their age range

Default avatar.png CameronWatt: anyone have other website favorites to practice code

AntiSquid: your orange K avatar stands out King_Coda

VizGhar: big brain time

AntiSquid: seriously i would be suspicious of such things and so should be you, might be some weirdo

VizGhar: like that kitkat user :D

icecream17: woah, my code is 207th?

reCurse: You think someone would just log on chat and spread lies

pmor: the internet is where the boys are men, the men are boys, and girls are fbi agents.

VizGhar: lol nice one

Hugo-NL: and where women are always whores?

reCurse: This devolved in 3 lines

reCurse: Get your shit together guys

reCurse: Jesus

King_Coda: Wow that happened

King_Coda: They all invited me into discord calls, so I can assure you they were women

VizGhar: yup that was over line

Astrobytes: WTF have I just come back to

AntiSquid: :thinking:

King_Coda: And yes, we used video chat

AntiSquid: like honeypot for something ?

King_Coda: They wouldn't shut the hell up about it

King_Coda: I just ended up blocking them :/

AntiSquid: :thinking: they weren't your alts were they?

King_Coda: LOL

King_Coda: No Squid

AntiSquid: ok i trust you

Westicles: You spent like 10 days counting down to your supposed 16 birthday. What did you expect?

King_Coda: HEY

King_Coda: It was only 2 days

King_Coda: :unamused:

VizGhar: https://pics.me.me/cmon-son-rule-number-one-never-trust-anybody-rule-number-15259561.png

Astrobytes: Every day I log into this webchat my opinion of it worsens.

AntiSquid: what you just type your age in chat and then women from same age start hitting on you? is that how it works?

reCurse: Careful of underflow

Illedan: Word Astrobytes

NinjaDoggy: recurse :joy:

King_Coda: I guess so AntiSquid?

reCurse: I'm only here because there's usually more adults during contests

ClockSort: i experienced some antigravity... went from 200-th place Silver into Gold division without changing the code

reCurse: After contest I'm out of here

reCurse: Mood got better after I stopped reading some of this

Astrobytes: reCurse: it's ridiculous dude

NinjaDoggy: LOL

KCrown: next challenge will be to write a 14 year old girl chat bot

King_Coda: LOL

AntiSquid: hey i am 20 and my birthday is tomorrow

miszu: I feel old now

Default avatar.png CameronWatt: time to drink until you sink

King_Coda: Squid, NO

King_Coda: You don't want to experience the horrors I did

NinjaDoggy: sry if asked already but why aren't you competing in this contest reCurse? :sweat_smile:

Illedan: Anyone did NLP in C#?

ClockSort: recurse is competing of course ;)

reCurse: My new policy is to only answer contest-related questions after contest

Astrobytes: Hah

King_Coda: I think there just happened to be a bunch of lonely teenagers in chat last week, and I just happened to be there

Marchete: then he is contesting :D

Westicles: He's doing a NN and he's gonna come in 2nd

reCurse: Let me correct your logic

reCurse: In order for me to maintain non-commital option

AntiSquid: why are you looking for c# NLP ?

reCurse: I need to remain exactly vague every contest

reCurse: e.g. I was just as active during OOC and didn't participate

Marchete: or just say "I don't f*cking about the contest, don't even try to ask me again"

Marchete: it's more subtle

NinjaDoggy: lmao

reCurse: No, because I don't like lying

Marchete: care*

Illedan: I should do the same to not burn out the first weekend on nonesense

Marchete: ahh

King_Coda: This chat makes me tired

reCurse: So if I participate and say I don't, then it's a lie

miszu: so say maybe

King_Coda: I'm going back to making webpages. Hopefully no 14 year olds will bother me there

Default avatar.png ashiknur: see what just happend https://www.codingame.com/replay/553577436

Astrobytes: That's the implication miszu

miszu: maybe I will make legend

Westicles: I love people who won't/can't lie. Usually very easy to read in real life

Westicles: They make that squished up face when they don't know what to say

reCurse: If you assume I never lie you're as easy to read then

miszu: Westicles I think it's more about integrity

Counterbalance: everyone lies all the time

Default avatar.png JBM: just praise the loving

Counterbalance: ;)

AllYourTrees: L Y I N G I S C O O L

Default avatar.png JBM: prove it

Riphiphip: If someone says they never lie, they're probably lying

miszu: try to get a job with intelligence services. They will ask you tough questions while on a lie detector machine.

AllYourTrees: i have nothing to add to this conversation :(

Astrobytes: So will Jeremy Kyle

Astrobytes: <insert shock-daytime-TV-presenter-talk-show-host-here>

Astrobytes: Anyway, I'm going back to other stuff, this chat is wank. Sorry not sorry.

AllYourTrees: bye!

King_Coda: I'm going as well

King_Coda: This chat makes me feel physically ill

King_Coda: try to keep it together tomorrow, okay guys?

AntiSquid: tell us about your experience miszu

miszu: AntiSquid haha. You assumed I had interview with them?

Westicles: The CIA used to recruit engineers heavily. Pay was awful, though.

miszu: yeah the pay for devs are not as good as private companies

miszu: I'll tell you this, I got "lucky" enough that I got interviewed by their head of psychology department.

Westicles: I interviewed, it was all about overseeing private companies making gadgets for them

Marchete: :spy:

AntiSquid: like reversed engineered saucers ?

AntiSquid: sorry. couldn't resist, ya awesome stories

Noyotens: https://www.codingame.com/share-replay/553588881

Noyotens: can

Noyotens: someone

Noyotens: tell

Noyotens: me

Noyotens: where

Noyotens: is

Noyotens: the

pmor: use your spacebar instead of enter.

Noyotens: proplem in my code

Uljahn: Automaton2000: where is the ban hammer?

Automaton2000: well if i wanted to try something else

AntiSquid: hey Noyotens put it all in one line, see what boss does and mimic it i guess

HackingHues: dito do what the boss does. see that the boss doesn't place a seed in any of their current trees neighbors... yours does. likely need to add a little logic to make it a little better.

Lucky30_: what is better: this: [[1,0,-1],[-1,-1,0]] or this: [{x:1,y:0,z:-1},{x:-1,y:-1,z:0}]

Lucky30_: array of arrays for coords

Lucky30_: or

Lucky30_: array of objects

Noyotens: array of array

Lucky30_: why

XeroOl: performance

Lucky30_: great

Lucky30_: thank you

miszu: Lucky30_ arrays are stored next to each other in memory. Objects are stored in different places

miszu: with high probability

Astrobytes: Whenever I do a contest, if I'm in silver I always lose matches against jenthomas88!

Lucky30_: that is cool, thank you for sharing miszu

miszu: I don't think with my current submission I'll break the top 500

VizGhar: werent you already in top 200?

miszu: no never, maybe in silver league

miszu: but now I am with the big boys

VizGhar: oh ok

ClockSort: gold div is huge

ClockSort: 900 people now

miszu: 899

VizGhar: too much

ClockSort: 2100 silver. 2700 bronze. are these ratios typical?

Astrobytes: Now that there are more participants I guess it goes with the territory

AntiSquid: more participants that somehow always pick btter heuristics

Astrobytes: better heuristics than...?

AntiSquid: looking at my 200k node generator and wonder if i should drop it, code in python or something

VizGhar: 200k nodes of what?

Astrobytes: Sadness or Fail I presume.

Marchete: lol

Marchete: epic fail from my part

AntiSquid: very true

KCrown: so once you submit new code ... how long doesit take to reflect in ur rankings approx? after 100% battles?

Marchete: I was using CG node index in some parts

Marchete: == great havok

Astrobytes: in your sim?!

Marchete: yeah

Astrobytes: :D

Marchete: :angry:

Marchete: hours tracking it

Astrobytes: Oh stop moaning and fix it :P

Marchete: it's 1 line

Astrobytes: hehehe, that's even better

Astrobytes: don't worry though, I only got out of Bronze because I fixed my 'src != dest' error for SEEDing

Astrobytes: Oh wait, no. It was src and dest read incorrectly in input.

Astrobytes: Slowww battles

Marchete: REAL ENDGAME:D:23 T:59 SC:37,37 FULLSIM @ T0:D:23 T:63 SC:37,37

Marchete: HASH READ:3989522125276864732 11723273744695159440 ESTIMATED:3989522125276864732 11723273744695159440

Marchete: **feelsgood**

Marchete: I can do a full game sim at turn=0

Marchete: and match in CG IDE

Astrobytes: eyyy nice one

Astrobytes: Now do that several times :P

Marchete: Smits had the sim in 1 day...

Astrobytes: Or did he...

Marchete: I just needed 6

Astrobytes: Did he give up or something btw? Smits that is.

Lucky30_: god you are too far ahead

Astrobytes: God is playing too?

Lucky30_: hhhhh

Lucky30_: god is everywhere

Astrobytes: lol

Marchete: mine it's a pretty basic bot

Marchete: like get all moves

Marchete: all possible moves

Marchete: and do some scoring

Marchete: to see what can be good

Marchete: and setting some limits on each size

Lucky30_: nice

VizGhar: that "some scoring" is scarry

Lucky30_: exactly

Marchete: scoring for me is even without shadow

Astrobytes: Marchete describing any low depth search that ever existed

Lucky30_: you should make a tutorial

Marchete: but you need more then neighbours

Marchete: it's the most basic

Astrobytes: oh sht, distance

VizGhar: Idk when to complete trees

Marchete: try to seed on areas with low neighbours

Astrobytes: and neighbours

Marchete: try to grow trees that block enemy trees and not yours

Marchete: things like that

Marchete: you must start thinking like a tree :D

Lucky30_: start thinking like Marchete

ZarthaxX: lmao

Marchete: that's a good way for heuristics

Marchete: for sim?

Marchete: nah

Marchete: the same sh*t as always

Marchete: tons of sim + a search + eval

Lucky30_: any chance you would make a tutorial

ZarthaxX: hey Marchete guess what

Marchete: no, you'll see real postmortems once it's done

DomiKo: Marchete it's not like always

Marchete: no?

Lucky30_: great

ZarthaxX: guess who had a bug in sim :D

Marchete: sim+search+eval

DomiKo: I would say that it's much harder

Marchete: done

DomiKo: no

Marchete: ok

Lucky30_: i cant wait for this contest to end...

DomiKo: Last time you write something and it work. Now it do nothing.

marksalisbury: Wonder when/if I will be promoted out of Bronze? I'm beating CatBoss (AI), ranked #2 in Bronze...

DomiKo: It's really hard to get something.

Astrobytes: That's the heuristic part

Marchete: but that doesn't invalidate my point

Marchete: tons of sims? check

Marchete: some search algo? check

DomiKo: nahhh

Marchete: some good eval? check

DomiKo: tons of pruning I would say

DomiKo: Java is top1

Astrobytes: based on some -

Lucky30_: what is next Marchete

Marchete: Java is "fast"

Marchete: java is simulating

Astrobytes: It's run on all the devices

AntiSquid: you don't need tons of sims to get higher rank than what you currently have Marchete

Marchete: ofc a good pruning + ideas beat raw power

DomiKo: there is a lot of tricky parts

Marchete: I imagine

Astrobytes: yeah, pruning heuristics + eval heuristics may not be overly similar

Marchete: the idea remains the same

Marchete: change all moves for pruning moves

Marchete: but as TS is at top10 there must be some good way to compete without heavy sim

Marchete: I'm 640th I'm just saying nonsenses anyways

schachmatt: what's the maximum sun/score possible to get in a game?

Default avatar.png JBM: which map?

schachmatt: map?

AntiSquid: ya that's what i said, finding good heuristics march

Default avatar.png JBM: list of cells?

schachmatt: any

theycallmedavid: what is TS?

Astrobytes: TypeScript

VizGhar: tree search

VizGhar: :) Team Speak

Astrobytes: Ticklish Spot

theycallmedavid: :thumbsup:

Astrobytes: (TypeScript for clarity)

alchemsti: Well, the nutrients go down

alchemsti: But the richness bonus always counts

alchemsti: so, there's not really an upper limit on score apart from running out of time

alchemsti: but there are 210 nutrient points to be had

alchemsti: which is what I'd like to factor into my bot next

alchemsti: 'cuz currently I suck at choosing when to harvest

Marchete: https://www.codingame.com/replay/553519906

Marchete: top players almost play the same at first turns

DomiKo: is super easy to calculate that

AntiSquid: guess you can copy the behaviour if you have the hex coordinate system

AntiSquid: like an opening book

AlMualem: do you think a shadow can determine the score? i mean..at some point a tree will be under a shadow..so the point is to have it at the bigger size possible in order to earn the sun points?

KelvinAndHubbles: I mean, no matter whta size a tree it cant completely avoid shadows

AlMualem: yes exactly

AlMualem: so if you manage to have it at the bigger size possible you might be able to collet the sun points

Marchete: make shadows to enemy, not yours

AlMualem: yes...i must take under consideration that too

Marchete: you can't avoid all, but in average you want to try to get more sun than the enemy

Marchete: and that your costs are low too

Marchete: having 5 seeds at a time costs a lot of sun

Marchete: to produce them

AlMualem: the next think i want to try as a strategy is to grow all my trees together...eg..i create 8 seeds and then i get them all 8 at level 1 the i start level 2 etc. what do you think?

WolfDarrigan: Sounds expensive

WolfDarrigan: Would be cheaper to have 1 at size 0, 1 at size 1, one at size 2 and then grow all of them so you don't pay extra

KelvinAndHubbles: yea, stagger the growth since it costs more to grow into a type you have a lot of

AlMualem: hm...you got a point yes...i like what wolf proposed

icecream17: oh, i'm at a high ranking because gold opene

alchemsti: I'm at a lot ranking because gold opened...

alchemsti: ... but I'm in gold ;)

alchemsti: (but very low)

Smelty: wow

Smelty: im in 550 in silver, thus i am bad

Nerchio: i wish the errors were more in your face

Nerchio: when you do illegal action it doesnt flash in your face :D

alchemsti: One weird trick to boost your ranking: hardcode waiting your first turn if you aren't already doing so

miszu: not bad, just room for improvement

alchemsti: (of course, better is have your eval deliver that result....)

miszu: new tries now

miszu: I hope I can break the top 500

HackingHues: lol well you can grow a tree to plant past your immediate neighbor... just makes sense...

cegprakash: http://chat.codingame.com/pastebin/1011f52f-78f2-447b-9544-7fec93755f81

elderlybeginner: guessing what to put into scoring evaluation and a factors is annoying. Is there a general advise how to do it?

KelvinAndHubbles: a lot of guess and check, and you can always play against your boss / already submitted IDE code to see if it's better

elderlybeginner: not much programming in it, not much learing

KelvinAndHubbles: I mean, the more guess and check you do, the easier it is in the future, but yeah, it's a bit of logic and luck

Kukiss: cegprakash internet says that if you omit the 'f' or 'F' the variable will be treated as double ;) At least in C#

cegprakash: but it shouldn't matter much

cegprakash: I added f and it takes from 730 rank to 450 and climbing..

Astrobytes: ...

cegprakash: I cleaned up hard coding code and moved to array and I had no idea what happened to the code as my rank dropped drastically

cegprakash: I fix build errors by adding F

reCurse: Try adding one more f

cegprakash: and i'm climbing 300 ranks

schachmatt: F

cegprakash: I also added an important feature for trash talking.. my rabbit trash talks every turn

Kukiss: I wish I used less integers so I could try this trick

cegprakash: and may be that helped the ranking I don't know if it was the trash talk or the F

reCurse: Definitely the f

ClockSort: question: should I get the same outcome if I press "Replay in Same Conditions"?

reCurse: No

schachmatt: idk the trash talking idea has merit

ClockSort: why not, I'm not using srand

reCurse: Your opponent could, you could have less computing time, etc

ClockSort: of course, I get different number of sims. thanks

schachmatt: ClockSort not if you or your opponent is using any randomness or search with timeout

elderlybeginner: is 'shadow' important factor in scoring actions?

Nerchio: future shadow sure

elderlybeginner: which action is the most influenced by shadow?

Astrobytes: Re-read the statement.

Astrobytes: It's more to do with your sun gains

Astrobytes: etc

elderlybeginner: yes, I understand that. I just cannot find idea to put it in scoring actions

reCurse: Make sure growing a tree doesn't cause shadow on your own? shrug

Astrobytes: Consider turns, sun direction, opp WAIT perhaps

Astrobytes: Idgaf anyway, gn all and cya tomorrow

elderlybeginner: oh, that's simple, just give huge negative factor for seeding in the line of your trees. I am asking what to do with future shadow for complete and grow actions

alchemsti: The value of everything has a strong time component. That's one of the tricky parts of the game

alchemsti: 2 sun is much more important at day 0 than day 23

alchemsti: (generally)

elderlybeginner: yes, kind of future value of an income

Noyotens: guys i want to be in gold plz tell me how

Nerchio: make trees sell trees

elderlybeginner: it's one of the easiest contests to get into gold

Noyotens: Nerchio ur genius

Nerchio: you're welcome

MoMaT: Noyotens, I give you a tactical hint. your best chance to get to gold was when the boss appeared.

Noyotens: what

AlMualem: (mind blown!!!!!)

MoMaT: at that time, many people beat the boss and it doesn't have high true kill score.

AntiSquid: hindsight haha

AlMualem: so the boss get better as more players get better!

MoMaT: now, when best players moved to gold, its harder to be better than the boss. because you also have to be pretty much better than all the other players as well.

MoMaT: it's not better, but it's harder to pass.

struct: the boss does not get better

MoMaT: usually this is most prominent for the gold league boss, because it's hard to make ground breaking improvements there.

elderlybeginner: can some cells on the grid to be consider better exclusively due to theirs positioons, eg. corner cell are better?

MoMaT: but don't worry, you can still get out of silver, but you need to make large improvement, not just tweak a parameter here or there. then you might be placed in the middle of gold straight away.

Noyotens: https://www.codingame.com/replay/553603993

Noyotens: i do this but i am not in gold

MoMaT: it doesn't matter if you can win against the boss. you need to win more against all the other players than the boss does.

elderlybeginner: you are seeding too much and incorrectly

AntiSquid: best way to understand the leaderboard is to experience it yourself

AntiSquid: when you're stuck in silver until under contest you will understand

Mourfette: Noyotens you seed too much, and your trees are neighbors, half of your trees are in the shadow all the time. look at how to place your trees so theyu don't shadow each other, and don't see too much, it costs you a lot for little gain

alchemsti: Ha, tried something new, and moved myself to dead last in my league. Oops

Mourfette: seed*

Noyotens: guys goodbye i am gonna leave spring challenge

AlMualem: :(

Noyotens: :cry:

AlMualem: why mate?

AlMualem: its 4 days yet

Noyotens: this shit boot 'Bossoot'

AlMualem: you play for yourself ,to get better, not to win (at least thats the point for me)

AlMualem: :)

Noyotens: u true but i cant do anything

Noyotens: i try evrything so

therealbeef: try a new algorithm

therealbeef: it's not unusual for people to completely change their approach in the second half

Noyotens: i try all the algorithms in my head

AlMualem: i was thinking how to get to silver for 2 whole days....and last night i thought something completely from what i had thought and by refactoring my code i got to silver in 1 hour :D

alchemsti: Wow, really?

alchemsti: You already calculate shade exactly?

alchemsti: You tried looking more than one move ahead?

AlMualem: completely different*

Noyotens: ok

alchemsti: You tried different ways to value sun vs pts depending on how many days are left?

Noyotens: https://www.codingame.com/replay/553409284

Noyotens: iam gonna try this alghorithm

Noyotens: i am in 67TH on silver

AlMualem: can you exmplain me this algorithm?whats his strategy?

AlMualem: explain*

KelvinAndHubbles: seems like he plants between two enemy trees so that if he levels his own up to level 3 there no matter what he can stop production of both those trees on certain days

AlMualem: hm...i must start taking under consideration what the opponent does

AlMualem: its vital info

KelvinAndHubbles: eh, I mean you can go pretty far without that, you just need to look at where their producing shadows and where their main product are to see how you can counteract that

KelvinAndHubbles: of course, main source generator of a board can very easily change since you just complete a bunch of trees and build on the other side of the board

AlMualem: true dat

AlMualem: thanks mate

AlMualem: https://www.codingame.com/replay/553716855

AlMualem: this is what i do at the moment...i know its not very optimal...but i try whenever i seed to seed closer to the center (because of the points gained) and try to reach 3 tree ready to complete and then start completing in order to gain (at to my thinking) more sun points

Noyotens: https://www.codingame.com/share-replay/553719178

Noyotens: u stole my code

KelvinAndHubbles: yea, thats a good strategy, but look at their supporting tree vs yours. At about 30 frames and till the rest of the game they have 2 tier 2 trees and a tier 1 on the outskirts as opposed to your two. While that does mean every tier 1 they build for completion will cost an extra 1, it's made up for the by the fact that he gets an extra 1 every turn.

KelvinAndHubbles: even more on Noyotens game lmao, you see the supporting trees on the outring difference

AlMualem: @Noyotens haahhahah :D great minds finally meet each other :P

Noyotens: nice to meet u

Noyotens: :crazy:

Noyotens: KelvinAndHubbles

KelvinAndHubbles: yea?

Noyotens: @KelvinAndHubbles can u simplify

KelvinAndHubbles: Basically, look at how he sets up trees outside on his area to always generate sun that don't have conflicting shadows that hurt each other

KelvinAndHubbles: (for your replay that is)

Noyotens: ooooh

KelvinAndHubbles: the boss is just getting insane amoutns of free eco

KelvinAndHubbles: or sun

KelvinAndHubbles: or whatever its called

Noyotens: ok

Noyotens: thanks

AlMualem: we could try seed at the outskirt in the start and then after a point (we need to find which is the optimal one) start seeding towards the center ...does this make sense?

Noyotens: yes

Noyotens: https://www.codingame.com/share-replay/553729222

Noyotens: @KelvinAndHubbles ur the best

Noyotens: thank u soooooooo mush :grinning:

AlMualem: floor is lava at the center?

AlMualem: :P

Noyotens: lol

AlMualem: even you had the chance to seed in the center you didnt

KelvinAndHubbles: lmao I mean I'm like 500 silver, so take my ideas with a grain of salt

KelvinAndHubbles: well, I mean, I was, submitting a better version, but still not gonna be insane :/

AlMualem: do you follow any specific strategy at growing the trees?

Noyotens: im in 90

Noyotens: yes

Noyotens: seed to dump tree

AlMualem: by dump you mean...

Noyotens: big

alchemsti: Man, I cant seem to improve my eval, nor can I get smarter about choosing when to harvest. :/ guess it's time to try Beam Search and hope brute forcing can help

cegprakash: or add trash talking feature like mine

cegprakash: it helps

Noyotens: chose the more rishness trees first

cegprakash: Noyotens he is in gold league

Nerchio: alchemsti spoiler: it doesnt really

Noyotens: no iam in silver:cry:

cegprakash: I meant alchemsti is in gold

alchemsti: ha Nerchio, have you tried using MORE brute force?

alchemsti: I think that's the general solution to brute force not working.

Nerchio: depth is only useful so much when you dont predict your opponent

alchemsti: I am barely in gold

alchemsti: I think it's also useful at the end with harvesting

alchemsti: and I have a plan for predicting my opponent

alchemsti: But it means a pretty big change to entire code

alchemsti: So depressing seeing that first row of "#2" come down :<

FerrusDude: word :/

Whiskee: went from 700 to 200ish gold because I realized after hours that a plus should have been a minus

Whiskee: I'll just--

Whiskee: sigh

FerrusDude: but you found it before end of contest

FerrusDude: :thumbsup:

AlMualem: when magic meets depression = codind

alchemsti: yeah, I would like to find that one weird trick :D

AlMualem: coding*

alchemsti: That's a huge jump

Whiskee: I feel like very subtle changes (yeah a wrong operator isn't subtle) make a huge difference compared to the last contest though

FerrusDude: I agree

FerrusDude: Per usual, I got to silver before I really ironed out my strategy.

alchemsti: Yes. I find most of my boards start out the same

FerrusDude: :think:

Whiskee: debugging the potions in fall 2020 was just a nightmare, it was too difficult at every stage to "see" how close you were to completion

miszu: 351st in gold. Making some nice progress

Whiskee: as a human watching a replay I mean

iggy12345: is anybody else using minimax with pruning and have some tips as to what to use for alpha and beta?

iggy12345: for the contesty

Nerchio: i just saw people say its more difficult to use minmax in simultaneous games

Nerchio: but dont know much about it :

iggy12345: does the number of players increase from 2?

Nerchio: no

iggy12345: what do you mean by simultaneous?

Nerchio: you make moves at the same time

iggy12345: ohh, it can be, but with a good simulation system it's not too bad

iggy12345: tho I guess I haven't gotten mine working yet, I just got my actual system working

iggy12345: the biggest issue I had was recursion depth and the fact that the first few turns don't actually yield any points

Nerchio: yeah true well states need to be judged by something more than points for sure

Noyotens: i have the best trick

iggy12345: oh?

Default avatar.png erich0123: haskell is awesome

Grillaume: is it good 115 gold without simulating ?

KelvinAndHubbles: do you think it's good?

miszu: I am 350 without sims

Zenoscave: Just basic scoring?

Zenoscave: what do you guys use for scoring components?

Grillaume: I'm wondering what the top 100 is doing basically

miszu: most of them sims

miszu: some do like us

Zenoscave: I think most are sim

Default avatar.png JerryRat: you're bad apple

Grillaume: well thx

Wontonimo: Grillaume, being 115 gold with just if/else is great. Be proud

iggy12345: I was thinking about tyrying to map the entire gamespace for the contest, but with only 4 days left, I'm not sure it's worth it

Zenoscave: That's probably not an easy task as you think

iggy12345: it's just minimax, but with the maximum recursion depth

Zenoscave: a rough estimate would be 10^100

iggy12345: psh

Zenoscave: posible states for one starting position

Zenoscave: on one game board

iggy12345: oof, I forgot about the randomized start and the tiles

iggy12345: hmm

Zenoscave: yeah... plus that only is if there are 10 possibles moves on each of 100 turns

Zenoscave: I've seen move lists up to 80

Zenoscave: and 140 length gmaes

Lucky30_: how many possible diagonal set are there.. 3 ?..

iggy12345: well, you could just use the base map and then use a search tree based on the current map

PatrickMcGinnisII: golds open eh

Zenoscave: so a reasonable upper max would be. 80^140 * 18c4

iggy12345: psh, I could do it

Zenoscave: 80^140 * 18c4 * (16c3 + 16c12 + 16)

Zenoscave: that's my best upper bound

iggy12345: I'm working on a project like that for reversi right now

Noyotens:

struct: are you playing othello here?

Noyotens: tt

iggy12345: you just gotta do BFS and flush things out of memory when you're done with them

iggy12345: yeah, well, I'm not playing it right now, right now I'm coding

iggy12345: but I have a project similar to what I'm talking about

iggy12345: https://github.com/iggy12345/reversi_walker

struct: yeah but there is othello on cg

Zenoscave: 1.537792e+272

Zenoscave: that's about how many states I suspect max

struct: I saw that number before :thinking:

Zenoscave: 140 turns branch factor of 80 max and ~.56M starting positions

Zenoscave: of course symetry of starting positions is not accounted

Lucky30_: can anyone help? how many possible diagonal sets are there.. 3 ?

iggy12345: I mean you could do something like deep blue where you do a combination of minimax with pruning and static analysis

iggy12345: lucky, what do you mean by diagonal sets?

iggy12345: the symmetry for this would be 1/6

Zenoscave: yeah iggy12345 without massive prunning that would take 9.512938e+254 years

Zenoscave: and isn't heat death of the universe around1e10 years

Zenoscave: that time is if you could solve a state in a single cpu cycle btw

Lucky30_: iggy12345 cells where you could put your trees without them shadowing eachother..

iggy12345: oh, I'm actually using that right now

Zenoscave: Lucky30_ 3

Zenoscave: yes

iggy12345: 28, 25, 22, 19, 34, 31, 16, 12, 8, 10, 18, 14, 0

iggy12345: those are the indexes of diagonal cells

iggy12345: for trees up to size 2

Default avatar.png Greg_3141: Why do I need to wait 45 minutes to be promoted to Silver?

Lucky30_: but what about cellIndex 6....

iggy12345: greg, because you're too op and are being nerfed

Lucky30_: and 17

iggy12345: 6 is shadowed by cell 0

Zenoscave: Lucky30_ that's one of the 3 sets

iggy12345: 17 is also shadowed by cell 0

Lucky30_: ow sorry i did not see your first comment.. thanks Zenoscave

Zenoscave: yup

Lucky30_: iggy12345 17 belongs to another set.. and 6 belongs to a thired set

Default avatar.png Greg_3141: At what league do people stop using anything other than C/++ and Rust?

Zenoscave: no league

iggy12345: greg, the top participants are almost all C++ right now

Zenoscave: there's a typescript in top 20

Default avatar.png Greg_3141: surprising

Zenoscave: 26 /27 are python and perl

iggy12345: yeee

Default avatar.png SnappleLevi: my main account is third in south america acutally

Lucky30_: javascript is nowhere to be found

iggy12345: as it should be

Lucky30_: nooo

Lucky30_: js for life

iggy12345: *vomits*

Lucky30_: noooo

iggy12345: python for life

iggy12345: C for life

Zenoscave: tools for the jobs they're good at for life.

Lucky30_: js for life

Lucky30_: hhhhhh

Lucky30_: Zenoscave you win

FerrusDude: hehehe Zenocave

Lucky30_: iggy12345 you lose

Lucky30_: :p

FerrusDude: Rust is fun.

Default avatar.png Greg_3141: yeah it'

iggy12345: Lucky30_ you lose too

FerrusDude: I JS all day.

Default avatar.png Greg_3141: it's pretty nice

iggy12345: :p

Lucky30_: js in super fun

Lucky30_: iggy12345 nooo

ZarthaxX: Zenoscave pewpew

Zenoscave: pewpew Zarthie

struct: ValGrowth won coder one and is already top 20 here o.o

Zenoscave: He's a formidibble player for sure

Lucky30_: no worries, in 10 or 20 years, i will kick his a**

Lucky30_: *all your a**s

Zenoscave: If th site still exists then

Noyotens: https://www.codingame.com/share-replay/553761238

Noyotens: submit//

Noyotens: ???

ZarthaxX: wtffff

ZarthaxX: what does he do it

Noyotens: what

ZarthaxX: how*

Noyotens: easy :sunglasses:

struct: need more games

ZarthaxX: howdy zeno

Lucky30_: *15 or 25 years

struct: need more sims

Zenoscave: hiya zarthie

Zenoscave: Already said pewpew

ZarthaxX: i said howdy

ZarthaxX: not hi

Zenoscave: what's the difference

ZarthaxX: how are you doing

Zenoscave: :thinking:

ZarthaxX: in my world :P

Smelty: reeeeeee i can't think of anything to improve my bot

ZarthaxX: i will go to eat now anyway, will come back laterhaha

Zenoscave: I'm doing good. Just trying to optim a bit before tomorrow for eval improvement

AllYourTrees: have you tried translating to python yet?

ZarthaxX: im trying eval here

ZarthaxX: struggling

ZarthaxX: :(

AllYourTrees: its the fastest language

Zenoscave: As a wrapper perhaps

iggy12345: Smelty have you thought about mapping the game space and training a neural net?

iggy12345: then it would be a real bot

AllYourTrees: oooh good one

Smelty: well for that i would rewrite my whole code

Smelty: hmm

AllYourTrees: have you tried big data yet?

Zenoscave: Nice joke iggy12345

iggy12345: I try

Smelty: o.o

struct: I only need to work on eval aswell

struct: my sim is fast enough I think

Zenoscave: knowning you, probably ;)

iggy12345: alright, I'm gonna head to bed

iggy12345: goodnight guys

AlMualem: good night man!

Smelty: gn

Zandy156: https://www.codingame.com/replay/553765459

Zandy156: What do you think went wrong here Struct?

AlMualem: Noyotens i am still struggling with silver....right now i seed after make my 2 first trees level 2...then i seed three times towards the center (the rest of the seeds are at the outskirts) and whenever i reach 3 leve 3 trees i start completing them until i get to 1 an so it goes on....any thoughts?

Zenoscave: AlMualem too hardcoded. It'll be better to see which moves make sense at the time

Noyotens: i am still in silver too

struct: Zandy156 what do you mean?

Noyotens: https://www.codingame.com/share-replay/553769123

AlMualem: Zenoscave,and the factor for the "best" move would be...the sun direction,sun points consumption,opponent's indexes...what am i missing?

Smelty: hmm

Smelty: Noyotens oof

miszu: struct how's your bot going?

miszu: I am catching you ;)

struct: Just wait until I make the eval ;)

Smelty: o.O

Noyotens: where is typescript guys

struct: should be in the list

Smelty: hmmm yes

struct: but good job so far miszu

ClockSort: woooot I just had a breakthrough

struct: which algo are you using?

Smelty: congrats clock

miszu: struct the mighty if/else

Smelty: yes.

Smelty: i am using scoring + if/else

Smelty: no sim though

struct: :grimacing:

miszu: having the good eval function + magic threshold values + changing eval depending on which day # will be the key

Smelty: my ai is a noob :(

LLG: it seems there are a lot of if/else bots in high gold

Smelty: hm.

LLG: meanwhile my beam search is still stuck in mid silver because my eval is garbage

Default avatar.png Step_Bro: Anybody else had the issue of their input function reading their output?

Smelty: and my scoring if/else is stuck in 5--

Smelty: *500

Glucozen: LLG hey ! i'm not alone lol

miszu: Smelty figure out what wrong moves you are doing

Smelty: yep

Smelty: trying to

Smelty: also i have 0 problems with running out of time; my current scoring system uses ~1 millisecond

Glucozen: someone have tips for making good evla ? i'm beginner :p

Smelty: first if/else then eval

Glucozen: first if/else ?

Smelty: so my eval is kinda

ClockSort: i've been working on monte carlo, first I have ever built... it took all weekend just to make it work -- silver opened and it was stuck in bronze! but now and a small change in the rollout just boosted it from ~800th gold to ~300th gold. Feels great to see MC in action :)

Smelty: first decide which action is best, then score each type of that action then find the best one

Smelty: it saves time

XeroOl: MCTS or just plain MC? @ClockSort

XeroOl: that's really cool

Smelty: owo

Smelty: hey xero you got to gold?

XeroOl: Nope lol

XeroOl: still in silver

Smelty: same xD

Smelty: i am in top 20%

XeroOl: I've switched to a sim though

Smelty: but cant seem to get up

ClockSort: @XeroOl just plain MC, i take the root node and do MC on both player's actions, applying them together, then rollout and just update for those initial moves.

XeroOl: have'nt submitted a sim

ClockSort: no tree.

XeroOl: but I have 90% of a simulation working

Smelty: so mc not mcts

XeroOl: that's really cool @clockSort

XeroOl: they said MC in their posts, I was the one who asked

ClockSort: yeah it's just MC. and it's now 217th Gold. crazy

Smelty: new sub which delays selling trees seems to be boosting me

Smelty: still battling but in 373 as opposed to the old sub, 500

XeroOl: @Smelty I'm literally at the middle of silver right now

XeroOl: 1025

Smelty: F

Smelty: i used to be around there before gold opened

fvla: i'm still stuck making my move generator D:

Smelty: :pain:

fvla: please help

Smelty: :bow:

XeroOl: my Algorithm is REAL bad though

fvla: i'm drowning in bitboards and templates

Smelty: sorry, i dont use bitboards-

fvla: specifically, *variadic* templates

Smelty: wow just increased another 100 ranks

XeroOl: is there a good place to paste some code and share it?

Smelty: if i add something else on top of this, i might have achance-

Smelty: xerool use this:

Smelty: https://pastebin.com/

Smelty: or u can use the codingame auto-pastebin

Smelty: i prefer the pastsebin.com though

Smelty: it has syntax highlighting as well

XeroOl: I thought I saw like a gist.codingame url or something somewhere at some point

XeroOl: syntax highlighting won't help lol

Smelty: lol.

Smelty: i mean itll make it easier for the person you sharing it with

XeroOl: there's no language to highlight in

XeroOl: https://pastebin.com/NLgZcbjg

Smelty: ?

XeroOl: here's my heuristic right now

XeroOl: it's hillarious

Smelty: knai

XeroOl: wait I need the definition of strat lol

Smelty: *lmao

Smelty: so if have much sun then plant middle

Smelty: great logic ya got there

XeroOl: it's like stupid hardcoded

Smelty: lmao

XeroOl: you can see how syntax highlighting wouldn't help

Smelty: i personally just toggle around with stuff and see what it does

Smelty: if it helps a lot, then i keep it lol

XeroOl: it's a couple string processing substitutions away from being valid code

XeroOl: and then I just eval it

XeroOl: anyway, you can tell the logic is bad, so I don't deserve higher than 1/2 of silver

XeroOl: I'm working on a sim right now, not on making this if-else bot any smarter

ClockSort: @XeroOl good idea, you get 100ms, doing some kind of sim seems better than not

ClockSort: top options seem like beam search, MC, and MCTS, based on discussions

XeroOl: right now I'm thinking like a genetic algorithm sort of thing

XeroOl: where I have a list of things to do on each day, and then see what slight mutations to it do

fvla: What's the difference between MC and MCTS?

XeroOl: MC is just monte carlo

XeroOl: so playout based

XeroOl: specifically, random playouts

ClockSort: might think about how to use the if-else you have now to filter out bad options to narrow the search

XeroOl: MCTS is combining MC with a tree search

XeroOl: to start imagining what a competent adversary would do, and plan around their actions

Smelty: w0w

XeroOl: MCTS converges to an optimal solution if given infinite time

Smelty: yes, but it is only given 50ms

Smelty: small issue lol

XeroOl: MC technically doesn't, but who really cares for 100ms

XeroOl: yeah

ClockSort: yes that's very interesting about MCTS, it converges to minimax

XeroOl: MCTS is cool because it's theoretically correct

Smelty: yes theoretically

fvla: alphazero is really cool because it combines MCTS with neural network guessing

XeroOl: when it's a short search space, like 1 day left, it can just solve for optimal play

XeroOl: My understanding is that alphazero uses the neural network for playouts instead of random

XeroOl: but maybe I'm very wrong

fvla: it uses some randomness

XeroOl: interesting

fvla: it uses total randomness at the start

XeroOl: it doesn't

XeroOl: it doesn't re-learn every time it plays

fvla: no, i mean at the start of training

ClockSort: ok, my MC bot just finished its rankings, finishing out around #152 gold. I'm blown away that it actually works :laughing:

fvla: sorry, wasn't clear

XeroOl: yeah

fvla: nice!

XeroOl: MC sounds interesting though

Glucozen: can i ask something ? (beginner question ^^)

fvla: absolutely not

fvla: ...jk.

fvla: Ask away!

Glucozen: sh*t lol

ClockSort: @Glucozen the answer is to use a while loop

XeroOl: do you just do a bunch of random playouts and choose the first move of the best playout?

fvla: we don't welcome any beginner questions here

XeroOl: because that actually sounds like a super easy sim

ClockSort: i guarantee it wasn't super-easy for me, lol

XeroOl: lol

XeroOl: maybe I'll copy you then lol

XeroOl: well, the hard part would be the sim, not the heuristics / search algorithm

XeroOl: you know what I mean?

ClockSort: i basically randomly try moves and play them out, and the ones that play out well I try more often, and eventually i pick the one with the best random playouts.

ClockSort: textbook MC

XeroOl: That's really nice sounding

XeroOl: I might just steal that lol

XeroOl: then the question is just how fast your sim is compared to mine lol

ClockSort: there's a lot of secret sauce around the playouts, because if it's perfectly random then it will favor seeding all over (there are way more seeds possible than other moves)

XeroOl: whenever I eventually finish this

XeroOl: ahh, fair enough

XeroOl: in theory that secret sauce could involve heuristics and stuff too

ClockSort: yep, there's a lot of room for creativity

XeroOl: although the more you hardcode specific heuristics into the sauce, the less emergent behavior you get

fvla: Glucozen, you typing that question?

Glucozen: fvla sorry lol, i'm just wondering, how did you choose betweend MCTS and beamsearch ?

XeroOl: do you simulate enemy moves at all?

XeroOl: MCTS is tough because the players play simultaneously

XeroOl: not that that really matters

fvla: Glucozen I'm using beam search just because I don't trust random simulations to do the work for me

ClockSort: i decided on MCTS because i knew it was good in theory and i'd never written one before... so it would be a good learning experience

Smelty: h m m m

Smelty: interesting

XeroOl: ClockSort do you simulate enemy moves at all?

ClockSort: then i switched from MCTS to MC because the branching factor seemed way too high for the tree to be useful

ClockSort: i was wrong, i think the tree can be useful, you just have to prune it a bit

fvla: If I were to program MCTS, I'd want a neural network behind it

Glucozen: so it's like we want ?

XeroOl: what if you did MC, but each playout was a beam search

XeroOl: !??!?

ClockSort: @XeroOl it would be slower... it's a tradeoff

ClockSort: the power of random bad moves is that you make a lot of them :D

Smelty: wHaT

Smelty: true

XeroOl: ahh right, no heuristic is waaay cheaper

fvla: beam search removes randomness though right?

XeroOl: you could add some randomness back in

fvla: not much i'd think

XeroOl: nevermind then lol

XeroOl: let me actually make a sim before I pretend I'm an expert on sims

fvla: sounds like a good plan

fvla: i have a tested beam search *finally* after two days of work

fvla: it works

ClockSort: I suggest beam search over MC. it took me days to get MC to be useful. I think it's a lot harder to do well with it

fvla: but i have no move generator :(

Glucozen: ClockSort why ? never did MC

XeroOl: I was going to do beam search anyway, because it's a new algorithm to me

XeroOl: I did MC for some other challenge

XeroOl: and MCTS for Ultimate Tic Tac Toe

ClockSort: because the "random" part of the playout makes stupid errors like completing your trees at the start of the game and covering the map with seeds. so it's horrible without the right guidance

Glucozen: :o oki

ClockSort: maybe i'm missing something

XeroOl: and that guidance has to be stupid fast compared to a heuristic, which can be a bit slower

ClockSort: it is supposed to work with randomness, but true randomness wasn't getting the job done for me.

ClockSort: i mean, you can have like 35 ways to seed. so your playouts will be just a wall of seeds. probably not grandmaster level :D

XeroOl: you could randomize the probabilities of each action :)

ClockSort: @XeroOl that's a good start.

XeroOl: like, make it choose a seed rate for early / middle / endgame

XeroOl: still sounds like a lot of effort compared to beam

XeroOl: beam needs a strong heuristic too though

XeroOl: from what I can tell

ClockSort: yeah

ClockSort: maybe DFS is the answer. explore the entire game state during the first 1000ms.

pmor: seeds cause the gamestate to explode in count

pmor: i'm running into that problem now :(

Smelty: oof

jrke: exactly 1000 in gold

pmor: I can sim about 10 days into the future at the start. Once about 15 trees are in play and i can only sim 1 or 2 days

XeroOl: I wonder if getting a heuristic bot into gold would be a good goal, just to have good heuristics for simming lol

Smelty: Lol

ClockSort: my next step is finish my local simulator so I can locally play modifications of my bot against itself

ClockSort: i calculate it takes 20 minutes to run 100 battles between two versions of bots on my local machine, which should be enough to see which one is better.

XeroOl: and then machine learn an optimal heuristic

Wontonimo: XeroOl I think that would be good. but I'm biased

Zandy156: wow. telling my bot the game ends 3 turns sooner makes it so much better.

XeroOl: lmao zandy

ClockSort: @Zandy156 try telling it that the game ends after 7 days

Zandy156: ok

ClockSort: it will be rank 1

Zandy156: it seemed to do worse if I go under 20 days but honestly way better than it should

ClockSort: wow, it takes 12 seconds to play my bot against itself locally. That's pretty slow. Thanks, 100ms limits. :(

XeroOl: do you know how many sims you can get to on codingame?

XeroOl: it's possible your local computer is faster than codingame's

XeroOl: and the 100ms limits would be different times on your local machine

ClockSort: it seems similar, no pun intended

XeroOl: nice pun

Smelty: lol

Default avatar.png Cjx_1: when you get 404'd </3

Zandy156: 407'd for me

NinjaDoggy: hey ClockSort we're neighbors :D

Smelty: o.O

NinjaDoggy: (on the leader board ._.)

ZarthaxX: lmao

ZarthaxX: *im looking at you*

Smelty: -e-

CharmyRosewolf: I made it to silver league! I think it was the "henlo!" at the end of each action :thinking: And now I sleep. :sleeping:

FerrusDude: :clap:

ClockSort: not for long, ninjadoggy. not for long.

ClockSort: you using a beam search?

XeroOl: rust is not fun to work with

ClockSort: i'm playing my bot against you right now, ninjadoggy.

ClockSort: i lost, 114 to 141. Maybe I need to sort the digits of the scores on day 23.

NinjaDoggy: i'm doing mcts

NinjaDoggy: starting to optimize constants for eval :)

NinjaDoggy: still using 6 random numbers I pulled out of my ass for now lol

ClockSort: i like your output

FerrusDude: rust is ... an acquired taste

FerrusDude: lol

ClockSort: you can see my MC score too

Marchete: MCTS as simulating each even depth?

XeroOl: My code is full of self.'s that would be unnecessary in c++ or java

NinjaDoggy: MCTS without roll out

eulerscheZahl: good morning. I'll give this chat another try

NinjaDoggy: just eval at some depth

NinjaDoggy: morning toad :D

XeroOl: that's not MCTS then?

Marchete: hi eulerscheZahl

XeroOl: that's just TS

ClockSort: h, @eulerscheZahl, gl hf

FerrusDude: rust expects you to consume / destroy / recreate

Kellthazar: Rust is cool

NinjaDoggy: ok true it's technically

NinjaDoggy: UCT tree search :)

ClockSort: lol ninja we both think we're losing in the middlegame

FerrusDude: I really only dislike the Box stuff.

FerrusDude: that's a real migraine

NinjaDoggy: lol pessimistic bots :(

Marchete: each node in your tree is a move or all moves in a day?

NinjaDoggy: each node is a state

NinjaDoggy: moves are per move

Marchete: ok

NinjaDoggy: so some iterations it goes very deep

KCrown: what are some good heuristics to get into legend?

NinjaDoggy: other times it's very shallow XD

Marchete: any kind of hashing?

NinjaDoggy: yea when the game state is identical that's hashed to point to the same node

NinjaDoggy: barely lost any iterations adding hashing with murmur2

NinjaDoggy: and homebrew hashmap

ClockSort: @kcrown so far I've come up with "don't make bad moves"

NinjaDoggy: that's a pretty good one

Zandy156: NinjaDoggy I replayed a game against you 3 times and it jumped back and forth between me losing by 40 and me losing by 10.

NinjaDoggy: my heuristic is "get more points than the opponent"

ClockSort: points, that's interesting.

XeroOl: FerrusDude 50% of my code is "as usize"

ClockSort: I was going for most seeds.

Kellthazar: Yesterday, I was watching a stream that one viewer tell us about his bitboarding representation of the state... My brain has melted...

FerrusDude: hahahaha

FerrusDude: ... yea

NinjaDoggy: Zandy156 yea my bot is pretty inconsistent right now :/

FerrusDude: I tend to keep indexes as usize

XeroOl: makes me want to just not store this in a memory efficient waty

FerrusDude: not mem efficient, but so much easier

XeroOl: usize for 0..37 feels so dumb

FerrusDude: it's the indexing method

XeroOl: I wonder if I can just add a trait at the top to make the problem go away

FerrusDude: I don't pretend to fully understand the compiler team, but it has something to do with matching the mem location

KCrown: Ive ran out if ideas. The last set of changes I made dropped me a few ranks ...

XeroOl: like impl U8Index for Vec<T>

XeroOl: and make a trait

FerrusDude: :thinking:

XeroOl: or I guess operator overloading already has a trait?

XeroOl: I dunno how rust works

NinjaDoggy: ok new update to my bot, now it no longer cares how much it wins by :D

NinjaDoggy: hopefully this is actually an improvement XD

Zandy156: how did it care before?

NinjaDoggy: at some ending state i used to have the reward be difference in scores

KCrown: he was being nice ...

NinjaDoggy: now it's just 1(win), -1(loss), 0(draw)

FerrusDude: @XeroOl I'd have to see what you were doing, but if the 37 is a constant ... you could `const LIMITER: usize = 37;`

XeroOl: that's not what I mean

FerrusDude: didn

XeroOl: I have indices that refer to a specific tile

FerrusDude: *didn't think so

FerrusDude: right

XeroOl: and the tile's max is 36

FerrusDude: right

XeroOl: so I'd prefer to save that index in a u8

XeroOl: to save memory

FerrusDude: yup.

XeroOl: maybe I should just make a getIndex method that has the as usize inside of it

Default avatar.png Greg_3141: how much memory are you going to save?

FerrusDude: rust wants a cast to usize. heh

KCrown: you may save memory but you are using more computer time

FerrusDude: not much really

XeroOl: as usize costs nothing cpu time

NinjaDoggy: unless you do a bunch of copying saving memory doesn't do much :/

FerrusDude: the usize is a cpu based int that matches the memory sizing

FerrusDude: so 64 on a 64, 32 on a 32

XeroOl: using 8 bytes for something that should fit in a byte is a waste

XeroOl: if my data is 8x bigger, my beam might not fit into the cache

FerrusDude: which is why I personally save index values as usize, and u8 for actual numbers

XeroOl: it could hurt performance a lot

FerrusDude: ah

Default avatar.png Greg_3141: 8x bigger than what?

KCrown: XeroOl 08:49PM using 8 bytes for something that should fit in a byte is a waste of memory but to use U8 in a 64 bit machines makes ur code slower

XeroOl: @Kcrown not for load and store

XeroOl: if i'm doing actual math on them with well defined overflow, then yes

KCrown: even load and stores are 64 bits ...

XeroOl: x86 has byte addressability

XeroOl: you cannot tell me otherwise lol

KCrown: think about the math you need todo on 64 registers that's dealing with 8 bit data ...

XeroOl: there's no math though?

Marchete: pfff only 70k sims

XeroOl: it's converted to usize before any math is happening

pmor: The savings/speedup is when you pack up to 8b vars into a 64b var.

KCrown: depedns on things like data packing and alignment

pmor: 8 8b vars*

KCrown: tehre's no question that you save on memory the question is what is ur trade off I nterms of speed

XeroOl: there's no trade off to be made here

XeroOl: zero extending a byte is free in assembly

XeroOl: it happens when you load it

pmor: If its in your state, which you end up copying a ton of times, the savings can be significant

XeroOl: the compiler is smart about this

FerrusDude: it really is

pmor: if its something you build once on initialization, then you won't see a benefit

XeroOl: there's not really a reason not to

XeroOl: except for the fact that rust makes it annoying to type every time

FerrusDude: @XeroOl have you thought of using an iterator with enumerator?

XeroOl: No I haven't

XeroOl: I'm not really a rust person

KCrown: thats why someone suggested the use of usize and not U8

Marchete: euler how many sims did you get?

XeroOl: this is the largest rust project I've ever done

FerrusDude: (Vec<_>).iter().enumerate()

XeroOl: and it's only a couple hundred lines

FerrusDude: the iterator is zero cost

FerrusDude: compiles out

XeroOl: I use that when I need to

XeroOl: I'm not quite sure what you mean though

XeroOl: iterating isn't the only thing I'm doing on tiles

XeroOl: but when I do iterate over them, I'm using iter / enumerate when necessary

XeroOl: I really wish we had support for more exotic languages on codingame

XeroOl: so I could try more languages that aren't c++/rust

tomatoes: D

XeroOl: yeah, I guess I should do D for the next comp