Chat:World/2021-01-19
pipebits: Hi
BouncyNoodle_de77: i need help!!!!
BouncyNoodle_de77: i need some help in solving the "Hidden Word" puzzle game guys!!! :(((
kkx: need help for target firing too:innocent:
Horizontalx: clash of code is a fun
BouncyNoodle_de77: Hidden Word is fun!!!
BouncyNoodle_de77: but firstly i need some help
Purplishmoon: We don't understand its logic
AWEsomeOp: Yeah, its not what we learn from course
BouncyNoodle_de77: Anyone can help me with Hidden Word?
BouncyNoodle_de77: i would pay 0.01$
Horizontalx: what is hidden word i
BouncyNoodle_de77: Hidden Word puzzle game
Horizontalx: clash code is fun competitive
BouncyNoodle_de77: i cant code it :(
BouncyNoodle_de77: https://www.codingame.com/training/medium/hidden-word
Westicles: Read up on word search puzzles
BouncyNoodle_de77: ouhh okay, thanks for reply
**Purplishmoon Purplishmoon
BouncyNoodle_de77: https://www.codingame.com/ide/puzzle/hidden-word
algoBit: @BouncyNoodle try some easy puzzles
BouncyNoodle_de77: Our lecturer asked us to try this, but i cant figure how...
Murleys: Play clashofcode
Murleys: Thats all I do
jacek: huh
Uljahn: eww
jacek: BouncyNoodle_de77 try some easy puzzle to figure out the input/output
Horizontalx: IUQ%# N OHo%NHW#)OI*M'
Passifi: bueans morning y'all
struct: morning
Horizontalx: bruh stop human stuff
LumpySausageOfWisdom_5447: may i knw who can solve the "terget firing" coding game?
jacek: the author of the puzzle
Stilgart: if it's not freecell, me I guess
Stilgart: and 411 others
Stilgart: as far as I remember, this one deserves the #readingComprehension tag
Stilgart: fun fact, #readingTheStatement still exists
JBM: what's the current state of the art in terms of unicode abuse to get code size under 100k on CG?
MSmits: JBM I do the following:
MSmits: say there are 5 different actions you can do and you want to store as many as possible
jacek: keep in mind only unicode chars up to about 50k count as 1
MSmits: I basically do x * 5 ^0 + y * 5^1 + z * 5^2 etc. up to the max that fits in a unicode character
MSmits: then i move to the next character
JBM: a valid unicode character, or a theoretical 32-bit unicode character?
MSmits: you could even fit an action partially inside a unicode char this way for some extra marginal gain
MSmits: jacek do you cap it to 50k to be more efficient?
MSmits: I go over 50k so i might lose some efficiency there
jacek: yeah
MSmits: mind you... i never actually needed this compression, but suppose I ever do
MSmits: I just did it once to the point that i fitted about 30k moves and could have fitted like 120k more
JBM: not sure i understood the 50k counting as 1 part
MSmits: some unicode characters use more bits
MSmits: i guess
struct: MSmits what do you think of forcing opening on othello?
MSmits: or are they all max 16 bit?
jacek: some unicode chars count as 2
jacek: on CG
JBM: but haven't for a long time now
MSmits: struct all first moves are identical
struct: No I mean, force opening book for players
struct: like TCEC
JBM: same weird count as twitter?
jacek: hm?
MSmits: ahh you mean a random opening struct?
struct: not random
struct: http://berg.earthlingz.de/xot/downloads/openingssmall.txt
tomatoes: standart js/java strlen
struct: +1 -1 openings
algoBit: bash programmers can access files in computer where it runs. with error output ? :p
tomatoes: The length property of a String object contains the length of the string, in UTF-16 code units
MSmits: what does the +1 and -1 mean?
struct: the eval
MSmits: oh, has to be a really good bot that does the eval then
tomatoes: <=3 bytes utf8 as 1, 4 bytes utf8 as 2
MSmits: because that early in the game it's hard to say
struct: http://berg.earthlingz.de/xot/aboutxot.php?lang=en
jacek: xot8, for some tournaments there are 8 plies openings already done. those were analyzed deeply by engine to be more balances
MSmits: struct it might be a good idea
JBM: jacek: afaik, twitter is more or less 1 per codepoint, except 2 for chinese japanese korean
MSmits: would kick me and old john off the top of the board
MSmits: but thats fine
MSmits: however, i am afraid it would crash many bots
JBM: (U+1100 to U+10FFFF if this page I'm reading is correct)
jacek: hmm
wlesavo: you can make a second version of othello, i guess that would be a better way to have both
MSmits: probably yes
MSmits: I would prefer a new version of uttt myself
MSmits: with steal for first move, or some other way to fix massive p1 advantage
MSmits: if you do this, i'd ask CG though, you're basically copying one of theirs
Westicles: According to DomiKo some even count for 3 characters
tomatoes: https://developer.twitter.com/en/docs/counting-characters some tricky counting
struct: im not a fan of having 2 versions
struct: of the same game
Westicles: That is why base256 is better than base65536
MSmits: well preferably not, but if you take othello, which already has a small playerbase and change it, you'll be left with some bots that work and most of them crashing
MSmits: Westicles base256 in CG will compress worse
MSmits: so we kinda have to use those extra degrees of freedom
MSmits: even though it is messy
RoboStac: nothing in base65536 counts as 3
RoboStac: at least in the implementation I'm using
MSmits: doesnt that depend on CG RoboStac? Your implementation does not determine what counts as 3 and what doesnt
RoboStac: I mean when checked on CG
Westicles: Just quoting him from here, I always use base65k myself
Westicles: https://cg.spdns.eu/wiki/Chat:World/2020-10-10
MSmits: ah ok, well if you use the full range, then likely nothing counts as 3
tomatoes: all utf8 maximum 2 (js strlen)
JBM: ah thanks for the link at least
JBM: i suppose i'll jjust try a bunch of them
RoboStac: I've not found the exact cutoff, but using base65536 all 14bit values count as 1 byte, 16 bit values count as 2 bytes and somewhere in the middle of 15 bit it changes from 1 to 2
MSmits: RoboStac jacek said around 50k value
JBM: really gets me to wonder "how on earth are they counting on their side"
MSmits: which if i remember correctly has a hole of about 2k wide with invalid characters. Maybe it's right above that hole>
tomatoes: surrogats
JBM: some threshold on the utf8 conversion?
Westicles: Have you tried Base32768? That supposedly only uses 1 char ones, at least as far as twitter is concerned
Flekysek: Can somebody help me? I am trying to create board for my game but I would like to let a player choose how big a board he will create. For this reason, I thought I will initialize board like static char**board; and then board = new char[size][size];
Size is int chosen by player
MSmits: It should really not be that hard to figure out where the start of 2 char is. Just binary search it with a code colf or something
MSmits: you'll need maybe 10 submits?
MSmits: or tests or whatever
tomatoes: U+10000 and higher
jacek: just write to codegolf puzzle
jacek: it will count characters
MSmits: yeah
RoboStac: yeah, you don't even need to submit it shows on screen
jacek: Flekysek that way works only if the size is known in compile time
Flekysek: Ok I will send you PM
Westicles: https://qntm.org/safe
Mahdi05: https://acmp.ru
RoboStac: sounds like base32768 would be better, just with the extra pain of having to handle the length issues (either only storing 15 bit values or having to split values across codepoints)
MSmits: you might still have to split values depending on what you're storing
RoboStac: true, but at the moment I'm storing 16 bit values so base65536 is easy
MSmits: right
MSmits: I'm just saying because the one time i used unicode compression i stored 10 W/L/D values for bandas endgame in 1 character, that did not fit neatly
JBM: is the code length measured in the same way for code golf and general puzzles?
RoboStac: yeah
JBM: couldn't have said it better
jacek: and then theres utf-16 le and utf16 be...
Uljahn: Mahdi05: hints button on the left, click it
JBM: please don't tell me it changes the length
struct: If I make a bot that places around ~10 in wood 1 and open the new league with the positions, would it be better?
Bartolini188: can somebody explain me
Bartolini188: http://chat.codingame.com/pastebin/cadfa238-52e8-4b2d-93b4-6da9d6009db2
Bartolini188: what does f(t) means?
Bartolini188: the code is supposed to transform one string to another by one character each time printing those
MSmits: f(t) means you run function f passing parameter t
MSmits: apparently f is the input function
RoboStac: it's using the fact that input("x") prints "x" before waiting for input, so if you call input(t) it's going to print t and then hang forever
RoboStac: which is fine as that was the last line of needed output
MSmits: and it's better to use input than print, because you got an alias for it
MSmits: this reduces character count
MSmits: pretty smart
Bartolini188: well this was in short code competition, didn't knew you can print by input
Bartolini188: thanks a lot guys!
Sentinel25B: im so bad at coding
Sentinel25B: :(}
MSmits: I'm sure there are people worse than you Sentinel25B
Sentinel25B: totaly
Sentinel25B: poker chip race and the puzzles are the only one i can do
MSmits: poker chip race is not that easy
MSmits: if you can do it, you can do many
Sentinel25B: ya it is
MSmits: probably you picked a few difficult ones
Sentinel25B: weekly puzzles are the easier ones.
MSmits: not necessarily I think. I have seen hard weeklies
MSmits: but most puzzles are easy in general
MSmits: easy being a relative concept of course
Sentinel25B: well im using a trash computer
Sentinel25B: school chromebooks probably arent ment for coding
MSmits: dont think it matters much unless the program hangs and slows down
MSmits: you should just pick a lightweight IDE
Westicles: Chess approved... get on it MSmits
MSmits: haha, not any time soon. Currently doing search race and code of the ring
MSmits: i was wondering. Have people bothered trying to hardcode searchrace?
MSmits: if they haven't i won't try either
kovi: it is hardcoded above recurse
kovi: probably also some below
kovi: recurse NN-ed it early
MSmits: ahh ok
MSmits: thanks. I'll try that if I get a good search going that competes with the top. Otherwise I won't bother
kovi: i guess it needs finetunement csb is just a base
MSmits: well you can do better than csb, because no shield, only 1 pod
kovi: (and no smitsimax advantage here)
MSmits: right
MSmits: but thats also a disadvantage
MSmits: I can just mcts it now
MSmits: probably i'll mcts it first, then will try allowing more possibilities for the first few plies
MSmits: then maybe combine mcts with SA somehow
MSmits: anyways, that's my thoughts going in :)
MSmits: it has some interesting possibilities for pruning also
MSmits: since there is no interference from other pods
kovi: 1player...so in my view its not ply/mcts...
MSmits: there is single player mcts
MSmits: i could say turn instead of ply
MSmits: single player mcts is almost the same as two player mcts, you just don't flip the sign when backpropagating
darkhorse64: Zorg1 SR score is online
MSmits: cool
MSmits: Go too, so not maximum performance
MSmits: nicely done
YurkovAS: my SR score is online
MSmits: I wonder how re curse trained his NN. Because if he used the actual validators, it's also hardcoding... in a way
darkhorse64: It requires lots of fine tuning. I used SA
MSmits: how did you generate an initial solution?
darkhorse64: Well 300 left to gain
MSmits: and how to make sure you hit all the checkpoints when you change the solution?
jrke: my SR is also online but not that good
MSmits: I mean you can change one action in the chain, but you might miss a checkpoint
darkhorse64: Fully random at start and my scoring takes care of the rest
MSmits: Do you also give points for narrowly missed checkpoints?
MSmits: like... make the checkpoints "larger" at first and shrinking it?
darkhorse64: No
MSmits: so a missed checkpoint is just a completely failed solution with a low score?
MSmits: just wondering how much the hit-and-miss characteristic of checkpoints will hurt converging on a good solution
darkhorse64: Actually my sim checks the current checkpoint for collision. If it is hit, it will check for the next checkpoint and so on. Scoring counts the number of checkpoints plus the normalized distance to the next checkpoint
MSmits: well that's exactly the eval i would use for mcts
MSmits: but SA includes modifying a full solution, by changing an action halfway through
darkhorse64: The checkpoint ordering is enforced by the sim
MSmits: but when you change an action halfwaythrough, all the following actions may have to be adjusted
darkhorse64: I have tried beam search, lahc also. Yeah, SA is a voodoo thing
jrke: SR is CSB with 1 pod with no opponent
MSmits: I also wonder if it is every worthwhile to pick a power between 0 and max
MSmits: ever
MSmits: a thrust i mean
darkhorse64: It's a race, you know ... Not for wimps ...
MSmits: haha of course
MSmits: just looking for pruning opportunities
jrke: i just look for 3 angles and 2 thrusts per depth angles are {-18, 0, 18} and thrust {0, 200} so 6 possible moves i have per depth
MSmits: in csb i just use -18 0 18 for angles and 0 and 200 for thrust. I am 100% sure i need more angles, but not sure i need more thrusts
MSmits: right, so thats the same as I do jrke
darkhorse64: Looking at my scores, lahc is not far from sa but I clearly failed with bs
MSmits: beamsearch would explode too quickly in this case
MSmits: it's more useful for situations where the consequences of actions happen more quickly and where branching is relatively small
MSmits: turning 180 degrees takes 10 turns
darkhorse64: It's a new toy for me to play with
MSmits: beamsearch wont manage that I think, unless you take the angle into account reliably
YurkovAS: lahc?
darkhorse64: late acceptance hill climbing
jrke: my sim is just depth 7 with eval as distance to checkpoint angle to the checkpoint and checkpoint crossed for SR
MSmits: you should be able to go much further than depth 7 i think
MSmits: i use depth 7 in csb with 4 pods and more actions
jrke: bad optimization cause i did that 2-3 months ago
MSmits: ah ok
MSmits: which is like half your life ago :P
MSmits: you're a new man
jrke: 1/4 of my whole complete coding life which is 8 month(when i learned what is cout << ;)
YurkovAS: jrke depth 10+ give more score in SR
MSmits: awesomeness
Westicles: Is there a cleverer way than this to get an NxNxNxNxN vector filled with -1 in c++?
Westicles: http://chat.codingame.com/pastebin/05cf994b-e0dd-4b8a-afaf-697f03be88f8
MSmits: whoa
**MSmits can't say anything clever in the face of so many nested vectors
MSmits: I am assuming N is not fixed?
Westicles: right, N is variable
MSmits: but is it variable within some reasonable amount or does it vary wildly?
MSmits: otherwise I would just create a fixed array
MSmits: this does not look very performant
jrke: what are bitboards ?can anyone..
MSmits: jrke it's storing information in integers
jrke: i don't know what are they yet
jrke: something like gamestate in integers?
MSmits: simple example
MSmits: X X . O O . . . .
MSmits: TT T board
MSmits: you could use two separate boards for this
MSmits: 1 for X
MSmits: 1 for O
MSmits: X would be 0b000000011
jrke: 110110000
MSmits: O would be 0b000001100
MSmits: err
MSmits: O would be 0b000011000
MSmits: the 1's are occupied squares
jrke: okay
MSmits: the 0's are empty
MSmits: I am counting 1 2 3
MSmits: 4 5 6
MSmits: 7 8 9
MSmits: 1 being the first bit
MSmits: (index 0, i should have picked i guess)
MSmits: so 0 1 2
MSmits: 3
MSmits: 4
MSmits: typing too fast sry
jrke: got it
MSmits: you can quickly adjust this bitboard with bit ops
MSmits: to play a cross on the 3rd square and win
MSmits: X would do
MSmits: board |= 1 << 2
jrke: okay
MSmits: because 1 << 2 = 0b000000100
MSmits: and that makes 3 in a row
jrke: so are you using them in D&B
jrke: ?
MSmits: yeah, but it's not really necessary
MSmits: i am just using it there because i am so used to them
MSmits: though, it does give you the ability to make the gamestate very small
MSmits: and then use a hashtable more effectively
BigDickRick_69: :green_apple:
MSmits: in D&B I use 64 bit for all horizontal lines and a 64 bit integer for all vertical lines
MSmits: so total 128 bit for the entire board
jrke: my endgame times out if chains quantity are > 12 or 13
MSmits: does not surprise me, it's difficult
jrke: using 3d arrayed int 'int map[7][7][4]'
MSmits: I doubt the map is the problem. The problem is mostly the possible moves you allow
MSmits: what you prune and don't prune
MSmits: this game has dozens of pruning rules
jrke: problem is only the map
MSmits: why is that?
MSmits: a single pruning rule can make your solver 4x faster
jrke: 7*7*4 is takes too long to transfer from one func to another
jrke: btww gtg cya
jrke: nice talking
MSmits: cya
jrke: thanks
MSmits: have a good day
struct: 7*7*4 should not take long
struct: if you pass by reference
MSmits: yeah, do and undo
MSmits: dont copy
Westicles: Thanks MSmits. This runs much faster
Westicles: int AAAAA[20][20][20][20][20]; memset(AAAAA, -1, sizeof(AAAAA));
MSmits: cool, np
NOTsteve: is there a way to only get selected for fastest or reverse modes of clash of code? I like playing clash, but I don't really like the "shortest" puzzles
MSmits: there's no way, but there are other ways to compete on this website
JLukeSkywalker: lol, im the opposite. I prefer the shortest
LantarSidonis: That would be an appreciated feature for sure
JockTalk: Guys - can anyone help me to understand how thrust works?
JLukeSkywalker: friction or no friction?
JLukeSkywalker: in what competition
JockTalk: like how come you can just write 100\n and it goes to 100
eulerscheZahl: the higher the thrust, the more you accelerate
JockTalk: and there is no need to declare it first?
JockTalk: as in, the program understands it automatically
eulerscheZahl: codingame will identify the trust because it's the 3rd number in your output
JockTalk: and what about when you want to change it when the angle is above 90 degrees
JockTalk: what should i write instead of 100
JockTalk: do you need some coding knowledge to do this. i feel like i'm out of my depth
jacek: some other number than 100. its just physics and probably some formula to use
jacek: im 1st in chess :tada:
jacek: and no one in league to compete with :(
darkhorse64: NNs are coming at you
reCurse: Night of the liviNNg dead
darkhorse64: They are going to tear you apart
Purplishmoon: hey guys, sry for interrupt, I'm C beginner, could you guys help my assignment proj. which solve the two puzzle?
darkhorse64: which puzzle ?
Purplishmoon: hidden word and Target Firing, have you try these before?
darkhorse64: No sorry.
jacek: what school makes that assigment :o
Purplishmoon: okay, never mind, thks.
Purplishmoon: UCTS from Malaysia
Westicles: I do hidden word first, just a word search puzzle basically. The other one looks like a giant mess of tldr
Purplishmoon: it's too difficult for our level now
Purplishmoon: really appreciate for your help
eulerscheZahl: i downloaded a book about NNs and started reading noob questions coming
eulerscheZahl: I assume you use reinforcement learning, right?
MSmits: eulerscheZahl can you share the book?
eulerscheZahl: let me see if i find it again
eulerscheZahl: do you have an output encoding? or a value function?
RoboStac: yes, I think everyone who's had any real success is reinforcement learning
eulerscheZahl: ok, no supervised learning then
MSmits: supervised learning requires you already know what good actions are
RoboStac: the only one I'm aware of that was different was pen training a csb bot off his existing bot
RoboStac: but it never got as good as his existing bot
MSmits: and the bot would be somewhat limited by how good the supervisor is
eulerscheZahl: http://incompleteideas.net/sutton/book/RLbook2018.pdf
PatrickMcGinnisII: Purplishmoon targetfiring has a pretty short recursive solution while hidden word solution is twice as long but is linear
MSmits: I wonder RoboStac, might it be good to jumpstart a NN with supervised learning and let it evolve on its own afterwards?
Stilgart: MSmits: why ?
MSmits: thanks eulerscheZahl
eulerscheZahl: so how do you get your actions? i've seen a value function for a static analysis of the board state
MSmits: why what Stilgart?
RoboStac: MSmits - alphago did that originally but found alphazero worked better just starting from nothing
eulerscheZahl: is that what you do? generate the child nodes and score them?
Stilgart: the trained bot might be less overfitted and so more efficient
MSmits: ah ok
MSmits: Stilgart there are many ways to avoid overfitting with NN's
RoboStac: eulerscheZahl - that depends on the method used. The Alphazero style I do gives a value (eval of the current position) and a policy that is used as an exploration parameter for the child nodes
MSmits: you dont need supervised learning for that
Stilgart: but heuristics CSB bot are probably overfitted
MSmits: They could be yeah\
RoboStac: so for every valid move there will be a value to say how likely that is to be a good move to explore
eulerscheZahl: ok, because the value function seems easier to grasp for me how it's supposed to find a meaningful move on a more complex game
RoboStac: yeah, the value is the equivalent of a standard eval function
eulerscheZahl: as opposed to an action encoded in the output. a complex game has lots of actions but only a few are possible in the current situation
MSmits: Stilgart if you were to use supervised learning (if that is what we are still talkin about), you would not use a heuristic bot, but rather a good search bot. Maybe one with a lot more time to find a move
PatrickMcGinnisII: euler been playing with your Minesweeper, I like the gameplay version versus Vbobs, but how come it doesn't have boards that require some probability? or am i wrong. i don't wanna apply matrices anyways... but it seems kinda submit intensive? just curious
Purplishmoon: PatrickMcGinnisll at the beginning, I thought target firing would be more difficult, target firing needs to use linked list & pointer, right?
eulerscheZahl: i have a success rate > 50% without even using probabilities when i have to guess
JLukeSkywalker: trying to get my little bro on here, what would be the easiest bot challenge to start with for a non-coder? I was thinking maybe CSB, but idk
Stilgart: MSmits: the eval function of such a search bot could have a tremendous impact
MSmits: yeah
MSmits: well, eval becomes less important when you search deeper
Stilgart: I don't think the final NN bot will be leagues better that the original search one
PatrickMcGinnisII: Purplishmoon a simple multidim array can suffice with each element representing a ship
MSmits: in CSB i did not see that much overfitting compared to some other games
Stilgart: but it may be better
Stilgart: it's me who is one league below at CSB :)
Stilgart: (actually, i am not a big fan of this multi)
MSmits: yeah, i am not advocating for supervised learning at all, it's obviously not the best way
MSmits: me neither Stilgart
Stilgart: I want to apply NN on another multi, but there are not so manu ressources for that :(
MSmits: it's better to learn a NN outside of CG, on simple problems
PatrickMcGinnisII: JLukeSkywalker i think tron or game of drones might be easier/funner to understand maybe
MSmits: do a NN for TTT
Stilgart: my linear algebra blob can recognize digits :)
MSmits: blob?
MSmits: did you do mnist?
Stilgart: basically an extension of my code for the puzzle NN1
MSmits: ah ok
JLukeSkywalker: yeah, i was thinking tron because he has played it manually before
Stilgart: JLukeSkywalker: for a beginner on CG, I don't think tron is a good idea :(
Purplishmoon: Why I haven't thought about multidim array, Thank you very much PatrickMcGinnisll
PatrickMcGinnisII: how long has chess been a bot game?
Stilgart: the inputs are really awful in tron (it was the first contest/multi after all, so the less polished)
Stilgart: PatrickMcGinnisII: a couple of hours
Astrobytes: about 2 hours PatrickMcGinnisII
PatrickMcGinnisII: wow, ok, i just saw it
jacek: MSmits this is what i did first bor bt. learn from classical bot + search
jacek: and i had good results
jacek: scroll meh
Stilgart: BT ?
eulerscheZahl: breakthrough
Astrobytes: damn you euler
MSmits: i know jacek, thats where i got it from
eulerscheZahl: i felt like i had to hurry to beat you :P
Astrobytes: :D
jacek: and this is what chess people do with NNUE nowadays - gather zillions of positions, let the engine search to depth and adjust NN to those
Stilgart: jacek: you use NN for breakthrough ?
MSmits: I think thats because, to train a NN from 0 requires too much calctime
MSmits: doing supervised limits your bot somewhat, but it does really speed it up
MSmits: the training that is
RoboStac: yeah, stockfish uses a NN that is trained on stockfish running at a high depth in order to work well at lower depths
MSmits: Stilgart jacek uses a NN for most boardgames now
Stilgart: so, my question is:
RoboStac: Stilgart - the top 3 in BT are all NN's
jacek: i use NN for eval only. no policy
Stilgart: which boardgame is the easiest to try NN ? :)
jacek: hmm, oware?
RoboStac: oware would be my guess
MSmits: oware has a simple gamestate
eulerscheZahl: and only 6 outputs
RoboStac: low number of outputs too which makes things a lot easier
Stilgart: 175 people in legend, a simple state... and rules I still haven't read
jacek: what game
MSmits: RoboStac, what do you do with score and turnindex in your NN?
Stilgart: oware
Stilgart: wood1 = legend
MSmits: for oware that is
jacek: oware hasnt legend o.O
eulerscheZahl: rules are a lie. tells you that you can print 0-11 while it's 0-5
MSmits: because the best move is independent of the score and is not independent of the turn index
RoboStac: score gets passed in as is, turnindex is fixed at 0 (learning with it being set led to some odd behaviour)
RoboStac: yeah, but the NN isn't there to give a good move, it's there to guide you through an mcts tree (where score is very important and turn index isn't as the tree can take care of that)
Stilgart: eulerscheZahl: ho... so this is why I am wood1 while still not understanding the rules :)
MSmits: thats true
MSmits: I noticed that even with 144 turns left to play and 9 seeds on the board, you get a different endresult for the game compared to when there are 143 or 142 turns left, with perfect play
MSmits: the endresult being the net score
Stilgart: RoboStac: ok, so the meta is a NN-guided MCTS ?
Stilgart: (no idea of how I can do that for now)
RoboStac: Stilgart - that's what I do (copied from alphazero). Not sure about others
MSmits: Stilgart notice that this mcts does not have a random rollout
MSmits: which makes it horribly deterministic
RoboStac: though I believe they are similar, using a tree search as well as the NN
Stilgart: MSmits: :thinking:
MSmits: I've been meaning to tell you RoboStac, I win 100% vs your p1 oware bot already, add some random :P
RoboStac: isn't that the one I listened to you on and added random?
Stilgart: no random rollout is usually a bad idea for MCTS
MSmits: didnt you recently resubmit?
MSmits: i think maybe you forgot random
Astrobytes: when you told him to do random I believe
MSmits: yeah he did
MSmits: but i think he resubmitted again after that?
MSmits: Stilgart you can add random to the move selection
MSmits: that solves most determinism problems
reCurse: MSmits likes to torture people with his books
MSmits: :P
RoboStac: it's still got the initial random there, but the change I made after for the second submit probably pushes it back to very deterministic
MSmits: ah ok
RoboStac: (but made it much stronger)
MSmits: well it's just half the games, you're still winning the other half
jacek: how cool would be if we knew the opponent's name ej
jacek: eh
MSmits: you could always just retrain it and submit
MSmits: when i get nr 1
jacek: so, never
Stilgart: if opponent == "Recurse" then resign () ;
MSmits: If people leave the board alone i suspect i will be nr 1 within a week or so
MSmits: if they resubmit it is different
PatrickMcGinnisII: my guessing is horrible, I'm missing some patterns *sigh* https://www.codingame.com/replay/522992079
MSmits: I can try submit it now, see what happens. No idea really
reCurse: Still need to redo that one...
Stilgart: PatrickMcGinnisII: have faith and do some captchas :(
MSmits: i dont think your bot is necessarily weaker than robo's or jaceks reCurse
reCurse: But it's not necessarily stronger
reCurse: Which is the issue
MSmits: it's really hard to say, it has lines of play that i can only draw against
MSmits: yours does
MSmits: that suggests it's really strong
reCurse: shrug
reCurse: Who gave so much time for othello
MSmits: Some lines i spent 700k games exploring only to eventually conclude it's unwinnable
struct: :D
reCurse: -_-
MSmits: othello is ridiculously fast to sim with avx too
reCurse: No need for fast sim when NN eats all the time
reCurse: :P
struct: time to open a new league with 50ms and forced openings
MSmits: the forced openings is a good idea
MSmits: i just wonder if there's some way to do it without crashing others' bots
MSmits: oh
MSmits: a new league
MSmits: mmh
darkhorse64: dual matches then ?
struct: yes
MSmits: what do you mean dual?
MSmits: swapped?
struct: yes
MSmits: also, these starts go pretty deep i hope?
struct: same board
Stilgart: forced opening sounds better
reCurse: I wonder if there's even enough depth to the game to make it better
MSmits: yeah i wonder that too
MSmits: but there might be
reCurse: My NN crushes the top 2 and fails miserably against jacek
reCurse: That's sad
MSmits: makes sense
reCurse: I do have a few dozen other versions to try though, sigh
RoboStac: the top 2 are entirely book based
jacek: submit it!
MSmits: not entirely RoboStac, mine isnt anyway. It's about as strong as trictrac without book
MSmits: it books to half the game on average
MSmits: bot takes over after that
MSmits: vs bad bots it doesnt book at all, goes off book fast
jacek: books to half the game...
MSmits: i should say half the game till solve
MSmits: so ply 20
MSmits: or so
MSmits: 20 book, 20 bot, 20 solve
MSmits: 60 total
MSmits: roughly
MSmits: but vs old john it's fully booked
MSmits: also dbdr and robo
MSmits: (deterministic bots)
jacek: reCurse how about dbdr he got strong bot than mine
RoboStac: dbdr's fallen massively to to book war
reCurse: I dunno I already switched to testing another version
reCurse: No point sticking to one that's so weak against one
jacek: thats some spirit for someone how doesnt do community gamed
MSmits: he only does because it takes him so little time now with his new framework
reCurse: ^
jacek: new framework?
MSmits: NN pipeline he calls it
reCurse: I wrote a brand new ML/RL pipeline
MSmits: my books don't go through pipes, I think I need to make them rounder
reCurse: Saturates my CPU and GPU
reCurse: Makes it go real fast
MSmits: is it just speed then?
reCurse: No, better everything
reCurse: But that's the biggest improvement
MSmits: I see
N-ONE: hello there , anyone knows how to get well in programming ? ,, i take some time to fully get the problem
jacek: practice
MSmits: solve a bunch of puzzles
MSmits: the hardest part is solving them in the right order of difficulty
MSmits: you might run into some stuff that is too hard to solve at first
MSmits: depending on your other skills
MSmits: some require math and such
N-ONE: oh i see ,, the problem is that i sometimes don't understant the question lol
MSmits: some are hard to understand
MSmits: btw, if you are doing clashes. That is really not the easiest way to learn
MSmits: you dont want the stress of a time limit
N-ONE: i feel so stupid lol
N-ONE: i can solve but need more time
N-ONE: i am still beginner
MSmits: then keep solving
N-ONE: can i share my github ,, i need some advises about my code
MSmits: generally you should not, but for simple puzzles, it is ok
Stilgart: would be nice to have a code review process directly on CG
N-ONE: https://github.com/AYehia0
reCurse: lol
Stilgart: did you see a cat ?
N-ONE: hehe lol
N-ONE: cat bois go burrr
MSmits: did we just get catrolled?
struct: I only have 1 problem on opening the new league
Stilgart: this will reset the leaderboard ?
struct: no
Stilgart: ho... we can resubmit a commu multi without reseting the leaderboard ???
struct: I need to make a stronger boss than wood 2
struct: Yeah Stilgart
struct: it wont reset
struct: When you submit a new boss it would be like a player submit
MSmits: struct, make an AVX-ed bot with typical othello eval
eulerscheZahl: just submit a new boss above
jacek: use mine :v
eulerscheZahl: last time i tried, the boss started with a negative score despite winning
Stilgart: don't use mine
Astrobytes: darkhorse will write one for you :P
eulerscheZahl: then slowly climbed. but still ranked way above the actual skill level
struct: I cant choose a player, its not that easy
eulerscheZahl: why would you even want a new league?
struct: to force openings
eulerscheZahl: ah (sorry, didn't read the whole chat)
reCurse: Might be good to prove if it helps
eulerscheZahl: ^
reCurse: Before doing it
MSmits: eulerscheZahl othello is the most heavily booked game we have i think
MSmits: thats why
MSmits: I hope it works
eulerscheZahl: thanks for the warning, i won't touch it
reCurse: Yeah it's pretty gross
MSmits: it might be fun after the forced openings
eulerscheZahl: then you will just book later turns
reCurse: And 150ms to deep search a narrow game
MSmits: thats not how it works really
MSmits: there are millions upon millions of endgames, not bookable
eulerscheZahl: then i don't understand what the opening does i suppose
MSmits: there's not just 1 opening
RoboStac: there are thousands to choose from
eulerscheZahl: just a different starting pos?
eulerscheZahl: like chess 960?
struct: no
struct: like TCEC
struct: where N moves are forced
eulerscheZahl: no idea what that means
Stilgart: TCEC ?
reCurse: top chess engine championship
struct: euler its 6 move opening
eulerscheZahl: that explains the acronym but not what it does
Stilgart: AutomatonNN: you should learn how to translate acronyms
AutomatonNN: eulerscheZahl is there a way to build a sim and then convert it to a struct that properts in python
struct: 8 move*
reCurse: "where N moves are forced"
MSmits: how many different ones struct?
struct: 3623
eulerscheZahl: i have no idea what a forced move means
Stilgart: double hl :/ no i feel bad
eulerscheZahl: let be know if i should just leave the chat
struct: with range of +1 -1
MSmits: are these 3623 unique?
MSmits: considering symmetry
struct: you are asking due to symetries?
MSmits: yes
RoboStac: you get given a gamestate at the start thats partway through a game so the starting position isn't the same every time
struct: I think so MSmits
eulerscheZahl: so it is like chess960 as i implied (different starting position)
MSmits: then it should be fine
MSmits: I can't book that
darkhorse64: othello bot is SSE bot without solver. My bot is AVX based with solver which makes it barely stronger than the boss despite being twice as fast. My eval is really simplistic this is why it stays at the bottom. I lack motivation
MSmits: well... partly, but not sufficiently
eulerscheZahl: like chess 960? struct 04:50PM no
PatrickMcGinnisII: N-ONE an stadium seating in java->sql smh, framework might function but real world world crash the hell out of it
RoboStac: yeah, pretty much. The only difference is chess 960 can be an invalid chess position
eulerscheZahl: i'm totally confused now
eulerscheZahl: rage close chat
eulerscheZahl: bye
Astrobytes: lol
MSmits: eulerscheZahl robo just explained it :P
reCurse: I think it's the first time I've seen euler ragequit
MSmits: i think he ragequits often, but just pretends to "go to bed"
reCurse: lol
reCurse: Mystery solved
Astrobytes: hahaha
darkhorse64: TCEC is a computer-computer chess championship
reCurse: Ok this NN isn't working straight up, dunno what jacek did
reCurse: Wonder if I need a bigger or smaller net
MSmits: jacek had a regular bot first
MSmits: might have incorporated some domain knowledge
darkhorse64: The final is running now. Stockfish NNUE against Leela Chess Zero (a GPU based NN)
MSmits: jacek
PatrickMcGinnisII: When eulerscheZahl's cat starts banning people ... then we r in real trouble
MSmits: http://cgstats.magusgeek.com/app/multi-oware-abapa/msmits
MSmits: time to retrain some NN's :)
MSmits: I'll be waiting
Stilgart: your oware is doing well
RoboStac: time for oware960
RoboStac: :(
reCurse: Nice book
MSmits: lol, a simpel retrain and some random should really be sufficient. This is a 200 ply game guys
reCurse: Calling this a 200 ply game is like calling chess endgame piece shuffling a 150 ply game
MSmits: hmm seen plenty of games where no seeds get captured in the first 30-40
MSmits: Moves Added: 2402
MSmits: thats how many are in the book
MSmits: it's really not that many, the bot is quite good without them. It was only being beaten by NN's
reCurse: Burn the books
darkhorse64: 5 elo points between 5 and 6:cry:
darkhorse64: +4 rather
MSmits: yeah those NN's are ridiculously strong
PatrickMcGinnisII: fml https://www.codingame.com/replay/522998605
MSmits: I get nostalgic when i see eulers minesweeper replays :)
Stilgart: PatrickMcGinnisII: got this 3-4 times before I was finally able to get 100%
MSmits: Robo, just resubmitting to beat jacek or did you increase your random a little bit?
MSmits: RoboStac
reCurse: Interesting, I had to pick a version from early in the training to beat jacek
reCurse: I guess I'm overfitting
MSmits: thats what i meant reCurse, its a really strong bot
MSmits: RPS effects
reCurse: I'm talking about othello
MSmits: oh ok
reCurse: I keep having those overfitting issues
MSmits: well it might be true for any of these simple games. Those NN's play so near perfectly that it's all about 1 or 2 mistakes either player makes
MSmits: watch some games
MSmits: youll see many identical games i bet
MSmits: that's not overfitting, it's determinism
struct: true ai
struct: if else
reCurse: I'm not sure which of us misunderstands
reCurse: If it plays very weakly in a line that means it overfits to what it thinks are the only viable lines
MSmits: well with overfitting, you are mostly talking about some thing that one bot values that is weak or strong against what another bot values in eval
reCurse: Not a matter of determinism here
reCurse: If anything I can take the top 3 as an ensemble
MSmits: dont bother comparing against me and oldjohn at all, it's meaningless
reCurse: Is it
MSmits: yeah, i think so
MSmits: if your bot heads into a well travelled line of play, you cant afford to make a single mistake vs us
reCurse: My definition of a good generalized bot is one that plays strong in all lines
MSmits: sure, but it's not realistic probably, to play perfectly everywhere
reCurse: Doesn't matter if you stick to one or N lines
reCurse: It's more annoying to test sure
MSmits: and othello is mostly about 1 mistake in the entire game
MSmits: at the level NN's play at
MSmits: maybe 2 mistakes at most
MSmits: even dbdr, who did not write a NN, but just a really strong ab, makes almost no mistakes
MSmits: by that I mean it almost always makes the best move coming out of meta mcts
MSmits: your bot probably does too. Just the fact that it loses vs jacek, means that somewhere in the game you make a mistake right before jacek has a chance to. Another version of your bot may not make that mistake, but that doesnt mean it's stronger overall
reCurse: If you take an ensemble of opponents to act as a proxy for your generalization
reCurse: It's as good as it gets on CG
MSmits: yeah I guess so
MSmits: you risk two players with NN continuously submitting different versions
reCurse: The fact it used to do well vs him early in the training and poorly later on
MSmits: which is not that dissimilar to a book war :P
reCurse: Is a sign of overfitting
reCurse: It used to understand that line and then forgot
RoboStac: yeah, I've given up on my current BT training as it's dropped back to around 50% vs jacek and doesn't seem to want to get back up to beating him
MSmits: is it really supposed to be training lines of play though?
reCurse: It is extremely different to a book war
reCurse: Or if you want to be really cheeky
reCurse: You could say it's an "organic" book war
reCurse: Or a generalized book
struct: so it discards that line completely?
MSmits: i meant merely that you have two players that each have versions that are strong or weak against the other players'versions
MSmits: so you can keep alternating
reCurse: The goal is to generalize to the point there is no such exploitability
MSmits: that would be perfect play though
reCurse: Not necessarily
reCurse: Just a version your opponents can't exploit (yet?)
MSmits: ahh ok, good point
reCurse: Like I said, it's a proxy to pure generalization
reCurse: Where perfect play or nash equilibrium would be attained
MSmits: I see
MSmits: yup that's a different bot RoboStac
reCurse: It has nothing to do with NNs per se really
JLukeSkywalker: is there a maximum code size on here?
reCurse: Any bot has an equivalent to it
MSmits: 100k chars
RoboStac: it's the same nn, just a different mcts exploration parameter that beats your book :)
JLukeSkywalker: and no ability to like read in a pre-made file or data?
MSmits: yeah that works too
RoboStac: unfortunately it seems to hurt a bit too much against others
MSmits: which is a sign of overfitting also RoboStac
MSmits: bot shouldnt be that much weaker if you fiddle with the exploration param a bit
MSmits: but oware is so simple, as i said before, it's all about 1 or 2 mistakes, just like in othello
MSmits: that's really what causes the problem you guys have with your NN's for simple boardgames. You should try them for the more complex games
reCurse: I disagree
MSmits: isnt it different in csb?
MSmits: personally I have not seen overfitting with my bot, but i guess maybe with strong NN's it different
MSmits: with oware i got serious overfitting problems before. Remember when i had no book and was able to beat your NN's just by fitting 7 parameters?
MSmits: those were earlier versions of NN, but already much stronger than anything else on the leaderboard
MSmits: i would change 1 parameter by very small amount and my winrate vs a certain NN would go from 70% to 20%
reCurse: That means your architecture is too simple to generalize well
MSmits: sure, but why would the NN's be so sensitive to that
reCurse: There are different issues to "overfitting"
reCurse: The one you mention is too weak architecture imo
reCurse: Others can be where your training focuses on the lines it thinks are the best
MSmits: wasnt just yours though, also agad e jace k and robo
reCurse: And forget how to even play against weaker ones because they are deemed so bad
reCurse: But that knowledge is lost so it ends up losing vs them
MSmits: yeah i understand that
reCurse: "Catastrophic forgetting" is the academic term IIRC
MSmits: i notice this when trying to counterbook robo
MSmits: suddenly i will get 100% winrate
MSmits: on a weak line of play
reCurse: Also there is another factor to consider
MSmits: with a mistake in it that is
MSmits: then i go deeper (better play) and i lose again
reCurse: That noisiness you point to is also a symptom of the poor game exploration
reCurse: Due to fixed opening
reCurse: Not just overfitting
MSmits: right, but fixed opening is a form of overfitting i suppose
reCurse: If humans were playing they wouldn't keep playing the same line they lost against, they'd try something else
reCurse: If this kept going on and on then you'd find out who has the better generalization
reCurse: But there is no memory so there is no way for bots to do that
MSmits: that's true
MSmits: and why you train offline
reCurse: Not quite, it's just to train "intuition" for what's good and not
reCurse: Doesn't solve the fixed line problem
reCurse: It keeps thinking it's fine and cannot learn from the loss
reCurse: Or have an indication to try something else
MSmits: right
MSmits: you can see this in all forms of RL I guess
MSmits: I saw it in simple Q-learning even
reCurse: The fixed line problem is only a problem of comparison though
MSmits: what do you mean comparison
reCurse: If program X has a better generalization than program Y
MSmits: I guess the thing i was trying to get at is mostly that with a simple game there just isn't much generalization to be had because there are very few lines of play a good bot will use
reCurse: If that is true then it should be even easier to generalize
MSmits: yes
reCurse: That's why I disagreed earlier
MSmits: but it's very hard to do it perfectly
reCurse: Wouldn't be talking about it if it was easy?
MSmits: a bot that plays perfectly in 60% of common lines of play beats one that plays perfectly in 50% of them
MSmits: but what if one bot plays perfectly 99% of the time and the other 98%
reCurse: Depends on your metric
reCurse: Mine is to be the least weak possible
reCurse: I'd rather have 60% against everyone than 90% against most and 20% against the other
MSmits: true
reCurse: Which is funny because in real life it's all about exploitation instead
MSmits: my point is that you only make a mistake in 1% of turns, then it's easy to be lucky and not have that 1% appear in the deterministic lines of play your opponents use
reCurse: Sure
MSmits: a person with 2% might have more luck than a person with 1% if it is a different 2% that is more rarely visited by his opponents
MSmits: this, i think is what happens between your NN's
MSmits: a less well generalized bot may still easily end up nr 1
MSmits: forced starts may help here
MSmits: bringing more variation, requiring more generalization
reCurse: A step in the right direction for sure
reCurse: Forces broader sampling
reCurse: And I'd like to think it's as close as we can get as simulating that "try something else" human thing
MSmits: honestly, i hope struct puts this in, it's hard for me not to use a winning method, but for othello specifically, counterbooking is not a fun exercise for me
reCurse: I understand
MSmits: I like it in yavalath, because it's enjoying to see bot strategies emerge, but othello is kinda boring to watch :)
reCurse: Still gonna poke you for it
MSmits: sure
MSmits: was gonna say: Poke me any time, but jacek is nearby, it has troll-risk
reCurse: Unless you mind, then I'll poke more :P
MSmits: lol
MSmits: RoboStac, that value for your exploration parameter is incorrect
reCurse: Hmm, I think it would be interesting to have a match against 2 bots where they are not forced anything but given their full prior history
RoboStac: it's just the old one again as I prefer that to random losses lower down
MSmits: ah ok
reCurse: Like a meta AI
reCurse: Choose where to diverge
MSmits: well i wont be spamming submits robo. Just one, when i am done with meta mcts, might be weeks
MSmits: so if you have some version that is nr 1 and strong, just submit it and i wont bother you for quite a while
MSmits: reCurse not sure i understand
reCurse: So say you have fixed opening
MSmits: right
reCurse: You're bot 1, you lost against bot 2
reCurse: Next game
reCurse: You have that game information stored.
reCurse: You won't do that again. What will you try differently
reCurse: And keep doing that for 100 matches or something
MSmits: that's similar to the way NN's are trained and what happens inside of a meta mcts isnt it?
reCurse: Not for CG of course, just a thought experiment
reCurse: No
reCurse: It's not for training
reCurse: It's akin to preparing lines of play
MSmits: oh you mean a different way to submit?
MSmits: bots keep a memory
MSmits: and learn?
reCurse: Not learn...
MSmits: well whatever you want to call it
reCurse: You don't have enough games to do that anyway
struct: he will try to avoid the mistake
MSmits: they change tactics at least
reCurse: It's not about learning
reCurse: It's about testing your N best lines
reCurse: Instead of your only one
MSmits: sure but if you respond to the opponent, it is a kind of learning? Maybe in the broadest sense of the word
reCurse: No because your parameters wouldn't change
reCurse: You only have a meta AI that controls where to diverge in the game
MSmits: hmm ok
MSmits: so you just play a longer game
reCurse: You don't have enough information to learn from it
MSmits: consisting of 100 games
reCurse: Well like I said wouldn't work for CG
reCurse: But say stockfish vs leela
reCurse: No fixed openings, they decide the alternatives to try
MSmits: yeah, but you're right it is interesting
MSmits: especially if you're into the particular board game and have some knowledge
reCurse: So maybe it tried e4, didn't work, but it knows d4 is nearly almost as good, so why not try that
reCurse: (yes I'm a e4 player sue me)
MSmits: right
MSmits: i play e4 too
MSmits: easy to remember
reCurse: I was partway into learning 1.Nf3 before I stopped playing
reCurse: anyway
MSmits: well always using the same opening is a good way to get a higher rating
MSmits: because you get different opponents anyway
reCurse: Sure
MSmits: it's like using a deep opening book in your head
MSmits: I wonder if this could get you flagged for using an engine
MSmits: if you memorize best openings from engines, up to ply 15 or so
reCurse: No
reCurse: There are much better tells
reCurse: Unfortunately I'm pretty sure all this cheat detection can be defeated
MSmits: yeah
MSmits: for the average player it is np though
reCurse: Not even
MSmits: I didnt notice anything below 1400 rating
reCurse: They just didn't get to that point yet
MSmits: right
reCurse: But you can very easily cheat and look human
MSmits: yeah, no doubt
MSmits: it's even more tempting if you're a botter
MSmits: you keep thinking, i could write a bot and play better
reCurse: I may have done an experiment to prove it :P
MSmits: sure
struct: I wonder if when they ban for cheating
MSmits: I havent done that, because it would bum me out either way, no matter if it worked or didnt work
struct: if you register again, you get in a pool with previous cheaters
PatrickMcGinnisII: reCurse ran across something recently, and i applied it to a history with the intention of determining where i should have jigged instead of jagged because the distribution of jigging and jagging weren't uniform, so you can skew randomness kinda binarily, either best or worse... was using this for bulls and cows 2 without having to test each remaing poss combination: http://oroboro.com/non-uniform-random-numbers/
MSmits: jigging and jagging
MSmits: interesting
reCurse: I initially did it for a training tool
reCurse: Then realized it can be used to pass the chess turing test
reCurse: Kinda scary
reCurse: Not sure where you're getting at PatrickMcGinnisII
PatrickMcGinnisII: ok, umm you mentioned generating things locally (not on cg), and with exponential possibilities you can identify plies in your history tree that may need further exploring or (gene mutation) by using non-uniform randomness of the leafs to explore
reCurse: Oh, sure, already doing that :p
reCurse: Well, not that exactly
reCurse: But non-uniform noise for exploration
reCurse: Thanks for the link though
JBM: what's the “chess turing test”?
reCurse: Play like a human
reCurse: Yes
MSmits: pretty sure i can make a chess bot that plays like a bad human :P
reCurse: It's not really about good or bad
reCurse: But just play a chess game and tell if the opponent is bot or human
reCurse: It's not clear if it's easier or harder to do for a weak skill level
PatrickMcGinnisII: there plenty of really good short code JS chess bots, i might insert one just to be a pain in the butt
MSmits: is it about timing the moves? Taking more time for hard situations and less time for easy ones?
reCurse: If you speak about the chess multi that would be defeating the whole purpose PatrickMcGinnisII
reCurse: MSmits: everything ideally
PatrickMcGinnisII: i looked at leaderboard when there wweree 4 bots, it looked pretty dismal
reCurse: It just got published
MSmits: i sometimes analyzed my chess matches and sometimes i didnt make single "bad move" and sometimes it had 3 blunders
reCurse: Hoping for potw at some point
reCurse: Because typical chess engines are terrible for analyzing human play
reCurse: Except if you're GM, **maybe**
reCurse: I made something much better as an experiment
reCurse: But it can be used for cheating so won't release it ever
MSmits: reCurse your game might be slow to pick up because it is not easy to write a bot for it. I will do it eventually though and I'm sure others will as well
jrke: MS i founded a bug in your endgame solver
jrke: lemme share
reCurse: I'm sure potw will help
MSmits: show me jrke
jrke: https://www.codingame.com/replay/523014537
jrke: can you see it?
MSmits: lemme try
MSmits: whats the bug
jrke: its printing 20 max for me and i get 21
jrke: turn 73 your score gets changed
MSmits: yeah
MSmits: that's weird
jrke: gtg bye
MSmits: bye, thanks for the share
MSmits: I'll put this one on my list to fix... somehow
jrke: no problem
jrke: gn
MSmits: gn
reCurse: Ahh I think I found the source of noisiness thanks to othello
MSmits: you mean a general source of noise in your frame work?
reCurse: In MCTS
reCurse: I'm starting to really hate this algorithm
MSmits: I like it :P
MSmits: with all its flaws
reCurse: I'm itching to go completely off the beaten path now
MSmits: sure why not, with this new framework done, you need a new project
reCurse: I wouldn't call it done at all
reCurse: It's been PoC'd
MSmits: piece of crapped?
reCurse: Proof of Concept
MSmits: o
Wontonimo: what's on your alternatives-to-mcts list? (other than minimax)
MSmits: jacekmax :P
reCurse: Nothing concrete, only vague ideas
MSmits: i am actually not kidding
MSmits: it's viable
reCurse: Something I'd build on my own and end up reinventing something I wouldn't have known about otherwise probably
reCurse: Or maybe the next best thing? Hah, right.
MSmits: reinventing is fine imho. In a parallel universe you would have been the first
MSmits: people put too much stock on who is first. You're just as smart for figuring something out if you're not the first to do it
reCurse: Imagination tainting is a very real thing though
reCurse: That's part of why I don't go into too much details
MSmits: you mean you think you're first but you already saw a piece somewhere?
reCurse: Among possibilities yes
Wontonimo: https://openreview.net/forum?id=HyN7UVfOZB - A Rollout-Based Search Algorithm Unifying MCTS and Alpha-Beta may be a light read to inspire some ideas. It is an attempt to have the best of minimax and MCTS
MSmits: makes sense, often it didnt take more than one or two hints from someone here, for me to figure out what they did
Wontonimo: in games where minimax shines and MCTS struggles
reCurse: Haven't seen that one I think, thanks.
reCurse: Adding to the reading list
reCurse: I still have a weird intuition over something that would be made uniquely possible with NNs though.
reCurse: We'll see.
MSmits: isnt the main difference with NN, that the board state is much more accurately evaluated?
reCurse: Depends entirely how you use it
reCurse: Can be used to derive a value, a policy, many things...
MSmits: yeah i know it can be done differently, azero uses the policy
reCurse: Uses both
MSmits: jace k just uses the value
MSmits: yeah thats what i meant
MSmits: robo uses both i think
MSmits: but that's not necessarily something specific to NN's
MSmits: you could have a policy for other search bots
MSmits: it just wouldnt be very good i suppose
reCurse: You can have a direct policy without value
reCurse: That's what Q learning is
reCurse: Ok, sure, it learns the Q(s,a) value
reCurse: But it's not the V(s)
reCurse: So it's more of a policy still
MSmits: ah yes I did that
MSmits: seemed to me it mostly just made the table much larger
reCurse: That's because it's model free
Wontonimo: another paper (I can't find the source) suggested adding 1 additional step to expansion in MCTS, which is to set the initial win of the expanded leaf to the estimated win rate using a light heuristic (or value function if you will) as 1 sample, then do a rollout for a second sample. So expansions get 2 samples effectively.
MSmits: right
reCurse: You don't need to simulate with Q
MSmits: thats true
reCurse: Wontonimo: Yeah that's a classical extension to MCTS
Wontonimo: i didn't know. i'm kinda new to MCTS. any other classics i should know ?
MSmits: didnt work well for me in uttt
MSmits: there are many enhancements to mcts
reCurse: You can read the 2012 survey
reCurse: It's old but still has a lot of info
MSmits: most dont work in most games, but they all work in some domains
reCurse: http://www.incompleteideas.net/609%20dropbox/other%20readings%20and%20resources/MCTS-survey.pdf
MSmits: it's a lot of trial and error
Wontonimo: outch, that's old. i'm embarased
MSmits: old in this case doesnt mean bad
MSmits: focus of the field probably shifted since then
Wontonimo: Thanks reCurse !
MSmits: so it could still be up to date
reCurse: Keep in mind it's all done before NNs took over
MSmits: (mostly)
reCurse: Which may be a good or a bad thing depending on what you want to get out of it
Lucky_Cloverr: I'm kinda lost, I'm trying to do Ascii Art but I don't know what I'm doing wrong
reCurse: Personally I'm just glad I finally beat the random rollouts in uttt
reCurse: It was hurting my soul deeply
MSmits: I still wonder if you really beat karlis o convincingly though?
reCurse: Yes
MSmits: I mean, if he doesnt have a slightly different version that you dont beat
reCurse: rc2 karlis o 241-139-40 (62.14%) 420 games
MSmits: you know how it is with these things
MSmits: he beats us by a far far greater margin
reCurse: Like I said, I prefer 60 over everyone
MSmits: let me put it this way
MSmits: i am sure you have multiple versions
MSmits: do they mostly beat him?
MSmits: or is it only a few and you picked the strongest
Lucky_Cloverr: thanks for the help!
MSmits: because he can do that to you as well
MSmits: while still beating the rest as well
reCurse: What's your point?
MSmits: that it might be true that you share the top
reCurse: Well right now it's not
MSmits: thats all
reCurse: That's all we ever get right? A snapshot
MSmits: well if your claim is you beat random rollouts it's true regardless
reCurse: Indeed
MSmits: because noone at the top does that really, they're all heavy rollouts
Wontonimo: in one experiment, I just turned off rollout and only used the value function for expansion. It did better (in that particular game) than random rollout or policy+random rollout.
reCurse: Heavy rollouts are still random...
MSmits: biased random
reCurse: Not the point
MSmits: ok... i meant not full random
reCurse: If your heuristic is play a game randomly, bias or not, it irritates me
reCurse: Especially if you can't come up with better
reCurse: It's fundamentally wrong to me
MSmits: does your bot not have a single random component?
reCurse: Nope
reCurse: Except processing power naturally
MSmits: I would personally try to put at least a little bit random in it, to make it less predictable
MSmits: so that if it played perfectly, it would choose different perfect lines of play
MSmits: not always the same
reCurse: Processing power already does that
reCurse: If it becomes an issue maybe I'll fix it
reCurse: For me uttt it was more to make a point
MSmits: karliso has no book and the total number of lines of play is still very small
MSmits: i could 100% counter it
reCurse: Leaderboards are broken enough and the game is too draw heavy to have a stable rank1 I think
MSmits: rank1 sure
reCurse: Booking cannot be helped
MSmits: top 3 has always been pretty stable, which is good enough for me
Wontonimo: are you still talking uttt or another game?
MSmits: can be made harder though :)
MSmits: uttt and general Wontonimo
reCurse: I'm more in the 'fix it if it becomes an issue' camp
reCurse: Ends up wasting a lot less time
MSmits: sure thats fine too. I am not just talking about booking though
Lucky_Cloverr: I feel like I'm not good enough at coding to actually complete anything on this site lmao
MSmits: determinism also causes more situations where you re always playing the same game between strong bots
MSmits: which is not conducive to testing your bot
Lucky_Cloverr: can anyone even see what I'm typing
MSmits: Lucky_Cloverr i hope you dont take that from this chat
MSmits: we're all pretty experienced, plenty of beginners here
MSmits: thousands even
MSmits: but they dont chat much
MSmits: try to do some easy puzzles
MSmits: if you dont know any coding at all, it's better to do a beginner course elsewhere indeed
Lucky_Cloverr: Alright, thank you
Wontonimo: you talk about qlearning, so you are maybe interested in NN. here is a line of thinking if you want to double down on ML. Train an NN policy to predict the outcome of many-second deep MCTS calculations. Supervised learning
reCurse: I'm already into training NNs
reCurse: You still need a search behind them
reCurse: Unless you do strict model free policy
reCurse: Which is why I mentioned Q learning
Wontonimo: once your NN is better than MCTS (with x rollouts), then make NN#2 that predicts MCTS+NN#1
MSmits: yeah Wontonimo, I think reCurse is the person farthest along the NN learning track of any active player, but it's good advice for others
Wontonimo: ah.
reCurse: That being said I'm just a fool with too much time and compute in his hands
MSmits: aren't we all
reCurse: You should rather learn from people that know what they're doing
Wontonimo: I haven't done NN on CG, but it is my profession.
MSmits: nice, hope to see some stuff from you here Wontonimo
reCurse: Wontonimo You're basically describing sort of what AZ does
Wontonimo: but yeah, now I"m realizing i'm spitting advice without really know what's helpful. sorry bout that
reCurse: It's ok, it's well intended and informative
MSmits: yeah
reCurse: I'm not really helping by being vague
reCurse: But that can't be helped
MSmits: Wontonimo, you might get a little frustrated writign a NN for CG because of the character limits and lack of library support. Just to warn you about that
MSmits: on CG, being able to write NN's is more a bug than a feature :)
reCurse: ?
MSmits: i mean, it was not intended by the devs
reCurse: Oh, sure
MSmits: might call it an emergent feature instead
Wontonimo: well, I have to say that 3 months ago before I joined I had zero interest in C++, but you guys have inspired me. I'm hooked
reCurse: It doesn't have GPUs and tensorflow and ease of access
reCurse: It's like the demoscene of AI
MSmits: mostly what i meant, is that for someone whose profession this is, the lack of support might be appalling :)
Wontonimo: i was a little sad to see tensorflow wasn't an option, but that doesn't mean you can't export values and graphs from tensorflow externally
MSmits: but you can view it as a challenge instead
Astrobytes: "It's like the demoscene of AI" - spot on.
MSmits: hi Astrobytes, i was nr 1 oware for 5 minutes
MSmits: but robo changed a parameter
Astrobytes: lol, yeah, just been reading the chat
reCurse: What do you do for a living Wontonimo if it's not inappropriate to ask
reCurse: Astrobytes: If you want to push the analogy further you could say CG is like Dreamhack ;)
Wontonimo: I lead a small machine learning team at tax automation at one of the big 3. Automated tax categorization, ain't glamorous but it pays the bills. Before that I did NLP and image processing for social media
reCurse: Oh that's cool still
MSmits: neuro linguistic processing?
Wontonimo: tensorflow , mongo , and if I have to I do Java and Angular (but I avoid it... since joining CG I've stated to not! thanks CG)
Astrobytes: haha yes reCurse :)
Astrobytes: MSmits: natural language processing
Wontonimo: no neuro linguistic processing. Real basic stuff, but it has to train with like 5 training examples because the clients are people and not robots and lose patience lol
MSmits: ah ok
jacek: i missed some q learning stuff?
Wontonimo: back to q learning, how would you address the training space in uttt ?
Wontonimo: are you looking at hand crafted features in-lieu of or as a proxy to state
MSmits: noone uses q learning for uttt i think
MSmits: not sure how recurse does it exactly, but imagine training a network to evaluate the board state
MSmits: and then use this in some form of search
MSmits: most likely mcts-type
jacek: like a0
Wontonimo: oh, i thought we were talking about q learning the policy
MSmits: no, i think i brought it up somewhere because q learning is all i ever did personally, despite reading a lot on NN;s
Wontonimo: ah
MSmits: i taught a module about AI to high schoolers
MSmits: one chapter was NN's
MSmits: I used the tensorflow playground
Wontonimo: that is a nice playground
MSmits: yeah, worked nicely
MSmits: i like how you can turn parts of it on and off
MSmits: enabled me to build things up slowly
jacek: that web thing?
MSmits: yes
Wontonimo: uttt screams CNN, but ... but I just don't think it CNN would out perform bitboarding and pre-computing win/loss moves
MSmits: first time i saw it myself i was a bit overwhelmed, but if you turn things on 1 by 1, it's easy to understand
MSmits: what do you mean by precomputing?
jacek: uttt screams "kill me"
MSmits: lookup tables for miniboards?
Wontonimo: yes
MSmits: everyone does that
MSmits: but thats not enough
MSmits: reCurse is the only one that succeeded in making a top NN in uttt
MSmits: i think it's not easy to do, but possible apparently
MSmits: I will revisit the game at some point and try to beat him again, but too much else to do :)
Wontonimo: what i meant is, CNN would can't compete with just raw lookup if you can have an exhaustive lookup, and since everyone does lookup tables for the miniboards, then CNN has no place
MSmits: exhaustive lookup is impossible
MSmits: too many states
MSmits: and all miniboards are connected
MSmits: you only use lookups to increase performance, not to actually cut short the game
kovi: and submit character limit
MSmits: well there is that, though tables can be generated in the first 1s
MSmits: Wontonimo, uttt state space is around 10^30 i estimate
MSmits: might be less because many states are unreachable
MSmits: but certainly over 10^25
Wontonimo: for a mini board, there are only 2^16 (or less) states, so very doable. I'm not considering doing the whole board
jacek: oh im back 1st in oware. phew
MSmits: Wontonimo in fact there are only 19683 for a miniboard
MSmits: only 8629 if you consider equivalent states with different positions of X and O and finished states
MSmits: but 8629 ^9 . ....
Wontonimo: i have a less efficient bitboard concept obviously. sigh ... I need to make time to implement that
MSmits: no no 2^16 is fine
MSmits: 2 ^18 actually
MSmits: i was talking about the ternary version, which is slow as hell
Wontonimo: oh, i did type that wrong 9+9 != 16
MSmits: your way is the best way i think, for a fast bot
MSmits: you're just using some extra padding which makes it seem like there are more states
MSmits: i run local simulations to generate openingbooks and other experiments
MSmits: in that situation i try to use the most compact representations
MSmits: for better hashing and disk space
Wontonimo: now i just need to implement it. currently my bot is python, MCTS without rollout, policy only. I'm still getting the rust off my C++ skills that I haven't used for 25 years. It's changed a bit, right?
MSmits: really doesnt matter. My c++ is very limited
MSmits: but enough to make very strong bots
MSmits: I doubt i use anything from the last 10 years
MSmits: maybe whats new for you is intrinsics
MSmits: but i dont use so much of that in uttt
MSmits: I suspect most of what has changed in c++ is to make development easier, but correct me on that
reCurse: Ok, where to start
reCurse: C++11 may be the best thing that ever happened to C++
Astrobytes: I thought they were turning C++ into C# these days.... /s
MSmits: do i use things from c++11 you think reCurse?
reCurse: How would I know, do I review your code?
MSmits: mmh you might take a guess
jacek: well i use auto mostly
MSmits: I doubt it personally
MSmits: I use it very rarely mostly because i took sometime off stack overflow
reCurse: lambdas are a game change
reCurse: *r
MSmits: what are things that you would routinely use in a CG bot that have changed in c++11 reCurse?
jacek: hi new, we're dads
Wontonimo: i'm dad also
jacek: you can do vector<vector<int>> without space betweem > >
reCurse: Not sure where to start MSmits
jacek: i bet there are many small nuases that compiler will fail if you turn off c++11
reCurse: You can read any summary of C++11 features, chances are I use most of them
MSmits: hmm ok
jacek: well MSmits and I never did templates for example.
MSmits: well I use such basic c++ (I think), that I doubt I use any of it
MSmits: my point was, if i can do that, Wontonimo should be ok
Wontonimo: it seems lambdas took the programming world by storm and everyone got into it. lambdas for everyone!
reCurse: ^
kovi: for competitions the best thing is range based for and auto
MSmits: I use nullptr
jacek: oh i use lambdas for sorting
Astrobytes: auto saves typing out those insanely long iterator types etc
MSmits: I guess there might be 1 or 2 bots where i use a lamda for sorting
MSmits: oh Astrobytes I've been meaning to ask (you know this). Where can i find that fast sorting for beamsearch?
MSmits: to just get the best 100 items
MSmits: or something
MSmits: it's better than quicksort, i know this exists
Astrobytes: are you sure I know this?
MSmits: I think you showed me
MSmits: but now i am doubting, maybe it was darkhorse
Astrobytes: probably darkhorse
reCurse: nth_element
Wontonimo: are you resorting every time you add an element to the queue? If so, its one sort, if not its another
MSmits: that sounds familiar
MSmits: thanks reCurse
MSmits: no Wontonimo, the idea is, you have a group of states, say 1000, then they all get 30 children, you then have 30k and want to keep the 1000 best
MSmits: you dont need to have those 1000 sorted
Astrobytes: priority heap?
MSmits: nth element is a sorting method to just get the correct position for the nth element
Astrobytes: queue I mean
MSmits: so you would get the 1000th element
MSmits: and then just take everything with a better score
reCurse: "All of the elements before this new nth element are less than or equal to the elements after the new nth element."
Astrobytes: ah gotcha
MSmits: thats what i needed
MSmits: i was going to use this for code of the ring beamsearch
Astrobytes: you're doing that again? You did that by hand before right
MSmits: yeah, but that left a sour taste, i can do much better
Astrobytes: that's fair enough
MSmits: but before finishing my code, i got captured by search race, so my priority queue is a bit jumbled now
MSmits: I want to at least adapt my csb to get a working bot for that
Wontonimo: MSmits ah, i keep mixing best-first search and beam-search ...
MSmits: ahh ok, best-first-search is also easily mixes with breadth first search
MSmits: both bfs :0
Wontonimo: haha ... sigh.
reCurse: Bread first search when you're hungry
MSmits: :grin:
Wontonimo: thanks dad
MSmits: dadjokes are the best
JLukeSkywalker: how do you make a puzzle of the week?
Astrobytes: bird-first if you're a cat
MSmits: it gets selected
MSmits: not made
reCurse: You don't, you make a puzzle and pray it gets selected
JLukeSkywalker: ah
MSmits: put some graphics in there
MSmits: make it look cool
MSmits: not sure if that helps, but it sure gets more attention then
Astrobytes: show it to T, if he likes it he might pick it :P
reCurse: He pities da foo
Astrobytes: lol
Wontonimo: Here is a game idea pitch: Some game like checkers or breakthrough on a smaller board. The twist is that you can crypto-mine to reverse sabotage the opponents move (it undoes their move and they lose trust points).
Wontonimo: You also crypto-mine to protect your move from sabotage. You win/lose with normal rules or by reducing your opponent to zero trust points (their pieces don't trust them anymore). The crypto-mining is cpu intensive, and provides a meaningful tradeoff between attaching/defending trust or spending compute on winning the game.
reCurse: waaaat
Wontonimo: not real crypto-mining of course, just computation of bit shifts / modulus
Wontonimo: it would encourage the coding of very good heuristics to save compute cycles
Wontonimo: so they can be spent of crypto attack / defense
Astrobytes: Ah, I see you've already read the Triggering reCurse 101 :P
Wontonimo: oh noooos!
jacek: not checkers, uttt
Astrobytes: read it jacek
reCurse: In any case, simplification would be a good start
reCurse: There is no point to do the cryptomining part, so you could just say "leftover time is worth something"
reCurse: Then it becomes obvious it's either useless or an optimization competition
Wontonimo: i did read some forum talk about some hate regarding trying to make a game not work for MCTS. I thought the hate was around making a game complicated mostly, not specifically about MCTS.
kovi: i like this idea
Wontonimo: oh, i didn't think about just saying the left over time is worth something! That really addresses an issue i thought i'd have to deal with!
kovi: depth0 + heuristics can have a revenge
Astrobytes: :)
MSmits: this reminds me of when google banned me from their cloudplatform temporarily when i was fitting parameters, stating i was cryptomining on their servers
reCurse: Uh?
MSmits: i used the 300 euros free trial :P
Astrobytes: lol, I remember that
MSmits: running 5 instances, during locam
reCurse: Oh it's google, they don't actually check anything. Makes sense.
MSmits: they reinstated when i explained it
reCurse: Wow.
MSmits: 30 min phonecall :P
reCurse: They have customer service?!?
MSmits: it was a filipino guy
reCurse: Not the point
MSmits: he kept having to talk to experts cuz he didnt understand
Wontonimo: cost them so many euros to handle that phone call they just game up and reinstated you to cut costs
MSmits: i mean they outsourced for costs
kovi: then it was not worth for them
reCurse: lol
Astrobytes: heh
MSmits: lol maybe so
kovi: unless you share the tshirt with them
MSmits: i did get a tshirt that time, maybe should have offered :p
Astrobytes: was that locam or another one?
MSmits: locam for sure
MSmits: thats when i used most of the 300, was completely pointless too
MSmits: i ended up having the same fixed draw order as most players
MSmits: at least i gave it a good try
Astrobytes: I think that Bruno guy did similar
MSmits: the nr 1 did as well, but he did it locally, with a far more performant simulation
MSmits: thats how he came up with the draw order
MSmits: the rest of us used brutaltester or some such
MSmits: except maybe recurse
reCurse: I did my own draft algorithm
MSmits: yeah, you mentioned you did something a bit different
Astrobytes: and successfully trolled loads of people with your output :D
MSmits: it did not have much effect overall, but enough to get you +0.5 to +1 rating
MSmits: compared to rank 3 and below
MSmits: I should have hated that game considering it flaws, but i liked it anyway :)
Astrobytes: Might be different if it came along now
MSmits: because there are so few contests?
Astrobytes: No, I mean you might not like it now with your increased knowledge
MSmits: ohh ok
MSmits: not sure, it was just pretty and i did like writing the sim part
MSmits: just the draft was stupid
JKSTUDIOS2020: Sup.
MSmits: hi
Wontonimo: about making a bot competition... the docs say you need a couple team members to make a submission. Is that something people sign up in CG like the approve/reject of CoC submissions, or typically do you have to rally support on your own here at CG ?
reCurse: lol outdated
Astrobytes: Heh heh.
MSmits: Wontonimo the traditional community contests dont happen anymore
MSmits: we will still have contests, but they are organized by CG
JLukeSkywalker: i mean, if you made something good enough they would probably take it in
MSmits: but you can compete in multiplayer arena's. It's just different because you dont have 2k players competing at the same time
Astrobytes: You can obviously still make a multiplayer contribution, but not a contest . . .
Wontonimo: oh, sorry wrong words ... i meant just making another bot multiplayer game
MSmits: completely community controlled Wontonimo
JLukeSkywalker: those dont require team members ^^^
Wontonimo: cool.
MSmits: you create something, others comment on it and approve if it is good
Astrobytes: Yep
jacek: eeyup even
MSmits: we have a huge amount of contributions pending though
Stilgart: s/if it is good//
JLukeSkywalker: not a lot of multiplayer though
jacek: clash are multiplayer :v
Wontonimo: I've been working through the backlog of contributions and commenting / approving / voting as I can.
Stilgart: Wontonimo: have fun
MSmits: a multiplayer arena is a really big thing though. A puzzle you solve in an hour or less on average, multiplayers can be played for days. We dont really need 200 multiplayer arebas
MSmits: arenas
jacek: i cant see the connect4
Astrobytes: days you say...
MSmits: well for normal players
MSmits: jacek
MSmits: http://chat.codingame.com/pastebin/5a55aba2-700e-4032-9e5c-9823aee76553
MSmits: if thats what you were looking for :P
MSmits: if it's not gonna happen I'll turn it off though, not sure if he'll put it up for approval
MSmits: thankfully did not spend too much time coding for it. Just a few hours on the game, then a few hours on the meta mcts
Wontonimo: i hear ya about the loads of bot games already here ... tempers my enthusiasm for sure. Have redirected most of that into trying to approve/test others contributions
MSmits: it might help if they make more categories
MSmits: so you dont get overwhelmed by the list
jacek: and few days running the meta mcts
MSmits: both in contributions and in the compete tab
Astrobytes: The more the merrier imo - but quality > quantity. Regarding multis.
MSmits: well that too jacek, but that's just alternative heating
MSmits: it's winter
Stilgart: MSmits: you can always turn your connect4 into a hard/expert puzzle
MSmits: it's not mine
Stilgart: ho?
MSmits: did i talk about it so much people think its mine now
Wontonimo: i joked with my son that we'd replace our water heater with a metal drum lined with gpus ...
MSmits: oh i said game, i meant bot
Stilgart: MSmits: I am not reading enough :)
MSmits: i made a bot and a meta mcts
MSmits: for someone elses contribution
MSmits: Wontonimo good idea
Stilgart: and spending so much time on someone else contribution is just insanely nice
MSmits: well i liked the game, I dont really have a moderate setting. Once I start...
MSmits: luckily ran out of ideas fast
reCurse: Why not line it up with gold while you're at it, less expensive
MSmits: isn't there gold in a gpu?
MSmits: i'm not sure
MSmits: they do use some expensive elements
Astrobytes: Not as much gold as they used to back in the day iirc
PatrickMcGinnisII: Wontonimo someone did make a forced air heater with their miner gpus, they only turn them on in winter apparently ... i think it recoops 10% or some such on their elec. bill, never recoops the init. cost tho
Wontonimo: Stilgart I also spent a long time answering questions on SO for others. It helped me tremendously in seeing different ways of thinking, different problems I don't usually encounter, and relearning how to talk on the interwebs so as to not bring on the fire of trolls
MSmits: troll-fire!
Stilgart: .o/
jacek: AutomatonNN hello
AutomatonNN: bloop
Wontonimo: my interest in currating the backlog in contribute will die out soon enough, just like it did in SO
MSmits: AutomatonNN, whats bloop?
AutomatonNN: where you are the one who is from the beginning?
MSmits: he's being cryptic again
Astrobytes: NN is much more amusing in fr tbh
MSmits: does he talk about euler in fr too?
Astrobytes: Both of them in fact
Stilgart: MSmits: nope
Astrobytes: No, he pings fr users
Wontonimo: fr(s) -> { s/(\w)/le $1/ }
Stilgart: but he's trolling 2000 about turtles
Astrobytes: heh heh
MSmits: wait, the one NN trolls the other one about turtles?
MSmits: but it doesnt count as a nn ping right? Otherwise you'd get a loop
Stilgart: yeap... NN learned to say turtle quite fast
Stilgart: 2000 still has issues with this word
MSmits: I see, so it's a teaching thing
PatrickMcGinnisII: AutomatonNN loves cats
AutomatonNN: what do you mean by the contest?
Stilgart: now, the issue is that, since NN has only 1 neuron, it can't learn unicorn
MSmits: you mean 1 neuron in hidden layer?
jacek: perceptron?
Stilgart: 1 neuron... that's what he said
MSmits: why would unicorn be harder
MSmits: oh right, in French
Stilgart: it was bob's choice
Stilgart: we try to make him learn "licorne" in fact
MSmits: you actively try to teach your NN words?
Stilgart: sure
MSmits: this is really a French thing I think, when tourists come to France they always want them to learn French also. Is it like that?
Stilgart: let's not waste Magus CPU time
Astrobytes: fr is an... interesting place sometimes, MSmits :D
Stilgart: it is crazy
MSmits: apparently
Stilgart: I have tried for 36 years, still not good at french
MSmits: I can understand some basic words
Astrobytes: :D
MSmits: from high school
MSmits: was my worst subject
MSmits: only thing i ever failed any tests for
Stilgart: the issue is not the vocabulary, but everything else
MSmits: for me it was all of that
Stilgart: you are given a rule... it apply to less cases than the list of exceptions
jacek: omelette du fromage
Stilgart: applies*
MSmits: Stilgart, apparently my language is worse than French in that regard
Stilgart: is that possible ?
Astrobytes: The grammar goes a bit nuts after a very short period of time
MSmits: I saw a talk where they measured how old children are before they can speak properly, including all the exceptions
MSmits: The Netherlands was the worst in europe afaik
Stilgart: I mean, french really is all about exceptions... I have to check stuff every time I am writing an email
MSmits: Dutch also
Stilgart: wow
Stilgart: how can people from these countries can be so nice compared to french people ?!
MSmits: mmh, not sure if Dutch people are nice
MSmits: supposedly they are mostly very honest
MSmits: which makes them sound blunt/rude
MSmits: if you ask a dutch person how their day is, they *will* tell you
MSmits: and they expect you to listen also :P
Wontonimo: no pretence, i like it.
Astrobytes: I like that
MSmits: well to some extent, not everyone is the same of course, but this is apparently what tourists and other people from the outside notice when they come here
Wontonimo: if you ask a question, listen. yeah, i can get behind that.
MSmits: for me it's just normal, so i did not know this
Astrobytes: I don't like pointless niceties. If you care, ask how the person is doing.
Astrobytes: Otherwise, stfu
Stilgart: MSmits: better than our ridicoulously generic answers in France
MSmits: thats it exactly
MSmits: we also have just "hi"
MSmits: no need to say "hi how are you"
Astrobytes: Wish that applied here.
Stilgart: hi rCSB
Astrobytes: hah
MSmits: you can also ask a different question. like Hi, what are you doing here
MSmits: then you dont need to hear how much their day sucks
Astrobytes: I bet MK asks people how their CSB is when he's drunk.
Astrobytes: irl I mean
MSmits: checks out
Stilgart: Astrobytes: might be
struct: is that a french thing?
struct: I see multiple french people here doing name:
Astrobytes: struct: Possibly, when there's a lot of conversation it's very helpful
Uljahn: irc habbit for me
Astrobytes: ^
JLukeSkywalker: where can we look up clash problems that are active?
Wontonimo: ive never seen such a thing
Wontonimo: you enter the lobby https://www.codingame.com/multiplayer/clashofcode
Wontonimo: and see who's about to join the next clash
Astrobytes: https://eulerschezahl.herokuapp.com/codingame/puzzles/
Astrobytes: you need to remember the title or some details about it though
JLukeSkywalker: yep, found it
Wontonimo: WOW! That's great
JLukeSkywalker: failed a test case, got 100% on validator
JLukeSkywalker: just wanted to see what the test actually is
Perlorodka: add a test case, so that it uncovers that bug of yours and helps to fix it next time
PatrickMcGinnisII: Uljahn /get alifeoutsideofirc.jpg
Astrobytes: Police, fire brigade, ambulance or coastguard?
Astrobytes: http://how-to-properly-ask-a-question.surge.sh/
JLukeSkywalker: lol
SPDene: Astrobytes can i ask you a question about that? :P :P
Astrobytes: :P
**PatrickMcGinnisII ${constant::foo}
JLukeSkywalker: when will we get := in python on here?
Astrobytes: whenever they do a language update...
Astrobytes: So, who knows
zhoubou: They're using 3.7.4. Didn't know that. Also: Hi
Astrobytes: hey zhoubou
Astrobytes: Yeah, bit tired but alright I guess. Yourself?
zhoubou: Hmm. Kind of the same
zhoubou: I'm taking a break from studying rn
Astrobytes: Exam coming up?
Astrobytes: Oof. What's the subject?
zhoubou: There are 7 subjects. Mainly state administration things
Astrobytes: Ah regulations. All the really fun stuff.
zhoubou: The good thing is, I don't have a degree, so it's easier to pass.
Astrobytes: I do pharma regulatory, the EU guidelines are a fantastic read if you want to fall asleep in < 5 minutes.
zhoubou: One subject I have is "Fundamentals of the European Union" if that translates well
Astrobytes: Oh lucky, lucky you :D
zhoubou: It's easy, but my brain is just.. blah
zhoubou: There are a lot of text wall type of questions
Astrobytes: Yeah, I can imagine. Legislation and such requires those types of questions
zhoubou: But I'm helping myself by developing a program as study aid
Astrobytes: Ah, good on you
zhoubou: Thanks. I just can't retain concentration when I'm studying otherwise
Astrobytes: Studying of that particular kind needs regular breaks, any way you can
zhoubou: Yeah, I'm doing an hour with 5-15 minute break. Then 30-45 minutes break after 3 "sessions".
Astrobytes: Sounds about right for studying large volumes of text!
zhoubou: I found it works for me, so yeah :)
Astrobytes: I always like to go for a walk or go into the garden or whatever for 5-10 minutes.
zhoubou: That's probably the best way to do it
Astrobytes: Anywhere outside the house
zhoubou: The outside? :scream: :P
Astrobytes: Yes. It exists. I have seen it with my own eyes :D
zhoubou: Wow. You must be an adventurer
Astrobytes: lol
zhoubou: Being "mindless" or "mindful" is what matters when you are taking a break from anything. And going outside helps a lot in that.
kovi: chess seems like an excellent contribution
Astrobytes: Yep. Totally agree zhoubou
Astrobytes: Yes kovi, re Curse did a great job on that. I've not started yet but looking forward to it
Astrobytes: https://www.codingame.com/multiplayer/bot-programming/chess
Astrobytes: It's chess960/Fischer Random
Astrobytes: To prevent booking :P
zhoubou: (What does that mean?)
Astrobytes: Opening books etc
Astrobytes: Like set ways of playing according to positions
zhoubou: I know what books are. Well, the concept of it anyways
zhoubou: It's "chess960/Fischer Random" I'm less familiar about
zhoubou: Should I just google it? (Hint: yes)
Astrobytes: Oh you mean the random part. Check the description on the link
Astrobytes: Created of course by the one and only Bobby Fischer
JLukeSkywalker: is there any way to get teh community contest achievement anymore?
Astrobytes: Nope.
Astrobytes: I've reported it on the Discord.
zhoubou: Also RIP 12 contests achievement?
Astrobytes: No, will just take a lot longer to get there!
Uljahn: still doable in 6 years
Astrobytes: :grimace:
Astrobytes: WHY IS THERE NO GRIMACE
Astrobytes: :grimacing:
Astrobytes: I failed.
MSmits: :grimacing:
zhoubou: Though it shouldn't be named "Happy Birthday!" then
Minato_N: hi
Angecide: bruh, I made a sick implementation of endgame solver into my mcts algo and went down all the way to 145th place
Angecide: I was like wtf is going on
Angecide: how is that possible
Angecide: is there a bug in my code or some dumb shit
Angecide: turns out I forgot to turn on pragma optimize
Angecide: cause it was off because of some dumb debugging i was doing
Astrobytes: :D
Astrobytes: happens
Astrobytes: Where you at now?
Angecide: I am just submitting now, so I will see in a few mins
Astrobytes: good luck :)
MSmits: i am trying to adapt my csb bot for search race. I am really seeing some weird and bad :poop: in this bot
MSmits: I can tell this is one of my earliest bots
MSmits: for example, i have a random rollout in which i generate a random number for a random angle and thrust
jacek: that means you improved over time
MSmits: i use the *same* random number for this
MSmits: so the thrust and angle is coupled somehow
MSmits: apparently i have jacek, this csb bot is still 6th or 7th though
MSmits: maybe i should revisit it
kovi: sound pretty simple to resubmit and test
MSmits: nah, if i want to clean up this bot, i need to overhaul it, so much is just wrong
MSmits: and I need to AVX it too
MSmits: i wonder if this will affect my rank at all if i do this
MSmits: to get a higher rank i need to defeat some NN =/
kovi: i c. but still the limitation of thrust+angle together sounds like a huge bug
MSmits: yeah, but its the random rollout. I remember just turning the random rollout off didnt do that much. The tree itself is correct
MSmits: might still cause problems with convergence i guess
MSmits: also full random seems dumb. I could be a bit more picky with my moves
MSmits: plenty to experiment with i guess
MSmits: two years of experience botting does give you a whole different outlook on older stuff
struct: I dont think avx is enough to beat NNs on CSB
MSmits: no, just that isn't
MSmits: but there's a lot more to mess with and the bot is already pretty good. So maybe i can beat 1 or 2 of them
MSmits: they're not all re curse
Astrobytes: inb4 Smits books CSB
MSmits: :grin:
Astrobytes: btw, what are your scores for testcase 20 on samegame? (everyone here)
struct: One problem is that you wont benefit that much from AVX if you use smitsimax
MSmits: let me check Astrobytes
pb4: Even if AVX beats NN, will AVX beat "NN+AVX" ? :D
MSmits: why not struct?
struct: Well you are not gonna select the same node 8 times right?
struct: you are going to backpropagate the values 8x as often
struct: Same for selection phase
MSmits: sure
struct: Unless you only avx the collisions
MSmits: 20 4885 5265
MSmits: Astrobytes
MSmits: 4885 is my score
MSmits: 5265 is highest in found in literature
Astrobytes: cool thx, just got 4500+ offline, bugfixing atm
MSmits: not bad
Astrobytes: it was only a few minutes
MSmits: struct, I'm not sure how I'll be doing it
struct: its a fun project anyways
MSmits: yeah
MSmits: pb4, i think most NN's already use it. Also for the NN's the sim is not the bottleneck i suspect.
MSmits: For us neurally handicapped coders, simcount is much more important :)
AlgoRhythmus: hi all
struct: why wont NN's benefit that much from sims?
struct: hi
MSmits: because usually, afaik, a much larger percentage of their calculation time is spent evaluating
MSmits: if you speed up 10% of your calctime, it's not going to do as much as when you speed up 80%
MSmits: my guess is that 300k sims with AVX approaches 1 million
MSmits: 30k NN sims, if that is how many they get, will not become 100k
struct: That seems about right
YurkovAS: oh no: csb improvements :)
MSmits: i'll first try to make search race work
Astrobytes: Yurkov is always listening :D
MSmits: yep
YurkovAS: yes, i'm read chat in pidgin
MSmits: oh YurkovAS, what algorithm is your live bot?
YurkovAS: in csb? smitsimax
MSmits: awesome
MSmits: so it's now 4 NN, then 2x smitsimax
YurkovAS: in SR - GA
Astrobytes: would some kind of SPMCTS work in SR?
MSmits: thats what i am doing
Astrobytes: Aha
Astrobytes: I see
MSmits: SPMCTS is just smitsimax with 1 pod :P
Astrobytes: obviously!
MSmits: it's not gonna be very good, just reasonable
MSmits: because to be good, you need to allow more angles
Astrobytes: Initially...
MSmits: and maybe more thrust
MSmits: other than 0 and 200
MSmits: it will be a great initial solution
MSmits: that i'm sure of
MSmits: maybe i'll leave it at that, not sure
Astrobytes: You always come back when the time is right.
MSmits: yeah
MSmits: I finished my study project btw
Astrobytes: The design doc one?
MSmits: I called the game Hex-G, with 6 gravity cards (6 directions of hex board) an explosion and implosion card
MSmits: yeah
YurkovAS: i'm run SR at local PC with all validators: this way help me make many experiments
MSmits: turned out nicely i think, i have to present it on friday
Astrobytes: Nice! Let me know how it goes
MSmits: will do
Astrobytes: Did you turn in your game yet?
MSmits: YurkovAS are these validators shared somewhere, or is this a figure it out yourself secret
MSmits: yeah i did, the demo you mean
struct: it should be on github
MSmits: it has the same deadline of friday
MSmits: struct i think it is not
Astrobytes: cool
MSmits: Illeda n included a ton of validators in hopes it wouldnt be leaked
Astrobytes: Didn't Illedan post them somewhere?
MSmits: but apparently it has been
YurkovAS: https://github.com/Illedan/CGSearchRace
Astrobytes: Or wait, it's on the githubv
pb4: MSMits : 3k sims...
MSmits: pb4 i knew it would be low, not that low though
MSmits: avx is pointless then :P
pb4: don't know about the others
MSmits: it's pretty awesome that you can find the best moves with such a small tree
MSmits: thanks YurkovAS
MSmits: pb4, you and re curse, are you in the same ballpark, or did others push you to nearly the same rating
MSmits: seems Agade pushed you both
LouieAniez: wazzup people
MSmits: hi LouieAniez
pb4: I haven't looked at CSB in a loooooong time, but if I recall correctly reCurse's push he did win a lot against me
pb4: a huge lot
MSmits: csb has a tendency to be an all or nothing proposition
LouieAniez: hi MSmits
MSmits: so with a small improvement to your bot, you might be equal
MSmits: it's hard to say
struct: It seems that the validators for optimizations are hidden
struct: even for community contributions
MSmits: which ones?
MSmits: some have been shared
struct: Even if I download the zip file
MSmits: well... they were supposed to be hidden
struct: it doesnt come with the validators
MSmits: but they always seem to leak somehow
Astrobytes: That's why they publish them
LouieAniez: Let's hack pentagon
Astrobytes: nowadays
reCurse: Around 80-90% winrate IIRC
MSmits: LouieAniez we did that last week, it gets repetitive
reCurse: vs pb4
LouieAniez: lol
MSmits: ahh ok, it's hard to say what that means for the strength of both bots. Because a game is like a 15-20 checkpoint repetitive fight, a small boost in bot strength means nearly a 100% win... at least that is my experience with csb
MSmits: you only need to block just a bit better
struct: I could have 4 pods vs 2 and still wouldnt be able to beat them
MSmits: lol
MSmits: well I could only win 5% vs Pen
MSmits: and Pen got slaughtered by the NN's
reCurse: Barely gave me a 0.7pt lead after submitting with over 80% winrate, gives you an idea of the poor state of cg rankings
LouieAniez: Any nodejs coder here?
MSmits: just too few games at the top i assume
MSmits: it may help to do a few submits
MSmits: because someone who has been on the board a while is boosted
Kokoz: I just played clash of code and passed all the tests, but whem I submitted it says 0% ?!?!
struct: Did you hardcode the solution?
Astrobytes: You broke it!
MSmits: or he accidentally mistyped or misclicked before submit
MSmits: maybe was typing in the chat
MSmits: and typed some in his code
MSmits: happened to me before
Astrobytes: Clash heathen
MSmits: but i do dumb :poop: all the time so who knows
Kokoz: nope, I clicked play all testcases, everything was green and then clicked submit
MSmits: weird
struct: What was your solution?
struct: your code
Kokoz: we = "".join(up for up in s if char.isupper()) print(we)
Yakeromo: hello, can someone explain why i have sync warning?
Yakeromo: in ghost in cell puzzle
SpatuleMan: Hello kiki
KiwiTae: Oo
raulhmacias: Test
Daiim: Hi, are we OK, the website is very laggy ?
therealbeef: Someone should write a FAQ about the 1:00 to 1:30 am CET slow time ;-)
3ataja: yeah wtf
MassiveCat_d21f: hey whats good coders ;)
3ataja: what happens at 1:00
Wontonimo: don't they know coders are usually awake at 1am. 4am is a better time for redeploys
therealbeef: server updates rankings/scores or something; not very efficiently apparently
Wontonimo: anyway, it doesn't really effect me. it's 7:30 pm here
3ataja: oh i see
3ataja: lol
Daiim: AHHH thx for explanation
Kemeros: Evening. Or maybe not for you. So hello.
tekki: AutomatonNN wwhat's going on please?
AutomatonNN: guotable is pretty cool
tekki: AutomatonNN will you kill me someday?
AutomatonNN: what do you mean?
tekki: Automaton2000 what's the deal?
Automaton2000: oh i like that game
tekki: ok tell me when you wanna stop it please AutomatonNN :)
AutomatonNN: for now it's a problem
tekki: gl bro :)