Chat:World/2020-11-24
linjoehan: what is the turn limit go multis? I fogot the number
rockstar555: hello
rockstar555: Guys
rockstar555: good morning
kavandoctor: hi
JohnCM: hello
miszu: 95th in gold now
miszu: the grind is real
Lysk: where you able to reuse your tree?
miszu: yeah
miszu: but I only get a fraction back
miszu: haven't submit that version yet
miszu: for 13k sims, I get only back 300
miszu: which is expected if you do 13k/81 = 160
JohnCM: gold boss still hard to beat
JohnCM: i tried using some heuristics ppl mentioned, but my code became worse
miszu: isn't vanilla MCTS enough?
JohnCM: so looks like i have to use their heuristics totally with the structure
JohnCM: too lazy to do that
JohnCM: can try
ClockSort: vanilla mcts has no heuristics though? it just measures the endgame state?
miszu: correct
JohnCM: but you need some heuristics
JohnCM: because you don't know future brews
miszu: sorry talking about UTTT :P
ClockSort: oh, that game. brews. :D
ClockSort: i was curious to use vanilla mcts on the brews game, did not try it though
miszu: woudln't make sense I believe
ClockSort: you can build a full simulator and deal brews from the brews deck
miszu: mcts is good for complete turned based state
ClockSort: i built a simulator anyway (outside my engine) just to test its strength
miszu: I need to get rid of vectors in my code
miszu: but I dunno how to handle getAllMoves() from a state
miszu: it returns a vector
miszu: if somehow I could return an array and the size of it
Lysk: hacky but an array where the first value is the index of the last element ( [3, 1, 2, 3, xxxx]
Lysk: (or last value of the array to store some kind of size) or a struct {array of definite size; int size}
Rodrigo_the_coder: the funniest
Rodrigo_the_coder: https://www.youtube.com/watch?v=IrsG4X6KSLE
miszu: yeah that's sounds a good idea... but I dn't like how error prone it can be
miszu: to replace all vectors I need to rewrite all... using lookup table for everything.. sigh
Rodrigo_the_coder: https://www.youtube.com/watch?v=IrsG4X6KSLE
Natorade: wait, what's mtcs mean?
Natorade: er, mcts
Lysk: Monte Carlo Tree Search
miszu: monte carlos tree search
Natorade: ah yeah, ty
miszu: it's an important search algorithm for turned based game
miszu: like checkers
Rodrigo_the_coder: how to win in every challenge
Rodrigo_the_coder: https://www.youtube.com/watch?v=IrsG4X6KSLE
SansPapyrus683: hi
linjoehan: I tried vanilla MCTS with DUCT but my sim was only able to run about 10 games per round, so it failed horribly.
ClockSort: 10 doesn't seem like enough :)
ClockSort: maybe that number is expressed in base 50000?
Rodrigo_the_coder: trigonometry
Q12: Finally!!! I made it into gold, even if it's not part of the contest, I can rest in peace :slight_smile:
Xenoid: Congrats!
Q12: Thanks
NoobCod3: can anybody teach me python?
Rodrigo_the_coder: I am in legend now B-)
JohnCM: woohoo congrats
Rodrigo_the_coder: legend in CSB XD
Rodrigo_the_coder: thanks to a small hardcode thingy
Rodrigo_the_coder: I got legend bcs of my last submit
Rodrigo_the_coder: before going to bed
Uljahn: good job, but legend in csb is the lowest hanging fruit :smiley:
Rodrigo_the_coder: wdym lowest hanging fruit
Uljahn: CSB is a tutorial multi, so CSB gold is equal to bronze in others
PrO_OGrmr: hey why i can't see accepted contributions
PrO_OGrmr: ok
PrO_OGrmr: no change there is only PENDING CONTRIBUTIONS
- confused:
Uljahn: i can clearly choose accepted but the page stalls then :relieved:
mojojojo: Is the cover picture for the Spring Challenge supposed to be related to the problem?
Q12: no
mojojojo: Okay
BoBot: finally, this competition made me Grand master! I had been hovering above top 500 for a while :D
AntiSquid: it kinda is related though
AntiSquid: you throw stuff in the cauldron and brew potions
Q12: Congrats!
ExecuteOrder66: Last one, boys! Good luck to all!
BendedWills: int* hello = &everyone;
dbdr: Illedan, implementing those PMs? :)
Illedan: Hm?
Illedan: nah
dbdr: sub in Witches 2020
Illedan: Didn't like the game :P
Illedan: Just tried to not use depth 30
Illedan: xD
dbdr: better or worse?
Illedan: No idea, game too random
Illedan: :D
Illedan: Also, the random submit I ended delivering was not the best anyway xD
dbdr: last in contest?
Illedan: Yeah
Illedan: Seems worse :O
Illedan: Maybe I'll try with a little adaptive depth
PatrickMcGinnisII: huh, i didn't realize while($n-->1) ; doesn't work because it thinks I'm trying to access a class variable
PatrickMcGinnisII: but while (--$n>1) ; does
PatrickMcGinnisII: wierd
lifetimeLearner007: I see few people are missing from FC2020 leaderboard who were there yesterday. Is this a bug?
dbdr: who?
dbdr: they might have been disqualified
lifetimeLearner007: what's the criteria for disqualification? My rank is slightly better because of this
lifetimeLearner007: who? ->few who I was trying to beat in silver
dbdr: https://www.codingame.com/rules
dbdr: see Article 8: Exclusion
lifetimeLearner007: "Obfuscating your code as well as creating obstacles to its reading and understanding." Does this mean that we can't submit minified JS code?
dbdr: I would say yes
PatrickMcGinnisII: well, beside codegolf
PatrickMcGinnisII: could switch to perl
PatrickMcGinnisII: ;)
lifetimeLearner007: Is there any article which tells us what CG does with all these coe submissions? I mean is our code being analysed for something apart from contest results?
BoBot: they are creating Skynet
lifetimeLearner007: or is some part of the code submissions being reused somewhere else
lifetimeLearner007: haha... sounds scar @BoBot
BoBot: I mean there is literally a game called Skynet here... :eye:
lifetimeLearner007: scary*
BoBot: damn, no illuminati emoji?
BoBot: tbh this eye looks scary enough
lifetimeLearner007: "The eye" "Sauran's eye" :p
lifetimeLearner007: Found this:
lifetimeLearner007: The Participants irrevocably agree that all solutions that they submit to the CodinGame platform during the Contest may be published under GPL v3 license, and they may be made publicly available to anyone through CodinGame at the end of the Contest. However Participants retain ownership of all intellectual and industrial property rights (including moral rights) in and to code they submit to the CodinGame platform during the Contest.
PatrickMcGinnisII: Well if you select to be contacted for jobs lifetimeLearner007 and win a sponsored contest ... beyond that, don't worry about it
lifetimeLearner007: was just curious looking at these many people submitting so many times and all
PatrickMcGinnisII: CG is a pretty decent sandbox, it's okay there's plenty of cats to cover up our doodoo
lifetimeLearner007: :D xD
BendedWills: tes
BendedWills: t
PatrickMcGinnisII: level 34, tx nicola for adding an easy puzzle
AntiSquid: hi
rockstar555: hi
XprophEtX: hey guys! anyone here who uses rust for CG contests?
Picolai: U DONt Know Ma POWERRRRR
Picolai: U WILLL NAVA REACH MA POWERRRRRRRR
Astrobytes: wanna ban?
AntiSquid: wow, that's random .
ppeter: too much coffee? :D
tibithegreat: when you accidentally use redbull instead of water to make the coffee
ppeter: ahah
jacek: woo new puzzle of the week
jacek: nice avatar
rockstar555: hii
sQuareNothing: Hi
wlesavo: how the learning tags for the last contest do not have a beam search in it :smiley:
sQuareNothing: what is the basis of score counting in coders strike back
struct: check magu s tutorial
struct: http://files.magusgeek.com/csb/csb_en.html
DaNinja: is it normal for c++ to take 45ms to run nodes.clear(); with 35000 state nodes?
DomiKo: is node really big?
DaNinja: probably
DaNinja: how to see? sizeof() ?
DomiKo: yes
DaNinja: sizeof(nodes[0]) is 176
DaNinja: think I'll switch to packed integers
struct: still seems a lot
DaNinja: no idea how this got to gold :D
MadKnight: DaNinja which game ?
miszu: good morning all
DevonLarratt: guys what does couldnt process siteId error mean
GrantWard: DevonLarratt you probably output an invalid ID
GrantWard: or badly formatted your output
DevonLarratt: what if they look totally valid?
dbdr: kovi, congrats for #1 in contest ranking!
kovi: thx :)
Illedan: :clap:
DomiKo: :clap:
jacek: contest is over already? and i got this new bot...
Illedan: New bot? where?
jacek: now its too late
DomiKo: :disappointed_relieved:
AntiSquid: which contest are we talking about ?
AntiSquid: isn't pb first?
DomiKo: uuuu yes 100K CP squad!
AntiSquid: ah leaderboards
AntiSquid: was #101 now #183 Q_Q
eulerscheZahl: :wave:
struct: :wave:
eulerscheZahl: oh, i dropped on the contest leaderboard, from 7 to 12 :(
eulerscheZahl: pb4 post mortem https://forum.codingame.com/t/fall-challenge-2020-feedbacks-strategies/187846/99?u=eulerschezahl
DomiKo: Time to read!
miszu: I discovered a bug in my UTTT. I didn't read the rules that if no one wins, count the # of smaller grids win
wlesavo: barely got to top100 with this contest points :slight_smile: but made it to #18 on the contest lb, fun fact is that my highest place on the contest was 19
eulerscheZahl: i'm first globally without having a single #1 spot
struct: "Everybody talking about performance being important. On the contrary, I found that above a certain threshold (approx. 30k simulations), there was no benefit to have a faster code. There is exactly 0 ELO difference between my code and itself capped at 50% simulation time."
struct: (╯°□°)╯︵ ┻━┻
eulerscheZahl: "Larger beam width (400 to 600) at same depth = worse ranking (-15 ELO !!). "
struct: meanwhile my beam is 6k lol
eulerscheZahl: maybe because the wider beam finds a path with higher score but more volatility?
Illedan: That makes sense euler
miszu: occasionally I can beat the boss
miszu: https://www.codingame.com/share-replay/510391933
eulerscheZahl: oh, you are in that madness now
eulerscheZahl: try the teccles heuristic
eulerscheZahl: a new animated puzzle :o https://www.codingame.com/contribute/view/43687cd854d10e38c3716e6d08efe735b42f
JohnCM: euler contributed a lot
JohnCM: that's why pts very high
eulerscheZahl: i admit i was a little spammy in the past :innocent:
miszu: I notice my games vs the gold boss is the game is very tight. Always like 1 move away to win but my mcts always go for that path
AntiSquid: guess pb4 repaired his laptop already :o
DomiKo: wow
DomiKo: he is right ;(
DomiKo: smaller beamsize is better
DomiKo: wow
Illedan: My test failed xD
eulerscheZahl: let me test the smaller beam
DomiKo: my beamsize400 is crashing my 1700
eulerscheZahl: maybe my scoring is flawed enough to need a wider one
kovi: it didnt matter much for me. last few days i tried and only going too deeper hurt a bit (and going below 12)
eulerscheZahl: https://www.codingame.com/share-replay/510396255
eulerscheZahl: perfect harmony
kovi: of course if someone is speed limited and going wider means falling below 12 that can hurt
DomiKo: pb4 didn't say about depth
DomiKo: what you think is the best? or close to best?
kovi: i know. recurse did
DomiKo: so 15 hmmm
eulerscheZahl: why does this puzzle game have an MCTS tag?
VizGhar: jeez, where are you all looking those search algorithms?
DomiKo: because pb4 used MCTS
struct: holy
struct: changed beam width to 600
struct: and boss had no chance
struct: https://www.codingame.com/replay/510397887
struct: oh he got stuck
struct: :p
eulerscheZahl: your beam did that
struct: it was luck
DomiKo: boss got scared
struct: I removed the enemy prediction
eulerscheZahl: nice, submits are fast now
struct: I was 40th yesterday now 9th
struct: maybe I sit
struct: and wait for push
DomiKo: for 10 days I missed CG before the contest
DomiKo: I like to spam submit
eulerscheZahl: less players active to push you now
eulerscheZahl: i think there are worse spammers
eulerscheZahl: one got > 1k on ocean of code
DomiKo: ohh my
Illedan: 1k submits on ooc?
Illedan: Only 500 for me xD
DomiKo: then I'm noob
DomiKo: max is 363 for me I guess
eulerscheZahl: if you want to read a few more post mortems: https://www.google.com/search?q=codingame+fall+challenge+site%3Ahatenablog.com&oq=codingame+fall+challenge+site%3Ahatenablog.com&aqs=chrome..69i57.10235j0j7&client=ubuntu&sourceid=chrome&ie=UTF-8
Illedan: Wow, that is a lot
DomiKo: I wonder why CG got that hype boost in Asia
eulerscheZahl: the japanese community is really active
eulerscheZahl: they even have streams where one shares the screen while manually opening one replay after another
MadKnight: how did they get that hype boost ?
Agade: Didn't there used to be a similar tradition of PMs you could only find in russian?
kovi: wanna post yours in there? ;)
kovi: gratz btw
AntiSquid: in broken google japanese
eulerscheZahl: somewhere on youtube there's a video of Romka analyzing the fall challenge for half an hour and scrolling through his code
Illedan: Spring? or did he do it again?
eulerscheZahl: the pacman
eulerscheZahl: video post mortem
eulerscheZahl: btw the shortest replay from the last contest recalc: https://www.codingame.com/replay/509910868
wlesavo: euler quite informative video actually, if you know russian :slight_smile:
kovi: 24, nice
kovi: romka did well in the first few days
wlesavo: i guess he lost motivation
eulerscheZahl: there are some 101 frame replays as well. but i can't open them anymore
kovi: like psyho, after some unkown emil beat them ;)
eulerscheZahl: on ocean of code there was a mchl12 playing strong at first
eulerscheZahl: then suddenly lost interest
eulerscheZahl: another re curse?
Illedan: https://youtu.be/KP6xXg1n2e0?t=13689 "Coincidence"
eulerscheZahl: i don't know that emil and did not collaborate with him
eulerscheZahl: max length replays
eulerscheZahl: http://chat.codingame.com/pastebin/946befc3-dac9-4ba6-98a2-7f879fde1f8b
Illedan: From recalc?
Illedan: Replay not found..
eulerscheZahl: first 2 are working for me
eulerscheZahl: yes, from recalc
Illedan: https://www.codingame.com/replay/509903491 That was just bad of Royale :P
struct: I guess that on the 2nd one
struct: red had a bug
struct: he could win
Cosmeen: How is the clash of code score calculated? Is it specified anywhere?
Cosmeen: Like the one used for the ranking
eulerscheZahl: Trueskill
Cosmeen: Are the rivals we get also affected by the rating? Or is it just for the leaderboard?
eulerscheZahl: every player in the clash gets a score update
Cosmeen: If this information is anywhere on the site, please link me I don't wanna bother, I just couldn't find it
Cosmeen: No like are we matched with players near our score rating, or just at random?
struct: random
Cosmeen: Because it seems random, but on the Trueskill documentation it says it is also used for matching
struct: you play players that join it
Cosmeen: ok, thank you!
eulerscheZahl: whoever is online
eulerscheZahl: codingame even added bots as to few players were active at the same time
Cosmeen: I can't find info about how the number of players affects the rating, or if the score you get on the problem is relevant, or if it's just the placement
eulerscheZahl: only the placement within the clash matters
Cosmeen: is there anywhere on this website that goes into detail about the ranking?
eulerscheZahl: for clash of code: i don't think so
eulerscheZahl: most clashers don't want to understand that ranking in that much detail
eulerscheZahl: for multiplayer games there is some information scattered over several forum posts
eulerscheZahl: but no real documentation
Cosmeen: okk, I was jsut looking at the leaderboards and wanted to know more, as I am working on the 'top 1000' mission :))
Cosmeen: thanks for the help!
pb4: AntiSquid : didn't repair the laptop, I plugged it into the TV to use it ...
pb4: It's the screen that's broken
eulerscheZahl: :D
eulerscheZahl: now you don't have to buy glasses for a long time
pb4: DomiKo, how much better with lower beam width ?
pb4: TV is 22 inches but only 720p...
Illedan: Can you even call that a TV? :P
jrke: pb4 have you got your computer repaired?
struct: https://i.imgur.com/cLzrR4A.png
struct: my bot is 2nd kryptonite
DomiKo: I can't say the exact number, because that infect my depth too, so I made two changes
Guinsoo: I forgot to implement repeatable spells
CaioYon: can anyone explain me how to implement the "BOOST" parameter in the "Coders Strike Back" challange?
struct: just print "boost"
miszu: ok I am sick and tired of tic tac toe
struct: example "1200 1241 BOOST"
miszu: reached gold and that's good enough
eulerscheZahl: miszu try the teccles
CaioYon: I'm trying that, but It do not boost
eulerscheZahl: if you are close to legend, that could do the trick
miszu: what's that?
struct: euler, should I try HS, GITC or WW?
eulerscheZahl: if you are the first player to play on a sertain subsquare
DomiKo: "teccles heuristic
play the move that forces your opponent to play in the same miniboard you are playing in
"
eulerscheZahl: send the opponent right back there
eulerscheZahl: hypersonic <3
eulerscheZahl: you can even bitboard it
struct: ok I guess its a good way to keep practicing with beam search
eulerscheZahl: (true for WW as well, i know)
miszu: oh I see
eulerscheZahl: HS is great for beam search
miszu: how's that a good strats?
eulerscheZahl: but that much opponent interaction
eulerscheZahl: or 2048 for solo
eulerscheZahl: you avoid winning a miniboard by 3-0 in the end
eulerscheZahl: make the opponent waste some turns
DomiKo: HS is great for FAST beam search
struct: you meant "not that much" right?
DomiKo: HS is one of the hardest
eulerscheZahl: *not that much
struct: ok
struct: Ill try it
eulerscheZahl: HS is one of my favorites
struct: thanks
eulerscheZahl: was my first contest on CG btw
miszu: eulerscheZahl I fixed a bug in the way draw is calculated. I didn't include the condition of how many mini board you won. But once I fixed that, my AI performed worse...
miszu: I am 135th
eulerscheZahl: that sounds like another bug
miszu: I don't see a bug, I checked my code
DomiKo: gold MCTS's is like 50% of them are slow and another 50% have bugs
jrke: mine beam search is slow enough to just be in top gold not above that :smiley:
miszu: do you see an error here?
miszu: http://chat.codingame.com/pastebin/aaeda806-0566-4538-870d-eea120abe8ec
eulerscheZahl: nothing totally obvious at least
(player+1) % 2 could be shortened: 1-player
eulerscheZahl: do you have vertical rows?
miszu: yeah
miszu: look at the board index
darkhorse64: What happens if wins[0] == wins[1] ?
miszu: OMG
eulerscheZahl: where is 0,3,6?
miszu: such imbecile I am
eulerscheZahl: DomiKo 05:01PM gold MCTS's is like 50% of them are slow and another 50% have bugs
eulerscheZahl: so true
miszu: darkhorse64 there is a draw condition
miszu: http://chat.codingame.com/pastebin/708f96eb-9da0-416d-bbd8-d38952b9d27e
miszu: if there is nothing to play but no one won => draw
miszu: brb let me fix that
darkhorse64: kk but you compute way too much things
miszu: what you mean?
eulerscheZahl: no nice bitboards, true but the correctness goes first
miszu: my miniboard uses bitboards
eulerscheZahl: your win check seems slow
eulerscheZahl: could be a lookup
miszu: this is my wincheck for small boards
miszu: http://chat.codingame.com/pastebin/62c748d3-e489-4fdd-9918-65e7296ebef8
miszu: just this upped my sims by 3k
eulerscheZahl: you can do the same for the large board
miszu: eulerscheZahl there was 2^81 states for the big board
miszu: are*
eulerscheZahl: it's you or not you
eulerscheZahl: and then opponent or not opponent
eulerscheZahl: mini boards don't matter for the macro
eulerscheZahl: so you have the small thing and a big board as an extra var
eulerscheZahl: for quick check
miszu: sorry I don't get it how you can have a lookup for the whole game
eulerscheZahl: you have a macro board that only says who won the subboard
eulerscheZahl: that is 2^9 for you alone (yours or not yours)
miszu: ok well that is implemented
eulerscheZahl: another thing to consider: when player A plays, you don't have to check if player B won the game
miszu: in my lookup
miszu: my didWin() uses lookup for smaller boards
eulerscheZahl: but you call didWin() a lot
miszu: well yeah for each sub board
eulerscheZahl: i'm telling you to cache that as well
eulerscheZahl: a state has 9 mini boards and a big board when you win a miniboard, you update bigboard
eulerscheZahl: when then check the bigboard winner via lookup
miszu: ohh I see
miszu: smart
miszu: does player + 1 % 2 and 1 - player makes a big difference?
eulerscheZahl: no, just shorter to write
miszu: ok fixed my win condition now
eulerscheZahl: submit time
miszu: 1/1 beat gold boss
miszu: 2/2
jrke: submit it then
miszu: 2/3 :(
eulerscheZahl: as yellow? then you should have a winrate > 50%
miszu: 2/4
miszu: yeah as yellow
jrke: yellow??
miszu: X = yellow
eulerscheZahl: the one who plays first
jrke: oO
miszu: at least now my ai output the correct % of win rate for a given branch
miszu: like if he knows he will lose, he outputs me like 5% win chance
BoBot: ok, time to learn Rust on Penguins game!
BoBot: Rusty Penguins - name for a band
miszu: ok submitting
miszu: http://chat.codingame.com/pastebin/c3a58eb1-b9be-41ce-92ba-13e30500d161
miszu: I think it's fine now
eulerscheZahl: you don't need this block
eulerscheZahl: http://chat.codingame.com/pastebin/b7cf76ed-cb2d-4aa0-9cbc-8c24f09b8fdf
eulerscheZahl: how shall the opponent win the game when you made a move?
eulerscheZahl: (improving performance)
miszu: it's a constant time improvement
miszu: but I get it
miszu: ok my rank is getting better
BoBot: seeing so much copied code makes me itch..
BoBot: extract that variable! :D
miszu: :D
miszu: 67th and just 20% done
BoBot: at least* I was also sure that the other parts needed to be put into a for-loop, before I got what you were doing
BoBot: now I feel like looking up my UTTT code... it seems popular, several people have mentioned it in the last week
miszu: eulerscheZahl you were right. It was unecessary. Just tested for correctness
eulerscheZahl: and how many more sims without?
miszu: like 2-3k
jrke: which bot programming miszu?
eulerscheZahl: uttt
jrke: oh
miszu: I think with the lookup table in the bigger board it will increase even more
struct: also modulo operator is expensive
struct: But I guess % 2 is fine right?
miszu: % 2 is optimized
eulerscheZahl: %2 is ok
struct: but yeah caching who won is importatnt
struct: like euler said
miszu: int row = (movePlayed % 9) / 3 + (movePlayed / 27)*3;
int col = movePlayed % 3 + ((movePlayed % 27) / 9) * 3;
miszu: :D
BoBot: lol no Python in Legend for UTTT, I wonder why...
miszu: http://chat.codingame.com/pastebin/23f6a1f8-de64-4bf6-b312-7dea9d53ee99
BoBot: first is 288th, in Gold
miszu: 37th in gold
miszu: jesus, imagine with my bug in win condition made me to gold
struct: I dont think you need to use modulo or division to apply moves
struct: at least I dont
miszu: I could cache the index
struct: I just say which small board index it is and which cell of that smallboard
miszu: lookupt table
struct: to me caching moves gain was negligible
miszu: 40th
miszu: meh
Death_Rock: yeeep
miszu: somethign is still wrong with my winning condition. He take a path where he thinks he win at 99% but loses...
miszu: 99.93% to be precise
struct: well 99.93 is not 100 :D
PrO_OGrmr: http://chat.codingame.com/pastebin/3cd3ec62-03f1-4976-b701-1ec280e6d9ee
struct: thor temperatures
PrO_OGrmr: ok thanks
struct: then defib and mime
PrO_OGrmr: ok :)
struct: Also if you are learning, sometimes solving the problem on paper can help
PrO_OGrmr: oh i see
AntiSquid: wow skyyker missed a high rank on contest
AntiSquid: by a huge margin too . feels terribad :(
eulerscheZahl: and in java
miszu: sometimes it feels like my mcts assume i'll play the best move and my opponent the worst move
struct: can be hard to find bugs on mcts sometimes
miszu: the trend of wins/total vistied when I lost the game is that it starts at 55% then goes down to 20%. Rarely, the move before he lose it jumps to like 97%
miszu: at least it's not like, the % increases and boom lost
miszu: throughout the game it shows that the game converges into a lost
miszu: eulerscheZahl do you make 2 lookup table for the bigboard? One for absolute win and one for draw breaker?
AllYourWhat: thats because the rollout policy is random
AllYourWhat: in reality your opponent will take advantage of your mistakes, but mcts can't relaly see that because of the random opponent
AllYourWhat: (if you're using random rollout policy at least)
miszu: yeah random policy
eulerscheZahl: i don't remember what exactly i did
struct: I just use the same lookup
struct: works on both
TimberStalker: I found a strange bug in this Code4Life Game.
struct: Whats the bug?
TimberStalker: When i collect two samples, the game thinks im at a different station than the one im really at.
eulerscheZahl: i bet the bug is in your bot
eulerscheZahl: is there a red text telling you that you don't read all input?
TimberStalker: Im logging the location
TimberStalker: it looks like this.
TimberStalker: Location: DIAGNOSIS
eulerscheZahl: how long is your code approximately? less than 200 lines? then paste it here in the chat
TimberStalker: bit long but sure
TimberStalker: http://chat.codingame.com/pastebin/813695b9-75bf-46ac-90de-f0b4df96450a
TimberStalker: oh it uses pastebin
TimberStalker: http://chat.codingame.com/pastebin/b0995196-90ba-4b68-9d0f-22aa790be26c
TimberStalker: thats the full code
eulerscheZahl: you have multiple usages of Console.WriteLine
eulerscheZahl: you should only have 1
eulerscheZahl: while (true) { read all input print 1 single action }
TimberStalker: It shouldnt run at the same time. I made sure of that
struct: impossible to not run on the same time
TimberStalker: if elsese between them and a continue between the switch statements
struct: or is the continue; inside case for the while loop?
eulerscheZahl: Console.WriteLine("GOTO DIAGNOSIS"); is always executed
TimberStalker: the continue seems to work fine
eulerscheZahl: a few others sometimes
TimberStalker: But that isnt the problem
eulerscheZahl: it is
eulerscheZahl: at least one if you have multiple
TimberStalker: the problem is that after i collect to vials, the game thinks im at the Molecules station instead of the diagnosis one
eulerscheZahl: you get out of sync
struct: wont continue; make while loop go to next turn?
eulerscheZahl: you think you are in turn 8 and the game says you are in 12 already
struct: I never saw a continue; on a switch statement
TimberStalker: Changed them to breaks and its exactly the same.
eulerscheZahl: and then your stderr doesn't match the viewer anymore
struct: its the same because you goto diagnosis
struct: after the switch
TimberStalker: ye i removed that
struct: use default: on switch
struct: to go to diagnosis
TimberStalker: it wasnt actually running because of the continues though
TimberStalker: setting it as default is a good idea though
eulerscheZahl: https://github.com/eulerscheZahl/ParameterFiddler/blob/master/example/c4ldummy.cs#L89 some sample code that only prints 1 line
TimberStalker: i should probavly put the move in the robot class, but again, that isnt the problem
TimberStalker: the error is that the game thinks im at a different spot than i really am
TimberStalker: Standard Error Stream: http://chat.codingame.com/pastebin/a6dee59f-42a9-4a57-82ff-6596c38e7192
TimberStalker: thats the game output
TimberStalker: the target is printed to Standard Error Stream:
miszu: easiest way to count # of set bits in an integer?
TimberStalker: you can see after it says Timberstalker downladed sample 1, the game tells me im at molecules now
TimberStalker: not nearly that advanced
TimberStalker: ignore that last one
eulerscheZahl: TimberStalker you can add messages: "MOVE DIAGNOSTICS " + turnCounter
eulerscheZahl: add a turn counter variable
eulerscheZahl: and print that
eulerscheZahl: you will see that your bot prints the same turn number twice
eulerscheZahl: miszu use popcount
eulerscheZahl: https://en.cppreference.com/w/cpp/numeric/popcount
miszu: thanks
eulerscheZahl: or __builtin_popcount for older standards
miszu: in ide popcount is not detected
eulerscheZahl: then __builtin_popcount
DomiKo: popcount is c++20
DomiKo: CG has c++17 I believe
miszu: yeah can't find the library
Console.Error.WriteLine($"Turn {turnCounter++}");
TimberStalker: no duplicate turns
eulerscheZahl: me facepalms
Lysk: I used popcount everywhere :cold_sweat:
TimberStalker: is there a way to send a video or something?
Lysk: my bad: __builtin_popcountll
eulerscheZahl: http://chat.codingame.com/pastebin/40a059ce-cb6f-46ff-893f-8fa5b62d08bc
eulerscheZahl: try this
eulerscheZahl: we have a discord for screensharing. but let's try this way first
TimberStalker: nope, no duplicates
eulerscheZahl: you make me open the game now, see what you've done
TimberStalker: the program cant send duplicates anymay
TimberStalker: http://chat.codingame.com/pastebin/d594db84-e25b-4d91-b660-7eef67969baf
TimberStalker: current state of code
BoBot: @TimberStalker also, I suggest using more for loops...at least four more for loops :P for your input parsing
TimberStalker: probably should use for loops for the arrays
BoBot: your example will always print a higher number - because you always increase it in the same place where you print it - use Euler's example, it is what is actually needed to debug your case
eulerscheZahl: your bot doesn't work in higher leagues, can't test it :/
TimberStalker: had a feeling that would happen
eulerscheZahl: did you run my code modification already?
eulerscheZahl: share a replay
eulerscheZahl: the 3 dots below the viewer, bottom right
TimberStalker: https://www.codingame.com/replay/510463541
eulerscheZahl: you say CONNECT A but you aren't at the SAMPLES
eulerscheZahl: go there first
TimberStalker: Look at the ourput
eulerscheZahl: i did
TimberStalker: the game says im at molecules in the last turn, even though im not there
eulerscheZahl: https://prnt.sc/vpbjou
TimberStalker: yes, look under that
eulerscheZahl: error streams are private, can't see that
eulerscheZahl: and can't have a real look myself as higher leagues have different rules
TimberStalker: https://www.codingame.com/replay/510467325
TimberStalker: you can see that the last turn says molecules for some reason.
eulerscheZahl: ah, i see. hidden in the bot.Update()
eulerscheZahl: you read your own state first. and then the opponent
eulerscheZahl: your opponent is going to the molucules already
eulerscheZahl: and you think you are there
PrO_OGrmr: can anyone suggest any bot programming contest for beginner
TimberStalker: "For EACH player, 1 line"
eulerscheZahl: PrO_OGrmr looking for real contests? also on other websites?
or for a multiplayer game that has previously been a contest here on codingame?
eulerscheZahl: if the latter, i suggest https://www.codingame.com/multiplayer/bot-programming/ghost-in-the-cell
PrO_OGrmr: thanks
eulerscheZahl: for contests elsewhere: https://codeforces.com/contests look for division 3 contests
PrO_OGrmr: yeah :)
PrO_OGrmr: is there other website like codingame
eulerscheZahl: yay!
PrO_OGrmr: :clap:
struct: Damn
struct: the guy that was pushing me was finally promoted
eulerscheZahl: now you need a new booster
struct: here was i thinking that vs used cmd to build but uses msbuild ...
PrO_OGrmr: hey i like to contribute a reverse mode clash, but i don't know how to write stub generator if i made that all test cases and the solution will anyone send me a stub generator ?
eulerscheZahl: how does your input look like?
PrO_OGrmr: read 3 integers in a line
eulerscheZahl: read a:int b:int c:int write answer
PrO_OGrmr: thanks
struct: Can brutaltester test multiple bots against each other'
struct: ?
eulerscheZahl: yes, if you run it multiple times
eulerscheZahl: it's open source, fork it and add what you want
eulerscheZahl: i added a flag to swap player positions in the past. not sure if it still works
AntiSquid: geez 19 likes for Spice Girls (fall contest 2020), guess that's the semi-official name now :P
AllYourWhat: oooh we can vote? where is that?
eulerscheZahl: no it's not
AntiSquid: https://www.codingame.com/forum/t/fall-challenge-2020-feedbacks-strategies/187846/14 AllYourWhat
struct: Just keep as it is
AntiSquid: you can vote with a like
AntiSquid: it's a joke anyway
AllYourWhat: you got another vote from me :thumbsup:
AntiSquid: thanks, much appreciated
jacek: oO
eulerscheZahl: wow, i collected some upvotes with my bitboard as well already :o i have a feeling that my minimum effort posts get the most likes
miszu: eulerscheZahl where?
AntiSquid: did it have nice visuals, if it has nice visuals i upvote
eulerscheZahl: https://www.codingame.com/forum/t/fall-challenge-2020-feedbacks-strategies/187846/40
miszu: feels like I am reading a binary file
AllYourWhat: oh eulerscheZahl i meant to ask you, how do you call isValidInventory with applyDelta? doesn't ApplyDelta clear the bits you check for negatives in IsValidInvetory?
struct: nice euler
struct: I was too dumb to find a way to += negative deltas
eulerscheZahl: no, i keep the 5 bit and only reset the overflow buffer
struct: so i ended up making everything positive
eulerscheZahl: it's all included in the binary encoding already :D
Counterbalance: i'm seeing strings of 1111 aswell though.. this wasn't copy paste I guess?
BoBot: ugh, looks like everyone who starts with Rust tried to write a generic input parser and runs into the same problem+question - several posts across sites with the same exact error as I had :D
AllYourWhat: oh i must be misreading this then, it looks to me like the &= 0b001111... in applyDelta keeps 4 bits per
AllYourWhat: or misunderstanding i mean
AntiSquid: what about dbdr, @BoBot did he have these issue?
eulerscheZahl: oh, that's the inventory only
eulerscheZahl: that has no negative values
AllYourWhat: oooooooooooooh
AntiSquid: also you're from same city as inory i see, do you know each other? BoBot
struct: ah ok, so no negative deltas?
tomatoes: never had problems with rust and input :eyes:
eulerscheZahl: delta from spells can be negative
eulerscheZahl: and you can add a negative delta to your inventory
struct: yeah on mine implementation i cant
struct: so i had to have gain + cost
eulerscheZahl: just the outcome will be positive. but with 5 1's it should also work
BoBot: @AntiSquid we have chatted on this site, but I do not know him personally, also I have been in the Netherlands for the past 3 years, returning to my home town next week actually :D
struct: on spells
AntiSquid: so social distancing BoBot
AllYourWhat: BoBot what issues are you having? i used rust in the contest
eulerscheZahl: the valid check already makes sure that there is no 1 at the leading spot anyways. so i can reset it or keep it
BoBot: @AntiSquid - I mean I assume that dbdr is past those issues - it is a language learning curve problem, not anything related with Codingame :D
BoBot: just familiarizing myself with the Traits+generics
AllYourWhat: :thumbsup:
BoBot: http://chat.codingame.com/pastebin/4ac08508-397d-4eaa-92ae-0767b64a3c30
BoBot: this is what I have now :D
BoBot: just to get the input parsing reusable and nice - CG default had the macro_rules version, but it still had code reuse problems
AntiSquid: just remembered forgot to use D this contest after bronze :thinking:
AllYourWhat: gotcha, definitely did not try to do anything generic like that haha
eulerscheZahl: there were 9 D players without you
Recovery_disaster: I reached Silver league in two different games but the Quest Map still says 1/2 for days. Any ideas? I can not progress further :/
BoBot: I tried to avoid using where, messed around with the generic syntax - it is not that unlike Java, but enough + I have forgot a bit about Java generics as well...been using Python mostly for the past few years
eulerscheZahl: python, C++, Java, C# the most popular
AntiSquid: so the D revolution has begun
Astrobytes: paython
eulerscheZahl: :D
struct: yeah, D is so popular that CG never added it to the languages you can show in your profile
Astrobytes: I kinda like that
Astrobytes: I have nothing against the language, just after the zealotry
AntiSquid: i have D in solved puzzles
eulerscheZahl: oh, we should tell that our D evangelists
kovi: euler: i have an idea (maybe someelse did it) if you add 5 << 24 to the sum, flag check would be enough for that as well
kovi: (overflow flag for the sum)
BoBot: damn guys, I am really itching for the "who wants the D" jokes...
AntiSquid: can just add it to profile description: "I use D btw"
eulerscheZahl: hm, true. is that more efficient than the > check?
Astrobytes: we did all those when they were 'petitioning' to have it added BoBot
AntiSquid: it will be the new "i am on arch" meme
kovi: you just need a single check
Astrobytes: In the end, CG took the D.
eulerscheZahl: i like the idea
kovi: which checks both the negatives per tier
kovi: and the sum
eulerscheZahl: got it now
Astrobytes: clever
eulerscheZahl: but i need the sum for my eval as well
eulerscheZahl: or do i? i have no idea what i kept and what i deleted anymore
PrO_OGrmr: hey it ask for statement, but it is reverse what should i do
eulerscheZahl: write "reverse only"
AntiSquid: figure it out !
PrO_OGrmr: ok
eulerscheZahl: if it's both reverse and fastest/shortest, write a statement
eulerscheZahl: it will be hidden in reverse mde
eulerscheZahl: mode
AntiSquid: oh nvm thought you're clashing .
PrO_OGrmr: ok
Astrobytes: this isn't in the docs
Astrobytes: ?
eulerscheZahl: i'm not even sure if it is
Astrobytes: I can't find it
eulerscheZahl: https://github.com/CodinGame/Contribute-Help fork it and make a PR
Astrobytes: I didn't say I was that keen!
eulerscheZahl: i like the last commit message
Astrobytes: lol
Recovery_disaster: typo, typo, a real fix, bad typo, typo
PrO_OGrmr: my first contribution
PrO_OGrmr: https://www.codingame.com/contribute/view/5758fe79ca3d10286e0159a04ef46f971db2
ProMikeSundays: funny how i win mostly in short mode and suck in fast mode
Rich-Dunne: I'm doing the War puzzle. What does PAT mean? "If players are equally first: PAT"
Lysk: I would think it's borrowed from chess, meaning a draw
BoBot: 3 hours to reduce Rust default code size by 11 lines...for the Penguins game time well spent I guess :D
**eulerscheZahl pats Lysk's back
Astrobytes: need to get this terminology down pat, Rich-Dunne :P
eulerscheZahl: finally i can use chromium on the chat again
Astrobytes: that was a real busy contest
Astrobytes: every part of the site was going nuts
Astrobytes: (including your PMs ofc) :D
struct: Finally managed to set vs so it makes a copy of the exe with the date so i can use it on brutaltester
struct: also it makes a copy of the merged file so I know the code for that version
eulerscheZahl: and i gained 35 new followers during the contest
struct: Now I wont lose anything
Astrobytes: lol
Astrobytes: oh, you were doing that manually before struct? Nightmare!
struct: yes
Astrobytes: It gets out of hand really fast
struct: Now I need to find out to run brutaltester on ubuntu
struct: I had error last time
eulerscheZahl: is ubuntu your main system now?
struct: no
Astrobytes: why not just on windoze?
struct: I run wsl2
struct: because code runs faster on wsl2 than on my machine
Astrobytes: oh yeah, forgot about that
struct: also gcc vs vs compiler
Astrobytes: yeah
eulerscheZahl: isn't that an extra layer of abstraction?
struct: I dont mind it much
eulerscheZahl: i mean doesn't wsl2 add overhead? that's faster?
struct: I dont think it has that much overhead
struct: its pretty fast
Astrobytes: It's negligible afaik, and beats playing around with dual boot
eulerscheZahl: my mainboard battery died some months ago
struct: I had like 3x sims running on wsl2
eulerscheZahl: i replaced it
eulerscheZahl: but BIOS settings lost
eulerscheZahl: there's one to check fan status on boot, i can't find it anymore
eulerscheZahl: now on every boot it tells me that my CPU fan isn't working
eulerscheZahl: that's correct, i have a water cooling
Astrobytes: lol
eulerscheZahl: now: turn on, F1 for settings, F8 for boot, arrow down twice, ENTER
struct: lol
Astrobytes: Ever so slightly annoying eh
eulerscheZahl: and everytime i'm like: shall i search again? nah, just start it
eulerscheZahl: i'm heading to bed, missing some sleep from the contest
Astrobytes: I bet you'll do that automatically on every computer you touch from now on
Astrobytes: alright, goodnight man
struct: gn
struct: I dont really need pathfinding for HS do I?
reCurse: There is no abstraction in wsl2
Astrobytes: Haven't done it struct
reCurse: You basically have a linux kernel inside windows kernel
reCurse: Oh of course he's gone to bed when I reply...
struct: :)
Astrobytes: lol, back to normal sleeping schedule for euler now
reCurse: What is he, 60? :P
struct: he wakes up pretty early
struct: like 5-6 am
Astrobytes: Mentally, yes I think so :D
Astrobytes: So do the elderly struct
reCurse: Speaking of old, haven't recovered from mine yet... ugh
reCurse: Sleep at 6am one day and pay for it
struct: Yeah, I dont think its worth it
struct: I did it for 2 days
struct: friday and sunday
BoBot: I deviated from a normal schedule for 2-3 days and paid for it for at least 2 more
reCurse: To think I used to do that easily... :(
BoBot: 10 years ago I would have even recovered from if I had been drinking for those 2-3 days instead of programming..
BoBot: lol, "old guys" complaining
reCurse: You mean you separate drinking from programming?
BoBot: right now I separate everything from drinking i.e. I rarely drink :D
reCurse: I kid I kid
reCurse: or do I
SurduTony: how is no nut november going for you guys
CodinBotChatRelay: Arnav#9054: Wow
reCurse: It took one second to degenerate did it
k0ded: This website is showing me how terrible i am at programming lmao. wish i found this website earlier
x5nake: Same lol
k0ded: im literally stuck on a medium challenge, its slightly embarrassing to say the least
Astrobytes: reCurse: funnily enough the Ballmer peak applies to me when I review my code sometimes. Past that I just save and do something else :P
Astrobytes: 1-3 beer limit, depending on the beer
reCurse: I thought the ballmer peak meant you reviewed your code
BoBot: I think I actually had a pretty nice evening of coding on weed last week :D
Astrobytes: Yes, after my consumption of 1 - 3 bears.
Astrobytes: Or beers.
reCurse: Oh ok read that wrong
Astrobytes: Tried doing that when I was younger BoBot, was not conducive to productivity *at all*
BoBot: @Astrobytes works differently on different people and depends on dosage as well :P
BoBot: I was near the optimum...hmm..I need a different name than Ballmer for that peak
Astrobytes: For sure. I'm not a fan of the high-strength stuff around these days tbh. Anyway - move on. Not the best subject for a public chat ;)
BoBot: (it is legal where I am :D but sure)
Astrobytes: "Wozniak peak" :D
BoBot: he seems like the kind of guy..
sadakatsu: ... I decided to try Ultimate Tic-tac-toe. I submitted a bot that literally selects a move at random from an even distribution. I know I'm just in Wood league, but why did that place in 18th out of 300+ entries?
BoBot: do you pick from legal moves always?
BoBot: other bots might not even do that...if that is the bottom Wood
sadakatsu: My algorithm is: 1) input action count 2) randomly select value in bounds [0, action count) 3) echo the selected action
sadakatsu: It even manages to draw the boss more often than not...
Astrobytes: Cause it's Wood league ;)
Astrobytes: There's one wood league in UTTT right? Then Bronze?
struct: looks like my code that got me first on fall challenge 2020
miszu: Astrobytes I am 40th in gold
BoBot: yea - in some games it is enough to always output a valid move to beat the lowest boss
Astrobytes: Getting there miszu!!
BoBot: or minimal heuristic, like - random move instead of first move
miszu: yeah but I broke my game engine somehow. Now when I play a game, it choses a path where has a high confidence of wining but loses
Astrobytes: debug fun for you :D
miszu: like 2-3 moves before the game over he choses a path with like 70% win rates
miszu: I wish unit tests exist here in ide
BoBot: tic tac toe test setup is not the worst
Astrobytes: You have an engine written, not too much effort to run it locally
BoBot: you could even input it manually I guess?
miszu: I think I will stop UTTT
BoBot: oh no, it gives valid actions as well :D
miszu: 40th is godo enough
Astrobytes: Sure you can take the game input and debug locally that way
BoBot: those are harder to input by hand
struct: so there are only 6 actions on HS right?
struct: move N,E,S,W, Bomb or wait
struct: ah wait
struct: you can move more than 1 cell
struct: ah not
Astrobytes: in one tick?
struct: my bad
Astrobytes: I think not
struct: ok I see how it works
struct: so 10 possible actions
struct: How do people usually manage using bit operations on corner of th maps?
Astrobytes: depending on the dimensions you can leave a row/col free and shift
Astrobytes: well, you can do that anyway, depending on your representation I guess
struct: I see so if width is 13 I should use 15 bits
Astrobytes: I think the bitboard methods for games paper has some useful 'bits'
Astrobytes: iirc
miszu: does int16 vs fast int16 speed difference really matters?
struct: Thanks Ill check
struct: miszu i already explained it to you the other day
miszu: yeah I know
struct: I think reCurse could answer it though
struct: :D
miszu: but there was no consensus
Astrobytes: I was just about to recommend asking him struct :D
miszu: did you use it in your UTTT?
struct: yes and I got 1x the performance
BoBot: I was going to ask "but could he answer it in his sleep?" but he was not who went to sleep early..
Astrobytes: I think we mostly all use just straight up (u)int_X's for most things on CG
miszu: basically useless haha
miszu: I just put int
Astrobytes: Too much wacky backy BoBot :P
miszu: way faster
miszu: to type it
struct: int is different from int16 though
miszu: yeah I know
miszu: is there performance difference?
struct: not everything is about performance
struct: The best way to check is to profile it
Astrobytes: ^^^^^^^
struct: int16 is 2 bytes int is 4 bytes
miszu: well yeah
BoBot: @Astrobytes lol did not know that euphemism
Astrobytes: :D
struct: There are no shortcuts to performance
miszu: except pragmas
miszu: I gonna learn how to make unit tests in visual studio, then rewrite my engine and test thoroughly
miszu: get rid of vectors too
particleflux: Is the "score" in the leaderboards different per league?
BoBot: (Y) for unit tests I was doing so well in Fall Challenge until I stopped adding unit-tests :D might be more to do with the complexity of the code than laziness, but I could have kept on trying maybe :P
BoBot: it might seem confusing, but it also makes sense as you only play against people in your league
miszu: BoBot at my work I always go for 100% code coverage
miszu: then everytime later I have to add something or edit, takes 2 seconds
particleflux: Sure, makes sense. I was just wondering with the overview of the leaderboard until I noticed that the league icons were different
miszu: cuz everything is easilly testable
BoBot: that is great :D I was feeling so great and professional this contest...while I was actually doing that :D
miszu: my recommendation is do the game engine first and test it properly
miszu: then you can have fun with different AI algorithms
miszu: but bad game engine = poor performance
Astrobytes: Do that for UTTT now miszu ;)
BoBot: it is easier to cover heuristic code, than the search...though I reused the tests for search as sell because I assumed that I want it all strategies to beat the simple cases
Astrobytes: Trust but Verify :P
miszu: I am confident about my MCTS but somehow it choses the path with high % win but loses.
BoBot: they did help immensely with debugging later as well
miszu: Astrobytes yeah I gonna do that
miszu: there is a hidden bug I can't see it
miszu: add that with lookup tables
miszu: nightmares
miszu: btw, you know how i went from 105th to 40th? I forgot to check vertical win conditions...
Astrobytes: making a little visualisation offline can help debugging stuff like that, even just in the console
BoBot: loses against whom - maybe the opponents just find the winning moves?
miszu: I checked only horziontal and diagonal. And still managed to get gold
Astrobytes: lol, brilliant!
struct: Maybe I should add my "feature" back to the bot on FC2020
struct: maybe it will get legend
Astrobytes: what was your "feature"?
miszu: basically my AI was playing in handicap mode. Make it harder for me to win
struct: not discounting resources when I brewed
BoBot: were you the one who wrote in PM that you had 2 major bugs that actually helped you
miszu: not a bug, it's a feature that help you win
struct: no
struct: I didnt write pm
struct: my pm would be 8 days spent on optimizations
BoBot: @miszu I got to Gold in Fall challenge using only 9 inventory slots
Astrobytes: I had a few of those "features", fixing them makes my bot lose ofc
BoBot: so much for test coverage I guess
struct: 3 days spent without sleep
miszu: BoBot I only finished silver :(
struct: https://i.imgur.com/sG2UXMR.png
miszu: but I didnt do any search
struct: I still believe
miszu: just instant heuristics
struct: this bot was 40th on gold yesterday
Astrobytes: past a day or 2 it becomes fruitless struct
Astrobytes: (no sleep)
miszu: grind for legendary?
AntiSquid: you didn't change it at all you mean? tobou
struct: yes
struct: i got pushed
Astrobytes: oh just above siharde the cheat
struct: Astro I slept
Astrobytes: ah good
struct: friday i stood awake for 20 hours then slep for 6
struct: then stood for 10+- slept for 8
struct: then stood again for 21
Astrobytes: that's fine then
Astrobytes: gotta have the breaks
BoBot: wow, Rust needs to know array size at compile-time :O
sadakatsu: Why is that surprising?
BoBot: in most languages you do not
Nerchio: i wanted to try rust but some of the things there are just painful :D
sadakatsu: Rust is intended as a low-level competitor to C and C++.
Astrobytes: Slightly different way of thinking, Rust stops you doing the things that you're gonna mess up :P
reCurse: In most languages you do not??
Astrobytes: *that Rust decides you're gonna mess up
BoBot: you can get the array size as an input from the user right? at runtime? even in C++?
reCurse: Array size needs to be compile time in C++
sadakatsu: If you dynamically allocate it, sure.
tomatoes: use Vec if you want dynamic size
Astrobytes: I think dbd r or tomatoes already told one of you this
BoBot: no, fixed size, but runtime
BoBot: I am not mixing up fixed vs dynamic
sadakatsu: @Astrobytes <playful>Put another way, Rust interferes with doing anything useful because it is difficult to build things without potentially harmful tools.</playful>
struct: tomatoes please dont submit
struct: you beat me a lot
tomatoes: :sweat:
Astrobytes: lol sadakatsu :D
AllYourWhat: what multi has the highest rating delta between first and second ranked players?
struct: you have 6/10 vs me
struct: it will probably bring me down
struct: but im joking, feel free to submit
sadakatsu: I tried to learn Rust several months back. My test application was building a search tree. I found that to be impossible without using their pointers. So, I walked away.
ClockSort: heh
BoBot: wait do you need to know array size before running in Java as well?! I must have forgotten a lot while using Python
tomatoes: need to cleanup mess i wrote
ClockSort: the secret to learning rust is to not use it afterward. That's what I did, and it worked great!
AllYourWhat: lol!
sadakatsu: lol, exactly!
miszu: BoBot not in java
BoBot: yea, I got to it while googling :D
BoBot: so basically all languages I have extensively used worked liked I thought :D
miszu: yesterday I was banging the wall trying to figure out how to initialise a static array in a struct
miszu: so complicated
Astrobytes: I can't diss Rust, haven't used it enough to be able to comment either way. It seems perfectly fine to me but not to everyone's style/methodology
struct: c++ is all i need
Astrobytes: Seems it might be better coming to Rust from a managed language? Not sure.
Twelve-2: guys what's the name of that multiplayer game that has 4 players in each battle
Astrobytes: Yes, same struct.
struct: hypersonic?
struct: There is more than 1 with 4 players
Astrobytes: There are a few Twelve-2
sadakatsu: I know a lot of developers have switched from C++ to Rust. I think they have some good ideas, but their safety features are so opinionated that (IMO) it ties an arm or two behind your back if you try to build anything real.
BoBot: @Astrobytes yea, that is why I decided to even try, I have not definitely given up on C++, but...
Twelve-2: yes struct thanks I was looking for this
Twelve-2: Astrobytes , what others?
Astrobytes: Honestly Twelve-2 there are so many now I've forgotten!
BoBot: Penguins allows up to 4! :D
BoBot: which is what I am working on rn
Astrobytes: I need to get back to that one
Twelve-2: everyone in Penguins is still in wood!
Astrobytes: There are only Wood leagues for user contributed games Twelve-2
Nerchio: how hard is Poker Chip Race ? :D
Astrobytes: (currently)
Astrobytes: I heard the sim isn't too bad for PCR Nerchio
struct: https://i.imgur.com/Fwo0lge.png
struct: what is this madness
Astrobytes: well, it was here before
BoBot: obviously better than Python 3, as you can see from that LB
struct: But wasnt it just called python before?
BoBot: who has time for writing brackets when trying to print important stuff
Astrobytes: No, we had paython2 and paython3
Astrobytes: :P
BoBot: what's the meme with paython?
BoBot: I want to know all the Python memes!
Astrobytes: Just a spammy user from during the contest
Astrobytes: *also see payhon
BoBot: thought it had something to do with it being expensive (in terms of CPU)
Astrobytes: No, but I kind of like that
Astrobytes: Hey, chat is active a day after the contest. I'm impressed
ZarthaxX: give it one more day
Astrobytes: So pessimistic Zarthomist
Astrobytes: but yeah :/
ZarthaxX: i hope it doesnt tho
ZarthaxX: i like cg being alive
BoBot: yay, my first runtime (not compile-time) error in Rust!
Astrobytes: Yeah, same ZarthaxX
Astrobytes: lol BoBot
miszu: do you guys bother with encapsulation?
TimberStalker: like classes and stuff?
miszu: yeah
miszu: to protect your member variable
miszu: but I wonder if it adds overhead and reduces # of sims
TimberStalker: i just like having all my variables tied together
Astrobytes: No, not for CG anyway
Astrobytes: No-one else is gonna use your code
miszu: would getter and setter reduce the # of sims?
therealbeef: I feel it helps after days of extending and refactoring code
Astrobytes: Are you still thinking about UTTT miszu
miszu: yes :)
miszu: it's a love hate relationship
miszu: 40th
miszu: so close to legendary
miszu: my goal is to reach legendary and not to be last in legendary
Astrobytes: Don't compute stuff in real-time if it can be pre-calculated
miszu: yeah I created a lot of lookup tables
miszu: I can reach 16k sims
tomatoes: gold boss ~120th in legend
miszu: but I broke my engine somewhere
Astrobytes: Profile your code.
TimberStalker: getters and setters are pretty much exclusively real-time.
miszu: thus why I need to use visual studio and massive test it
BoBot: write manageable first, while keeping in mind how you would convert it into faster versions while writing, so it is not too much of a pain later
miszu: BoBot you can't
Astrobytes: And like I said, test your engine for correctness and stop worrying about optim until that's done
BoBot: unless you know you need hardcore performance straight from the start
miszu: like once you discover a hack, you need to change a lot
miszu: getting rid of vectors and use arrays instead
miszu: with pools
miszu: that's a challenge
BoBot: yea, I guess with bit arithmetic and fancy storaging methods it gets nasty
BoBot: also I do not know how C++ guys do it :D
miszu: this is where I am getting now
Astrobytes: verify engine correctness first <--
miszu: yes Astrobytes
miszu: that's why I will learn how to use that unit test framework in visual studio
miszu: so complicated
miszu: create a unit test project
miszu: and hook it to your actual project
Astrobytes: Or it'll be like trying to find a needle in a hastack
miszu: jesus
Astrobytes: *haystack
miszu: in intellij is just rick click + create test
Astrobytes: In UTTT you should be able to take the game state, feed to your engine then check if the output matches?
Astrobytes: *matches CG output I mean
miszu: yeah that is the point
miszu: create bunch of states and verify correctness
miszu: especially the win condition
miszu: cuz something is wrong if my mcts pick a branch with 80% win rate and still lose
miszu: like.. it's not 2016 election survey right?
AntiSquid: lol
AntiSquid: only end result matters, winner writes history
Astrobytes: hahaha
miszu: in the morning, I had a branch with 99.94% win chance
miszu: stil lost
AntiSquid: maybe you evaluate wrong ?
miszu: (╯°□°)╯︵ ┻━┻
miszu: evaluation is good
Astrobytes: Don't rush this one miszu
miszu: my win condition was wrong in my engine
AntiSquid: i mean something MUST be missing if you are only 0.06% correct on your prediction
miszu: yeah the vertical winning condition
miszu: and it improved
miszu: but now it's broken again
miszu: anyways, I'll unit test my game engine
AntiSquid: what are you up to astro ?
Astrobytes: you have to test your engine
struct: I guess I also need to learn unit testing
ToshiTuringMachine: i translated my bot from Dart to C++. guess what happened
Astrobytes: not much, played a bit with fixing some Fall Challenge bugs but I need a rewrite AntiSquid
miszu: undefined behavior?
Astrobytes: Will probably go back to Penguins
struct: you stopped timeout
AntiSquid: i gained 200 ranks after fixing some really minor stuff in fall challenge :D
miszu: struct, once you unit test, there will be no turning back
Astrobytes: I lost about 200 lol :D
ToshiTuringMachine: no, it goes exacly the same!
struct: you still timeout?
AntiSquid: but time for CIF now, seems there are timeouts there out of nowhere
ToshiTuringMachine: yeah totally
struct: it must be your account
struct: emil cursed it
AntiSquid: does curse go away if you delete?
Astrobytes: everything is timing out again AntiSquid? This was happening with multis way before the contest
struct: it went to toshi aparently
AntiSquid: someone test if account deletion removes their timeouts, maybe it works
ToshiTuringMachine: lol... no curse. i just cannot c++ so my translation is not using any of the c++ tipical speedups
struct: boss .33 away
struct: any pushers
Astrobytes: If you cannot C++, you must C#, other than that you need better glasses Toshi :D
struct: zeno got pushed already nice
AntiSquid: if i get a magical idea of how to improve to gold, i'll push you struct
ToshiTuringMachine: prrr Astrobytes
Astrobytes: :D
ParticleBeam: Are you talking about the last contest?
AntiSquid: "if you can't C++ then you ain't latino"
struct: ParticleBeam me? yes
Astrobytes: I don't get that AntiSquid
Astrobytes: Come to think of it, I think I need new glasses too
AntiSquid: it's a Biden reference
ToshiTuringMachine: ah ok.. well I WON BY A LOT
Astrobytes: I can see you've been Biden your time to make that joke
AntiSquid: :D
struct: AntiSquid get always first 6 spells
struct: 8*
struct: than you will beat silver
AntiSquid: even if 2nd costs 0 ?
AntiSquid: think i tried that before
struct: I still have it
struct: and silver boss has no real chance
AntiSquid: https://www.codingame.com/share-replay/510528825
miszu: is there a way to restart your progress in a competition?
struct: that is 6 spells not 8
struct: do you take into account potions score?
ToshiTuringMachine: I don't think so miszu
Astrobytes: Not without an alt account miszu
Astrobytes: It's a highly requested feature
AntiSquid: first 8 https://www.codingame.com/share-replay/510529950
AntiSquid: reset to wood would be fine too . you wouldn't get the xp again anyway
miszu: it's nice to glorify your AI how it beats in bronze :D
struct: What search are you doing?
Astrobytes: lol, your output squiddy
AntiSquid: vector<string> lyrics = {"Link", http://chat.codingame.com/pastebin/a72bea5e-3b4b-4d94-beba-0d73a6dbe249
AntiSquid: just didn't feel like counting the lines .
AntiSquid: that's why the vector
Skynse: wut
Astrobytes: still works AntiSquid :D
struct: the terms they use in this paper
struct: dilation erosion
AntiSquid: https://www.youtube.com/watch?v=cpJMzS_Gbd8 Skynse
Astrobytes: they explain them though struct
struct: cant they explain it to me like im 5
Astrobytes: lol
struct: I like Icebox explanations better
struct: Paint and in 2 minutes he teached me beam search
ToshiTuringMachine: is he 5?
Astrobytes: :rofl:
struct: I think i need to apply the things to understand
struct: reading isnt really for me
AntiSquid: can he explain AlphaZero in MS Paint?
AntiSquid: the full implementation
Astrobytes: The pseudocode is pretty good in that paper struct
Astrobytes: play around with it
struct: yeah Ill do it
Astrobytes: if you get stuck, doing little examples on paper/whiteboard can help a bit, if you write the steps next to your visualisation
AntiSquid: i just do basic search to reach a potion actually struct
AntiSquid: well only checking if i can reach before boss
Cosmeen: If I submit a solution to a problem, is the code saved?
ToshiTuringMachine: yes
Cosmeen: thanks!
MadKnight: Cosmeen it's even saved when u hit Play
Cosmeen: Ow shiet didn't notice
Cosmeen: I should try that
AntiSquid: hi MadKnight
AntiSquid: how's it going
MadKnight: just woke up
AntiSquid: funny prize: Sigmoid Hacks is a 3 day student led, machine learning hackathon on Jan 15TH. We welcome K-12 students and university students! Participation is free and winners receive prizes such as a Tesla tour! (After the covid restrictions).
AntiSquid: you get a tesla tour in 5 years from now probably .
struct: tomatoes
struct: (╯°□°)╯︵ ┻━┻
ParticleBeam: Did he beat you again?
struct: 1 time
struct: 1/1
struct: just focus on the boss :)
tomatoes: added learn
tomatoes: in the middle game
struct: if(struct) cout << "lose" << endl;
struct: holy 6 loses vs you
struct: gj
miszu: do you guys use header file here?
miszu: to do unit tests in visual studio i need to make some header files
struct: grats tomatoes
struct: yes I use multiple files miszu
tomatoes: thanks :tada:
miszu: struct do you code here in ide or a different ide?
struct: VS
miszu: okay yeah
miszu: and then you copy paste all files to here?
struct: i use file merger
struct: https://github.com/MarcosCosmos/cg-cpp-bundler
miszu: oh okay
miszu: thanks
miszu: time to learn header files
miszu: the c++ version here is this one right?
miszu: ISO C++17 Standard (/std:c++17)
struct: g++ 9.2.1 mode C++17
miszu: c++17 is enough
Recovery_disaster: I'm still at 1/2 for "reach silver league in 2 games", but I'm gold in one game and git silver in the last challenge. Shouldnt it be 2/2? I cant progress in my quest map
struct: I think they have a bug
struct: because you reached silver in the conntest
struct: And the constest doesnt count for quest map I guess
Recovery_disaster: oh :(
struct: Know that the game became a multiplayer you got automaticly placed in silver
Recovery_disaster: but isnt it allready a normal bot programming game ?
struct: yes, but I guess they dont have a check for that
Recovery_disaster: got it. So I'll need another silver
Recovery_disaster: thanks
SansPapyrus683: do emojis work😘
SansPapyrus683: oh they do