Chat:World/2021-07-20

From CG community
Jump to navigation Jump to search

Default avatar.png zyh0429: gn

Default avatar.png zyh0429: hello everyone

Default avatar.png queture: :sob:

Default avatar.png queture: Dear all. Hello there.

Default avatar.png queture: I am not good

Default avatar.png queture: and Im very lost.

dbdr: RPS intensifies :upside_down:

Default avatar.png queture: me first time coding...

jacek: hm?

dbdr: https://www.codingame.com/multiplayer/bot-programming/oware-abapa/leaderboard

Default avatar.png queture: forgive me if im new

jacek: RoboStac 2nd? w00t

dbdr: killed by royale apparently

dbdr: no, mostly Marchete

ericlovesmath: I joined like 2 days ago and I have no idea what's happening

ericlovesmath: but now I'm in position 108 for Clash

KiwiTae: now get 108 in general ranking :nerd:

ericlovesmath: dear god no I'm just fast at typing, doesn't mean I'm any good at actual programming

ericlovesmath: only reason I'm here is because of those 30 second questions

ericlovesmath: don't need to know... algorithms and... actually study data structures for most of those

Default avatar.png xlr4829: صحا عيدكم

Default avatar.png A-Za-z0-9: https://www.codingame.com/ide/puzzle/custom-game-of-life

Default avatar.png A-Za-z0-9: can someone help me?

InternalErrror: What's ur problem?

Default avatar.png A-Za-z0-9: I don't understand everything. :sweat:

Default avatar.png revots: read the wiki article and watch the simulation to get a sense of what your trying to make

Marchete: start here: https://www.codingame.com/playgrounds/40701/help-center/community-help-center

KatMan911: game of life? shit. that way madness lies. MADNESS!

Default avatar.png Oppaimaster: bebus

Default avatar.png bebus: bebus

Default avatar.png DB124: bebus

derjack: :upside_down:

Default avatar.png Oppaimaster: bebus

Default avatar.png bebus: bebus

Stefanuk12: bebus

KiwiTae: Marchete derjack o/

Marchete: o/

Default avatar.png anoukiiii: :avocado:

derjack: robo struggling?

Marchete: my only hope is that he tie more with Royale

Marchete: nvm :D

RoboStac: tried to make it slightly less deterministic so it doesn't get stuck on one result

Marchete: mine it's fully RPS

Marchete: it seems

Marchete: it's all in or all out

RoboStac: there's lots of different games vs you now at least

RoboStac: but I think the start is still pretty fixed

RoboStac: so they end up the same

RoboStac: just with slightly different lengths / final scores

derjack: use more random in start and less later

Marchete: you can't

Marchete: at least not from stats

Marchete: the problem is the fixed start

Marchete: less diversity

Marchete: ...and I'm out

Marchete: I'm sick of oware

derjack: oO

Marchete: so ugly rules

derjack: are you planning cgzero of other games

Marchete: after all the work I put on it

Marchete: I'm not 100% sure my sim is correct

Marchete: like endgame is tricky

Marchete: probably derjack, C4 seems fine

Marchete: but after reviewing it

Marchete: a Conv layer is just a Dense layer with less weights

martinpapa69: I observed a lot a repleys, where the bot is winning, and in the last step:sudden draw

Marchete: on what game martinpapa69?

martinpapa69: oware

Marchete: for me what I see if that my tree node reuse is near 0% I'm dead

Marchete: it's probably an unexplored section

Marchete: so it will play badly

martinpapa69: ye, I've seen that too, might be a bug

Marchete: probably

Default avatar.png anoukiiii: PROBABLY

Default avatar.png anoukiiii: YES

Default avatar.png celxin: helllo

Default avatar.png anoukiiii: eyo

Default avatar.png anoukiiii: whats up

Default avatar.png celxin: anouk can we be friends

Default avatar.png anoukiiii: yes

Default avatar.png anoukiiii: best freinds

Default avatar.png celxin: yeahh

martinpapa69: now what im trying is is to train a bigger network. generate a lot of replays

martinpapa69: and train a smaller net using only those

Default avatar.png anoukiiii: thats a good idea

Default avatar.png celxin: matrinpapa are you german

Marchete: matrinpapa is Spaniard right now

Marchete: ;)

Default avatar.png anoukiiii: :kissing_heart:

martinpapa69: ye, I had to move to Spain

Default avatar.png anoukiiii: ooh

Marchete: :D

Default avatar.png celxin: oh

Default avatar.png anoukiiii: we love you

Default avatar.png IcyOwl: that's nice

Marchete: :*

Default avatar.png celxin: but you are a german in spain?

Default avatar.png celxin: marchete shut up

Default avatar.png anoukiiii: dont be sad

Default avatar.png anoukiiii: go get a tattooo

Default avatar.png anoukiiii: help me

Default avatar.png anoukiiii: mars lander ep 1

Default avatar.png celxin: wuuuuaaah

Tiramon: whats your problem?

Default avatar.png anoukiiii: im in schoolo

Default avatar.png celxin: tell us the solution

Tiramon: you wish ..

Default avatar.png anoukiiii: we need help

Default avatar.png anoukiiii: och

Default avatar.png anoukiiii: mensch

Default avatar.png anoukiiii: dunmmkopf

Tiramon: i help with problems, but don't give out solutions =)

Default avatar.png anoukiiii: bad vibe

Default avatar.png celxin: arsch

Default avatar.png anoukiiii: :sob:

Default avatar.png anoukiiii: oha

Default avatar.png anoukiiii: you kicked my freind celine

Default avatar.png anoukiiii: i have problem

Tiramon: sure .. you want to join him?

Default avatar.png anoukiiii: girl

Default avatar.png anoukiiii: noo

Default avatar.png anoukiiii: i want help

Default avatar.png anoukiiii: :(

Tiramon: her ... doesn't matter ... people that can't behave are not needed in this chat

Default avatar.png anoukiiii: whats your fucking problem

Default avatar.png anoukiiii: arschpupser

Marchete: banhammer

Tiramon: ok school kids are gone ... the chat is yours ;)

Marchete: :clap_tone2:

derjack: potw notification so late now

darkhorse64: less cp

Thyl: HellOo ?

Thyl: :)

Tiramon: hm maybe i'll also spend some time again to train my oware nn

Marchete: do you also had a NN framework?

Marchete: have*

Tiramon: my submit in oware is a NN .. it still has some major flaws

Tiramon: didn't train it that much yet

Default avatar.png swapbee: hello friends

Tiramon: it's a nice small fully connected 12,64,64,6 network

martinpapa69: you dont have a value head ?

derjack: 12?

Thyl: why didn't do a 12 64 64 12 6

Thyl: ???

Tiramon: size 12 input layer, 2 hidden layers with 64 neurones and a output layer with 6 values

Thyl: 64->6 is a very big difference

Tiramon: because it was more or less working Thyl ;)

derjack: 12 inputs? only houses, no score?

RoboStac: the best move is the same no matter what the score is so if you aren't doing a search on with a value output the score isn't relevant

