Chat:World/2021-08-10

From CG community
Jump to navigation Jump to search

Default avatar.png holite: hello guys i am ney hee

Default avatar.png holite: new here will you be my friend

Default avatar.png holite: i am from india

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?

Default avatar.png yingchuann: may i know what is imax?


michaellan: sounds like Index of MAX

michaellan: or the theater

BlaiseEbuth: or max with i before

Default avatar.png 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

Default avatar.png yingchuann: im newbie in here so not really know abt it

Default avatar.png yingchuann: im using python

michaellan: im not sure such a function exists (other than in numpy)

Default avatar.png 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

Default avatar.png Evolhimar: Hi there!

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:

Default avatar.png TheDoomedLongcoat_ddf8: hello

Default avatar.png TheDoomedLongcoat_ddf8: anyone use blender here?

derjack: i mix my fruits by hand

Thyl: hi!

juice0: underappreciated comment by derjack

Default avatar.png Shivay: poplique share the code

derjack: oh my

Hunter64TheOne: yo the English

Hunter64TheOne: the word you are looking for is god

Default avatar.png holite: oh guys

Default avatar.png 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!!!!!!:)

Default avatar.png holite: :)

KiwiTae: heres some "help"

derjack: help?

BlaiseEbuth: phle

Hunter64TheOne: yo

derjack: lets do the puzzle of the week

Default avatar.png tduck973564: vn

Default avatar.png ChirathPansilu: mandeya

ReiKiriyama: any hints for puzzle of the week? Very new to "bitboarding" and minimax algorithm.

Default avatar.png HadjAliMazen: hello

Default avatar.png HadjAliMazen: !

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

Default avatar.png MidOrFeed: how do you find the puzzle of the week?

Wontonimo: it is in your notifications

Wontonimo: the bell icon top right

Default avatar.png advait7: leo messi -> psg 😎

Default avatar.png MidOrFeed: ahh thank you!

derjack: messi in psg? oO

Default avatar.png advait7: yep

Default avatar.png advait7: its official

Default avatar.png advait7: he landed in paris

Default avatar.png Pro-grammer: hi

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

Default avatar.png Pro-grammer: wo what an other pro-grammer?

Default avatar.png Pro-grammer: damn

Default avatar.png Pro-grammer: sorry for stealing your name

Default avatar.png Pro-grammer: (i'm canadian to XD)

Default avatar.png Pro-grammer: omg sorry for the typo

Wontonimo: no, I'm sorry I didn't put your name right in the original message

Default avatar.png HadjAliMazen: hello!

Default avatar.png HadjAliMazen: hellooooo

Wontonimo: hey

Default avatar.png HadjAliMazen: "hello"* 50

Default avatar.png HadjAliMazen: how are u doing here

BlaiseEbuth: Caribous reign is coming

Wontonimo: good thanks. What kind of coding background you got HadjAliMazen ?

Default avatar.png HadjAliMazen: Python @wontonimo

Wontonimo: nice

Default avatar.png HadjAliMazen: DS

Default avatar.png HadjAliMazen: data scio

Wontonimo: what kind of stuff you've been working on lately in DS ?

derjack: nintendo DS?

Default avatar.png HadjAliMazen: yy

Default avatar.png Pro-grammer: nintendo DS?

Default avatar.png Pro-grammer: isn't the api deprecated?

martinpapa69: D Simulator

Default avatar.png Pro-grammer: on

Default avatar.png Pro-grammer: oh*

Default avatar.png Pro-grammer: lol

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

Default avatar.png 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:

Default avatar.png 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?

Default avatar.png holite: hello bullshit

eulerscheZahl: mind your language

Default avatar.png holite: hello poop

eulerscheZahl: blaise was faster

Default avatar.png Edvards: hello

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

Default avatar.png NorbecioMambo: Cheers

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

Default avatar.png holite: hello guys

FalINTOblivion0112: good morning and hello

Default avatar.png 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:

Default avatar.png valgardg: up no its 9pm there

Default avatar.png valgardg: uh*

Default avatar.png valgardg: `/s`

Jon...: I like to pretend timezones don't exist myself, makes my life alot easier while programming :wink:

Default avatar.png valgardg: how so

Jon...: Not having to consider timezones when processing data! I'm joking of course

Default avatar.png valgardg: oh haha

Default avatar.png 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

Default avatar.png 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

Default avatar.png 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

Default avatar.png 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

Default avatar.png 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

Default avatar.png 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

Default avatar.png 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

Default avatar.png Novmbrain: lol

jacek: "everypony" should

Default avatar.png Ty22117: hiello

Default avatar.png 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 :)

Default avatar.png shashj: hello

Default avatar.png shashj: guys

Default avatar.png 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

Default avatar.png shashj: Clash of code

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:

Default avatar.png 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

Default avatar.png 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

Default avatar.png Senbonzakura: Do you have any advice on what to do for a starter, me?

Default avatar.png Senbonzakura: :))

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

Default avatar.png 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: ;)

Default avatar.png 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

Default avatar.png 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?

Default avatar.png 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

  1. pragma GCC optimize("Ofast","unroll-loops","omit-frame-pointer","inline")
  2. pragma GCC option("arch=native,tune=native")
  3. 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

Default avatar.png dsfjkfdls: sus

Notgoodatcoding5: Hi

Bevan_Boss: hi

Default avatar.png shashj: Hello everyone

Default avatar.png 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

Default avatar.png shashj: Thanks everyone

Default avatar.png Srinath_Mikaelson: hlooo

Default avatar.png theprogrammingguy: hello

Default avatar.png sterben209: em lΓ  người mα»›i cΓ³ ai dαΊ‘y em c+++ vα»›i

Default avatar.png IISadNightII: Where I can learn Hacking??

Default avatar.png IISadNightII: I would like to know

Michael_48: go to hacking.com /omnipresentSourceOfHackingKnowledge