Chat:World/2021-05-12
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
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
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
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
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 }
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?
NotSureWhyThisWorks: oh yeah that reminds me on a subject in uni years ago.
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
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?
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.
Dakkad: Wow, thanks boi_led_egg
boi_led_egg: rules say that
Dakkad: That was 3 hours down the drain, because i missed it from the rules!
Dakkad: "Players that are asleep do not receive input."
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.
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: ?
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
Kolo9: do only ~15 people really make it to legend? or just mean in terms of leaderboard today?
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
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)
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
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
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
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
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
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
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
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
actualCoderTrevor: Yeah it wasn't a trivial calculation though. I probably should've focused on simming. Oh well.
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
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
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
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?
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
actualCoderTrevor: That was my feeling as well. It will be good to motivate me to keep working.
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
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
VizGhar: I'm counting just earnings and my beam is cutting down the trees... i don't get it
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/
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
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
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?
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.
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
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.
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
ddreams: I wish I knew
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 ?
actualCoderTrevor: No it's a model kit
UndercoverToad: do that before legend opens dbdr
dbdr: noted
AntiSquid: what do you use it for
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
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 struct
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:
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: struct 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,
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:
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?
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: ddreams 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
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 reCurse 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:
UndercoverToad: that would be distributed codejam Nagatwin
UndercoverToad: it's dead :(
TheBatMan_TM: hey newboi
Nagatwin: That would be awesome tho
Nagatwin: I'm struggling with my beam search :(
lazy_boy: how long you guys have been here?
ddreams: since the beginning of time itself
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
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
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
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
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 :(
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
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*
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 ?
actualCoderTrevor: Noyotens feel free :)
Smelty: in silver
actualCoderTrevor: I just submitted a new bot
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
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: :)
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
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
Smelty: six sun kinda doubles your cost
Noyotens: Wontonimo this well help me a lot thank you
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
**Smelty nods
**Smelty says hi
Smelty: hello!
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!
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
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
Ya_rik: im such a newb at coding I only know basics
actualCoderTrevor: Or you can do some clash of codes if you don't want to invest a lot of time
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 ...
Poostang: hi
Thienu: hey
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
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
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
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?
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 :)
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 :/
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
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
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.
actualCoderTrevor: I've been afraid to make any changes for the last half hour.
ClockSort: what rank are you, @actualcodertrevor?
Michael_Howard: I hadn't submitted for hours because my Arena bot kept kicking my ass, then suddenly, bam.
ClockSort: yeah hold still :D
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
UndercoverToad: hm, that's either Halite or a private contest here on CG
Zenoscave: actualCoderTrevor this isn't the price is right
ddreams: aangairbender error code?
Rolf: new bet : 504 to gold
reCurse: I'm not gonna name anything if you're asking
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
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
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
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
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
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
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
UndercoverToad: which you can get around my importing the SDK manually and not via Maven
mhpd: can we create a custom clash?
mhpd: can we create a custom clash?
mhpd: can we create a custom clash?
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
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
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
Cjx_1: how do ya make our spirits talk?
ddreams: add text after your command
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
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
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
Cjx_1: https://stackoverflow.com/questions/25322531/chess-bitboard-implementation-in-java
ZarthaxX: lol java
struct: :D
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
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
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
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
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
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
Astrobytes: current day % 6
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
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
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
Westicles: nor
CameronWatt: nor is closer yep
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
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
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
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
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
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
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
Counterbalance: ;)
AllYourTrees: L Y I N G I S C O O L
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?
schachmatt: map?
AntiSquid: ya that's what i said, finding good heuristics march
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?
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
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
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
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
Zenoscave: 26 /27 are python and perl
iggy12345: yeee
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.
iggy12345: Lucky30_ you lose too
FerrusDude: I JS all day.
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
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
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
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
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