RoboStac: turn probably becomes important at that point though

Thyl: Your submit is good RoboStac !

derjack: Tiramon working? youre 173 :v

Tiramon: as i said it has some flaws ... didn't pass wood 2 boss because he always made moves my nn couldn't handle ;)

Tiramon: i lost interest in training it and was 2nd in wood 2 for quite some time

Tiramon: now i got pushed to wood 1

Tiramon: and yes in wood 1 it could definitly perform better

Default avatar.png TeBounty: Hello

Default avatar.png Benedikt.Huber: Hi :)

dbdr: RoboStac> the best move is the same no matter what the score I don't think that's true

dbdr: e.g. a move that gives 2 points to the opp then 10 points to you in the next two turns

dbdr: it's good, unless the opp has 23+pts

RoboStac: if you ignore turn limits then every seed has to come off the board so either +8 is the best you can do (and the opponent will always get at least 2 seeds and win) or it wasn't the best move.

Wontonimo: hi TeBounty and Benedikt.Huber

Default avatar.png Benedikt.Huber: Wontonimo <3

derjack: :thinking:

Marchete: :rolling_eyes:

Wontonimo: you two have such fragile masculinity ... free love people, free love

sprkrd: Hello lovely people :D

Wontonimo: :joy:

Wontonimo: :rofl:

Wontonimo: so, what's the topic of the day?

sprkrd: love indeed

Marchete: beards, chainsaw models and fragile masculinity

Wontonimo: i need a chainsaw actually

Wontonimo: i've got a bunch of fallen trees i need to buck then split

Wontonimo: i need a splitter also

Marchete: and manicure too

Wontonimo: yeah, after i'll need that

Wontonimo: cuz those woodchips and sap are a nightmare

sprkrd: so you're a bulky and rough lumberjack?

Wontonimo: lol

Marchete: the mountonimo

sprkrd: Mandatory video: https://www.youtube.com/watch?v=FshU58nI0Ts

Wontonimo: Marchete looks like your NN wirtup is getting a lot of people on the wagon!! Awesome

Wontonimo: Nice video sprkrd, and yes it is mandatory

Wontonimo: WAIT, those are Canadian Royal Mounties. I never noticed that before

Marchete: :steam_locomotive::railway_car::railway_car::railway_car::railway_car::railway_car:

sprkrd: I like one of the comments: "As a Canadian I find this deeply offensive, misrepresentative, and quite frankly insulting. I have many friends who are lumberjacks and only half of them are transvestites"

derjack: canadian royal ponies?

Marchete: I choo choo choose you!

Marchete: the more NN, the harder it's to stay on top...

Marchete: now top10 oware is NN

derjack: we need another breakthrough to NN

Wontonimo: a public contribution of computationally efficient Conv

Wontonimo: for CG

Marchete: for CG?

Marchete: I reviewed it

Wontonimo: !!

Marchete: in the end a Conv is just a Dense with less weights

Default avatar.png The_Camoflauged: I just realised that unity uses C-sharp

Wontonimo: yes, of course it is

Marchete: then?

Marchete: It's slower than Dense, but because it's "bigger"

Marchete: you can review it in https://github.com/marchete/Mokka

Wontonimo: !! oh !! Awesome

martinpapa69: would be nice to build a mini opensource nn lib, just for cg, that later is added to the cg server and you can include it to your file

Marchete: I did some tests and it slower than Dense, but faster than vanilla

Marchete: then they should add proper frameworks

Wontonimo: slower as in 10x10->5x5 is slower than 10x10-c->5x5 ?

martinpapa69: ye or they could just add support for tensorflow

Marchete: I prefer that

Wontonimo: yeah, that would make the cost of entry a lot lower

Marchete: Wontonimo I don't know how to measure sample inference time in new TF versions

Marchete: but my MNIST CNN was 20usec/sample

Marchete: my TF was saying 676usec

Marchete: but maybe I wasn't measuring the same thing

Marchete: check images on github

Marchete: I did evaluate(batch_size=1)

Wontonimo: yeah, i don't really know what TF 676us/step means, probably batch

Wontonimo: I'd guess that is a fairly accurate comparison and that your implementation just may be 30x faster

Marchete: I don't think so

Wontonimo: but tensorflow flow really shines with larger batches and network sizes on GPU

Wontonimo: cpu isn't its "thing"

Marchete: just the opposite than CG

Wontonimo: and you don't have any bloatware in yours

Wontonimo: so, it's believable imo

Wontonimo: even their cpu version is optimized for larger batches. in production at work, i use batches of 200 on cpu because it is only 1/2 the speed of single item inference.

Wontonimo: so 100x faster to batch 200 on tensorflow with cpu

Wontonimo: for my particular network

