Chat:World/2021-01-19

From CG community
Revision as of 11:59, 15 June 2021 by Chat Log (talk | contribs) (Created page with "File:Default_avatar.png BouncyNoodle_de77: hello guys <img src=/a/56591927932371> pipebits: Hi File:Default_avatar.png BouncyNoodle_de77: i need help!!!! File:Def...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Default avatar.png BouncyNoodle_de77: hello guys

pipebits: Hi

Default avatar.png BouncyNoodle_de77: i need help!!!!

Default avatar.png BouncyNoodle_de77: i need some help in solving the "Hidden Word" puzzle game guys!!! :(((

Default avatar.png kkx: need help for target firing too:innocent:

Default avatar.png Horizontalx: epwe

Default avatar.png ivnbcr: hi all

Default avatar.png Horizontalx: clash of code is a fun

Default avatar.png BouncyNoodle_de77: Hidden Word is fun!!!

Default avatar.png BouncyNoodle_de77: but firstly i need some help

Default avatar.png AWEsomeOp: LOL

Purplishmoon: We don't understand its logic

Default avatar.png AWEsomeOp: Yeah, its not what we learn from course

Default avatar.png BouncyNoodle_de77: Anyone can help me with Hidden Word?

Default avatar.png BouncyNoodle_de77: i would pay 0.01$

Default avatar.png Horizontalx: what is hidden word i

Default avatar.png BouncyNoodle_de77: Hidden Word puzzle game

Default avatar.png Horizontalx: clash code is fun competitive

Default avatar.png BouncyNoodle_de77: i cant code it :(

Default avatar.png BouncyNoodle_de77: https://www.codingame.com/training/medium/hidden-word

Westicles: Read up on word search puzzles

Default avatar.png BouncyNoodle_de77: ouhh okay, thanks for reply

**Purplishmoon Purplishmoon

Default avatar.png Horizontalx: hmoon Purplishm

Default avatar.png ivnbcr:

Default avatar.png BouncyNoodle_de77: https://www.codingame.com/ide/puzzle/hidden-word

algoBit: @BouncyNoodle try some easy puzzles

Default avatar.png Horizontalx: amazjiAJRSBU

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

Default avatar.png Horizontalx: #%^NJWP_O

Default avatar.png Horizontalx: IUQ%# N OHo%NHW#)OI*M'

Passifi: bueans morning y'all

struct: morning

Default avatar.png Horizontalx: bruh stop human stuff


Default avatar.png uditr: hiii

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

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

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

Default avatar.png JBM: not sure i understood the 50k counting as 1 part

Default avatar.png JBM: is 50k = 0x20000?

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

Default avatar.png JBM: they used to

Default avatar.png JBM: but haven't for a long time now

MSmits: struct all first moves are identical

Default avatar.png JBM: ah, ok

Default avatar.png JBM: jacek: tell me more?

struct: No I mean, force opening book for players

struct: like TCEC

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

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

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

Default avatar.png JBM: ah thanks for the link at least

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

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

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

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

Default avatar.png JBM: is the code length measured in the same way for code golf and general puzzles?

RoboStac: yeah

Default avatar.png Mahdi05: rfr cltkfnm njh rjl

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

Default avatar.png JBM: please don't tell me it changes the length

Default avatar.png Mahdi05: As do Power of Thor

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?

Default avatar.png Bartolini188: can somebody explain me

Default avatar.png Bartolini188: http://chat.codingame.com/pastebin/cadfa238-52e8-4b2d-93b4-6da9d6009db2

Default avatar.png Bartolini188: what does f(t) means?

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

Default avatar.png Bartolini188: well this was in short code competition, didn't knew you can print by input

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

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

Default avatar.png JockTalk: Guys - can anyone help me to understand how thrust works?

JLukeSkywalker: friction or no friction?

Default avatar.png JockTalk: no friction

Default avatar.png JockTalk: i'm on wood II

JLukeSkywalker: in what competition

Default avatar.png JockTalk: like how come you can just write 100\n and it goes to 100

Default avatar.png JockTalk: coders strike back

eulerscheZahl: the higher the thrust, the more you accelerate

Default avatar.png JockTalk: and there is no need to declare it first?

Default avatar.png JockTalk: as in, the program understands it automatically

eulerscheZahl: codingame will identify the trust because it's the 3rd number in your output

Default avatar.png JockTalk: ok great

Default avatar.png JockTalk: and what about when you want to change it when the angle is above 90 degrees

Default avatar.png JockTalk: what should i write instead of 100

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

Default avatar.png RegalSSBU: smash bros

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

Default avatar.png JBM: what's the “chess turing test”?

reCurse: Play like a human

Default avatar.png JBM: a good one?

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

Default avatar.png Lucky_Cloverr: hello

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

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

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

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

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

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

Default avatar.png Batmanboss: hi guys

Default avatar.png Batmanboss: imnew

Default avatar.png Batmanboss: very new

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?

Default avatar.png Kaleab: dimond

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

Default avatar.png IMASHELCHICK: hello

Default avatar.png IMASHELCHICK: i need help

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

Default avatar.png zhoubou: They're using 3.7.4. Didn't know that. Also: Hi

Astrobytes: hey zhoubou

Default avatar.png zhoubou: Hello :)

Default avatar.png zhoubou: How are you?

Astrobytes: Yeah, bit tired but alright I guess. Yourself?

Default avatar.png zhoubou: Hmm. Kind of the same

Default avatar.png zhoubou: I'm taking a break from studying rn

Astrobytes: Exam coming up?

Default avatar.png zhoubou: Yeah, for work

Default avatar.png zhoubou: My job depends on it

Astrobytes: Oof. What's the subject?

Default avatar.png zhoubou: There are 7 subjects. Mainly state administration things

Default avatar.png zhoubou: Which are dull

Astrobytes: Ah regulations. All the really fun stuff.

Default avatar.png zhoubou: ^ Right on

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

Default avatar.png zhoubou: Haha

Default avatar.png zhoubou: One subject I have is "Fundamentals of the European Union" if that translates well

Astrobytes: Oh lucky, lucky you :D

Default avatar.png zhoubou: It's easy, but my brain is just.. blah

Default avatar.png zhoubou: There are a lot of text wall type of questions

Astrobytes: Yeah, I can imagine. Legislation and such requires those types of questions

Default avatar.png zhoubou: You're right

Default avatar.png zhoubou: But I'm helping myself by developing a program as study aid

Astrobytes: Ah, good on you

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

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

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

Default avatar.png zhoubou: That's probably the best way to do it

Astrobytes: Anywhere outside the house

Default avatar.png zhoubou: The outside? :scream: :P

Astrobytes: Yes. It exists. I have seen it with my own eyes :D

Default avatar.png zhoubou: Wow. You must be an adventurer

Astrobytes: lol

Default avatar.png zhoubou: xD

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

Default avatar.png zhoubou: Chess?

Astrobytes: https://www.codingame.com/multiplayer/bot-programming/chess

Astrobytes: It's chess960/Fischer Random

Astrobytes: To prevent booking :P

Default avatar.png zhoubou: Oh awesome.

Default avatar.png zhoubou: (What does that mean?)

Default avatar.png zhoubou: Lol

Astrobytes: Opening books etc

Astrobytes: Like set ways of playing according to positions

Default avatar.png zhoubou: I know what books are. Well, the concept of it anyways

Default avatar.png zhoubou: It's "chess960/Fischer Random" I'm less familiar about

Default avatar.png zhoubou: Should I just google it? (Hint: yes)

Astrobytes: Oh you mean the random part. Check the description on the link

Default avatar.png zhoubou: Ah I see

Astrobytes: Created of course by the one and only Bobby Fischer

Default avatar.png zhoubou: Neat

JLukeSkywalker: is there any way to get teh community contest achievement anymore?

Astrobytes: Nope.

Astrobytes: I've reported it on the Discord.

Default avatar.png zhoubou: Also RIP 12 contests achievement?

Astrobytes: No, will just take a lot longer to get there!

Uljahn: still doable in 6 years

Default avatar.png zhoubou: RIP

Astrobytes: :grimace:

Astrobytes: WHY IS THERE NO GRIMACE

Default avatar.png zhoubou: :grimacing:

Astrobytes: :grimacing:

Astrobytes: I failed.

MSmits: :grimacing:

Default avatar.png zhoubou: Lol

Default avatar.png zhoubou: Though it shouldn't be named "Happy Birthday!" then

Default avatar.png JAM3S: Hello?

Default avatar.png zhoubou: Hi

Minato_N: hi

Default avatar.png Angecide: bruh, I made a sick implementation of endgame solver into my mcts algo and went down all the way to 145th place

Default avatar.png Angecide: I was like wtf is going on

Default avatar.png Angecide: how is that possible

Default avatar.png Angecide: is there a bug in my code or some dumb shit

Default avatar.png Angecide: turns out I forgot to turn on pragma optimize

Default avatar.png Angecide: like wtf

Default avatar.png Angecide: cause it was off because of some dumb debugging i was doing

Astrobytes: :D

Astrobytes: happens

Astrobytes: Where you at now?

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

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

Default avatar.png Kokoz: nope, I clicked play all testcases, everything was green and then clicked submit

MSmits: weird

Default avatar.png Kokoz: yup

struct: What was your solution?

Default avatar.png Kokoz: what do you mean?

struct: your code

Default avatar.png Kokoz: we = "".join(up for up in s if char.isupper()) print(we)

Default avatar.png Yakeromo: hello, can someone explain why i have sync warning?

Default avatar.png Yakeromo: in ghost in cell puzzle

SpatuleMan: Hello kiki

KiwiTae: Oo

Default avatar.png MuLy: Holle roro

raulhmacias: Test

Default avatar.png chokemedaddy: kinky

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

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

Default avatar.png chokemedaddy: kinky

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 :)