Chat:World/2021-08-10
holite: hello guys i am ney hee
holite: new here will you be my friend
BlaiseEbuth: Hello, from india
michaellan: hello, ney hee
michaellan: should i expect 100 iterations of tic tac toe to end in a draw?
michaellan: my bot is occasionally not ending in a draw even at 350 iterations
michaellan: even 1000 got a win, after testing like 20 times
Westicles: Doesn't it always end in a draw unless you are playing someone with brain damage?
michaellan: yeah
michaellan: but apparently 100 iterations each move is not good enough?
yingchuann: may i know what is imax?
michaellan: sounds like Index of MAX
michaellan: or the theater
BlaiseEbuth: or max with i before
yingchuann: hahahha im solving the descent in codinggame
michaellan: oh thats perfect
michaellan: which language has imax function?
michaellan: it's generally called argmax, in math and other fields
yingchuann: im newbie in here so not really know abt it
michaellan: im not sure such a function exists (other than in numpy)
yingchuann: i see... its okay whahahah
BlaiseEbuth: Nobody said that's a function though
michaellan: yeah but imax sounds specific
michaellan: also, I see a lot of people using the
michaellan: while (i still have time left this turn) { run simulation/iteration }
michaellan: i wonder if the condition in the while loop of getting the current time has overhead
Westicles: Let wontimo answer, he is building up mp
BlaiseEbuth: mp?
Westicles: mod points
BlaiseEbuth: Oh. right
BlaiseEbuth: Wontonimod
michaellan: wontonimod ftw
ProCoder03: How to convert from double to float in C#
ProCoder03: ?
BlaiseEbuth: https://www.letmegooglethat.com/?q=c%23+convert+from+double+to+float
ProCoder03: man , thats loading forever !!! :thinking:
TheDoomedLongcoat_ddf8: anyone use blender here?
derjack: i mix my fruits by hand
Thyl: hi!
juice0: underappreciated comment by derjack
Shivay: poplique share the code
derjack: oh my
Hunter64TheOne: yo the English
Hunter64TheOne: the word you are looking for is god
holite: whats up i am the new guy just finished very small part in python and starting cpp i you guys helped me it would mean a lot!!!!!!:)
KiwiTae: heres some "help"
derjack: help?
BlaiseEbuth: phle
Hunter64TheOne: yo
derjack: lets do the puzzle of the week
ReiKiriyama: any hints for puzzle of the week? Very new to "bitboarding" and minimax algorithm.
Wontonimo: o/
Wontonimo: what is the puzzle of the week/
Wontonimo: oh it's Amazons by struct! Congrats struct
Wontonimo: hey ReiKiriyama, you don't need to have experience with bitboarding. That is only needed to get to the top of the leaderboard.
ReiKiriyama: okay, so I will try it without that. :smiley:
derjack: just make the best moves. ezpz
Wontonimo: lol
Wontonimo: (that's me throwing up my hands)
derjack: score 6.66 :tada:
derjack: oh my tric trac got serious
Wontonimo: i just saw that also.
Wontonimo: your tric trac sure is surging in the ranks
MidOrFeed: how do you find the puzzle of the week?
Wontonimo: it is in your notifications
Wontonimo: the bell icon top right
advait7: leo messi -> psg π
derjack: messi in psg? oO
Wontonimo: hi from Canada to Canada ProCoder03
Wontonimo: Pro-grammer
Wontonimo: sorry ProCoder03
derjack: :thinking:
derjack: thats canadian sorry
Wontonimo: one day Canada will take over the world, then everyone will be sorry
Pro-grammer: wo what an other pro-grammer?
Pro-grammer: sorry for stealing your name
Pro-grammer: (i'm canadian to XD)
Pro-grammer: omg sorry for the typo
Wontonimo: no, I'm sorry I didn't put your name right in the original message
Wontonimo: hey
HadjAliMazen: how are u doing here
BlaiseEbuth: Caribous reign is coming
Wontonimo: good thanks. What kind of coding background you got HadjAliMazen ?
HadjAliMazen: Python @wontonimo
Wontonimo: nice
Wontonimo: what kind of stuff you've been working on lately in DS ?
derjack: nintendo DS?
Pro-grammer: isn't the api deprecated?
martinpapa69: D Simulator
Stilgart: eulerscheZahl: why did you create a tag 5% ?
Stilgart: (I have lost so much time on that one that my english is broken)
eulerscheZahl: it screws up with URL encoding, doesn't it? :P
eulerscheZahl: that was a rhetorical question, wasn't it? you know the 5% story?
BlaiseEbuth: eulerscheZahl is there a way that somebody doesn't know about it ?
Stilgart: wasn't it 1.84% in the end ?
Stilgart: and yes, my urls are broken :rage:
BlaiseEbuth: Numbers these days...
eulerscheZahl: https://www.codingame.com/learn/5%25
Wontonimo: my progress 0% ;( guess i'm not in the 5% lol
Stilgart: eulerscheZahl: I am fixing it
eulerscheZahl: don't bother. Thibaud told me it will never become an official tag
Stilgart: might as well put an if for this one
Stilgart: but it is official, see https://chadok.info/codingame/tags_list.html
eulerscheZahl: suggestion: on your list of puzzles name the creator instead of just an "x" for community
eulerscheZahl: i know that tag list
Stilgart: the most official tag list ever
eulerscheZahl: does it update when tags for approved puzzles get changed?
eulerscheZahl: https://prnt.sc/1magmoi the google preview still gets the full list of tags
Stilgart: updated daily
eulerscheZahl: and somehow my google search lead me to this github stats page that i've never seen before https://giters.com/eulerscheZahl
Stilgart: i was tryng to figure out why I got a tag 5%
Stilgart: but in the end, it is a perfectly legit tag
eulerscheZahl: apparently my most used language is javascript. shouldn't have uploaded the full three.js library :D
Stilgart: (with a perfectly broken url)
eulerscheZahl: i was a little salty when I published Tryangle Catch. The tag is a witness of that. :angel:
Stilgart: https://chadok.info/codingame/leaderboard_languages.html says it is C#
eulerscheZahl: i haven't even seen that list before. is that new?
Stilgart: (this one has no update yet)
Stilgart: more alpha than new, actually
eulerscheZahl: that's just the language each player uses most and the solutions in that one language?
eulerscheZahl: total puzzle solves would be more interesting. but probably not feasible without spamming the API
4DsErfan: Have you ever saw an ordak?
eulerscheZahl: i don't even know what that is
Stilgart: eulerscheZahl: this one is already spamming the API... and I do not want to add a loop on the ~750 puzzles
BlaiseEbuth: You can. The CG infra is perfectly able to manage.
eulerscheZahl: once I downloaded 5GB of replay data. just for some statistics about the Ocean of Code contest. I'm totally not proud of it
BlaiseEbuth: The CG infra is perfectly able to manage.
eulerscheZahl: when you send too many requests in a short amount of time, you'll get an error
eulerscheZahl: then you have to wait for a minute or two until you can download any more replays
NorbecioMambo: Hi boys and girls,
BlaiseEbuth: See. The API protect the infra.
eulerscheZahl: you can use about 5 parallel connections without getting blocked
BlaiseEbuth: CG technology :copyright:
NorbecioMambo: Ive got a particular problem. I understand all functions and definitions of coding no problem but I find it very difficult to start a project from scratch. Does anyone have tips for me or is someone keen to guide me through a problem?
eulerscheZahl: mind your language
eulerscheZahl: blaise was faster
BlaiseEbuth: I'm doing the mod's job... :rolling_eyes:
eulerscheZahl: NorbecioMambo that's a very open question. I always struggle to answer these. unless you have more explicit questions, you are probably better off with some googling
martinpapa69: does any1 have a public imlementation for a clean mcts solver
martinpapa69: my implementation is ugly
eulerscheZahl: not sure if mine counts as clean either https://tech.io/snippet/UGXgTEg
eulerscheZahl: did that long before the C4 multi on CG
eulerscheZahl: colleages from work asked me for an easter egg in one of my applications. now when they click at the program name, it will change to "four in a row" and open the game :D
martinpapa69: are you sure its mcts solver?
martinpapa69: not mcts
martinpapa69: // MCTS solver
martinpapa69: okay
martinpapa69: do you handle the draw terminal nodes as wll ?
eulerscheZahl: at least it drove one of my colleagues mad because it told him like 10 turns before that he lost
eulerscheZahl: i think i don't. wrote that a while ago
reCurse: AI in games has a different goal
reCurse: When humans are involved
eulerscheZahl: it's still not that strong and totally beatable (low sim count)
martinpapa69: ye you dont handle the case when a node has only -1 children
eulerscheZahl: the last turns were mostly forced moves. just 2 or 3 columns left to play with
BlaiseEbuth: -1 children ?
martinpapa69: http://chat.codingame.com/pastebin/bdd8f6c2-61da-4e45-8312-f3bbb7717736
eulerscheZahl: my scores are 0, 0.5, 1
martinpapa69: ik
AllYourTrees: all children are losses for you => node is a loss
eulerscheZahl: i'm off :bicycle:
eulerscheZahl: :bike:
martinpapa69: you wuld tell 20 turns ahead that you won
martinpapa69: my implementation even propagates draw terminal nodes
martinpapa69: but in a very ugly way
AllYourTrees: draws are the same as losses right? can only say its a draw once all children are proven and theres at least 1 draw?
Wontonimo: that is a really nice code snippet euler! Do you mind if i link to that when people ask about MCTS?
martinpapa69: if there are -1, -1, 0, -1 children
martinpapa69: the node is a draw
AllYourTrees: ya
BlaiseEbuth: Just do it Wontonimod
Wontonimo: thanks ... lol Wontonimod
Wontonimo: martinpapa, how are you keeping track of draw during backprop solver? Do you have another flag in the Node for draw, or are you just hard changing the total reward to 0
martinpapa69: i have a solved flag for the nodes, and a value integer
Wontonimo: great, thanks
martinpapa69: on children selection i calculate the max value for solved children
martinpapa69: nonsolved children= guaranteed loss
martinpapa69: and if every children is solved
martinpapa69: the node becomes solved
martinpapa69: and the max value is its value
martinpapa69: if the is a win child
Wontonimo: what? how can unsolved children = guaranteed loss?
martinpapa69: the node automatically becomes win
sugam: I gave the test from the career section myself and got good points.
I applied for one comapny and one of them sent invitation to the link to similar codingame test. anybody who gave tests that way? how difficult are the questions than the one you get to give when you go to the career section yourself.
martinpapa69: its just a technical stuff
sugam: do companies get to chose what quesitons to include in the test or is the difficulty random
Astrobytes: sugam: there's no real need to post on the discord AND in webchat
martinpapa69: when a node has an unsolved child, and doenst have a winner child, the node is unsolved
sugam: :(
BlaiseEbuth: You want the job? Toss a coin
AllYourTrees: :dice:
AllYourTrees: π²
BlaiseEbuth: Who need a job these days...
martinpapa69: my father always told: work is for the poor
BlaiseEbuth: A wise man.
sugam: damn imagine being poor
MSmits: snobs :P
jacek: https://www.reddit.com/r/Jokes/comments/p1dz9n/albert_einstein_sir_isaac_newton_and_blaise/ :drum:
martinpapa69: :thumbsup:
Astrobytes: unusually good for one of your links jacek :P
jacek: you dared to click my link?
FalINTOblivion0112: the puzzle of the week is kinda wack
AllYourTrees: how so
FalINTOblivion0112: its not a puzzle
FalINTOblivion0112: good morning and hello
holite: um its night maby beacause i live in india
Wontonimo: why would living in India make it night? The sun is up in the sky now. Maybe it's just cloudy there you mean
Wontonimo: :P
Jon...: :thinking:
Jon...: I like to pretend timezones don't exist myself, makes my life alot easier while programming :wink:
Jon...: Not having to consider timezones when processing data! I'm joking of course
valgardg: yes i understand now lmao
Jon...: In the past when I worked on a payment clearing and settlement system the timezones gave us hell. More because of twisted legacy requirements than anything else though
TobiasA: there goes my braincells
valgardg: huh yeah i can imagine... must be agonizing
Wontonimo: but you have to admit, all that timezone work sure paid the bills :drum:
Jon...: :stuck_out_tongue_winking_eye:
Stilgart: eulerscheZahl: it is not that easy to put the creator instead of an x :(
Scarfield: tom scott made a video about timezones, it looked extremely painfull to work with
martinpapa69: my bot has too many draws during the training with mcts solver :(
martinpapa69: it learns that every game is a draw
AllYourTrees: sounds like a bug
AllYourTrees: or its so good that it solved teh game lol
AllYourTrees: what game is that for?
martinpapa69: oware
AllYourTrees: oh nvm haven't worked with that one
martinpapa69: not sure if its a bug, or i jsut have to turn the solver off for the training
AllYourTrees: i have solver on during training for C4
martinpapa69: ye i too had my old solver on, worked well. but with my improved one it overfits
valgardg: ive heard alot about using algorithms to solve alot of coding quetsions. is it worth diving into all these algorithms and if so where do i find this stuff??
AllYourTrees: whats the improved one?
martinpapa69: now I actually backpropagate the terminal nodes, not just set terminal ones during selection
FalINTOblivion0112: guys i finished top 100 in a contest but i didn't get the achievement
FalINTOblivion0112: whats the problem
RoboStac: was it the sogeti contest last week?
Scarfield: lol, just realised i never reset my variables for winning/losing, in mcts C4. how this even worked im not sure of xD
BlaiseEbuth: Scarforgot
Scarfield: its even getting about the same rank after fix. makes no sense
jrke: oh C4 also in 300 players club
AllYourTrees: :cheer:
Scarfield: yup, and im in top 300 :muscle:
AllYourTrees: LOL
jacek: connect4 is so last week
jacek: amazons is so this week
Scarfield: old school cool *
BlaiseEbuth: Once again not my puzzle...
Scarfield: you made a puzzle? :o
PMierzwa: I am in wood 1 in the coders strike back, but i beat the boss every time.. how do i get to next league?
BlaiseEbuth: But this time this is clearly puprposely. :(
jrke: you have to submit it PMierzwa
jacek: you need to be above he boss in leaderboard after the submit is over
Scarfield: your score has to be higher than the boss after finished submot
jrke: and wait until submission ends
Scarfield: just so you know PMierzwa, the inputs change when you league up for some of the leagues in CSB, so if you rank up and your bot starts failing, thats why
Katespizer: is it normal that i have to complete captcha like 5 times per day
BlaiseEbuth: Be more human, and this will stop.
martinpapa69: you filthy spamsubmitter
PMierzwa: thank you, it makes sense now :)
jacek: captcha? in this site? w00t
Scarfield: Katespizer if you play a lot of clash of code, or spam submit you will see captchas afaik
Katespizer: i guess, i've played like 1000 before and saw it one time, but from yesterday i saw it couple of times, but i was getting easy problems, so maybe everything is as it should
martinpapa69: if you get flagget for non-humanness you wil lget captchas for a while
martinpapa69: for 1-2 days
Scarfield: function argument as reference; int& var, or int &var?
martinpapa69: int& obviously
Scarfield: yea pretty much everything i read uses that, for some reason i just think int &var is easier to spot as a reference when looking through code
martinpapa69: one thing i dont like in c/c++, that you cant int* a, b;
martinpapa69: you have to int *a, *b
martinpapa69: not that i declare 2 poiters at the same time often
MSmits: it's weird
jacek: oh my
MSmits: the * is part of the type in my mind
MSmits: i even write it as int* a
MSmits: not int *a
BlaiseEbuth: Yeah... It's weird to declare two var on the same line! :scream:
MSmits: well that too
BlaiseEbuth: That's the point: Code clean, and this 'problem' will even not appear...
Stilgart: eulerscheZahl: there are 152 codingamers that have created a puzzle but that my app do not know about
Stilgart: (seems a bit too high)
BlaiseEbuth: Censorship! :scream:
Stilgart: two solutions:
Stilgart: 1/ I add all of them in my db
Stilgart: 2/ I put a userId when I do not have the entire data
Stilgart: problem is... the userId is not very useful
eulerscheZahl: sounds like you have to add more users. or just store the creator as a string without full info on XP, profile URL, ...
FalINTOblivion0112: who is AutomatonNN
FalINTOblivion0112: a user?
jacek: lets ask Automaton2000
FalINTOblivion0112: sure!
Automaton2000: what is the maximum number of players
BlaiseEbuth: A close friend of eulerscheZahl
Scarfield: "MSmits 07:06PM the * is part of the type in my mind" yea thats what i figured would be the reason to write it like that, but with the IDE colors int *a is just easier to spot
FalINTOblivion0112: hey Automaton2000 didnt initalize or declare variable type
Automaton2000: just what i needed to get to bronze
eulerscheZahl: now that NN is dead, BlaiseEbuth is pinging me? :/
FalINTOblivion0112: int numberOfPlayers = 1000;
FalINTOblivion0112: or am i wrong
MSmits: ahh ok Scarfield
MSmits: which NN died?
Scarfield: the automaton one
MSmits: oh
Scarfield: apparently
FalINTOblivion0112: when did AutomatonNN say that eulerscheZahl is a noob
MSmits: well people were pinging euler before to train the NN
MSmits: to make him ping euler too
eulerscheZahl: some also tried to teach it cat emojis. didn't work
Scarfield: the prize of being no. 1
MSmits: it did use the weird trick that breaks the chat and it starts leaking
martinpapa69: ye i too think * belongs to the type but, int* a, b show that the creators of c didnt think that way
eulerscheZahl: and there's this one thing that I learned from the bot: Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€Μ€
MSmits: oh noes
Scarfield: nooo
eulerscheZahl: oh yes!
Scarfield: xD
FalINTOblivion0112: ah yes
Stilgart: eulerscheZahl: for now, I will store additionnal info in the puzzle table
Scarfield: sigh
AllYourTrees: RIP
eulerscheZahl: never gets old
AllYourTrees: how long does it last for
eulerscheZahl: the end :(
FalINTOblivion0112: very nice now what is this vertical thing
BlaiseEbuth: Oh, I'm sorry. :( eulerscheZahl, is there a way to be forgiven?
BlaiseEbuth: :3
FalINTOblivion0112: what as that?
eulerscheZahl: some funny unicode
Scarfield: weird unicode stuff
FalINTOblivion0112: oh okay
eulerscheZahl: you can copy-paste it
AllYourTrees: what unicode character is that
FalINTOblivion0112: :smiling_imp:
Scarfield: it will delete system 32 if you use it wrong though
eulerscheZahl: 0xCC 0xA4 and these 2 bytes repeated many times
ANONYMOUS42: http://chat.codingame.com/pastebin/394eba2c-580b-443c-98fd-93903169b1c7
ANONYMOUS42: lmao that didn't work out
ANONYMOUS42: αΈ©Μ΄ΝΜ°ΜΜΝΜΜΝΜΜΔΜ·ΝΜ₯ΝαΈ½ΜΈΜ’ΜΜͺΜΜΜΜΜΝΜΜΜΝ lΜ΅Μ»ΝΜΜΝΜΝΝΜΜΝ ΝΝΝΓ΅Μ΄ΝΜ€ΜΝΝΜ€ΝΜΜΝΜΜΜΝΝΜΝΜΜΜΜ ΜΝΝ Ν Μ΅Μ§Μ¨Μ¨ΜΜΝΜΜΜ―ΝΜ©Μ³ΝΜΜΎΜΝΜΜ½ΜΜΜΝΝ Ν wΜ΄Μ§Μ¨ΜΜΜ£ΝΝΜ³ΜΜ°ΜΜ Μ³ΜΎΝΜΜΜΝΜΏΝΝ ΗΜ΄Μ¨Μ²Μ€Μ³ΝΜΝΜ₯ΝΜΜ³Μ€ΝΜΊΜ½ΜΜΜΜΜΜrΜΆΜΜΉΝΝΝΝΝΝΜΝΜΜlΜ΄ΜΜΜΜΏΜΜΜΜΜΜΜ½ΜΜΎΜΜΜdΜΆΜΝΜΎΜΜΜ
MSmits: weird
Astrobytes: euler, what have you don :(
Astrobytes: +e
eulerscheZahl: there's also this thing that goes in both directions d" ΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΝ©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν© ππΈ
69razer69: what
Scarfield: xD
69razer69: lol
AllYourTrees: impressive
AllYourTrees: does this work in slack?
MSmits: slack overflow?
martinpapa69: is it copyable ? ΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΝ©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©
BlaiseEbuth: Alert! Moderators are flooding the chat! :scream:
Scarfield: i really hope there is a slack overflow xD
Astrobytes: *Moderator
69razer69: really how is this possible
AllYourTrees: im disappointed, it doesn't work in slack
BlaiseEbuth: Na, you're all accomplice
Scarfield: ΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΜΊΝ©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν©Ν© ππΈstroBytes
ANONYMOUS42: http://chat.codingame.com/pastebin/d70d8eab-da67-4d66-83a1-aba72f3cf3c2
jacek: mods these days :unamused:
BlaiseEbuth: Exactly -_-
jacek: and i was too trolly for them
69razer69: lol cheghole tachkil hadak
ANONYMOUS42: weren't they going to remove the global chat btw what was that about
69razer69: got it lol
eulerscheZahl: that was only your opinion jacek
Astrobytes: jacek: :boxing_glove: :arrow_right: :card_box:
BlaiseEbuth: ...
BlaiseEbuth: Paper soccer?
eulerscheZahl: punch in the box?
Scarfield: :notepad_spiral: :soccer: ?
Astrobytes: Punching him back into his box
eulerscheZahl: hey, i'm close
Astrobytes: :D
Astrobytes: 69razer69: who or what is a cheghole?
Scarfield: i figured it was better not to ask
Astrobytes: "XD"
Scarfield: :)
jacek: ceghole?
Scarfield: xD
Astrobytes: Made me think of that yeah lol
Scarfield: get a room
Astrobytes: Suppose you gotta put your chegs somewhere
Scarfield: i saw that there is a "new" escape, did you try it?
jacek: my karliso isnt 1st in uttt
69razer69: Astrobytes: cheghole is same as "like" comparison
eulerscheZahl: your karliso?
eulerscheZahl: that's another alt of you? :P
jacek: oh my
Astrobytes: 69razer69: gotcha, ty :)
Astrobytes: Scarfield: Was that the one they used for the uh, escape contest?
eulerscheZahl: finding sherlock
Scarfield: no idea, havent been on for a few months, only the past few days
eulerscheZahl: was announced in an email i received for whatever reason
Astrobytes: ah right yeah
Astrobytes: Not done it
eulerscheZahl: me neither
Astrobytes: Sherlock right?
Scarfield: yea as euler said
Astrobytes: Oh, missed that :D
Scarfield: struct is on CG vacation thoug :'(
Astrobytes: Can do it when he returns I guess
Scarfield: sure :)
eulerscheZahl: is it still for free or do they already collect money?
Astrobytes: No you can still play that one and the previous ones for free I believe. Any others are paid for iirc
Scarfield: looked like sherlock was free, all the "newer" ones were pro accounts though
eulerscheZahl: plural? they are adding lots of them?
Scarfield: https://escape.codingame.com/games
eulerscheZahl: can't scroll, have to complete the poll first. but i don't want to
eulerscheZahl: asking for my coding level
Scarfield: 7 pro account ones, 4 of them looks different from the free ones
Scarfield: 3 free
Astrobytes: eh. Rescue and 80s paid for now
Scarfield: yea :/
michaellan: what else are they planning to paywall on this site?
Astrobytes: They were a good laugh though. Most of the fun comes from just communicating in a team tho'
Astrobytes: T Bali was like the Dungeon Master
**jacek never played escape
Scarfield: yea definately was fun, but not because of the coding challenge, struct and tbali did all the work anyway xD
Astrobytes: Nah. We did some problem solving
Scarfield: im just here for my looks
Astrobytes: Was defo easier with the mic
Astrobytes: lol
Scarfield: you could get the same/more fun out of an actual game. im definately not gonna pay for escape
Astrobytes: Hell no. Guess it could be fun for companies though
Astrobytes: *worth it and fun
Scarfield: yea, probably their target as well
Astrobytes: It is
eulerscheZahl: i played half a room. not my cup of tea
eulerscheZahl: then i ditched the team and went to bed
FalINTOblivion0112: i played mean max irl with my friends
Astrobytes: lol
FalINTOblivion0112: i was driving the reaper, it was fun
jacek: in reinforcement learning?
FalINTOblivion0112: it was for mean max irl
jacek: ~
Astrobytes: whoosh
FalINTOblivion0112: driving the reaper was the best
FalINTOblivion0112: driving the doof was the worst
eulerscheZahl: i have a hard time imagining how this works
Astrobytes: +1
FalINTOblivion0112: you go in a random dirt place
FalINTOblivion0112: grab a bunch of cars
FalINTOblivion0112: and DRIVE
FalINTOblivion0112: no casualties
eulerscheZahl: did you collect water with some buckets?
Scarfield: xD
FalINTOblivion0112: yes we dod
jacek: and spit the oil
Astrobytes: And all the violence
FalINTOblivion0112: yes
FalINTOblivion0112: we first only had reapers
FalINTOblivion0112: then we brought in the destroyeres
FalINTOblivion0112: weaponized
eulerscheZahl: the doof was meant to have flames coming out while generating rage. but CG didn't want to pay for the visual effects
FalINTOblivion0112: no
Astrobytes: lol
FalINTOblivion0112: but we did implement a propane ignition system
FalINTOblivion0112: to destroy the tankers
eulerscheZahl: this sounds totally made up to me
jacek: yeah, moderators salaries took most of the budget
FalINTOblivion0112: yes
eulerscheZahl: i got so many tshirts from CG
Astrobytes: It sounds extremely far fetched to me too
FalINTOblivion0112: well we did blow stuff up
FalINTOblivion0112: blowing stuff up isn't far fetched
Astrobytes: Robots I could believe
eulerscheZahl: playing paper soccer in real life could work
FalINTOblivion0112: let's say this - mean max is a fun game
Scarfield: im off for today, enjoy your evening :)
Astrobytes: :P
FalINTOblivion0112: we can all agree on that right?
Astrobytes: Take care Scarfield :)
eulerscheZahl: https://prnt.sc/1mdvkua good guy scarfiled, pushing me up
jacek: c4?
eulerscheZahl: at least when I cut the screenshot right there and don't extend it
eulerscheZahl: yes
jacek: good guys eveyone, pushing me up in amazons
eulerscheZahl: i wonder if switching from MCTS to solver is worth it
jacek: you dont have solver?
eulerscheZahl: i have that C# solver
martinpapa69: solver is big
eulerscheZahl: then started from scratch for a faster sim
eulerscheZahl: and C++ port
eulerscheZahl: ok, then i'll put the solver back in tomorrow
michaellan: whats solver?
eulerscheZahl: i have that rule: no coding after 8pm. only results in garbage code and not worth the struggle
martinpapa69: https://dke.maastrichtuniversity.nl/m.winands/documents/uctloa.pdf
eulerscheZahl: solver: see it as a mix of MCTS and minimax
jacek: mcts solver paper :scream:
eulerscheZahl: in some cases you know the outcome. at least for the last step of a longer chain
michaellan: i've been told you can use solver after your MCTS has hit the terminal leafs
eulerscheZahl: then you can backpropagate the outcome with more runs
michaellan: like you basically auto-prune losinig choices
michaellan: oh
michaellan: wdym by that exactly?
michaellan: just increase the weight? like x10 visits and x10 score
eulerscheZahl: there's the paper for a detailed version
eulerscheZahl: the idea is that you find a way that makes a player win at some point
martinpapa69: surprisingly easy to understand paper
eulerscheZahl: so the move right before, which allows that win, is a loss for the opponent
linjoehan: man my rank is dropping. what the fastes way to get back up? please don't say clashes.
eulerscheZahl: if a node results in all actions being a loss for the opponent, then again it's a win
eulerscheZahl: and you can go up to the root with enough runs
eulerscheZahl: so MCTS solver is like a minimax with a depth high enough to see the end of the game
eulerscheZahl: given enough time
eulerscheZahl: linjoehan http://apps.rezonux.com/codingame/?user=cedc01b66272d83d567143b93f115d5e3331661
eulerscheZahl: there are many answers for you
eulerscheZahl: i suggest back to the code
michaellan: can you incorporate the solver just by messing with the backprop values, or must it be coded specially into the MCTS?
michaellan: like it sounds like if all children are losing then you can backprop -infinity
michaellan: wait, +infinity
eulerscheZahl: you only have to touch the backpropagation
martinpapa69: i couldnt implement it without helper variables on the node
seshoumara: hi
michaellan: so you have some flag like isDefiniteLoss?
seshoumara: what is bitboarding?
martinpapa69: i have a flag node_solved, and a integer value
eulerscheZahl: http://chat.codingame.com/pastebin/e210e1b2-a371-4825-ba6b-a8deddbf3ea4
eulerscheZahl: short snippet to give you an idea. not a full solver. just 1 layer up
eulerscheZahl: and I should probably set the result of the parent node too, now that I look at it
martinpapa69: i even have a bitset for the children solved
martinpapa69: so i dont have to iterate every time
DylanDuault: Hi ! Do any of you guys use the codingame sync ? I wonder if it's outdated
martinpapa69: (if children_solved.all() node->set_solved())
eulerscheZahl: i'll probably just remove that one child, now that i'm thinking about it
martinpapa69: i store them in a vector
martinpapa69: not easy to remove
eulerscheZahl: swap child with the last one. then reduce size
martinpapa69: hmm
martinpapa69: good idea
eulerscheZahl: vector would be an option. I have that fixed size array
eulerscheZahl: http://chat.codingame.com/pastebin/a0c61d18-6c03-4fab-a0e7-802ebca45316
69razer69: name a country
michaellan: eulerscheZahl so you are basically collapsing intermediate nodes?
eulerscheZahl: i'm removing terminal nodes
martinpapa69: sounds like a clean solution
michaellan: i don't quite get the pathIndex
eulerscheZahl: just have to make sure that the root keeps at least 1 valid action even if i lose. better playing bad than crashing
eulerscheZahl: the path stores all the nodes along my current rollout
eulerscheZahl: i need that for backpropagation
69razer69: how to change genre of the contribution , i wrote a lote of things
eulerscheZahl: like chaning from clash to normal puzzle?
michaellan: > nodes along my current rollout
69razer69: yup
michaellan: i thought rollout was just a small simulation
eulerscheZahl: you can't. delete the old one and create a new
michaellan: you're creating intermediate nodes for each stage of the rollout?
69razer69: ok
eulerscheZahl: rollout = from current board state until there is a winner
michaellan: yeah
eulerscheZahl: or no more moves and tie
michaellan: understood
eulerscheZahl: and each intermediate step is in my path array
michaellan: oh, isnt that costly?
eulerscheZahl: and each intermediate node gets a score update
michaellan: whats the benefit of storing intermediate steps
eulerscheZahl: of course it is. but that's how MCTS works. you get more and more statistics for each node about a good next move
Astrobytes: don't create new nodes during the rollout
michaellan: I guess my question is, is Node*[] storing the nodes you took in the Selection phase, or the states you played out in the rollout?
michaellan: Node*[] path
eulerscheZahl: the ones i played and that altered the game state
michaellan: I am very confused if I am doing rollout correctly
michaellan: This is my rollout code for normal TTT http://ix.io/3vzY
Astrobytes: simulate the game from that node, use the result to score that node and backprop up the tree
michaellan: yeah but it seems euler is saving the intermediate states of the rollout?
eulerscheZahl: uint16_t move = random_bit(available_moves(s.boards[0], s.boards[1]));
michaellan: i am so confused
eulerscheZahl: that's not how move selection works
michaellan: oops
King_JulienN: how does one bite a wolf?
michaellan: how does move selection work
eulerscheZahl: there's a formula. it looks at the winrate of number of plays for each child node
michaellan: oh. i guess i'm doing a "naive" MCTS here right
Astrobytes: that's just random moves for the playout euler
jacek: flat monte carlo?
eulerscheZahl: fully random is somewhat working too. but far weaker
michaellan: alrighty
michaellan: but how useful is storing the winrate of each child? because the next time you encounter it, you expand the node to its children already
eulerscheZahl: how do you know which move lead to the win/loss?
michaellan: what do you mean? which move inside the rollout itself?
eulerscheZahl: race condition in chat
eulerscheZahl: i was talking about your code. let's answer your question first
eulerscheZahl: of course the winrates for each node change over time
eulerscheZahl: that's why you have to backpropagate your results
michaellan: yeah
eulerscheZahl: and then it is helpful. when you know that one move was almost always winning so far, you want to try that again and find a counter
eulerscheZahl: or realize that you can enforce a win. in this case the other options don't matter anymore
michaellan: how is this information stored then? is it within the node?
jacek: yes
eulerscheZahl: each node has its own stats for plays and wins
jacek: https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/MCTS-steps.svg/1920px-MCTS-steps.svg.png
michaellan: but thats what i do...
eulerscheZahl: .sgv.png that file extension is pure cruelty
eulerscheZahl: svg*
jacek: .png.jpg
eulerscheZahl: oh no!
jacek: + transparency
michaellan: i think i miscommunicated
michaellan: i am not wondering about that
michaellan: i am just confused what your path variable is for
eulerscheZahl: to still remember where to backpropagate to
michaellan: cant you just keep going up to your parent?
eulerscheZahl: i don't store a parent in each node
Astrobytes: He doesn't store the parent on the node
michaellan: ohh
Astrobytes: :D
eulerscheZahl: takes less memory without
michaellan: big oversight on my part
michaellan: yeah
michaellan: well its just a pointer type
eulerscheZahl: 8 byte * 5e6 nodes
Astrobytes: Node size matters if you need a lot
michaellan: yikes, true
Astrobytes: You don't even have to store children
Astrobytes: just indices
BlaiseEbuth: Yeah. Sell the children.
michaellan: indices out of some large pool of Nodes?
michaellan: is that what you're saying
eulerscheZahl: yes
Astrobytes: Yes. Index + offset (childcount)
michaellan: my brain is going to explode
eulerscheZahl: i went for readability here and store the pointer to the child nodes
BlaiseEbuth: That's Ok, you don't need it to live these days.
eulerscheZahl: give it some time to settle xxd
eulerscheZahl: once you understood it, it all makes sense
eulerscheZahl: coding it for the first time will still be tricky and make your head hurt
michaellan: It seems like I'll never be able to stop tinkering with my MCTS implementation
michaellan: there's always improvements
Astrobytes: Yeah for sure. And ask again if you need clarification. It's a bit odd until you get used to it.
martinpapa69: ye having an mcts alog is like having a pet
michaellan: i'm stuck between implementing this index+offset/not-storing-parent optimizations and coding up another game to test my current MCTS on
Astrobytes: lol, so true
eulerscheZahl: just make it work first
michaellan: i think it works
eulerscheZahl: you can think about performance later
eulerscheZahl: oh nice
eulerscheZahl: but you don't have the winrate. you select children fully random
michaellan: no...
michaellan: I am still confused
Astrobytes: that's the sim euler
michaellan: i have the winrate for nodes in my tree
michaellan: thats the rollout, not selection
michaellan: the code i sent earlier^
Astrobytes: it's his random playout code
michaellan: I am pretty sure I am using the right terminology here
Astrobytes: It's a minefield, don't worry
michaellan: *This* is my selection code: http://ix.io/3vA0 feedback appreciated
jacek: scarminefield?
martinpapa69: too many std::shared_ptr<Node>
michaellan: what should i do instead
eulerscheZahl: does this call UCB multiple times per node?
michaellan: oh crap
michaellan: i think so
eulerscheZahl: not sure what exactly max_element does
michaellan: URHHHHGHGH
michaellan: yeah it probably does
michaellan: okay this is an easy fix though
Astrobytes: yeah - don't do that
michaellan: i can just loop over it
michaellan: reject STL, return to monke C
Astrobytes: you can also calc one part outside and the less costly part in the loop
Peterpanda: there is also some loop invariant part of UCT than you can pull out of the loop for nice performance gains
michaellan: :o
jacek: no one likes logarithms :(
Astrobytes: Peterpanda said it more technically than me :)
michaellan: oh the log(parent.visits)
eulerscheZahl: or squareroots
Astrobytes: fastsqrtf
jacek: sqrt is cheap
eulerscheZahl: or inverse squareroots
Astrobytes: fastinvsqrt
michaellan: wait the log(parent.visits) is the only extractable part, no?
jacek: quake3 invsqrt?
jacek: yes
michaellan: this is gonna make my code so ugly
jacek: or sqrt(1/n) but thats too much imo
eulerscheZahl: those legendary quake lines
michaellan: i heard someone talking about a C4 multiplayer but i couldnt find it
eulerscheZahl: https://www.codingame.com/multiplayer/bot-programming/connect-4
jacek: huh
eulerscheZahl: there's a search bar at the top of the site. use it
jacek: did you find the memes yet
michaellan: i am stupid
Astrobytes: inline float fastlogf(const float& x) { union { float f; uint32_t i; } vx = { x }; float y = vx.i; y *= 8.2629582881927490e-8f; return(y - 87.989971088f); } inline float fastsqrtf(const float& x) { union { int i; float x; }u; u.x = x; u.i = (1 << 29) + (u.i >> 1) - (1 << 22); return(u.x); } inline float rsqrt_fast(float x) { return _mm_cvtss_f32(_mm_rsqrt_ss(_mm_set_ss(x))); }
Astrobytes: that failed to pastebin HARD
eulerscheZahl: this is totally unreadable
Peterpanda: handing out all the trade secrets :o
Astrobytes: http://chat.codingame.com/pastebin/e257004f-5fea-4115-a7e0-c54308946666
eulerscheZahl: still looks like glibberish that somehow compiles to me
Astrobytes: Yes. It's fast as hell though.
michaellan: should i use it in MCTS?
Astrobytes: From my Smits collection :)
eulerscheZahl: maybe i should try it too
Peterpanda: according to my profiling the sqrt(log()) line still eats up 9% of total time
eulerscheZahl: _mm_rsqrt_ss
eulerscheZahl: what includes do i need?
Astrobytes: I think x86intrin.h
jacek: i stopped caring about mcts/sim that much, since NN takes moslty over 90% time
michaellan: for NN, do you create a new NN each run?
michaellan: or do you somehow precompute it
eulerscheZahl: offline training
eulerscheZahl: many hours
jacek: NN is just set of weights, trained offline
michaellan: i see
michaellan: do you use a cluster or your own computer
michaellan: hmm, i'm wondering if i should switch from doubles to floats for my UCB calculation
Astrobytes: http://chat.codingame.com/pastebin/189e81be-002a-4e83-95c5-62baeeeca194
jacek: i always use floats
jacek: i use my pc only, those NNs are small
eulerscheZahl: would be easier to compare speeds if there weren't so many different machines in the backend
Astrobytes: Yes. Rather annoying.
Astrobytes: xxd: the last pastebin is a more efficient UCB calculation
Astrobytes: with some bits missing
eulerscheZahl: that double invsqrt... took me a bit to realize what's going on here
eulerscheZahl: you avoid a division
Astrobytes: Yeah
eulerscheZahl: i'll totally steal that
Astrobytes: Got this from Smits, it's a good one
jacek: no divide and conquer? :(
eulerscheZahl: i won't steal that extra parenthesis
eulerscheZahl: bedtime, see you
Astrobytes: gn euler
jacek: :older_man:
michaellan: thanks astro
michaellan: what headeres do i need
michaellan: and should i have AVX enabled
Astrobytes: yeah, x86intrin.h, enable avx in pragmas
Astrobytes: or whatever one it comes from, I forget
martinpapa69: hmm i found out my solver was an anti-solver
martinpapa69: an evil solver
Astrobytes: sign error?
martinpapa69: yup
martinpapa69: classic
Astrobytes: :tada:
Astrobytes: Welcome to MCTS solver debugging
Astrobytes: :D
jacek: write a paper about it
martinpapa69: How to write an mcts solver: don't
AllYourTrees: lol
AllYourTrees: unit tests save the day!
AllYourTrees: tic tac toe is a good way to test, since the whole game is solved and its fast :D
martinpapa69: i think thats why i got so many draws. basically two parts of my code was working against eachother
jacek: oware?
martinpapa69: ye, still oware
jacek: :scream:
jacek: why so low
Astrobytes: Yes. So I see by almost 300 games in my last battles against you only :rofl:
martinpapa69: my code sucks
martinpapa69: i have 800 submits
Astrobytes: :)
jacek: soon youll get banned ~
martinpapa69: no
martinpapa69: they cant stop me
jacek: suddenly, i need this https://img-comment-fun.9cache.com/media/aL2qxDx/a6pYlo7e_700w_0.jpg
martinpapa69: i searched the image on google. Related search:
martinpapa69: no women no kids
Astrobytes: Leon
Astrobytes: the movie
jacek: Mario
jacek: the game
martinpapa69: oh its a quote from the movie ?
Astrobytes: Sure
Astrobytes: Leon doesn't 'clean' just anyone. No women, no kids, that's the rules.
martinpapa69: i should watch that movie
juice0: "everyone" should
jacek: "everypony" should
dswannabe: Hi! Which Python 3 version uses this site?
Astrobytes: dswannabe: https://www.codingame.com/playgrounds/40701/help-center/languages-versions
Peterpanda: hey astrobytes, can it be that log and sqrt are swapped in the code snippet you posted earlier? it doesnt match the UTC formula and is also making my bot play worse
Peterpanda: although it weirdly computes twice as fast, and looking at the plots for ln(sqrt(x)) vs sqrt(ln(x)) i would just need to change C
Westicles: Never trust free code from devious europeans
Astrobytes: Yeah, you may be correct there D:
Peterpanda: i have a feeling it might be intentional
Peterpanda: fastsqrtf(fastlogf(node.visitCount)) computes twice as fast as fastlogf(fastsqrtf(node.visitCount)) by some compiler black magic
Peterpanda: (other way around)
Astrobytes: No, seems correct if you follow the rearranged formula, to me at least
Astrobytes: I could be wrong, it's late :/
Peterpanda: in UCT you first take the log, then the sqrt, right?
Westicles: If it was log(sqrt) you wouldn't need the sqrt, so yes
Astrobytes: yeah
Peterpanda: the code computes log(sqrt)
Peterpanda: which should be log()/2 ?
Astrobytes: Hey this was a copy paste from my textfile snippet collection, didn't check my code :)
Peterpanda: and the compiler is smart enough to somehow figure out that replacement :o
Peterpanda: no criticism, i'm just trying to understand
Westicles: That formula wasn't derived, just made up by somebody who might be a crazy person. Use whatever gives you the best results
Astrobytes: It is something of a black art playing around with that formula as applied to trees
michaellan: is it too much for the right version now
michaellan: i will try figuring it out
michaellan: the way in which the terms were rearranged is smart to be more efficient
Astrobytes: fastsqrtf(fastlogf(n))
Astrobytes: and yeah, avoiding the division is nice
ANONYMOUS42: does adding fast to my function name make my code faster?
Astrobytes: yeah /s
Astrobytes: Anyway. Pick the brain of MSmits. He's far better than I :)
shashj: how are you improving your skills other than this game
Astrobytes: which game?
michaellan: is it called UCB1 or UCT?
michaellan: i see both
Astrobytes: It's UCB1 applied to trees = UCT
michaellan: oh i see, thanks
michaellan: shashj: learn perl and ruby
Astrobytes: Or: https://www.codingame.com/multiplayer/bot-programming
michaellan: oh i thought he was asking about CoC
Astrobytes: Or: https://www.codingame.com/training/easy
michaellan: oh wait "other than"
Astrobytes: (or whatever difficulty)
Astrobytes: Devil's in the detail xxd :P
michaellan: i was super intimidated by bot programming at first
michaellan: i joined this site quite a while ago, and only did CoC
michaellan: for much too long
michaellan: regret not getting into AI earlier
Astrobytes: It's a superb way to get learning imo, some good puzzles too
michaellan: do i still need this special case? if (n->visits == 0) {
michaellan: return std::numeric_limits<float>::infinity();
michaellan: }
michaellan: i guess not
michaellan: wait... is it faster to do wins*invsqrt*invsqrt than it is to do wins/visits
michaellan: :thinking:
Senbonzakura: How do I see my previous code clashes?
michaellan: i am not a low-level wizard but i heard division is a slower operation
Wontonimo: Senbonzakura, you can't
michaellan: you can use the notifications if they pop up
michaellan: or search history
michaellan: browser history*
Wontonimo: oh, didn't think of that
Senbonzakura: Yes, I can go back, to view from notifications but what if the history becomes too long.
michaellan: its not worthwhile
michaellan: they're just clashes
Wontonimo: yeah, move on with your life
michaellan: what i hate more is you can see the corresponding chatroom for the clash, if you refresh the page
michaellan: like i like to chat to others, particularly for shortest mode and just to discuss our solutions
michaellan: </rant>
michaellan: back to work :)
Wontonimo: +1 for rant
Astrobytes: Yeah double invsqrt eliminates the need to divide
Astrobytes: *the double invsqrt
Senbonzakura: Do you have any advice on what to do for a starter, me?
Wontonimo: well, there is this https://www.codingame.com/multiplayer/bot-programming/coders-strike-back
Wontonimo: which is considered "the starter" multi player game
michaellan: yeah, i hate it though its so hard
michaellan: (for me)
michaellan: YMMV
Wontonimo: if you want a puzzle, i really liked physics problems and so I'd recommend the Mars Lander series (turn off volume for this) https://www.codingame.com/training/easy/mars-lander-episode-1
Wontonimo: if you want some hint for either Senbonzakura, send me a message
Senbonzakura: Thankyou very much. I hit the link and was stuck a bit so pardon my late reply.
Wontonimo: I'll dock you 3 fake internet points for the tardiness
Wontonimo: ;)
Senbonzakura: Is that a good or bad thing?
Wontonimo: https://imgur.com/gallery/7Dp8qwQ
Astrobytes: Wontonimo is the new good-natured and helpful MK
Astrobytes: Wear the taco mantle and wear it proudly! :)
Wontonimo: :D
Senbonzakura: I'll give you +10 internet points. I'm trying out the links you've given. INTERESTING :))
michaellan: I am confuseed
michaellan: where is rsqrt_fast() and fastlogf() located?
jmurphy1267: I think this is just asking for the min number
michaellan: doesnt seem to be in x86intrin
michaellan: .h
Astrobytes: lol
michaellan: ;-;
Astrobytes: http://chat.codingame.com/pastebin/3c5527ef-c58e-4303-ab6a-d90e3a8dd6e6
michaellan: i'm actually stupid
michaellan: thank you
Astrobytes: :grin:
michaellan: i cant believe i didnt connect the two dots
michaellan: i sorta just deleted the first page since i had 0 clue what was happening and it was making my head hurt :rofl:
michaellan: should i credit you for that code?
michaellan: ouch i segfault :cry:
Astrobytes: No, MSmits and whoever else he got that from
Astrobytes: Got all your pragmas?
michaellan: https://envs.sh/OS.bin
michaellan: my headers
michaellan: wow that pastebin is actually dumb, one sec
michaellan: http://sprunge.us/6MlM8z
michaellan: i took this from wontonimo
michaellan: (the first two lines)
Wontonimo: i was not responsible for the rest of that include all
michaellan: heh
michaellan: i can remove a couple now that i've opted for lower-level not-STL approaches
Astrobytes: #undef _GLIBCXX_DEBUG
- pragma GCC optimize("Ofast","unroll-loops","omit-frame-pointer","inline")
- pragma GCC option("arch=native,tune=native")
- pragma GCC target("movbe,pclmul,aes,rdrnd,bmi,bmi2,lzcnt,popcnt,avx,avx2,f16c,fma,sse3,ssse3,sse4.1,sse4.2")
Astrobytes: ffs
Wontonimo: yeah, i'd be interested if there is something better for the first 2 lines
michaellan: yikesssss
Astrobytes: http://chat.codingame.com/pastebin/2c181b00-5d8e-47a5-b1f1-99c90294e417
michaellan: march=native i saw that in a couple places online
Astrobytes: I think that covers most bases, but don't always use Ofast
michaellan: frik still getting segfault
michaellan: and i dont know what to do now
michaellan: :cry:
michaellan: i will put a bunch of print statements to see at what point it segfaults
Astrobytes: Turn off the pragmas
michaellan: ah my UCT Is getting me NaN
michaellan: wait... whats log(0)
michaellan: i think thats the problem
michaellan: wait, how did my program work before???
michaellan: dont we always do log(0) when the parent node has 0 visits
michaellan: wait i am just rambling
Wontonimo: log(0) is undefined
Wontonimo: or neg infinity if it is log(+0)
Astrobytes: log(0) will get you far. Far from results
michaellan: if (n->visits == 0) {
michaellan: return std::numeric_limits<float>::infinity();
michaellan: }
michaellan: yeah that seems to fix it
michaellan: arghhh this is so annoying
michaellan: i am indecisive on how to generate a random move for UTTT
michaellan: i'm wondering if i should cave in and use a std::vector of up to length 81
michaellan: or.... i wonder if CG supports the int128s?
KiwiTae: u need to rnd a valid move no?
michaellan: yeah but the worst case is 81 valid moves to choose from
michaellan: which doesnt fit in 64 bit int
KiwiTae: use 2 of them
michaellan: that sounds like hell NGL
michaellan: do you do that?
KiwiTae: no i havent
KiwiTae: didnt try uttt yet
AllYourTrees: rust supports u128's :D
michaellan: me no like rust
michaellan: but i wonder how fast operations on u128s are
AllYourTrees: :shrug: i think llvm does something with it
AllYourTrees: it might be possible for rust to avx it automatically, but i don't think they compile it with the right flags
Peterpanda: xxd choose random subboard first then random move on that board
Peterpanda: it's not perfectly uniform but much easier to implement
Notgoodatcoding5: Hi
Bevan_Boss: hi
shashj: How are you guys improving your coding skills
juice0: by playing games and taking a break every now and then to play other games, interspersing that with empty promises to read something every now and then
Wontonimo: code every day shashj
martinpapa69: code c every day:four_leaf_clover:
Wontonimo: code more than you read non-code text every day
BlueArtemis: write code like your life depends on it
sterben209: em lΓ ngΖ°α»i mα»i cΓ³ ai dαΊ‘y em c+++ vα»i
IISadNightII: Where I can learn Hacking??
IISadNightII: I would like to know
Michael_48: go to hacking.com /omnipresentSourceOfHackingKnowledge