Wontonimo: (don't ask why we arnt running on gpu :unamused:)

martinpapa69: I dont think if you wrote an nn inference lib it would run any faster on cpu

martinpapa69: tf might contain a lot of bloatware, and for general use, but im sure they optimized the s* out of it

Marchete: I disagree

Wontonimo: the model is 300mb. So, you have to move the entire model from RAM through the cpu. If you do 200 items at a time, then you only move that model once through the bus

Marchete: counterexample, one hots

derjack: :fire:

Default avatar.png 0x15FQ: shit

Marchete: :digit_one::fire:

Wontonimo: :2: :fire:

Wontonimo: :(

martinpapa69: ye Marchete, in few special cases it can be faster. Wontonimo if your model doesnt change, why would you reinitalize it ?

Marchete: then "I dont think if you wrote an nn inference lib it would run any faster on cpu" maybe it's not true

Wontonimo: it isn't reinitalized :puzzled-and-confused:

Marchete: I'm sure Robo's NN is 2-3x the TF

Bari: sus

martinpapa69: thats sick tho

martinpapa69: maybe than I should say, I (and 99% of community) cant write faster inference :D

martinpapa69: Wontonimo why do you have to move the model in the ram, if you dont reinitalize it ?

RoboStac: tf doesn't optimise for the same use cases we have, I'm pretty sure it's fairly easy to outperform it on single inferences with small networks

Wontonimo: i don't have gpu (in this env), it doesn't fit in L3, and keeping it on disk would be way too slow.

Wontonimo: to do any calculation with it, the values have to move from ram, across the bus, load into the cpu

Marchete: it's like vanilla MCTS, if you try to use new, all non-fast math operations, divisions, etc it would be much slower

Marchete: so most top "NNers" :D surely outperforms commercial/general user NN frameworks

Marchete: use*

martinpapa69: if you run a batch on cpu Wontonimo, your model wont be "loaded into the cpu"

Wontonimo: perhaps my word choice is wrong. what i mean to say is, the model is "just a bunch of matrix operations", 300mb of them

Wontonimo: and for each matrix to do it's operation, the values have to move across the bus

Wontonimo: just like anything that is in ram that need to be processed by the cpu

Wontonimo: it isn't "loaded" in some way that is different than just regular programming

RoboStac: yeah - it probably uses the weights for the first layer on all samples before moving onto the second layer

RoboStac: which will be a much better use of cache

Wontonimo: it does indeed

Wontonimo: it loads all samples as a matrix

Wontonimo: and operates on them as one block

RoboStac: plus I imagine theres all sorts of threading going on that scales with more data

Wontonimo: so, instead of iterating through the 300mb of matrix operations 200x for 200 samples, it makes only 1 pass over the 300mb of matrix operations

martinpapa69: ah, okay i get it now. ye sure it has to be faster, to run batches on cpu, rather than running 1by1

Wontonimo: i mean, it would be way better to use a GPU here

Marchete: gaming

Wontonimo: i tend to make up terms as idea placeholders. so sorry if my explination was confusing

Default avatar.png phsads: gmaing

martinpapa69: ye, I do that too :D many times ppl dont understand what im talking about

Wontonimo: so, we needed the "next level" of nn, and boom Marchete you pre-deliver conv

Wontonimo: what's next? voxels?

Marchete: it seems conv is not that useful on CG

Marchete: or at least it doesn't seem to

Marchete: environment is tiny, so not much to improve

Marchete: probably nnue or similar approaches

Marchete: or anything better than alphazero

RoboStac: yava / breakthrough I have much better results with conv

Wontonimo: i would think breakthrough would benefit a lot from it

Marchete: but not on C4

Wontonimo: because the whole idea of conv is that what you learn in one patch is now transfered to all other patches

specdrake: talking about CNNs?

Marchete: yes

RoboStac: no, c4's still awkward because of how the endgame works

RoboStac: same with othello

RoboStac: (though I think recurs is conv there and better than mine)

Wontonimo: you do any CNN programming specdrake ?

specdrake: Uhm no I just know what it is. Planning to do some the coming semester.

Wontonimo: are you familiar with dense NNs ?

derjack: i prefer BBC :V

specdrake: yeah kind of

Wontonimo: so, if i have 400 inputs (a 20x20 board) and I want a NN to determine if there is exists a 5x5 pattern on that board

derjack: then use n-tuple network [solved]

Wontonimo: nice!

Wontonimo: you know what, a youtube video would do way better than a bit of text here

derjack: i prefer reading

Wontonimo: arxiv for you mr scholar

derjack: hmm looks interesting https://arxiv.org/abs/2107.08387

AllYourTrees: GNNs :nauseated_face:

AllYourTrees: wow that looks interesting

derjack: GNNs :hugging:

Wontonimo: by training it for only three days on small Othello boards, it can defeat the AlphaZero model on a large board, which was trained to play the large board for 30 days.

Wontonimo: x10 training speedup by being clever with training. It's as if a good teacher makes a difference

AllYourTrees: oooh nice and GNNs take advantage of the invariance/symmetries by default

AllYourTrees: is what they say

AllYourTrees: cool paper, ty for sharing derjack!!

derjack: there was other paper on learning small boards and using for bigger boards

derjack: https://arxiv.org/abs/2001.09832

AllYourTrees: nice, seems like nn structure is very important

Default avatar.png TeBounty: I know this is not a topic for this forum but I would like to improve my English. I need someone who wants to talk with me. Please.

Wontonimo: just talk about coding here

derjack: English? weird programming language :v

Default avatar.png TeBounty: It's ok sorry. Goog day.

Default avatar.png TeBounty: Good*

Default avatar.png r0bd0g: help i dont know what im doing im in yr10 and i dont know how to code help me!!!!

nulte: hi

Default avatar.png r0bd0g: hi

Default avatar.png r0bd0g: help me i cant code but i got this far somehow

Wontonimo: hi r0bd0g

Wontonimo: i'll PM you

Default avatar.png r0bd0g: whats pm mean???

Wontonimo: DM

Default avatar.png r0bd0g: okay

Wontonimo: for people who are looking for an intro to python https://www.hackinscience.org/exercises/

nicola: PM is private message.

derjack: whats PMS then

MSmits: nulte, got time for an avx question?

nulte: yes

MSmits: allright here goes

MSmits: http://chat.codingame.com/pastebin/c48b38f9-118b-4db5-8c2a-f70ebff07046

MSmits: I am doing a lot with those "top connection" things

MSmits: so those can be considered a constant vector for some time

derjack: loony tunes

nulte: ok, i check in a minute or so

MSmits: the first 4 lines

MSmits: I wonder if i can parallelize the 4 shifts and &

MSmits: i remember that shifts all need to have the same direction for this to work

MSmits: but maybe you have an idea

MSmits: btw the loony thing are D&B boxes where you can't play a line or the opponent can fill it in :)

nulte: ok im checking now

nulte: so only the shifts and the ands?

MSmits: yeah

FriendlyKh: hi

MSmits: hi FriendlyKh

FriendlyKh: hi

MSmits: you said that already

FriendlyKh: so what do you talking about

MSmits: https://www.codingame.com/multiplayer/bot-programming/dots-and-boxes

FriendlyKh: ah ok

nulte: do you do this multiple times in the same function?

MSmits: i do similar things with the same vector of "top connection", etc

MSmits: it's just the first vector thats different

MSmits: so that "two2Neighbors"

MSmits: that one changes

nulte: also is topConnection and other constant?

MSmits: for example:'

MSmits: uint64_t tF = (m.loonyFront >> 8) & topConnection; uint64_t bF = (m.loonyFront << 8) & botConnection; uint64_t lF = (m.loonyFront << 1) & leftConnection; uint64_t rF = (m.loonyFront >> 1) & rightConnection;

MSmits: crap lol

MSmits: 1 line too few

MSmits: nulte it's constant for a little while. I use it maybe 5 times

MSmits: but not for the runtime of the program

MSmits: whenever I play a move it may change, but after a move is played a whole analysis is done where i do multiple things of this nature

MSmits: I mainly thing the bi-directional shifts are the problem

MSmits: think

RoboStac: if you've got the same shifts and ands with 4 separate inputs you could do all 4 in a vector instead of trying to vectorise them individually

MSmits: I had to think about that one, but I think I understand what you mean

MSmits: you mean analyzing 4 different moves at the same time, running the same function 4 times

derjack: jeff bezos going to space eh

MSmits: I guess that can be done

MSmits: but really complicated

MSmits: he can stay there

Default avatar.png tImProCodEr: Hello together

MSmits: mmh nah i think this would be too messy, vectorizing the whole thing. It's a recursive situation. It would be like vectorizing a minimax algorithm

MSmits: mmh though, if i know I am going to have to apply at least 4 moves, I could do something ahead of time maybe and just keep the analysis results on the stack

MSmits: like simming 4 moves in a minimax, while only continuing DFS on one of them at a time

RoboStac: so you don't have two2Neighbours and m.loonyFront at the same time?

MSmits: ohh is that what you mean, hmm let me check

MSmits: nope that's sequential unfortunately

MSmits: I also have this bitboarded floodfill

MSmits: http://chat.codingame.com/pastebin/3cbbeb43-b003-4f4a-8d8c-e31da9e52772

MSmits: same thing, second vector stays constant, first vector is changing all the time

RoboStac: yeah, same problem that the only operation you do to all 4 is 'and' and it's probably not worth the overhead to avx them just for that.

MSmits: I was afraid of that. Thanks for confirming. I can let that go then :)

Default avatar.png Shyweirdo: hey guys

Default avatar.png Shyweirdo: am having problems with the first level of the bot game

darkhorse64: clobber ?

Default avatar.png Shyweirdo: coders strike back

BlaiseEbuth: The only one. The unique. The famous... Bot Game !

Default avatar.png Shyweirdo: huh?

DaNinja: ignore Blaise, whats the problem?

BlaiseEbuth: Wut.

BlaiseEbuth: Don't ignore me or you gonna be in trouble.

BlaiseEbuth: Don't say to ignore me or you're also gonna be in trouble.

Astrobytes: So ANYWAY. What is the nature of your coding emergency Shyweirdo?

DaNinja: this chat needs a /ignore

Default avatar.png Shyweirdo: ok so i'm meant to win the race by edtiting a line of code to output the target position

Default avatar.png Shyweirdo: sorry i

Default avatar.png Shyweirdo: i'm a noob

BlaiseEbuth: This work

Astrobytes: we're all noobs once

Astrobytes: That was kinda unnecessary Blaise dude

Default avatar.png Shyweirdo: so um anyone know how i can solve this please?

BlaiseEbuth: No it wasn't

Default avatar.png Shyweirdo: i can't like copy the entire code here lol oh wait can i just do that?

Astrobytes: Shyweirdo: If this is the very first level, take a look at the code and see if you can see anything strange about it

Default avatar.png Shyweirdo: literally started playing like maybe 20 minutes ago

Default avatar.png Shyweirdo: ok astrobytes

BlaiseEbuth: Even if I said it on a joke tone, my remark was serious. I'm tired of all this context free questions. An I'm tired of the pair of users that treat me/ and say to other to treat me as nothing more than a troll, in every situation, just because I'm speaking sarcasticly.

BlaiseEbuth: Eat my second degree.

jacek: Shyweirdo you need to print X and Y. the code has only X and X (or Y and Y?)

Default avatar.png Shyweirdo: oh woow

Astrobytes: Yes jacek, I was trying to get him to notice for himself.

Default avatar.png Shyweirdo: i get it now thanks guys


jacek: oh

Default avatar.png Shyweirdo: yes i did notice after your message astro thanks

Default avatar.png Shyweirdo: thanks jacek also

Astrobytes: BlaiseEbuth: Alright, I see your point.

Astrobytes: Ah that's good Shyweirdo

BlaiseEbuth: Thanks.

BlaiseEbuth: And sorry for the bad vibes Shyweirdo

jacek: BlaiseEbuth what if the question is about context-free grammar

BlaiseEbuth: :thinking:

pthebaul: haha jacek

Default avatar.png Shyweirdo: it

Default avatar.png Shyweirdo: it's cook Blaise

BlaiseEbuth: :cookie:

Default avatar.png Shyweirdo: hey guys

Default avatar.png Shyweirdo: i really don't know if it's just my dumb head but i seam to be confused again

BlaiseEbuth: hm?

Default avatar.png Shyweirdo: so i'm on the decent game

Default avatar.png Shyweirdo: on the algorithm tree section

BlaiseEbuth: :sleeping:

Wontonimo: i can give you a hand

Wontonimo: how about we take this to PM

Wontonimo: you can find the PM at the top of chat as a new tab

**BlaiseEbuth start whistling...

Default avatar.png debbielf: meow

Wontonimo: use #furry for furry conversations

jacek: :3

jacek: yuore quite furrious today

MSmits: fast and furrious?

**xqderpcvhr hi

xqderpcvhr: lol wut

Default avatar.png debbielf: *angry bark*

Default avatar.png debbielf: woof woof

**xqderpcvhr slaps debbielf around a bit with a large fishbot

Default avatar.png debbielf: xdddddddddddd

xqderpcvhr: (sorry lol)

Default avatar.png debbielf: ouch

Default avatar.png debbielf: man

Default avatar.png debbielf: put me in a bucket

Cocopuffsplayz: hi

struct: running out of ideas for breakthrough :/

FalINTOblivion0112: oh lol

BlaiseEbuth: ngl

Default avatar.png bluefacebaby: C is fucking noob

BlaiseEbuth: ...

Default avatar.png adilmarghadi1: Hello

Default avatar.png adilmarghadi1: Help On This exercie https://www.codingame.com/playgrounds/56102/les-chaines-de-caracteres

Astrobytes: afk, I'll leave that one for you Blaise :P

struct: Not sure if I should improve breakthrough a bit more or try clobber

BlaiseEbuth: Ask to the tech.io community.

MSmits: struct, it's fairly easy to copy your c4 bot to clobber, just change the sim a bit

MSmits: but it's a math game to some extent, like D&B, not as much as D&B, but more than the regular boardgame on CG

MSmits: so after your mcts is done, there's no point going for max performance. anything you succesfully do with math is going to outdo any performance improvements

struct: Hmm I guess Ill skip it then

struct: :D

MSmits: well as i said, it can be fun to just write a good sim. you'll be top 10 anyways

MSmits: you can be top 10 in D&B easily, without math also

struct: Ill try it

struct: But ill try to improve breakthrough for 1 more day or 2

Marchete: for 50$, MSmits' sentences that doesn't contain "D&B" in them

Marchete: :D

MSmits: :)

