Chat:World/2022-07-08
struct: hi
eulerscheZahl: good morning
DaffarelAdyadmaWinuradmaja: morning
DanialK: hello
PatrickMcGinnisII: finally gonna submit this thing again after so many months...or is it years? https://www.codingame.com/replay/650156857
PatrickMcGinnisII: kewl, promoted to silver
struct: grats
PatrickMcGinnisII: over 900 in silver, omg
PatrickMcGinnisII: ok, rank 506 ... from over 1.4k in rank. I'll take it ... for now
Mr_Zhao-xin: For the first time, who can help me:smile_cat:
jacek: huh
Mr_Zhao-xin: don‘t huh, I‘m, rookie Xiaobai
Mr_Zhao-xin: Is there anything you can refer to?
Alec801: :eye::lips::eye:
Mr_Zhao-xin: ah, algorithms, games, I thought it was Js
derjack: it is many languages. python, java, c++..
Mr_Zhao-xin: why can't I set the PNG format of upload avatar? What format does it support?
jacek: it supports PNG. :thinking:
Mr_Zhao-xin: I choose PNG image, but it prompts unsupported file
jacek: too big?
Mr_Zhao-xin: I don't know. my picture is only 12.4kb
jacek: :shrug_tone1:
Mr_Zhao-xin: Well, pictures above 2m are OK:scream_cat:
jacek: is it really png
Mr_Zhao-xin: forget it, continue to learn Vue project, and stop fishing
TimeEngineer: Maybe you can try another image :thinking: and see if it works
Mr_Zhao-xin: I've tried many, but I can't. It's estimated that the file is too small
TimeEngineer: Scale it ?
Mr_Zhao-xin: By the way, how big are the avatars you uploaded?
TimeEngineer: 185x185 14.4kB
Mr_Zhao-xin: Mine is 500x500 12.1kb why not :sob:
jacek: does imgur.com accept it?
Mr_Zhao-xin: I uploaded a 2.61mb image, and the personal settings are displayed. Is there an audit?
DrunkeyCPP: in ruby: eval "010+2" = 10
DrunkeyCPP: could someone explain me why?
Aldoggen: 010 probably evaluates to octal
Ayza: yea it's what you said
j4at: yeah if a number starts with 0 then it gets evaluated to octal
DrunkeyCPP: oh I see, thanks
pluieciel: http://chat.codingame.com/pastebin/0507296d-3ea7-43c6-9a7d-73fad88cebb4
BlaiseEbuth: :think:
pluieciel: Hi, I have a question. When we need to search for a path BFS/DFS from Start to End, what is the difference between begin from Start and begin from End. What should I google to find something related? Thanks a lot
DrunkeyCPP: well one may take more time than the other depending how you built your graph
MSmits: plutieciel you can have multiple ends or multiple starts but not both
MSmits: pluieciel
MSmits: so if you have 1 start, you can have multiple ends
MSmits: or 1 end, with multiple starts
MSmits: it just finds the closest one
pluieciel: if i am sure there is only one Start and one End
pluieciel: fyi, i am doing The Fall
MSmits: then it is like DrunkeyCPP said. If for example., the start has an enormous amount of branching, starting there is slower
MSmits: because you're going in all directionds at once
MSmits: just to be clear, i never did anything other than starting at the start. Didnt even consider starting at the end
Mr_Zhao-xin: today is historic moment?
jacek: MSmits depends if you start from opening books or ending books
MSmits: lol
MSmits: btw, I now have versions that beat my old uttt bot 55% but are worse on the leaderboard (overfitted :( )
MSmits: gonna need to put some random in old bot and new bot
MSmits: I'm sure the teccles heuristic doesnt help with this either
MSmits: same first 20 moves every time
MSmits: well for p1 anyways
jacek: yeah it sucks when it overfits
jacek: i have locally c4 version that beat my bot 80% but its much worse in leaderboard
MSmits: yeah, i underestimated the overfitting that is possible in uttt
MSmits: probably because of the heuristics
jacek: thats why i kept different versions of bots for green circle
MSmits: smart
jacek: one of early attempts https://i.imgur.com/IxDRaQf.png
jacek: blue one is vs random and red one is vs 1st action
MSmits: ohh ok
jacek: you can winrate drops to below 20% even while it beats the stronger bots
MSmits: yeah
jacek: more stable learning https://i.imgur.com/bEYrN8c.png
MSmits: what did you do differently with that one?
jacek: bigger model and better gamma parameter
MSmits: ah ok
User_xin: I can't open it. Maybe my Google should decorate something
jacek: i have several such graphs each for some different hyperparameters
MSmits: right, that helps
TimeEngineer: jacek, is that normal my dqn can't reach 90% draw against himself with eps = 0.1 ? (Tic Tac Toe)
jacek: helps because my q-learning implementation sucks and was 1-core only. so i ran several tests in parallel
jacek: could be. personally i never did dqn for TTT but i read it can be quite messy
jacek: well, i did q-table and it worked perfectly
TimeEngineer: :thinking:
MSmits: mmh you just put all states in a table?
MSmits: that works, but is a bit trivial :)
MSmits: I guess it may give better results than minimax though
jacek: quick search https://the-mvm.github.io/deep-q-learning-tic-tac-toe.html and https://medium.com/@carsten.friedrich/part-4-neural-network-q-learning-a-tic-tac-toe-player-that-learns-kind-of-2090ca4798d
TimeEngineer: Yeah, if I need a proper solution, I prefer minmax
MSmits: yeah but minimax doesnt deal with suboptimal players very well
MSmits: it will have more draws
jacek: they cant achieve perfection despite big models
jacek: yeah my 1-ply ntuple has more wins against random than the perfect player against random
jacek: https://github.com/jdermont/tictactoe-ntuple
jacek: simply because it chooses center at the beginning which leads to more losing states for random players
MSmits: ah yes
MSmits: not vs human btw
MSmits: humans tend to memorize how to counter center start
MSmits: so randomly starting as p1 is good
TimeEngineer: Maybe a random among the best move
MSmits: thats what i usually do
MSmits: starting moves for p1 are all solved as draw
TimeEngineer: http://chat.codingame.com/pastebin/9c9b183d-7be7-43a1-911d-724718d13a65
MSmits: so thats basically randoming 1st move
TimeEngineer: wut
TimeEngineer: http://chat.codingame.com/pastebin/62114c2a-e6ad-44f4-b94b-fe6f89831518
TimeEngineer: Ok ._.
BlaiseEbuth: :popcorn:
jacek: i totally agree with whats written there
jacek: oO
jacek: :tada:
jacek: time to deploy into prod
BlaiseEbuth: No more chat
MSmits: whwn?
MSmits: when
TimeEngineer: Thanks jacek and MSmits
MSmits: for?
BlaiseEbuth: They said "next week" last week, so today. Or it's again reported...
TimeEngineer: For the explanation
MSmits: oh ok np
jacek: maybe french week is different
MSmits: could be they have a siesta like Spanish people, only it's the whole week
MSmits: this is my working theory
User_xin: france: are you polite?
Aldoggen: in belgium we call this vacation
BlaiseEbuth: Perhaps in Montpellier :thinking:
MSmits: Pfft die Belgen, altijd op vakantie
Aldoggen: ik wist dat je een nederlander was ;)
MSmits: hehe lets stop
Aldoggen: okay, back to english
MSmits: or the mods tick off
BlaiseEbuth: First warning MSmits
Aldoggen: yep, I was thinking it too
MSmits: :P
Aldoggen: you have no power here BlaiseEbuth
BlaiseEbuth: No more...
User_xin: Can I speak Chinese??
Aldoggen: yes, but not in this chat lol
MSmits: how do you know he can?
MSmits: I can't
5DN1L: User_xin use #cn channel for Chinese please
User_xin: is the weekend is here
User_xin: goodbye, everyone. see you next week
Afraaz1: for the easy rock paper scissor lizzard spock challenge
Afraaz1: is there a way to work out who wins without lots of if statements?>
MSmits: nope
MSmits: well you can do a lookup
MSmits: put the information in an array[5][5]
Aldoggen: you could identify each of the things with a number mod 5
MSmits: right
afstydfb: im stuck on the space ship thing
Aldoggen: but I did it with some if statements
afstydfb: the code doesnt work
Aldoggen: what error does it give?
**BlaiseEbuth send help.
afstydfb: Timeout: the program did not provide 1 input lines in due time...
afstydfb: attempt to concatenate a nil value (global 'nextCheckpoint') at /tmp/Answer. on line 25 at in main chunk. on line 25 at in ?. on line 0
Aldoggen: afstydfb first error means your program runs slow
Aldoggen: maybe you have an infinite loop
MSmits: or maybe he uses lua :P
MSmits: j/k
afstydfb: lua is ez for me but yes
MSmits: puzzles should work in any language
derjack: mad pod racing?
Aldoggen: so nextCheckpoint is nil
derjack: huh? is this default code?
Aldoggen: was your pod almost at the end?
5DN1L: should be something like nextCheckpointX. nextCheckpointY?
afstydfb: i tried that earlier
5DN1L: what's nextCheckpoint
Aldoggen: uninstantiated variables are probably nil
afstydfb: should i try add more checkpoints?
5DN1L: we don't know what nextCheckpoint holds in your code
5DN1L: we can't advise based on your description so far
afstydfb: the pod moves to checkpoint 3
5DN1L: If you're in Wood 3, you just have to amend the line of code where you print stuff
5DN1L: shouldn't be necessary to change anything else
afstydfb: how can i share replays
derjack: there is share icon under the replay screen
afstydfb: but it flies over ther check point
derjack: you can share code using pastebin.com
afstydfb: but i think i fixed the code
derjack: :tada:
NglQ: Guys, I'd like to ask something to you: at the beginning when I signed up to this platform there used to be a button called "get a job". Now I cannot find it anywhere. Some of you guys knows what happened?
5DN1L: removed
NglQ: Why?
derjack: everyone got a job
5DN1L: 🎉
NglQ: @5DN1L I'm serious why did you removed it?
5DN1L: I didn't remove it
5DN1L: I'm not CG staff
NglQ: OK
NglQ: So you don't know why?
5DN1L: i was searching
5DN1L: i found the reason told by Thibaud in Discord
5DN1L: 29/03/2022 "this service is going to end very soon, as we've decided to shut it down. "
NglQ: Thank you
5DN1L: np
BlaiseEbuth: It's not a reason... :thinking:
5DN1L: ending the service is a reason for removing the button
5DN1L: they could also have said for asethetic reason :shrug:
BlaiseEbuth: Yeah...
Lachrymosa: H O W D A R E
derjack: :upside_down:
MSmits: I turned off teccles heuristic and added 1% randomness to my best bot and now evalbot has 75% WR against it...
MSmits: not sure if testing like this is better :P
Lachrymosa: what game?
MSmits: uttt
Lachrymosa: Man, I tried my hand at that one. I still struggle with simulation and state evaluation for MM and similar algos
MSmits: state evaluation is hard in uttt
MSmits: but simulation is a safe option as long as you have no bugs
derjack: 1% randomness?
derjack: 1% to make totally random move?
MSmits: no add max 0.01 to value of move
MSmits: tiny randomness
MSmits: but if i look at some early game output it's like this:
MSmits: move 7 6 value: 0.329956 visits: 7968 [-1,1] move 7 8 value: 0.326269 visits: 7128 [-1,1] move 8 6 value: 0.322324 visit
MSmits: so 0.01 could do the trick
derjack: youre addin that during final move selection?
MSmits: yes
MSmits: it plays worse, so i guess it worked
MSmits: losing the teccles heuristic may have hurt more though
MSmits: ohh I have an diea
MSmits: idea
MSmits: maybe I should give my best bot more calc time
derjack: you have the same time or iterations?
MSmits: time
MSmits: gives a bit more randomness than iterations does
derjack: if you use xorshift make sure your seed isnt 0...
MSmits: it's not =)
Lachrymosa: Is there a way to see a "Last logged in" stat on a user?
5DN1L: I guess not. You may try checking out their profile on the forum, but that's correct only if they visit the forum when they last log in
Lachrymosa: I just miss SamSi and wish they'd log on sometime. Haven't seen them in like 5-6 years now though
5DN1L: ah I remember they created some puzzles here
struct: derjack do you use normal UCB1 for your NN MCTS?
jacek: yes
jacek: or jacekmax
MSmits: might be worth it to use other formulas. There are better ones but they are much more expensive. With the low number of rollouts that might not be a problem
MSmits: Thomsen sampling is one
jacek: i havent investigated those
jacek: well i was reading about them when i used non-nn mcts
jacek: since nn stuff is expensive anyway, why not try
MSmits: yeah
krishna636: krishna636 06:42ᴾᴹ hi guys, is there any exercise for learning java Builder
MSmits: I dont think so
MSmits: not here
jacek: builder pattern?
MSmits: mostly puzzles are not aimed at learning the basics. They are mostly aimed at using what you know and becoming better at it
krishna636: yeah builder pattern
MSmits: they are also language-agnostic. You dont learn specific language features here
krishna636: I saw somewhere code like new Class.Builder().setVariable() like this
jacek: puzzles here generally dont teach you about programming patterns
MSmits: they do motivate you to look for them elsewhere
krishna636: hmm got it:thumbsup:
MSmits: CG motivates you to visit stack overflow
krishna636: although I'm finding puzzles here very tough
MSmits: just try a bunch of easy ones until you find one you can solve
MSmits: codingame
MSmits: when i got here i had problems solving puzzles too
MSmits: now i can pretty much solve them all if i take the time. Some do take a lot of time, most dont
krishna636: should I start with algorithms?
krishna636: or data structure :sweat_smile:
MSmits: thats not really a clear question
MSmits: everything is am algorithm basically
MSmits: an
MSmits: CG does allow you to practice algorithms a lot
krishna636: I accidentally stumbled in this website
krishna636: is this better sorted than leetcode or geeksforgeeks
MSmits: data structure i dunno. I guess in a way you do need to have an easy to use datastructure for every puzzle and arena, but they wont look like structures you would use at a dev job
MSmits: sorted? you mean by difficulty?
MSmits: if so, then no, its not very welll sorte
krishna636: I mean does CG have better questions to crack interviews
jacek: there are categories but some easy puzzles can be more difficult than others
krishna636: I mean does this help me with my dev job
MSmits: there are lots of dev jobs
krishna636: I just want to improve my quality of code
MSmits: if your dev job is web dev, then this site is useless to you
MSmits: except for fun
SatelliteMaster1337: do both you need dara structure to solve algorithm but if you just do data structures its dry and out of context
MSmits: if you are going to do stuff with neural networks, or data science and such, then this site would be nice practice
krishna636: but I will give it a try
krishna636: seems like nice community
MSmits: sure is
MSmits: this chat will go away soon though, but the discord will be there
krishna636: yeah I will join discord :slight_smile:
sakib_shahon: I can solve some of the problems with algorithms or math. But I can't really find any step by step guide for developing more advanced stuff like genetic algorithms or training neural networks.
MSmits: i think i should adapt my meta mcts framework to fit params, like a GA or something
sakib_shahon: Any Idea where I can find good resources for that?
struct: There is a huge gap between ga and NN
MSmits: i know
MSmits: if you learn what mcts is, i can tell you what meta mcts is krishna636
MSmits: otherwise it is too much at once
jacek: sakib_shahon try https://www.codingame.com/learn
struct: sakib_shahon https://www.geeksforgeeks.org/genetic-algorithms/
Nerchio: meta mcts is when you take mcts and add meta to it
struct: I think this one is decent
MSmits: struct, i mostly mean to use the GA or whatever, to train params locally
struct: I only tried ga once tbh
MSmits: not to train nn
struct: i was talking to sakib msmits
jacek: i managed to train nmm with GA before switching to nn
MSmits: it would be much better than the current brute force uttt arena i use, it often hangs and it slow and single threaded
sakib_shahon: Well I know the theory of this stuff... But I am really bad at learning without coding it out.
MSmits: ahh ok
jacek: single threaded :scream:
sakib_shahon: For both ga and nn
MSmits: yeah my meta mcts can run 12 processes, np. But this program is old
MSmits: It'd be nice to have a GA that also gives some intermediate results, maybe some of those pretty graphs jacek makes
sakib_shahon: Is there a chance to look at others codes for the same game I am playing here?
MSmits: I could use a single bot that it starts an instance of and then feeds it param values
MSmits: which game? PRobably not
sakib_shahon: mad pod
struct: http://files.magusgeek.com/csb/csb_en.html
sakib_shahon: or code vs zombie
struct: https://github.com/Inoryy/csb-ai-starter
struct: that one is mad pod racing
MSmits: csb is the old abbreviation, before renamed
MSmits: code vs zombie can be hardcoded
MSmits: i just have a simple sim and monte carlo that reaches like rank 300
jacek: games are 'competition', there are no codes from others. but some people share and you may find some of them in github
MSmits: but hardcoded solution is top 30
sakib_shahon: I am getting stuck after bronze . And improving the code seems too hacky for case. A lot pro's seems to know stuff I haven't even heard about
jacek: try -3vel
sakib_shahon: *for my case
MSmits: a lot of pro's do, but they also hardcode
struct: a lot of pros just sim the game and run a search
MSmits: and yeah try -3vel for mad pod racing if you want a nice rank before moving on to a different game
MSmits: (mid gold)
MSmits: it's a cheesy trick
sakib_shahon: Any youtube channel or blogs to follow thats particularly good?
jacek: or no to waste a time on incomplete rules leagues
BlaiseEbuth: Hey hey. use my starter and go legend. ezpz
struct: I dont really know any channel that explains this stuff usually I just search the algo I want to use
sakib_shahon: Thanks guys for helping out. One of the reasons why I love the tech communities is that there's always helpful people around. And somehow the more they knows the more helpful they are.
MSmits: talking to people gives you ideas often
jacek: i dont know any book, i just randomly search stuff on the internet ;d
MSmits: yeah and sometimes the stuff he searches is about coding
sakib_shahon: I might be hardcoding things for quite some time i guess.
MSmits: if you want to learn a real search algoritm, do a simple boardgame like ultimate tic tac toe and then learn minimax and monte carlo tree search
MSmits: its good to start there because the game is simple and the algorithms require no adaptatiom
sakib_shahon: Ok I guess I will start with minimax and monte carlo
MSmits: nono
MSmits: monte carlo tree search
MSmits: monte carlo is something else
MSmits: the tree search is important
sakib_shahon: monte carlo tree search
sakib_shahon: got it
MSmits: yes, mcts
Astrobytes: though it might be better to start with flat MC
MSmits: not in uttt i think
MSmits: probably better to try minimax firt
Astrobytes: for learning purposes
MSmits: less buggy
Astrobytes: aCat was high gold with flat mc in java
MSmits: nice
MSmits: then yeah it might be good too
sakib_shahon: It would really be nice to have one or two purely educational and introductory games for some of the common techniques .
Astrobytes: just thinking in terms of difficulty gradient
MSmits: ok so monte carlo -> minimax -> monte carlo tree search
MSmits: thats the right order of difficulty i think
Astrobytes: Yes sakib, we thought about that before
struct: maybe I can make normal TTT
Astrobytes: still think it's a good idea tbh
struct: where you play vs minimax
BlaiseEbuth: Simple mc excercise ?
struct: but as a puzzle
Astrobytes: bunch of simple board games just to test on
MSmits: sounds good struct
MSmits: btw gotta go train arriving ttyl
struct: cya
Aldoggen: ttt as a puzzle exists already?
sakib_shahon: I'll stick to this than : monte carlo -> minimax -> monte carlo tree search
struct: not interactive Aldoggen
struct: i mean turn based I guess
struct: This is a decent video for minimax sakib
struct: https://www.youtube.com/watch?v=l-hh51ncgDI
Astrobytes: ah Sebastian 'The Accent' Lague
Astrobytes: yeah he's very clear and easy to understand
sakib_shahon: thanks struct
jacek: wood league of UTTT is TTT
Astrobytes: Yeah but something specifically designed with noobs in mind would be better
BlaiseEbuth: noobs
jacek: i can make a boss :imp:
Astrobytes: lol
Aldoggen: I think if you implement some proper algorithm, you'll be out of wood really quickly
Aldoggen: so it doesn't give much time to explore
Astrobytes: you can get out of wood in UTTT by doing much less than that
Astrobytes: so even less time to explore
Astrobytes: I wish CG had got on board with the 'noobs corner' idea
BlaiseEbuth: Not a priority.
BlaiseEbuth: But he told the devs about it. :ok_hand:
jacek: oh my, japanese former pm died
eulerscheZahl: he got shot, didn't he?
jacek: by former marine
Westicles: they should ban homemade guns
eulerscheZahl: if someone really wants, they'll find a way. but that doesn't mean that you have to make it easy for them. i'm in the "ban guns" fraction
BlaiseEbuth: :popcorn:
eulerscheZahl: and 2nd amendment was written at a time with wild animals and no police. it's ridiculous to still argue with it
eulerscheZahl: maybe they think they can defend themselves against the corona virus with a gun :thinking:
BlaiseEbuth: Nah. They've bleach for that
Westicles: there are a bazillion deer in the US, they are begging us to shoot most of them
Westicles: plus the canadians could attack any time
eulerscheZahl: then build a wall and make Canada pay for it?
BlaiseEbuth: :see_no_evil:
Westicles: I wouldn't want to get in a knife fight with a German, you guys are evolving into vicious killers
Westicles: over a million stabbings in Germany just last month
darkhorse64: ??
BlaiseEbuth: Well. With almost 250 mass shootings since january 1st, we can nothing but observe the benefits of guns on the US public security...
struct: enough of this non sense
BlaiseEbuth: Non sense ?
struct: Yes you are right, but this is not the place to discuss this stuff
BlaiseEbuth: eulerscheZahl was first!
Westicles: Retro typewriter art is amazingly popular for an ascii art puzzle
struct: good rating
struct: this puzzle is far better than the previous one
Westicles: yeah, definitely
Kellthazar: i'm curious to see the bests "block the spreading fire!" solutions.
Astrobytes: You will remain curious.
BlaiseEbuth: :grin:
Astrobytes: (they won't be released)
BlaiseEbuth: Fortunately...
Crosility: Stay curious ;]
Psyho: Kellthazar: hardcoded all of the solutions
jacek: :unamused:
struct: its friday and we still have chat?
struct: o.o
Astrobytes: indeed
struct: but we all know 1 week of dev = 1 month
Astrobytes: :D
jacek: darn inflation
Westicles: we pushed it out to after Bastille day in the morning meeting
jacek: bastille day?
darkhorse64: 14th July
jacek: 14th july?
Astrobytes: 15th is Pastille Day, when everyone is hoarse from drinking and shouting and must take throat-soothing lozenges
BlaiseEbuth: Chat's alive! \o/
BlaiseEbuth: Auto delete at midnight
Astrobytes: timebomb eh
BlaiseEbuth: Or next certificate update... Or next chat crash... :thinking:
Astrobytes: whatever the reason, it's still here for now
Westicles: How's chelengalileo coming along?
Astrobytes: just checked that actually, nice work Blaise!
jacek: huh
Astrobytes: not signed up yet jacek?
jacek: huh
Astrobytes: https://cheloniangall.com
BlaiseEbuth: The webchat is unavailable atm. I'm changing the client
jacek: if i logged in, wheres the chat
Astrobytes: it's more functional than it was when I checked before though
BlaiseEbuth: In which way?
Astrobytes: when I logged in there was something there
Westicles: we took that offline after the morning meeting
Astrobytes: List of users on the right etc, the menu button
BlaiseEbuth: Yes. So why 'more' ?
Astrobytes: It wasn't there yesterday
Astrobytes: for me
BlaiseEbuth: :upside_down:
Astrobytes: actually, wait a sec
Astrobytes: doesn't work on Chrome, win10
Astrobytes: for me
BlaiseEbuth: Now it's normal. As I said
BlaiseEbuth: But it was still online 2 hours ago
BlaiseEbuth: And was since 3 weeks
Astrobytes: no, literally nothing shows up at all
Astrobytes: I log in, nothing is there
Westicles: right, he turned it off for now
jacek: :no_mouth:
BlaiseEbuth: Astro don't read what I say... :(
Astrobytes: I do, but it shows in opera
BlaiseEbuth: Pic or fake
Astrobytes: https://imgur.com/a/VgsRpDu
BlaiseEbuth: Oh!
BlaiseEbuth: Cache probably.
BlaiseEbuth: Cause I dropped it server side
Astrobytes: first time I logged in on opera
Astrobytes: weird
Westicles: Blaise always messes up friday updates
BlaiseEbuth: When did you logged in?
Astrobytes: but still, every time I've logged in with chrome there's been nothing there
BlaiseEbuth: JS blocker perhaps ?
Astrobytes: just a few minutes back, first time was maybe 10 or so?
Astrobytes: meh, I don't care, as long as I know it works somewhere it's fine
Astrobytes: will probably end up using ext. client anyway
BlaiseEbuth: Could you try back on opera please Astrobytes?
Astrobytes: sure, 1 sec
Astrobytes: gone
BlaiseEbuth: OK. Thanks.
Astrobytes: np
BlaiseEbuth: The script was still in the page so I removed it. But the binding between the login form and the chat was already dropped, so I don't get how you were able to reach the chat... :thinking:
Astrobytes: tech works in mysterious ways...
BlaiseEbuth: :imp:
Astrobytes: ghost-turtle in the machine
BlaiseEbuth: *in the shell heh
Astrobytes: how did I miss that joke :(
BlaiseEbuth: :D
Astrobytes: been a long day, that's my excuse and I'm sticking to it
BlaiseEbuth: Fair enough.
Astrobytes: hehehe
Astrobytes: btw, got gold in the green circle game
BlaiseEbuth: Gg!
Astrobytes: My code is hideous
BlaiseEbuth: As always on CG...
Astrobytes: hey, some of my bots are quite nice. Not this one... :D
BlaiseEbuth: Crooked environments require crooked explorers...
jacek: now, defeat the boss!
jacek: oh, right... :(
Astrobytes: Yeah, I'm still annoyed about not getting to fight Boss Jacek
struct: jacek next contest submit on last day please
struct: or after legend opens
Astrobytes: nah, tough gold bosses are where it's at
jacek: i told you you wished wala was the boss
Astrobytes: only 84 people left in this gold league btw
BlaiseEbuth: For once CG communicates (more or less), informations are wrong... :sweat:
jacek: hm?
BlaiseEbuth: Chat deletion was planned for 'mid-june' in early june, then 'next week' last week, and it's still here...
Astrobytes: Maybe they forgot
BlaiseEbuth: My guess is that they can't find how to delete it.
Astrobytes: without breaking a lot of stuff? Possibly.
Astrobytes: anyway, not bothered about the reason tbh, lets enjoy while it's still here
BlaiseEbuth: Like a tumor it spreaded everywhere in the infrastructure. :imp:
BlaiseEbuth: Yeah of course
BlaiseEbuth: ^^
Astrobytes: Automaton2000 what do you think?
darkhorse64: act like a surgeon
Automaton2000: that would make it to gold
BlaiseEbuth: Chat is terminal Astrobytes. Too late for CG... :(
BlaiseEbuth: * darkhorse64
BlaiseEbuth: sorry
Astrobytes: we only call T.O.D on actual death
Astrobytes: early caturday
BlaiseEbuth: TOD?
Astrobytes: time of death
BlaiseEbuth: Ah.
jacek: https://i1.kwejk.pl/k/obrazki/2022/07/Xue4jmwl3bpkJr9q.jpg
Astrobytes: :frog:
Astrobytes: that's a damn fine cake
BlaiseEbuth: Oh... That's not a real one... Décevant
jacek: not real? :(
TobiasA: when you guys use NN model made in python in c++
TobiasA: how*
MSmits: a NN model is just a bunch of weights
MSmits: you just need to make sure it is outputted and inputted correctly
jacek: its just bunch of floats
MSmits: and the math in the python model needs to correspond to the same math in the c++ forward
jacek: and you need to make NN forward only
jacek: :rage:
MSmits: you can take a break jacek, i can handle it from here :P
Astrobytes: lol
struct: dont forget to avx it
jacek: nah, just autovectorize it
jacek: compilers smart
MSmits: if you want to use 8 bit floats, it takes some doing
TobiasA: oh so you have to make a NN from scratch in c++ but with only feed forward?
struct: or try both ways
MSmits: yes TobiasA
MSmits: it's not that much work, the work is in figuring out how to put the nn weights in the c++ file, encoded and decoded properly
struct: wdym by 8 bit floats?
MSmits: you can't just dump a bunch of numbers
struct: dont you convert them to normal floats when reading them?
TobiasA: damn i figured it will be something like that but I was hoping there will be a shortcut:cry:
MSmits: no, 8 bit float math is faster and can be avx-ed better
MSmits: afaik
struct: ah ok
MSmits: robo does it
struct: The forward part is the easy part
struct: The rest is the hard part
MSmits: TobiasA use marchetes github
MSmits: he did all this work for you
MSmits: just copy it and try to understand it
jacek: its good to have slaves eh
TobiasA: please do you have the link
MSmits: https://github.com/marchete
struct: https://www.codingame.com/playgrounds/58137
MSmits: those links lead to the same thing
jacek: no :?
MSmits: well imeant the playground has the github
Astrobytes: eventually they do
MSmits: i figured the github has the playgroubnd
Astrobytes: converge
MSmits: but i dont see it
jacek: liar
MSmits: https://github.com/marchete/CGZero
MSmits: this does
Astrobytes: https://github.com/marchete/CGZero
Astrobytes: dammit
Astrobytes: MSmits->score++;
MSmits: :bow:
TobiasA: thanks
MSmits: I am a bit frustrated fitting params for my uttt eval bot
MSmits: I was hoping i'd get further brute forcing fitting them
struct: still rank 9
BlaiseEbuth: Make a NN to fitt them for you
MSmits: but all I do is get ridiculous winrates vs my rank 9 bot
MSmits: thats my old bot
MSmits: my eval bot can get like 60-70% WR vs it
MSmits: but not vs the rest
MSmits: so it's overfitted majorly
MSmits: I can get rank 12 with evalbot
TobiasA: wait is it possible to use tensorflow on CG
MSmits: no not directly
MSmits: you use tensorflow locally
MSmits: and export the model
MSmits: then import into your c++ bot
MSmits: marchete has a working implementation for you
TobiasA: oh thanks
MSmits: there's like 10 marchete clones on oware leaderboard
MSmits: I was going to say you can recognize them by being ranked above me
MSmits: but i forgot i counterbooked them all
TobiasA: I thought I had to create a NN from scratch
MSmits: nope, well thats what jacek did
jacek: all the cool kids in top15 use NN. and MSmits
MSmits: and msmits doesnt :P
jacek: there are cool kids and there is MSmits
MSmits: i got the message jacek, but thanks for clarifying :P
BlaiseEbuth: MSmits is a cool adult
MSmits: thanks BlaiseEbuth
Astrobytes: confirmed by your old student who was on here
Astrobytes: who said you were a cool teacher
MSmits: ah yeah :)
jacek: especially when he was watching
Astrobytes: thiesjoo(s)?
MSmits: thats him
MSmits: https://www.codingame.com/profile/10ee8cd5f145e8d13cb00f959b10e5881665643
Astrobytes: I only remembered the joo part
Astrobytes: very dutch
MSmits: yeah
MSmits: He has a bunch of friends from my school but i dont even know them all
MSmits: on CG i mean
Astrobytes: hope they keep active
Astrobytes: at least you showed them the way
MSmits: doubt it, at that age life is busy
MSmits: yeah
Astrobytes: true
struct: They should be making NNs by now
PatrickMcGinnisII: I can't figure out how to bitb Counting TTT, any hints? I'm stuck with one long array atm
Astrobytes: just crash
Astrobytes: or whatever does it
MSmits: I cheat in that game PatrickMcGinnisII
Astrobytes: that game is broken
MSmits: I copy opponent
MSmits: until i can solve the game
MSmits: solver is reasonably good, so that works vs weaker players
MSmits: draws vs strong
struct: PatrickMcGinnisII the game is solved as a draw
MSmits: well thats not a real problem
struct: even php can do it
MSmits: the problem is that is is always solved by copying
struct: ofc yeah
Astrobytes: hence broken
MSmits: yeah, serious oversight
Astrobytes: did the author refuse to fix it or just never responded?
PatrickMcGinnisII: huh, i musta missed something ... mirror moves?
MSmits: yes mirror
jacek: read the forum
Astrobytes: yes thanks dad
MSmits: i guess you can look at it the way RPS tournaments work
Astrobytes: I was looking for a faster answer
MSmits: if you do the copy thing, you can never get 1st
MSmits: unless everyone copies
struct: maybe I can train a NN for RPS?
struct: o.o
MSmits: if 1 guy doesnt copy, he beats other peoplee that dont copy and are weaker
MSmits: so gets a better rating
MSmits: so in a way counting ttt still works
Astrobytes: copy with enough variation and you'll win
MSmits: how do you copy with variation?
Astrobytes: at the end
struct: ok maybe I cant, it sounds too hard
Astrobytes: copy, vary the end
MSmits: right, thats what i do with the solver
jacek: ezpz struct https://github.com/dennylslee/rock-paper-scissors-LSTM/blob/master/README.md
Astrobytes: like in RPS, copy first few times, then throw them with a different move
MSmits: but then the other guy can still copy
MSmits: you cant beat copiers that way
Astrobytes: Also: regarding "how do you copy with variation" -> see DNA/RNA
PatrickMcGinnisII: end game still needs streamlined gamestates ... unless I do/undo on same board
struct: im too dumb for this jacek
MSmits: too smart i think struct
Astrobytes: MSmits: you can, copy judiciously and play variations based on what they are expecting
MSmits: in counting TTT?
MSmits: what stops them from copying you?
Astrobytes: oh I thought we were still talking about RPS
MSmits: ohh ok,
MSmits: i wasnt
MSmits: i was just saying that counting TTT is like RPS
Astrobytes: I gathered that :D
MSmits: the copy guys all draw against eachother but get no wins
MSmits: the other guys fight amongst themselves and the best wins
MSmits: that person is at the top of the leaderboard
Astrobytes: Yes, hence the need for the variation, as in RPS :P
MSmits: so in that sense the game is not broken
Astrobytes: It's just lame
MSmits: yeah it takes the fun out of it
PatrickMcGinnisII: ok, it's 100 turns ... how far from the endgame can yall reach?
MSmits: I don't remember. Only a few turns i think
MSmits: maybe 10?
Astrobytes: donno, never bothered with it after that
struct: if draw bots gets spam submited the leaderboard will be all equal
MSmits: I can check, sec
MSmits: https://www.codingame.com/replay/649029716
MSmits: solved at frame 187
MSmits: thats why i win with +2
MSmits: but if he kept copying me after i solved, we would have drawn
MSmits: wait, no he messed up at the start
MSmits: if you notice the leaderboard, tric trac and royale are way higher rated. They don't copy
MSmits: rating-wise you see a whole bunch with 33, then above that, two 37s
PatrickMcGinnisII: hmm, I'm still sure there's a way to quick bitblt the 3 in a rows
MSmits: probably
struct: now i want to know how to multiply 32 floats at once
jacek: like nnue?
struct: yes
jacek: https://github.com/glinscott/nnue-pytorch/blob/master/docs/nnue.md#quantization
MSmits: value += float(FastRand(100)) / float(10000); This adds max 0,01 to my node value right?
MSmits: I am surprised my WR goes from 45% down to 25% if i do this, it's devastating
jacek: max 0,0099
MSmits: yeah
MSmits: but it's really devastating to my bot
MSmits: this surprises me
jacek: is it cumulative
MSmits: I thought i'd generate some extra random this way
MSmits: nope
struct: MSmits on node value?
struct: or on select?
MSmits: just at the end of the 100 ms
MSmits: final move selection
PatrickMcGinnisII: tx MSmits, looks like u found solution at 12 turns to end in first setup, then 7 til end in second ... but the advantage was only by 2 points...wow
jacek: it should do nothing unless all your moves are withing 0.01
MSmits: thats because i copy almost the whole game
jacek: then its problem somewhere else
MSmits: well to be fair a lot of moves are within 0,01
MSmits: in the early game
jacek: why dont you introduce randomness in ucb like me
struct: This is why you need rollout N depth MSmits
MSmits: i tried today struct
struct: didnt work?
MSmits: WR went down massivel
struct: lol
MSmits: 65% became 45%, then 30%
struct: I remember that I read it on a bt paper
struct: but cant find it anymore
jacek: ept?
struct: thats where I got the idea from
MSmits: i remember from oware i had a random rollout parameter
struct: I guess so jacek
MSmits: when my eval wasnt fitted very well, 4 or 5 deep was good
struct: they recommended 6-8 depth on rollout then eval
jacek: https://www.researchgate.net/publication/300114670_Early_Playout_Termination_in_MCTS
MSmits: as the eval became better, 0 was best
MSmits: think of it this way: Wat is the best rollout depth with perfect eval?
MSmits: what
MSmits: 0 right"?
MSmits: so as eval gets better, your rollout depth should go to 0
MSmits: and this is why NN's use 0
MSmits: because their eval is amazing
struct: yeah my eval is bad thats why it worked
MSmits: yep
MSmits: which means my uttt eval is pretty good i guess
MSmits: only it's still overfitted
struct: my eval never goes above 0.1
struct: but the rollout makes it be 1 sometimes
struct: So thats why it worked I guess
MSmits: mmh
MSmits: maybe you need to think about your param values
struct: probably
MSmits: they need to be in good relation with the exploration param
MSmits: i usually keep the exp param at 1
struct: I do score_1 - score_0
MSmits: and then fit the other ones to a good value compared to that 1
struct: Which make it pretty bad
jacek: in oware?
MSmits: with ucb1, you can pick 1 parameter to act as independent, preferably the most important one
MSmits: you never change that one
MSmits: exploration parameter makes sense for this
MSmits: you have this degree of freedom, because if you multiply all parameters by the same value, your bot stays the same
struct: I see
MSmits: so you might as well pick 1 value you never change
jacek: like you make pawn score fixed
MSmits: this assumes your eval is linear
MSmits: yeah
hacker535646: hiiiiiiiiiiiiiiiiiiiiiiiiiii
jacek: good evening
**PatrickMcGinnisII has been pwned by NNs, smh
MSmits: I have a theory about my random value addition problem
jacek: hm?
MSmits: uttt is super sensitive to calculation time, if you double it, you get like 10-15% WR
MSmits: so that means that if you have more calc time, the average value will probably change a little bit, so you can detect stuff that happens at great depth
MSmits: these will only be tiny little changes in node value
MSmits: but enough so 1 node that is bad, goes below a good node
MSmits: in early game that is
MSmits: so i am screwing this up majorly by adding +0.01
MSmits: i think i should probably just have 10 different bots with different calc time instead of adding random
PatrickMcGinnisII: I know nothing... but couldn't you flip a param like 1-p and run it like a binomial. ok I'll shutup
MSmits: the problem is that my testbot doesnt have params
MSmits: it's just mcts, all it has is an exploration param
jacek: add some randomness in ucb
Astrobytes: don't flip that
Astrobytes: (c that is)
MSmits: so that it explores differently jacek?
struct: yes
MSmits: hmm might be good
jacek: i have random[0.9; 1.1] * eval + exploration
Astrobytes: where were you adding the random before MSmits?
struct: i think the was adding on node.score = eval * rand()
MSmits: final move selection
Astrobytes: ahhh
MSmits: it makes it horribly bad
Astrobytes: no that doesn't seem a good idea
MSmits: even if only 0.01
jacek: struct only in selection, no randomness in nodes
struct: yeah
struct: only on ucbn
struct: ucb1
MSmits: i will try that then
MSmits: jacek, choosing child with most visits is still safe right?
MSmits: the random bonus or penalty should average out
jacek: yes
MSmits: ok
jacek: i chose visits + score, but its mostly a hack for solved nodes
jacek: instead of using ifs
jacek: score + log(visits+3)
MSmits: i usually do value, but i read somewhere visits is better for low calc time
jacek: youre more confident about them
MSmits: yeah, if you do value, you risk picking a node that hasnt been explored much, maybe it started going up in value right at the end
jacek: what i do i interpret is that you choose most visited nodes unless better node is order of magnitude better than visits done
jacek: somewhat like lower confidence bound
MSmits: well... i did a test just now
jacek: :scream:
MSmits: my ucb with random lost 32 in a row
MSmits: 36 now
jacek: ready for production then
MSmits: float adjustedWins = wins * (0.9f + float(FastRand(200)) / float(1000));
MSmits: this is right?
jacek: sounds right
jacek: but really its weird
MSmits: hmm yes it's weird
jacek: yours 0.01 shouldnt have that impact either
MSmits: maybe uttt is just different
struct: maybe because its slower
struct: i lose like 25% of rollouts if I do that on c4
jacek: but you said rollouts count doesnt matter in c4
struct: and it doesnt
struct: but uttt might be different
MSmits: it is
MSmits: i tested it earlier
MSmits: doubling calc time means 10-15% WR
MSmits: +
MSmits: this is why people obsess over simcount in uttt
struct: maybe I should try to opimize mine
struct: its kinda slow
MSmits: i messed up something else though, i think it may not be the random. Even if i turn it off now, it loses
MSmits: lol
MSmits: else if (bestPes <= -1 && value > bestVisits)
MSmits: i am comparing value with visits now in final move selection
MSmits: so i think the ucb thing could work if i fix this
jacek: oO
MSmits: it works!
MSmits: yay
MSmits: no more overfitting
MSmits: :cry: it wrecks my eval bot now
MSmits: well thats what i asked for :P
jacek: wrecks?
struct: the non eval
MSmits: 60%
struct: wrecks the eval
struct: its normal
MSmits: so my mcts beats my eval bot
struct: since it overfited
MSmits: because it's no longer overfitted against
MSmits: so now i can do serious fitting without worry
MSmits: thanks to your + 0.2 rand
MSmits: anyways, gotta go. Ttyl
struct: cya
jacek: is chat dead
DomiKo: no
DomiKo: still there
Westicles: chat can't die until wonton brings back the tacos
PatrickMcGinnisII:
- taco: Westicles
Crosility: TAAAACCCOOOOSS!!
Crosility: Sorry, you got me excited.
jacek: Automaton2000 :taco:
Automaton2000: makes me want to puke
BlaiseEbuth: :grin:
jacek: Oo
BlaiseEbuth: Good bot
**BlaiseEbuth patpat Automaton2000.
Automaton2000: i mean i probably did but at that time
jacek: Automaton2000 do you eat :taco:
Automaton2000: i think it's the same
DevMarcao: friday is tacos day
PatrickMcGinnisII: Automaton2000 :hot_pepper:
Automaton2000: yeah, it's not the most important
jacek: taco tuesday
visionspider: you guys talking about the mongodb party?
Astrobytes: what?
visionspider: they are doing taco tuesday
jacek: https://i.imgur.com/eaAeuKq.png
visionspider: https://nychappyhourwithmongodb.splashthat.com/
Astrobytes: thanks jacek for the palindromic greatness
wolfinj: can some1 tell me how i can get next level boss?
Astrobytes: The Hudson is far from me I'm afraid, though some of my ancestors went there
jacek: mad pod racing?
Astrobytes: hit it with a stick
jacek: click test in arena and wait until it finished the battles
Astrobytes: stick == -3vel
jacek: it seems youre at 25% battles
Crosility: That was a fun puzzle. Thank you Westicles :]
Crosility: Just did your Annihilation Puzzle.
Crosility: https://www.codingame.com/training/easy/annihilation Fairly Easy Collision Detection Puzzle for anyone wanting to spend some time on it :D
Astrobytes: wPuzzleComplimentsInChat++;
Crosility: fprintf(stderr, "%d\n", wPuzzleComplimentsInChat); >
jacek: not do the french kiss the girls
jacek: now*
Crosility: French.. kiss the girls?
Crosility: Don't tell me that's a puzzle? O.o
jacek: https://www.codingame.com/training/easy/kiss-the-girls
afstydfb: can anyone help me with the map pod racing
Astrobytes: No, that's evil.
Crosility: Oh my gosh, well, I try to do a puzzle a day, guess this is my puzzle for tomorrow jacek.
Crosility: Monkeypox.. oh gosh.
Astrobytes: wShockFactor++;
Crosility: How many of you here, follow industry/open source formatting standards for your code?
jacek: the what
Crosility: Like - for example, the ANSI standard for C curly braces.
Crosility: Placing them on a new line, versus maybe, omission in an if statement with one following statement, or on the same line as the if expression.
Crosility: https://www.gnu.org/prep/standards/html_node/Writing-C.html For Example, one standard.
Astrobytes: I go with func() { }
Astrobytes: I can do func() { } if needed but it's harder to read imo
jacek: :rage:
struct: void func ()
struct: { }
struct: :smiling_imp:
Astrobytes: I forgot my return type, oops.
Astrobytes: Perfection struct
Crosility: So, Astrobytes, I take that as a yes, you standardize your code?
Astrobytes: lambdas though, what do you do struct
Astrobytes: Crosility: only to my own standards but I'm consistent (not a dev by trade)
Crosility: Okay. :), same. Technically not a dev by trade either. I assume most here are not. But that's also why I'm curious. If some try to keep consistency, or if they don't care, and just write stuff to the screen & submit.
Astrobytes: If I don't keep to some kind of standard I'll never be able to read others code of any other standard
DomiKo: I follow google style guide
Astrobytes: that's cause you're interning at google
DomiKo: no
DomiKo: I'm doing it for almost a year now
Astrobytes: (it was a joke :P )
Crosility: Thanks DomiKo, you just taught me that Google has a giant repository of Style guides for languages.
DomiKo: yeah they have :D
Crosility: Didn't know they had their own.
DomiKo: Astro ;P
Crosility: https://google.github.io/styleguide/cppguide.html And it's stupid-level comprehensive.
DomiKo: it's good to have some doc with rules, so you won't change your own rules
DomiKo: there are some rules that you don't have to follow, like 80 chars line limit
DomiKo: or 2 space indents
DomiKo: but overall it's great
Astrobytes: I actually recently converted to snake case, I'm not a fan of hungarian notation and I like my braces like I say. Indents must be tabs.
Astrobytes: (tabs == 4 spaces)
Astrobytes: (preferably)
Crosility: Snake case?
Astrobytes: I can work with anything though
Astrobytes: snake_case
Crosility: Aw, I see.
Astrobytes: CamelCase
Astrobytes: *camelCase better
DomiKo: I found it really helpful to have camelCase for functions and snake_case for variables
Crosility: I forget, but wasn't camelCase a function naming convention, snake_case for variables, and CAPS for static variables?
Crosility: Hahaha, DomiKo .. said the same thing.
DomiKo: and I have to say that after some work I might change from 4 spaces to 2
Crosility: Well, that reassures my thinking I guess.
struct: I just write w/e, there is no rules here
struct: 1 space indent
Crosility: DomiKo - 2 space tab?
DomiKo: yes
Crosility: Is that even .. a noticeable indent to be readable?
DomiKo: about a week agou I would say no, but now I say yes
Astrobytes: DomiKo: regarding camel and snake usage yes!
struct: yes 2 indent is readable
struct: you just need to get used to it
struct: I still prefer 4
DomiKo: anyone know how to play paper soccer? xd
Astrobytes: I keep constants with either all CAPS or PascalCase and enums PascalCase
struct: domiko i heard its a popular game in poland
Astrobytes: lots of BFS
DomiKo: yeah it is
struct: ah how to play on what strategy to use
struct: NN
struct: when in doubt NN
DomiKo: really???
struct: no
DomiKo: ehhh
DomiKo: rule of thumb I see
struct: Jacek must use minimax there
Astrobytes: jacek used some modified BFS stuff at least as an example
Astrobytes: you'll never get a straight answer unless you play it though
DomiKo: making sim for that seems hard
struct: BT is your NN will shine
struct: is where your*
Astrobytes: indeed DomiKo
Crosility: So, with formatting. I do this a lot in the puzzles, but would never do in my own programs. - Does anyone else do this :
Crosility: int H, W; scanf("%d%d", &H, &W); fgetc(stdin);
DomiKo: I don't really want to train NN now :( it's so hot
Crosility: They will condense the initialize, and scan to one line, if it's just a couple variables.
DomiKo: I never mix C with C++
Crosility: (Well, I'm a C programmer primarily)
DomiKo: ohhh right
Astrobytes: "never mix C with C++" - CG says otherwise
Crosility: But I find most puzzles, I start them, and the first thing I do is half the number of lines of code I'm given.
DomiKo: :scream:
Astrobytes: come on, half our C++ bots are basically C
Astrobytes: with c++ parts for convenience.
k4ng0u: you guys never use the std lib?
Crosility: Haha, C logic is easier to read.
DomiKo: I use the std:: lib
Astrobytes: careful with that
k4ng0u: I was hopting you say otherwise, could have blamed my performance issues on that :p
DomiKo: :joy:
Astrobytes: I don't in sim/search based code
Astrobytes: if speed is an issue
DomiKo: yeah true
Astrobytes: otherwise with the pragmas and whatnot it's fine
Astrobytes: just don't go resizing vectors on the fly etc
k4ng0u: I usually use a GameState class and vector/array without pointers. could be the problem as everything is copied for each node. But I feel like it would just be a nightmare to code otherwise
DomiKo: there is a good rule for any language: you can only allocate memory in the first turn, and you will be fine
Astrobytes: ^ exactly
Astrobytes: k4ng0u yeah for a lot of things that works fine
struct: even reserving memory for vectors helps a lot
Astrobytes: but if perf really matters it's better to think clever
Astrobytes: yeah struct
Astrobytes: reserve more than you need if you think it might change, otherwise just reserve the max. DON'T change it during runtime
DomiKo: mostly it's not only the CG things, if you want performance you need to know that memory is BIG problem
Astrobytes: true, caching etc
struct: this is why mcts is slow
DomiKo: boys
DomiKo: Mean Max, Cyborg Uprising, Galleon Wars, Code4Life or Code a la Mode?
DomiKo: I have to start something :(
BlaiseEbuth: No more memory! Alzheimer for computers!
DomiKo: help me decide
BlaiseEbuth: Cyborg +1
Astrobytes: Cyborg or MM
Astrobytes: C4L is boring, CalM was shit, Pirates is OK though
struct: i have no idea how to make an AI for cyborgs
struct: so I vote for cyborgs
Astrobytes: (Galleon Wars == Pirates)
DomiKo: :/
BlaiseEbuth: That's the point. It's different
struct: let me think again
Astrobytes: Graph game!
DomiKo: I know some papers about that game
struct: Go mean max ill also compete
DomiKo: really?
DomiKo: 2 days contest?
BlaiseEbuth: Yeah MM was fun
struct: we can do cyborgs
DomiKo: we can
struct: your choice
DomiKo: I have like a whole weekend for that
struct: ok
Astrobytes: I should improve my cyborgs and MM and Pirates
BlaiseEbuth: Fight!
DomiKo: because I don't want to go outside
Astrobytes: hot eh?
struct: why not?
**BlaiseEbuth takes :popcorn:
DomiKo: hot and I need to do some CG :D
struct: if I win you must go outside
Astrobytes: and film it
struct: lol
DomiKo: :confounded:
Astrobytes: #DomiKoMelts
Astrobytes: you could set up a gofundme afterwards for post-sun cream
struct: its not that hot there
Astrobytes: well it was 20C here and people were walking around with their tops off (men)
struct: 25ºC vs 36ºC
PatrickMcGinnisII: 100F at 3:30pm here ... two hours ago
struct: Way hotter here
Astrobytes: I was kinda cold tbh
struct: DomiKo ok, so which game do you want to do?
DomiKo: but if I would go outside then I should go to mountains
Astrobytes: mountains > most things anyway
DomiKo: struct let's go with Cyborgs
struct: you can do w/e, you don't even need to go outside if you don't want.
struct: ok
DomiKo: Astro kinda true
Astrobytes: though I love the sea
struct: Im bronze there I think
DomiKo: i'm silver
struct: but its pretty weak bot
Astrobytes: Me too I think
DomiKo: so I have a little head start
struct: I never did graph puzzles
struct: good luck for me
Astrobytes: you're above me struct
Astrobytes: Maybe I'll do some for fun over the weekend
PatrickMcGinnisII: wth is Cyborgs?
DomiKo: https://www.codingame.com/multiplayer/bot-programming/cyborg-uprising
Astrobytes: DomiKo: you doing topcoder marathon next week?
struct: ghost in the cell
PatrickMcGinnisII: oh GiTC, love it
DomiKo: I've never done topcoder
**PatrickMcGinnisII never said his bot is good tho
Astrobytes: optim games are the ones we do
Astrobytes: Once a month
DomiKo: any link?
Astrobytes: one sec
Illedan: TC :raised_hands:
Astrobytes: illedan, got the link handy?
struct: https://www.topcoder.com/challenges?bucket=openForRegistration&tracks[DS]=true&types[]=CH&types[]=F2F
Illedan: Nope
Illedan: I don't do links
k4ng0u: I'm interested by the "only allocate memory in the first turn". Does it mean that during the first turn you create enough objects so that each turn would never require more than that amount of node? If so guess it would require a rather light state structure (when I read people stating they can have 200k sim a turn) Or maybe do you have a recycle mechanism for unused nodes?
struct: this link?
Astrobytes: me neither :rofl:
Illedan: I wait for euler
Illedan: Yes k4ng0u
struct: k4ng0u for example when i use MCTS I allocate 40M nodes on first turn
Astrobytes: Yeah. You can reuse+overwrite sometimes, depends on the algorithm
DomiKo: just allocate around 600MB of memory and here you go
struct: and i make it static so i still have 1 sec on the turn
struct: I dont know how it works tbh
struct: but it does
k4ng0u: :O what is the memory limitation of CG again?
DomiKo: struct what is this
DomiKo: 768MB???
DomiKo: something around it
Astrobytes: 768mb
struct: 768 is the limit
DomiKo: I knew it!!!!
struct: my nodes are 16bytes
DomiKo: first guess lol
struct: on C4 I allocate 45
Astrobytes: sometimes you need to be smart about packing
struct: domiko did you copy the entire link?
Astrobytes: othertimes not so much, but it's better to have more
DomiKo: yes
struct: its future competitions on topcoder and ongoing I guess
struct: https://clist.by/
struct: marathon starts on 13-07
struct: which should be optimization I guess?
DomiKo: I don't see a contest from topcoder at 13-07
Astrobytes: yeah. Click on the '15' on that to see the whole list
k4ng0u: oh well I would have though that the look up for nodes would slow down the app more than creating them. 40M seems really a lot, and cache miss could happen very often, but I guess I was wrong xD
DomiKo: ohh found it
struct: i get cache misses but you either get cache misses on mcts or run out of nodes
Astrobytes: wait til you see the topcoder website
struct: or use a NN
struct: and maybe it will fit
Astrobytes: k4ng0u: any memory allocation/deallocation is very expensive on CG
BlaiseEbuth: topcoder website :scream:
Astrobytes: k4ng0u: you do java right? Check out some of wala's posts in the forum
Astrobytes: regarding memory allocation/gc etc
k4ng0u: I usually code in C++ on CG :) but my knowledge is very limited
Astrobytes: Right. In that case: never allocate memory past first turn. Ever.
k4ng0u: I don't even know how to compile C++ code haha
Astrobytes: :rofl:
BlaiseEbuth: Click 'build' ezpz
Astrobytes: F6
DomiKo: make
k4ng0u: you guys have an C++ editor? ;)
DomiKo: VSCode ofc
Astrobytes: VS build all is F6
Astrobytes: but my F6 key broke
BlaiseEbuth: Spam submit doesn't work in vscode Astrobytes
struct: I use VS
k4ng0u: very interesting, for now I am just not using new, still times faster than java/js (which are my main languages)
PatrickMcGinnisII: getting my projects and directories always screws me up ... oh that's eclipse
Astrobytes: VS not VSC BlaiseEbuth
BlaiseEbuth: Same
Astrobytes: Visual Studio that is
Astrobytes: PatrickMcGinnisII: Please tell me you don't use eclipse
PatrickMcGinnisII: for Java, yes I have ... I think I needed Beans at the time
Astrobytes: Argh.
PatrickMcGinnisII: VS for C ofc
a-Rye: My favorite is Sublime, but I just like the pretty colors. Depends on the language though...Python I use vim and a Kali Linux box, Java I use Eclipse, JavaScript I use codepen. I used VS for the first time in a long time the other day for an interview lol
k4ng0u: PatrickMcGinnisll use intellij for java, much better than eclipse ;)
Astrobytes: I had to use what was it called... netbeans? once, that was better than eclipse but IDEA is nice
PatrickMcGinnisII: oh I have that ... I do mobile apps on it
PatrickMcGinnisII: ^ intelliJ
Astrobytes: hi a-Rye! I like Sublime for general quick editing of anything and used to use it a lot. these days not so much, just me
BlaiseEbuth: jetbrains stuff is good. Sad only the bad languages suites are free...
PatrickMcGinnisII: as i remember there's a few different eclipse builds, I think it's called Luna. Obviously i haven't used it in awhile
Astrobytes: wellll, y'know, as long as you're productive in whatever you use it's cool
k4ng0u: Intellij handles java/js/ts quite well (I think they have PyCharm as well for python) but it will always depend on how you code, some people are just very good at remembering the code base and vim is faster for them than the IDEs
Astrobytes: ^ my point exactly
PatrickMcGinnisII: VS Code, hmm... might have to try
PatrickMcGinnisII: support for php ha ha ;)
DomiKo: a lot of people use VSC
DomiKo: and companies
PatrickMcGinnisII: well if it has less overhead that the regular VS... hmm
k4ng0u: vsc is fine but not that polished, it's really good at text search, but regarding autocompletion, link to package, I feel it's a bit weak (maybe too multi purpose)
Astrobytes: yeah the linking is messed up
Astrobytes: it's nice though, don't get me wrong.
k4ng0u: it's nice AND free
Astrobytes: anyway. Time for beers and no code.
Astrobytes: Indeed it is
PatrickMcGinnisII: Cannot GET /%7Bversion%7D/win32-x64/stable
Astrobytes: gn all
PatrickMcGinnisII: jerks
PatrickMcGinnisII: oh, gn
struct: gn
DomiKo: gn all
struct: gn
struct: Anyone knows what a graph where all edges are connected to each other is called?
MSmits: you mean all nodes?
PatrickMcGinnisII: complete
struct: yes
struct: I guess i meant nodes
struct: I dont know graph theory
MSmits: complete graph yea
struct: thanks
struct: :thumbsup:
struct: I just learned what an adjacent matrix is
struct: I guess ill use it for cyborgs
MSmits: the you know more than i do
struct: adjacency*
struct: im sure you know what it is MSmits
struct: maybe just dont know the name
MSmits: thats possible
struct: I never was into graph problems
struct: because I have no idea what tod o
MSmits: i only really know them in the context of pathfinding and tree search and maybe a few other problems i ran into
PatrickMcGinnisII: MSmits got up to rank 1 wood3 in CTTT w/ 1 depth. now to minmax the darn thing
MSmits: gj
struct: are you going to use the draw thing patrick?
struct: play draw until you find a win?
PatrickMcGinnisII: i did up til turn 89 ... seems like last 11 moves is the pivot
struct: minmax might even be better to solve than mcts solver for cttt
MSmits: i think i did minimax
PatrickMcGinnisII: simple eval didn't get me over boss, smh
PatrickMcGinnisII: boss 20.93 me 19.18
PatrickMcGinnisII: better than what i had, i was doing random b4
PatrickMcGinnisII: ;)
struct: I try to avoid games with bosses now
MSmits: why?
struct: ptsd from last contest
MSmits: oh ok
struct: im joking :p
struct: sry MSmits
MSmits: lol
struct: its still so hot
struct: Must be around 30º outside
MSmits: i cant get my *best* bot to provide sufficient challenge to eval bot :(
struct: wdym?
MSmits: i gave it 500 ms turns and it still lost to my 70 ms turn evalbot
struct: I can give you my bot if you want
MSmits: somehow it is still overfitted
struct: but you will probably destroy it aswell
MSmits: my evalbot wrecks it yeah
struct: it wrecks mine too?
MSmits: yes
struct: ok so there is no point I guess
MSmits: you are now rank 18
struct: I just need to resubmit
MSmits: yeah
struct: Only bt leaderboard is fully gone
struct: hard to recover it
MSmits: evalbot is rank 9 now
MSmits: pretty much same as mcts bot
struct: wow
MSmits: bot locally mcts bot gets obliterated
MSmits: but
struct: cant you play against eval and add rand to it aswell?
struct: or it wont work?
MSmits: i think it will work for a little while, but it will overfit
MSmits: i think i need to ga it
MSmits: have a whole population of different bots
struct: I have something similar on bt
struct: everytime I build on VS it copies the bot and saves it renames it date and time
struct: renames it to date and time*
MSmits: http://cgstats.magusgeek.com/app/multi-tic-tac-toe/msmits
MSmits: this is evalbot
struct: good w/r vs karliso
struct: so you pretty much beat every1 except stronger evals
MSmits: yeah i guess so, didnt notice, it is only a few games though
PatrickMcGinnisII: recurse on the crack
MSmits: yeah i suspect it is 8x the same game as p1 and 8x the same game as p2
MSmits: two deterministic bots
struct: ah
struct: maybe I should add rand to my select
MSmits: didnt check though
struct: to avoid you
struct: :D
MSmits: possibly :)
MSmits: considering this bot is still very poorly fitted, i should be able to do better
struct: did you fit everything by hand?
MSmits: i barely fitted anything, a few by hand, the rest just guesses
struct: i would have no idea what to eval there tbh
struct: even worse than breakthrough
MSmits: well you eval what makes you win
MSmits: have some kind of calculation that represents the chance to get 3 in a row on the mainboard
struct: ok miniboards, probably eval miniboards that will give me a free move
MSmits: how do you mean
struct: oh its not really possible
struct: since you dont know if you will play there
struct: the opponent will play*
MSmits: no, you just look at the current state
struct: yeah
MSmits: i dont even do anything with the next board to play on
struct: still maybe you can give a score that if the opponent plays there you get a free move
MSmits: i just look at whats currently on the board
MSmits: ah yeah i have something with that
MSmits: dont know if it works well
MSmits: barely changed param
struct: if you ever do a NN I guess you can use this eval to help at the start
MSmits: you mean to kick off supervised?
struct: yes
MSmits: yeah jacek did that
MSmits: I guess i did prove eval totally works on uttt
MSmits: not just with nn's
struct: would it be a good idea to give minimax eval to start supervised?
struct: Like give the eval that the state would be in 6 plies
MSmits: yeah i think jacek did that on bt
struct: yeah top 10 is impressive
struct: Ok I have jacek ideas
struct: now I just need jacek skill
MSmits: he took his time to learn
struct: ofc
MSmits: i think you just need his determination
struct: yesterday i found something for mcts selection on NNs
MSmits: you're skilled enough as a coder
struct: I dont know if its any good but I shared it with him anyways
PatrickMcGinnisII: what is faster? (x-2)>>1 or (x==2?0:1) ... if x can only be 2 or 4
MSmits: oh the ucb formulas?
struct: http://eprints.fri.uni-lj.si/4033/1/Vodopivec.pdf
struct: check page 117
struct: its win rate vs UCB
MSmits: branching is usuall slow PatrickMcGinnisII
struct: basicly it makes it play better with lower rollouts
struct: since I dont think they dont do many rollouts here it could help
struct: The author calls it Sarsa-UCT
struct: Never heard of it before
PatrickMcGinnisII: crap, I need to eat ... x>>2 would be fine
struct: But the win rate seemed interesting enough
MSmits: good stuff struct
MSmits: these improved formulas work when their calculation cost don't dominate the overall performance
struct: yeah
struct: I think ja fica uses Thompson sampling + UCB
struct: or something like that
struct: for C4
MSmits: yeah i remember
Darkcodi: Can I turn off "shortest" clash of code? My language is C# and it's quite verbose. I can't compete with JS/Python in terms of "short code" (at least until Codingame adds support of .NET6's top-level statements)
Darleanow: hello, does the block the spreading fire counts as a contest ?
Darleanow: did*
Inferno_dragon: yep
Inferno_dragon: i will give you some point
Inferno_dragon: some codepoint
Inferno_dragon: some how the velocity could not play with the search race, Illedan puzzle cool
Inferno_dragon: really
Inferno_dragon: deebidap
Darleanow: because i didnt get the sucess from the ranking etc
Thorcode: cuz the base of block the spreading fire just 1390 what do you expect dude
Thorcode: *1910
eulerscheZahl: i still see green circle as the most recent one giving up to 10000 points
eulerscheZahl: not sure if it will get updated or the optim doesn't count
Darleanow: u didn't understood Thorcode
Thorcode: the max you can have is 1910 code point
Thorcode: and you need code point to rank up
Darleanow: it's still not what i'm asking for :)
Darleanow: you have ranking success !
Darleanow: mb, achievements
Thorcode: and also the block the spreading fire not a contest
Darleanow: oh !
Darleanow: yeah that was my question
Darleanow: thanks ! :)
Darleanow: if i'm right those are just puzzles
Thorcode: I feel kinda miss when i didn't pay attention at the green circle
Darleanow: euler, do you know the frequency of contests ?
Thorcode: that is optimization you can earn some code point
Darleanow: yeah i've seen
Darleanow: i don't really care of the ranking x)
Darleanow: i'm an achievements farmer
Thorcode: I just care about ranking
Darleanow: if i remeber correctly
Darleanow: you can get 1k cg points
Darleanow: with each puzzle of code optim
Darleanow: its your 5 best languages
Darleanow: and you should do more challenges :)
Thorcode: that the code golf dude
Darleanow: f
Darleanow: i'm a bit tired mb
Thorcode: geez how the hell the search race suck i almost get the half rank and the point i earn only 7
Darleanow: xD
Darleanow: it's weird formulas
Thorcode: yeah
eulerscheZahl: "euler, do you know the frequency of contests ?" no