struct: I solve quite early on breakthrough

struct: compared to some other bots

MSmits: I think i am going to do something cheeky to try and beat mikla

Counterbalance: clobber needs more than a good sim to be top 10

MSmits: i mean sim + search

Marchete: you are attracting ppl to D&B...

Marchete: don't lie

Counterbalance: i've an mcts with extremely fast sim.. top 15

MSmits: Counterbalance I worked on it for 1 day, it's still 8th. there's no math in it

MSmits: struct is a master at performance, his C4 is faster than mine

MSmits: so thats why i said he can do clobber top 10

Counterbalance: i'm sure he can

MSmits: hmm

Marchete: I just need 30000 coeffs, ezpz

MSmits: if your sim is extremely fast i am surprised it is only top 15 though Counterbalance. let me see if i use some trick i can share

Counterbalance: I've got 1.5M sims, 27k-80k rollouts

MSmits: okt let me check

MSmits: what is a sim in your case?

Counterbalance: performing 1 move for 1 player

MSmits: oh ok

Counterbalance: including finding legal moves

struct: all legal moves?

MSmits: i have to redefine then sec

struct: or just 1?

Counterbalance: something inbetween :)

struct: I have no idea how many sims i have in c4/bt

jacek: hm?

Counterbalance: well, actually, all. But I don't store them during rollout

struct: I know that I have like 5M rollouts on first turn on bt

struct: on c4 Its 3M+-

MSmits: Counterbalance i have 4.1 million sims in your definition

struct: if you are gonna play a random move you dont need to calculate all

MSmits: i counted every time a move is applied

MSmits: so during selection and during random rollout

Counterbalance: I don't apply moves during selection

MSmits: ok sec

MSmits: yeah that did not matter

MSmits: 4.4 million now without selection

MSmits: different cpu i guess

MSmits: i do 1 selection and then rollout from each child

MSmits: so selection is negligible

MSmits: because... many children

MSmits: this means i very few expansions also

MSmits: i do

MSmits: so most of calculation time is in the random rollout

MSmits: and that is ridiculously fast so, that explains the high simcount

Counterbalance: Mmm okay.. I've got < 50% of time in rollout, ; 33% in selection.

MSmits: without testing i am pretty sure it's 90+% in random rollout for me

MSmits: i do it 100 times or so in the first few turns, just for 1 expansion

Counterbalance: aww dinner - bbl, curious to learn more!

MSmits: this was just a first try that turned out ok. Could have failed miserably tbh

MSmits: another time then, have a good dinner :)

MSmits: so about D&B. I have an idea Marchete

MSmits: mikla still beats me by a little bit with nim

MSmits: not as much as before, but still does

MSmits: but he has no idea how to play out the endgame

MSmits: properly anyways

Marchete: well "no idea" != "perfectly"

MSmits: so what if i just make a ton of loops and other small object. In that case having control is not enough

Marchete: or properly :D

Marchete: I said that Smits

MSmits: no i mean, compared to the rest of the top 10

MSmits: everyone else does it better

MSmits: top 20 even

Marchete: trying to create hard to solve solutions for others

MSmits: yeah

MSmits: you did say that

MSmits: I think mcts might be good here

Marchete: with my graph too

MSmits: random rollout with an eval of the objects at the end

Marchete: I can "create" loops, giving some small bonus

MSmits: yeah, but big loops are bad too

MSmits: a 8 loop is neutral

MSmits: and a 4 chain also

MSmits: 4 loop is bad for the person in control

MSmits: 6 loop too

MSmits: and 3 chain

MSmits: I wont need to do it with graph I think. I can just randomly fill the board safely and do a bunch of floodfills to count loops and chains at the end

MSmits: i do floodfills for my score solver too, to build a graph, so i already have the floodfill, i just dont need the graph itself

MSmits: will be cool to have something to use calculation time for in the beginning of the game

matteoc11: hi

Default avatar.png adilmarghadi1: Hello

Default avatar.png adilmarghadi1: How are you

Default avatar.png jxsxtx03: http://chat.codingame.com/pastebin/ae8ba429-5523-4670-a33e-9405e40c785e

Default avatar.png jxsxtx03: why this ocde does not work??

Default avatar.png jxsxtx03: it has to be like that: u digit a number and tthe output is the multiplication of the digits. p.e --> 23 --> 6 // 48 --> 32

OldJohn: @martinpapa69

martinpapa69: sup OldJohn

Marchete: :rage:

MSmits: hi OldJohn

MSmits: and Marchete

MSmits: or martinpapa69

OldJohn: Hi MSmits

martinpapa69: yo

Default avatar.png LibgdxKotlinChampion: someone make youtube videos of owning in clash of code

Thyl: Sokoban finished

MSmits: grats

Counterbalance: back (thanks MSmits)

MSmits: hey wb

Counterbalance: so I guess your trick is to do more than 1 rollout at once?

MSmits: it might be yeah

MSmits: i often do this in boardgames

MSmits: just roll out each child and backpropagate the combined results

MSmits: I also have mcts solver, not sure if you're using that

MSmits: seems standard for most players

Counterbalance: Not sure what that is..

MSmits: ah well that explains a lot

MSmits: mcts solver solves the game

MSmits: in addition to just gathering statistics

BlaiseEbuth: What a surprise... The name is pretty cryptic...

MSmits: https://www.codingame.com/replay/571192118

Counterbalance: :) I found this - https://dke.maastrichtuniversity.nl/m.winands/documents/uctloa.pdf

MSmits: yeah thats where it comes from but the code is not great

Counterbalance: ok i'll read it to get the idea.


Astrobytes: ah, everyones favourite pseudocode :D

struct: The code made me not want to learn it

MSmits: http://chat.codingame.com/pastebin/a8e4b556-78a6-41c2-bc0a-243c103f650c

MSmits: selected is an array of selected nodes i also use for backpropagation

MSmits: (I dont store parent or anything

Astrobytes: I thought I understood before I read the code

Astrobytes: Turned out I did lol

MSmits: for clarification: status 2 = ongoing game, status 1 is win, status -1 is loss

AntiSquid: how do you make random rollouts without making it too time consuming ?

MSmits: normally i also have 0 for draw

struct: which game AntiSquid?

AntiSquid: like i get how to represent any board game through bit magic and use bit operations, but then going through the bits to find what's on and picking at random seems to drag me down

struct: pdep

AntiSquid: any board game really . square grids

MSmits: basically Counterbalance, you expand your leaf and if you encounter a win or loss, you start propagating that up the tree. Every node will have a flag

MSmits: you never select solved nodes again

MSmits: which is where the gain happens

MSmits: especially in nim games like clobber

struct: const uint64_t pdep = _pdep_u64((1ULL << rand(__builtin_popcountll(moves_mask))), moves_mask);

struct: that returns the mask of a random move

struct: a random set bit

MSmits: also AntiSquid, for selection of random moves, dont create a vector or something

Astrobytes: I have _tzcnt_u64(_pdep_u64(1ULL << rnd64.getRandomInt(_mm_popcnt_u64(mask))), mask));

Astrobytes: same thing more or less

AntiSquid: isn't the rollout itself also wasteful ? is it worth having one instead of just scoring the node arbitrarily ?

you need to apply the move to the rollout state

MSmits: this depends on how good you can score it

MSmits: a random score is by definition going to be worse than a random rollout

MSmits: but a sensible eval might be better

MSmits: random rollouts work well for games that are hard to score

MSmits: I use it for langtons ant, uttt, bandas, c4

AntiSquid: and if i have the score from the game itself ? say code a la mode ?

MSmits: oh and clobber i guess

MSmits: code a la mode is a horrible example because it's cooperative, but i get your point

MSmits: the game score can be part of eval

MSmits: my oware score is part of my eval i

MSmits: so is the number of seeds

MSmits: how many in each hole

MSmits: etc

MSmits: if you mean the game score at the end of the game, then thats different

MSmits: from what i read in papers it's generally worse to backpropagate end of game score, than the actual win/loss result

Counterbalance: msmits: i always backprop the outcome, but, are you saying to mark all ancestor nodes as a 'terminal node' based on 1 rollout?

MSmits: not all ancestor nodes

struct: based on expansion

MSmits: say you got to a leaf

MSmits: on expansion you find the leaf is a win

MSmits: then the parent automatically is a loss

MSmits: if all siblings of that parent are losses, then the grandparent is a win

MSmits: and so on

MSmits: on a win you need only 1 child for the parent to become a loss

MSmits: on a loss, all children need to be losses for the parent to be a win

MSmits: thats the basics

MSmits: so you backpropagate the normal statistics

MSmits: but you *also* backpropagate terminal status

MSmits: in a separate function

MSmits: this is the solver

MSmits: it terminates when it encounters a loss where the siblings have not been solved (they could still be wins)

Counterbalance: okay, interesting. It does seem weird to me to mark a node as win/loss based on a single rollout of it's children though

MSmits: no, not based on a rollout

MSmits: on the actual end of the game

Counterbalance: that's what I mean by rollout - it sims until end of game

MSmits: when you expand, one or more of the expanded moves ends the game

MSmits: i mean you dont even do a random rollout

MSmits: because the game is over

MSmits: thats when you solve

Counterbalance: ohh okay, so when at least 1 child is a terminal node, say

MSmits: if its a win, then 1 is enough

MSmits: if it's a loss, then they all need to be losses

Counterbalance: Yes indeed.. I did struggle with that - the select() kept finding those nodes

Counterbalance: Cool thanks, that'll speed things up a lot, I think

MSmits: yes, for some games it works better than others

MSmits: i suspect it will work wonders for clobber

MSmits: because nim games are all or nothing and you need to fully solve to be certain

Counterbalance: it's also a great game for a fast sim - very elegant

MSmits: yeah

MSmits: thats why i quickly wrote a bot, i could just copy from another game and easily put in the sim

Counterbalance: yup.. valid moves calculation is just 4 shifts and 6 ands :)

MSmits: yeah

jacek: clobber is the new kink eh

MSmits: not mine

MSmits: but I like it

69razer69: i am just amazed i was solving the chuck nourris code golf using python and coudnt do better than 140 found ppl using python did it in 86 character

AntiSquid: if it's a solo game what do you suggest backpropagating then MSmits ?

GregMc: I'm 0.09 points short of Wood 1 in Klobber :slight_frown:

AntiSquid: there's no real win/loss there

jacek: everyone is winner in single player game

AntiSquid: yes

GregMc: Idk, I've lost solitaire a few times

jacek: oO

MSmits: I used solo mcts for that coloured balls optim

MSmits: i forgot the name

jacek: the same

MSmits: but i basically backpropagated end of game score, or max score

MSmits: it wasnt that great

AntiSquid: coloured balls optim ... need to figure out which one that is

MSmits: but apparently it's what scientists tried in papers too, so i didnt do something stupid

MSmits: same game

AntiSquid: square balls ? :P

Astrobytes: balls aka squares

MSmits: are they square?

Astrobytes: yes

MSmits: i forgot the shape

MSmits: it's not relevant :p

Astrobytes: StC has balls

NinjaDoggy: Hey MSmits, for MCTS solver how do you typically handle draws?

MSmits: sec

jacek: he cries then

MSmits: http://chat.codingame.com/pastebin/28dd0b46-ddbb-401e-9bd5-c723b8194575

Astrobytes: cries in bits

NinjaDoggy: mainly the following case:

MSmits: same as my previously shared code

MSmits: only for draws

AntiSquid: forgot stc has balls

MSmits: -1 loss, 0 draw, 1 win, 2 = ongoing

NinjaDoggy: but isn't it sometimes bad to ignore draw nodes?

MSmits: there's ways to deal with that, but in my experience they make performance worse

NinjaDoggy: for example: let's say a node's true value is draw and it only has 1 child node that leads to a draw and the rest are losses

NinjaDoggy: then the draw child node is quickly solved and ignored in further select()

NinjaDoggy: and the node seems worse than it would be if MCTS solver wasn't implemented

MSmits: in practice this never happens though, as draws are almost always harder to solve

MSmits: but sometimes they solver sooner because they get more visits, sure

MSmits: but they need A LOT more visits to solve

MSmits: sometimes hundreds of times more

NinjaDoggy: is that true?

MSmits: so the statistics are skewed less than you think

NinjaDoggy: can't you get a lot of game states where you can immediately end the game for a draw

MSmits: yes because, on a win the parent is a loss

NinjaDoggy: but if you choose other moves to play on, you'll eventually end up with a loss?

MSmits: on a draw, the parent is only a draw when all nodes are drawn

MSmits: i guess it dpeends on the game

NinjaDoggy: yes so just thinking about the search tree that makes sense, but terminal nodes aren't all at the same depth right

MSmits: if there are games where you can do this, it could become problematic

MSmits: for some games terminal nodes are all at the same depth more or less

MSmits: for some games they arent

NinjaDoggy: I guess most games don't have this property though so you're right, in practice this doesn't really happen

RoboStac: it matters quite a bit in nn based oware I think (it's the only one I do the proper thing)

MSmits: yeah it might matter there. It doesn't in uttt for example

MSmits: not in my experience

MSmits: I tried selecting drawn nodes even when they were solved

MSmits: wasnt better

NinjaDoggy: wait so... what's the "proper" thing?

MSmits: i guess the proper thing might be to select the possible loss, but backpropagate a draw anyway?

RoboStac: don't choose draw nodes in selection but if a parent has a drawn child convert any losing back prop scores into drawn

MSmits: this also biases

NinjaDoggy: ok yea that does make sense thanks :)

MSmits: because a losing node may still backpropagate 20% wins

MSmits: and if you turn 80% loss into draw and 20% win not into draw, the loss will seem winning

MSmits: the draw i mean

MSmits: the trick is to only start backpropagating wins, when the unfinished node value is higher than the draw value

MSmits: otherwise only backpropagate draws

RoboStac: but theres no possibility of it being a loss as there is a guarenteed draw

MSmits: of course

NinjaDoggy: but loss nodes might result in a win

NinjaDoggy: so if you only correct the loss results

NinjaDoggy: you get bias is the point i think

MSmits: you get a net positive score

MSmits: instead of 0

MSmits: and it should be 0

RoboStac: if there are nodes that are still winning it shouldn't be 0 though

NinjaDoggy: well a node could be a dead loss

NinjaDoggy: but some iterations lead to a win

NinjaDoggy: like 10% win, 90% loss or something

NinjaDoggy: if you only zero out the 90% loss, the losing node seems positive

MSmits: at least during backpropagation

RoboStac: yeah, I guess from the point of view of random rollouts it matters

MSmits: i solved this by capping to the value of the lost node

MSmits: the losing node

MSmits: it cant propagate wins until it's average value is higher than the draw

MSmits: so, never

MSmits: and if it ever becomes better than the draw, well then its proper to backprop wins

MSmits: in any case, the small hit from these checks made it worse for me

MSmits: you can also do ab pruning for mcts solver btw

MSmits: well something similar anyways

MSmits: https://imgur.com/a/3f9dfPw

MSmits: this shows you mcts ab pruning with draws

MSmits: you dont need to finish all nodes to know the top node is a draw

NinjaDoggy: :O

MSmits: just keep a flag on each node ("has child with draw"

MSmits: then you can write a more complicated solver function that uses this

MSmits: i did it before, it works, but very messy

jacek: but is it worth it online?

MSmits: pretty negligible in uttt

MSmits: barely any benefit, definitely not worth the time debugging

MSmits: i guess it could be good for games with lots of draws

struct: wtb eval

jacek: for what

MSmits: bt

MSmits: he's still obsessed

NinjaDoggy: bt?

Astrobytes: breakthrough

jacek: i was obsessed with it for long time

MSmits: yeah you actually had a really strong eval before you wrote a NN

MSmits: i think it might have been the best, wasnt it?

MSmits: before NN's existed

jacek: top 3 was tied

MSmits: ah

jacek: and eval was: piece count, pst, penalty for attacked undefended piece if not my turn, bonus for horizontal connected on row 6

jacek: mostly hand tuned

struct: my eval is random stuff

martinpapa69: why dont you train an nn to find the best coeffs for your eval

struct: i dont know how :'(

jacek: use texel method?

struct: Im not even sure if this formation is good or not

struct: https://i.imgur.com/MEyf5Zf.png

jacek: oO

GregMc: Ayyy I finally got top 500 in clash :sunglasses:

struct: grats

xxd: what is ut16

xxd: trick

jacek: hm?

Marchete: lol

BlaiseEbuth: ngl

xxd: some guy in his twitch stream description said he wont use the ut16 trick in private clashes

jacek: utf16 trick

jacek: yeah, who uses that :unamused:

xxd: ah

Husoski: I don't like it. It's a cheat, since the actual source file size (assuming UTF-8 encoding) is larger than the unencoded version.

Astrobytes: Since anything is allowed, it's not technically a cheat though.

struct: jace k playing coc o.o

Astrobytes: oO

jacek: urmum

jacek: why i cant invite cocbytes

Default avatar.png Oppaimaster: bebus

GregMc: Utf16 isn't literal cheating, but it's definitely moral cheating

struct: bt needs a boss so it can get potwk

struct: potw*

Marchete: moral?

Marchete: lol

struct: just play multis, dont think you can cheat there

struct: "cheat"*

jacek: but bt was potw already

struct: oh really

Marchete: yeah, there you can use UTF16 to send garbage character :D

Marchete: can't

jacek: it was before the quest ma[

jacek: map

struct: ah

struct: What rank was your non NN bot on breakthrough?

struct: +-

jacek: top 3

jacek: rps between top3 actually

struct: MCTS or minimax?

jacek: minimax

Husoski: GregMc Agreed...but if the scoring system measured actual code size rather than codepoint count in the editor, that would make the annoyance go away. The point of CoC is for people to try out ideas and learn new things. You don't learn squat from a pseudorandom garbage string.

Marchete: you learned a new layer of making code shorter

Husoski: Longer

Husoski: Each of those "two character" codes takes at least 3 bytes in UTF8

Marchete: python3 has this functionality by default? if yes, then it's correct to use any python3 utility available to win

Husoski: Yes, and it's only a win because the scoring doesn't count code size correctly. IMHO, of course.

Marchete: indeed

Marchete: but as it counts chars

Marchete: it's the best tool to win

GregMc: You may win by doing it, but no one will like you for it :joy:

Astrobytes: It's correct for here though. Plenty other places to golf in bytes.

jacek: but that allows NN geeks to encode almost 2x more weights

Counterbalance: does it only work for utf16 or also for utf8?

jacek: utf8 is 1 char/1 bytes already no?

RoboStac: it's java's string length so uses utf16

GregMc: You encode it to utf16 then use a decode and an eval to run it

Counterbalance: no, 5 bytes per char possible

Marchete: that damn guy is a cheater

Marchete: https://www.youtube.com/watch?v=CZsH46Ek2ao

Marchete: how dare to do that!? that's cheating

RoboStac: teaching people that length of string != size of string in bytes is probably the most educational thing to come out of coc

Astrobytes: Perhaps the only thing? :D

jacek: reminds me of that RL walking robot (spider?) that found bizarre way of walking

jacek: as long as it works...

GregMc: Yep, and it's a neat learning tool. That's why I called it moral cheating; you know when you're using it just to win instead of to learn

Marchete: use that too

Marchete: you have the tool

Astrobytes: I think you'll learn more doing something other than clashes tbh, they're just supposed to be 'fun'

Marchete: in multiplayer games I saw that NN guys were cheating

Marchete: so I forced me to learn

Marchete: they still beat me but I wasted 1 year doing it :rofl:

Astrobytes: Just my opinion ofc :innocent:

Astrobytes: lol

GregMc: Yep, clashes are just what I do in my spare time at work

MSmits: I had students this year that were cyberslacking (= playing on computer during school) by playing clashes

MSmits: I was sort of ok with it

Astrobytes: Yeah exactly. More learning value in puzzles or the multiplayers (depending what you like) imo

MSmits: at least they were practicin coding a bit

Astrobytes: hahaha that's amusing

Astrobytes: "But Mr Smits - you play on that site too"

GregMc: Clashes are nice bc I don't have the time to actually sit and focus on making a decent bot. Tried to do Clobber today, ended up half paying attention, getting mad, and dumping in 200 if statements with a sprinkle of Math.random

Husoski: That's where most of the good coders came from when I was in school. Hangers around the data center (yep, that's how old I am) doing stuff that wasn't assigned.

MSmits: Astrobytes yeah, they knew

Astrobytes: GregMc: yeah totally understand, it does take some investment time-wise for the bot stuff, puzzles not so much

Astrobytes: Also, those board games aren't easy to write a really quick bot for (usually)

MSmits: GregMc it helps if you have a basic bot to start from. If you make one basic mcts bot for some game, you can easily adapt it (takes 2-4 hrs) to different games

struct: step 1 make mcts for normal TTT

MSmits: the search algorithm is the same, only the simulation is different

struct: step 2 copy paste

GregMc: What's mcts?

struct: monte carlo tree search

MSmits: monte carlo tree search

MSmits: match!

Astrobytes: Convergence.

jacek: slow poke

GregMc: Ah, gotcha. I should probably learn how to do that

MSmits: for some people minimax is easier

PatrickMcGinnisII: puzzle done, back to work

struct: connect 4 should be one of the easier to start with

MSmits: also can be plugged in to many games

PatrickMcGinnisII: glhf

Astrobytes: get to grips with minimax first I think

Astrobytes: It helps later on

MSmits: minimax is simpler and gives you a better understanding of game trees i think

MSmits: you avoid the statistics stuff

MSmits: easier to debug too

GregMc: I mean, I did great at statistics in college. Data structures was the class I failed :joy:

MSmits: is a bitboard a data structure?

Wontonimo: hey, if you are good at stats and not a fan of trees, do i have the bot for you! FlatMC !

MSmits: oh yeah, do his flat mc thing

MSmits: great place to start also

Astrobytes: WontonimoBot right on time :D

Wontonimo: https://www.codingame.com/forum/t/ultimate-tic-tac-toe-puzzle-discussion/22616/114

Astrobytes: Yeah for sure.

MSmits: Marchete, I think this guy is doing what i want to do: https://www.codingame.com/replay/571215989

Wontonimo: This is FlatMC as applied to Tic Tac Toe.

MSmits: i often see games like this vs him

GregMc: I googled "flat monte carlo", and I gotta say, those are some nice 1 bedroom apartments

Counterbalance: MSmits that 4M simcount was in < 100ms right?

Wontonimo: it is also called Plain MC, MC, and LazyMammal has called it 1plyMC

Astrobytes: lol, it's a random search.

MSmits: yeah, i got 40+ million on turn 1

Counterbalance: only 22M here

Astrobytes: You can go as deep as you like but often not worth going overly deep

MSmits: might be my sim is faster, let me check

MSmits: I'll pm you something

Counterbalance: I added that solver thingy but it makes no difference

MSmits: it fully works?

MSmits: you can check vs my bot

MSmits: they should agree

struct: Which game are you playing counter?

struct: I forgot

Astrobytes: Clobber

struct: ah right

struct: I need to rest, breakthrough has been killing me

Counterbalance: i'll need to get back to D&B, dropped 35 ranks

MSmits: if you do, try the math. It's everything in D&B

MSmits: it's pretty different from other games

MSmits: also still no NN there

Marchete: indeed, nim game

MSmits: not that you can't use them at all, but if you do, it will be NN + math, not just NN and so long as someone isn't willing to get into the math, then the NN is pointless

Marchete: I'm not sure

Marchete: as I said

Marchete: I can feed a NN with my graphs

Marchete: maybe it works

MSmits: it needs to play perfectly for 70 moves

MSmits: NN's dont generally play perfectly

MSmits: the math does

Marchete: what 70 moves

Marchete: on solved?

MSmits: I mean plies

MSmits: my nim solver works from frame 40 or so sometimes, sometimes 45

MSmits: game has 112 plies

MSmits: so if you're going completely mathless, it has to be able to do that too

Marchete: at 57 is classic nim, no?

MSmits: in other games, 1 or 2 mistakes is fine. Here 1 mistake = loss

MSmits: 57 is the endgame

MSmits: nim solver solves way before the end game

MSmits: i can score solve around 50 probably

MSmits: but nim solver 40-45

MSmits: mikla can do usually 1 or 2 plies before me :(

MSmits: not always though, i beat him to it sometimes, but that doesnt mean i win

Marchete: at turn 40?

Marchete: so 17 turns ahead

Marchete: it's a lot

MSmits: yeah it is

MSmits: because of divide and conquer

MSmits: https://www.codingame.com/share-replay/571216630 this is typical

MSmits: he says win and my bot cries on the next frame

MSmits: then we both nim-solved

AllYourTrees: what is a nim solver?

MSmits: do you know nim?

AllYourTrees: the programming language?

Astrobytes: https://en.wikipedia.org/wiki/Nim

MSmits: it's a game where the last player to pick up an item from a stack, loses (or wins depending on rules)

MSmits: in D&B the last player to make a safe move usually wins

MSmits: then the next player has to open a chain

MSmits: and the other player can keep control and capture most of the boxes

MSmits: the nim solver just calculates which player is last to open a safe move, basically

MSmits: it doesnt care about score

MSmits: and you can use divide and conquer to solve isolated areas separately

AllYourTrees: huh interesting

MSmits: yeah its a whole area of research

MSmits: combinatorial game theory

Astrobytes: ^

AllYourTrees: :scream: ty for info!

MSmits: np :)

AllYourTrees: so what you're saying is we need to use the GNN + AZ approach that derjack linked earlier to apply AZ to smaller parts of the game?

MSmits: no, i was saying that you can use a NN early on in the game, when nim solving is not possible

MSmits: there's all sorts of ways serious players count chains to predict what the nim score will be

MSmits: a NN can sort of do this

MSmits: it wont be exact, but may boost win probability

AllYourTrees: ah so there's like multiple phases of the game? first part is normal, last part is resolving the chains?

MSmits: i would say 3 phases

jacek: GNN eh

MSmits: opening phase where almost noone knows what to do

MSmits: then nim solve phase (after 35 it's possible, usually 40)

MSmits: then after 50 or so you can score solve

MSmits: and then it's just finishing up till frame 112

AllYourTrees: interesting game

MSmits: yeah

MSmits: it's the most well known game on CG outside of CG I think

MSmits: except maybe Go

MSmits: and checkers

AllYourTrees: you mean people don't know about the game "Spring Challenge 2021"?

AllYourTrees: :)

MSmits: hehe

MSmits: even my wife knows how to play it

MSmits: D&B i mean

MSmits: and she would not know any of the other games

struct: not even yavalath?

AllYourTrees: ya thats awesome

MSmits: nope

MSmits: nor checkers

MSmits: apparently if you play 3x3 boxes D&B the game is easier to play perfectly than TTT

MSmits: but people generally dont know the solution

jacek: then we need ultimate d&b

MSmits: well we have 7x7, it's pretty ultimate :)

MSmits: it scales very hard with increasing size

jacek: and i dont know if many people know the rules of 'standard' checkers

MSmits: well i learned a similar game when i was young. 10x10 checkers but with slightly different rules

MSmits: the kings could move any distance

MSmits: and you could jump backwards even for non-kings

jacek: thats international draughts

MSmits: oh ok

MSmits: well thats what i learned then :p

jacek: but at school kids often played version without mandatory jumps :s

MSmits: oh ok we did use mandatory jumps

jacek: is chess known outside of CG? :thinking:

MSmits: 960 isnt

struct: we need ultimate hex

struct: https://boardgamegeek.com/boardgame/322205/maphex

Wontonimo: UTTT meets hex lol

MSmits: as long as it's balanced with steal this time. C4 proves how necessary that is

MSmits: or some other method, but probably steal

MSmits: well yavalath proved it first. I mean that game is completely pointless without steal

jacek: but does it have memes like c4?

MSmits: haha no

MSmits: i love those

MSmits: link the page again, maybe someone hasnt seen it

jacek: its in the forums

MSmits: oh ok

jacek: https://9gag.com/gag/aeDNdGv

Astrobytes: I was thinking of porting Trevor Is Dead

Astrobytes: (in the link)

MSmits: how does that work?

Astrobytes: no clue

Astrobytes: (it was a joke btw)

MSmits: ah ok, it just wooshed me is all

MSmits: as they sometimes do

Astrobytes: Just sometimes eh

MSmits: sometimes has a wide range

Astrobytes: hehehe

Default avatar.png kresteodymium: hi Astrobytes

Astrobytes: hello

Wontonimo: last uttt - 30th @24.65 ... shooting for higher

Wontonimo: up to 28th @25.31

Default avatar.png pcc_programmeur: hello

Default avatar.png LibgdxKotlinChampion: welcome

Wontonimo: hey new ppl

Wontonimo: i had nachos tonight

Wontonimo: like tacos, but open face and closer to chaos

BlaiseEbuth: :taco:

Wontonimo: Submitting version of UTTT without board in the node. Node size is now 24

Wontonimo: Thanks BlaiseEbuth! I appreciate it. Here is one in return :taco:

BlaiseEbuth: :hugging:

Wontonimo: oh, this bot shot up in the ranks pretty fast

Wontonimo: and then stalled. bad bot!

Default avatar.png N0T-Harold: YOOOO

BlaiseEbuth: hm?