Chat:World/2021-06-26

From CG community
Jump to navigation Jump to search

Default avatar.png Aryan159: whats the thrust value of BOOST in "Coders Strike Back"

DaNinja: 650

Default avatar.png Aryan159: just for a single frame?

DaNinja: yes

jacek: happy Caturday

Default avatar.png Danii956: anybody else dying out here cause you ant find the bug :(

Skynse: Is it possible to make custom clash lobbies?

DavidDeLord: Failure Found: curriculumEnd of line (\n) Expected: Nothing

DavidDeLord: ???

aCat: you shouldn't print newline as your last character of output

aCat: (probably)

DavidDeLord: i tried that

aCat: hmm

DavidDeLord: it didn't work

aCat: so no idea :(

DavidDeLord: help me the clash ends in 3:41

dbdr: eulerscheZahl, are you going to do planetoids?

eulerscheZahl: no, i'm doing atcoder right now

eulerscheZahl: you have a grid of size 20 x 20 and a list of words (2-12 chars, letters A-H only)

eulerscheZahl: place as many words as possible on the grid

dbdr: also optim :)

eulerscheZahl: yes

kovi: oh, that was my first topcoder marathon

eulerscheZahl: interesting. now it's an atcoder marathon with a duration of 6h

eulerscheZahl: i thought it was 6 days but apparently i can't read :D

dbdr: planetoids has no opponent so also optim, if I read (quickly) correctly

eulerscheZahl: yes, it's an optim

kovi: it seems

dbdr: the sim rules are not given precisely, are they?

eulerscheZahl: with some physics that are nowhere described

eulerscheZahl: big no-no for me

dbdr: 16ms turns :)

dbdr: (but I guess you can skip them if you want)

Westicles: I finally figured out the JS 26 char golf thing. Is ruby 25 or 26?

dbdr: which golf?

Westicles: Uh, well I mean the overhead chars for compression

Westicles: Looks like 25.

Skynse: Sucks that clash of code doesn't have custom lobbies

DaNinja: did you try starting a private clash?

Default avatar.png SuryaTheOP: :grinning:

Skynse: wtf

Skynse: there's a private clash???

Skynse: nice man

Skynse: How do I make one?

DaNinja: click Start a Private Clash https://www.codingame.com/multiplayer/clashofcode

DaNinja: customize it then share the link

Skynse: Thanks man

Westicles: but don't share it here

eulerscheZahl: that would defeat the idea of a private clash if you would just share the link in public

JohnCM: haha unless you're streaming

eulerscheZahl: there's no way i'll turn into a CoC streamer

JohnCM: haha recently i have, it's been fun

JohnCM: you should try it too

JohnCM: coc to me is pretty much stress free

jacek: oO

Marchete: I'll try it

Marchete: naaaahh, didn't work out :)

DavidDeLord: when designing a problem for clash of code reverse mode, how many test cases show up?

Default avatar.png mhpd: 5 or 6

DavidDeLord: what decides?

DavidDeLord: also what are the chances of getting each clash type?

DanielJB: Is there any way to contact a player? I need to see their answer for Clash of Code...

DanielJB: https://www.codingame.com/profile/b2b73c356e61190693cc54ac47cb95a97582734

DanielJB: His C++ code... I failed mine...

DanielJB: https://www.codingame.com/clashofcode/clash/report/18342856f1a0120d0e9073241bac986e74c24d7

DanielJB: On this clash...

zsltg: @DanielJB according to the help in the lower right, to start a private conversation, you could: /msg nickname

DanielJB: Do I do that on the World chat? It is telling me that the player was not found on the chat. Maybe it only works when both players are on the same chat (for example, the specific Clash of Code chat)...

aCat: DanielJB if you really need to contact someone you can go to frum, find his nick and start conversation there

aCat: he should even get mail with notification

eulerscheZahl: when i clicked the profile, i was hoping for a clash bot. now i'm disappointed

AlkhilJohnStan: bruh

jacek: :thinking:

Default avatar.png chofni: hi

Default avatar.png chofni: i m new

Default avatar.png chofni: can any one help me

Default avatar.png ARMAGEDDON007: salom

Default avatar.png joessir: hi

Default avatar.png ARMAGEDDON007: tanishsak bo`ladimi

sprkrd: eulerscheZahl You don't strike me as the streaming type, be it CoC or anything else

sprkrd: My conjecture is that you prefer to sit quietly and do your stuff rather than broadcast it to the whole world

Default avatar.png ARMAGEDDON007: nega bunday o`ylayapsiz

DanielJB: @eulerscheZahl I think Clash of Code bots automatically share their code

DanielJB: But it would have been funny

jacek: they dont

geppoz: there is a better way for: (x&mask)==mask ?

jacek: c4 eh

geppoz: :D

Default avatar.png ARMAGEDDON007: iltimos kimga gapirayotganingizni yozinglar

geppoz: not(not(x)&c)

geppoz: worst :D

geppoz: x|not(mask)

jacek: are you looking for faster or more readable

geppoz: faster

geppoz: (x&mask)==mask requires 2 operations, & and cmp

geppoz: it is possible with just one operation and resulting flags?

jacek: oh boy MSmits resubmitted

MSmits: :grin:

jacek: maybe more hardcore bitboarders will know

geppoz: that's why im 6th now :D

MSmits: x&mask == mask hmm

MSmits: you can do if (x & ~mask)

MSmits: but it's not better i think

MSmits: (the ~is a not)

jacek: so it's ~better you think

MSmits: probably ~

Default avatar.png ARMAGEDDON007: please write down who you are talking to

struct: ph mp

struct: oh no*

struct: :(

struct: there goes my 1st

MSmits: submit not doing that well

MSmits: I suspect you'll stay 1st

MSmits: did you change your bot in the last week or so>?

struct: no

MSmits: mmh weird, well its hard to say anything from 10 games played

struct: you can mouse over the points to see the submission date

MSmits: ah ok

jacek: more moves in ob?

MSmits: not sure, i put the newest book in, but maybe that was already in, i've not been running meta mcts this week

jacek: oO

struct: im still surprised my bot got pushed so much

struct: the win streak was massive

MSmits: want to finish 36 seed oware book faster, it's working on the last seed book now :)

struct: nice

MSmits: i suspect your current bot has a >50% WR

MSmits: vs me

struct: unlikely

MSmits: it's very likely, the opening book makes my bot have a deterministic start. Some iterations of the book may cause me to lose vs you all the time

MSmits: if i submitted an older book i might do better

MSmits: or a newer book

struct: wtf i won so many games

struct: vs you

MSmits: thats what I mean :)

struct: The only bot I lose a lot against is robo

MSmits: I'll leave it at this for now. I'll turn meta mcts back on at some point, but not for now

struct: :sweat_smile:

MSmits: http://cgstats.magusgeek.com/app/multi-connect-4/msmits

MSmits: I'm losing due to book-rps i think

MSmits: but your bot could also just be very good, who knows

eulerscheZahl: then just turn off your book ;)

MSmits: well it is, but i mean better than mine

MSmits: then i'll rank around darkhorse i think

struct: The only explanation it is very good

MSmits: since our bots are almost identical

struct: Thats the reason I lose vs robo

MSmits: how so

struct: Same problem that recurs e had

MSmits: what do you mean

struct: his nn did not do so well against weaker bots

MSmits: wait this is a NN?

MSmits: your connect 4 bot?

struct: no

struct: robo is

MSmits: oh ok

struct: if I make my bot play worse

struct: I win against him

MSmits: it's really hard to say if you're right about this. NN's are just plagued by determinism, especially robo's

struct: true

struct: I feel like I always go into same variation against him

MSmits: he just plays the same line of play vs you every time and your bot doesnt know how to deal with that specific one

MSmits: and it's probably in my book is why i wi

MSmits: win

MSmits: mcts bots seem random but the better they are, the less random they are

struct: yeah

struct: Mine doesnt feel random at all

MSmits: so yours is probably not playing that many different variations either

struct: I need to increas performance

MSmits: not sure if thats the way to go

MSmits: you'll get marginal gains

struct: yeah, Im probably done with C4

struct: for now

struct: I did learn a bit though

MSmits: what'd you learn?

struct: bitboards

MSmits: oh

struct: I had no real experience with it

MSmits: but you did that in uttt?

struct: I feel like its a bit different

MSmits: well i guess it is

MSmits: you could try othello next if you want more like this

struct: I was gonna try breakthrough

MSmits: works too

Default avatar.png Kalenn: I feel like length clashes are unfair when you are a C#/Java against Pythons

MSmits: then use python

Default avatar.png Kalenn: lmao

MSmits: it is not possible, nor is there any reason to balanace languages in shortest mode

MSmits: balance

MSmits: same as languages are not balanced in other games

MSmits: you pick the tool that works best for you

Default avatar.png Kalenn: yea, its fine, I dont mind that much

Default avatar.png Kalenn: might even pick up Python as well

MSmits: python works well

MSmits: ruby works better even

MSmits: but i feel its better to know python

MSmits: if you want to learn something useful

Default avatar.png Kalenn: tho I won't have any use of it in what I am doing, at least now. But in the future perhaps

geppoz: do you think it is possible that with tree reuse you can perform worst?

MSmits: not really

MSmits: you can perform similarly

MSmits: as in, it doesnt help at all

MSmits: but i dont see how it would hurt

geppoz: uh ok, that's my case then

geppoz: y, I think it can't hurt, but it look same

geppoz: no noticeable improvement

MSmits: the thing is, between mcts searches two moves have been played, if a game branches x9, that means 9x9 = 81 different starting points

MSmits: it's different when a move is obviously much better than the others

MSmits: because then visits will be focused there

MSmits: but otherwise you lose most of the work between turns

geppoz: well you ofc choose the best move

geppoz: so you keep the greatest branch of your tree

MSmits: yes but your opponent also gets a turn

geppoz: right

MSmits: and he might not pick the move you expected him to. Even if he does, it's another large fraction of visits lost

struct: I think it can only help

struct: But there might be cases where it might cause you to lose

MSmits: yes, sometimes when a bot plays better, it loses

struct: I would still use it anyways

MSmits: especially if you test vs the same opponent most of the time (determinism)

MSmits: if you want to test a bot properly, add some randomness

struct: also make sure you dont have bugs

struct: I had a bug and was top 3 or something

MSmits: the easiest way to think of it is. Say you search to depth 2 and move A seems best. Then you search to depth 3 and move B seems best. Then you search to depth 4 and A seems best again. In this situation a depth 2 bot plays a better move than a depth 3 bot

MSmits: (probably)

MSmits: assuming this is minimax

MSmits: mcts has this problem too when games get deterministic

MSmits: I need to grade some stuff. Last tasks of the schoolyear...

MSmits: also last physics stuff to grade for the foreseeable future

MSmits: kinda weird. It's like starting a new job

struct: so its CS full time now?

InternalErrror: @struct Some days ago I saw some people using Chinese characters with decode an exec in shortest mode to cut their code size. Was that fixed by now?

struct: im just a chat moderator, I dont think it has been fixed

MSmits: CS full time yeah, more or less

InternalErrror: im just a chat [...] -- hm ok, maybe they should also add a report button

BlaiseEbuth: Report for what?

BlaiseEbuth: This is not forbidden.

BlaiseEbuth: There's of course a debate about such technics. But no rules.

BlaiseEbuth: Concerning shortests, while you don't break the law or the site CGUs it's OK.

BlaiseEbuth: :shrug:

eulerscheZahl: https://www.codingame.com/forum/t/minify-is-cheating/191450

struct: :fork_and_knife:

eulerscheZahl: :spoon:

InternalErrror: It's just stupid cuz people can't read the code afterwards

struct: Well they could just not share it

InternalErrror: and it's not a way that proves any kind of skill

eulerscheZahl: you can just execute the decode part without the eval to read it

struct: and you would not know if they are doing it or not

eulerscheZahl: nothing stops you from doing the same kind of compression

AllYourTrees: you still have to make the uncompressed code as short as possible right?

BlaiseEbuth: InternalErrror: That's because you are in a "sharing" logic, but a lot of people are in a "competition and winning" logic, so they absolutely don't care about writing readable code.

AllYourTrees: struct what does your smart rollout involve for C4? rule based actions? early termination? something else?

BlaiseEbuth: And there's no "good" utilisation of the site, if you want compete, nobody can force tou to share your code, or to make it readable,...

InternalErrror: Isn't the motto of clash of code: "[..] at the end of a game to help other players improve their coding skills."

struct: I think its mostly eraly termination

MSmits: being encouraged to do something is not the same as being required to

struct: early*

struct: but it also has rule based actions

struct: So I guess its both

MSmits: I share a lot of what I code or at least the ideas, but I would never blame another person for choosing not to

AllYourTrees: nice

struct: Some moves are forced

struct: if you dont play them you lose

MSmits: ohh, you have early termination for c4 ??

MSmits: thats new

struct: maybe its not early termination

MSmits: early termination is when you stop at some fixed depth and evaluate

struct: I just return if player won before he actually wons

struct: ah

struct: so no ept

MSmits: ahh ok

MSmits: so you still do the same thing me and darkhorse do except with maybe a performance difference?

struct: I think so

MSmits: ah ok

struct: And that my rollout isnt fully smart

MSmits: whats not fully smart about it?

struct: I can play a move that creates a win for opponent

struct: if the winning move is on top of that piece that I just played

MSmits: oh... I thought that was worse?

struct: maybe it is

MSmits: well you're ahead of darkhorse so...

struct: well I also have more rollouts

AllYourTrees: is there a bitboard operation to get winning moves?

MSmits: how many more?

struct: I think he has 1.8mill on first turn

struct: I have 3 Mill

MSmits: not a single operation AllYourTrees, you need to write a function

MSmits: ah I see, do you rollout from each child struct ?/

struct: yes

MSmits: ok so thats the same then

AllYourTrees: holy crap 3 mill

AllYourTrees: is it higher for C4? or do ppl get those numbers for other games too?

struct: c4 is a basic game

MSmits: uttt is similar

AllYourTrees: what the heck

MSmits: this is turn 1 though

MSmits: when you have 1 second

struct: yeah

struct: 3 Mill in 1 sec

struct: so 300k per 100ms

AllYourTrees: im getting 300k first turn in uttt lol

MSmits: also he uses a rollout from each child

Default avatar.png KP56: what is this conversation about?

MSmits: so 1 expansion = 9 playouts

Default avatar.png KP56: it sounds interesting

AllYourTrees: oooh

MSmits: if he did 1 at a time, he would have around 1.4 million I am guessing

struct: im sure 90% of my code time is spent on rollout function

AllYourTrees: ya in uttt i expand all children, full random rollouts

MSmits: I dont expand all children in uttt

MSmits: just 1 at a time

struct: expand 1 at a time?

MSmits: I mean 1 playout

struct: ah

MSmits: i expand all ofc

kovi: struct: i would be surprised. with low number of steps utc can be equal share to rollout

MSmits: btw, I just tested, I get 2.5 million struct

AllYourTrees: i just started getting 400k expansions with rollout for all children on breakthrough first turn

kovi: low number of steps = i mean games with 50 turn length

MSmits: kovi you're right, selection can be very expensive

MSmits: especially with cheap playouts

struct: Maybe you are right

struct: I didnt really benchmark my code

struct: I just benchmarked rollout function

MSmits: the less branching, the worse selection gets

AllYourTrees: how many expansions are people getting with NNs?

AllYourTrees: anyone know?

MSmits: 5k or so

MSmits: depends a lot on the network

AllYourTrees: yeah

MSmits: large networks are slower

MSmits: the nice thing about using NN is that you can also incorporate a lot of domain knowledge and not affect the speed of your bot

AllYourTrees: i have a small network and somehow am getting 250k-300k

MSmits: since the NN is bottlenecking so much on the network

AllYourTrees: but its not very good lol

struct: also I tested 3 different ways to update the moves mask, unsetting and setting a bit was slower than the method I currently use

struct: by 30 nanoseconds

AllYourTrees: whats the method you currently use? copy?

struct: no

struct: its one of the things I dont feel confortable sharing :p

AllYourTrees: haha completely fair :)

MSmits: lol my c4 bot got geppozed again

AllYourTrees: i ask a lot of questions and am surprised that you guys answer most of them lol

AllYourTrees: what is gep's strat?

MSmits: I think we're just compulsive like that AllYourTrees

MSmits: dont know about gep, but he's been discussing his bot here, so i suspect something similar

MSmits: i mean asking questions and such

MSmits: like you do

struct: he is using mcts

AllYourTrees: ahhh

struct: with solver

geppoz: y, mcts with solver

AllYourTrees: oh hi geppoz

MSmits: that's the risk of talking a lot about this stuff on worldchat. People end up with the same bot more or less :)

AllYourTrees: :shrug:

MSmits: thats different with contests

struct: I dont really mind sharing

geppoz: that is my first, i'm just practicing

struct: ideas

MSmits: same

geppoz: target is to use on "totoro"

AllYourTrees: is that photosynthesis?

struct: But sharing implementations or functions is a different story

geppoz: y

AllYourTrees: i actually bought the board game, its pretty fun. > 2 players is weird though lol

AllYourTrees: maybe i'll take my rule based for that one and stick it into a mcts

MSmits: a lot of things work apparently

MSmits: if you've read the pm thread

AllYourTrees: oh ya i read all of it :D

AllYourTrees: oh man a rust bot is #2 now in that one!

jacek: :scream:

Default avatar.png kissmysushol69420: 5

geppoz: lol I had a but in my C++ version, I was playing without solver at all means, since my "infinity" was casted from double to int, so it never was "infinity"

geppoz: *bug

Default avatar.png Boom26: สวัสดีครับ

geppoz: but only small improvement :(

geppoz: I wonder if it can help to improve the rollout strategy

geppoz: at the moment it is just "smart" as doing the winning move if he can

geppoz: lets try more slow but smarter rollout

struct: still its improvement

struct: How many rollouts are you getting geppoz?

struct: https://www.codingame.com/replay/566318341

geppoz: 13000 at first turns

struct: With smarter rollouts I doubt you will lose games like this

struct: you lost the game after move 12 I think

geppoz: 13000 nodes i mean, i do 1 rollout per espansion

struct: wow

struct: But i guess it makes sense

struct: I was around same rank when I submited my bot with less rollouts

geppoz: ops

geppoz: i think i found another bug :rage:

geppoz: and will do smarter rollout

geppoz: well, way down to 4000 nodes in first turns

geppoz: uhm i suppose with smarter rollouts it is needed to increase the ucb param? since the first terms is more accurate?

jacek: increase the exploration?

geppoz: can be?

geppoz: since the first term is more accurate?

ZarthaxX: hey guys

struct: hi ZarthaxX

geppoz: hi

ZarthaxX: howdy

struct: geppoz have you checked the connect 4 link that was posted here before?

struct: come join us on C4 ZarthaxX

geppoz: about the bitboards? yes

struct: yes, that was the link that I was refering to

ZarthaxX: i will try when i have time

ZarthaxX: maybe when semester ends

ZarthaxX: :rofl:

jacek: too late. do it now

struct: I need the points please

jacek: make new alts and submit bots

Default avatar.png giantfluffypanda: hiii!!

jacek: thats the spirit!

Wontonimo: There is a value for the ucb parameter, such that a higher value will not result in finding any more "traps" or "surprise moves". For games like checkers this value is close to 2. But the lower the constant the deeper MCTS will go, so although you have to find a sweet spot, there is an upper bound beyond which there is no benefit

geppoz: I am just working on that

geppoz: I was wrong before it seems

geppoz: the smarter the expand/simulate, the smaller should be the params

geppoz: not the viceversa as I said before

geppoz: do you agree Wontonimo

geppoz: ?

jacek: yes

Wontonimo: if it is truly smart, then no need for MCTS, so MCTS is just trying to find it's cognitive blind spot

jacek: well if you rollout is more accurate, no need to explore more

struct: So I should lower my exploration factor if the rollout is smarter?

struct: o.o

jacek: thats what my gut is telling

geppoz: yes struct, that's what my position is telling

jacek: the smarter it is, it is better to exploit eh

Wontonimo: it really depends on the size of the cognitive blind spot. The Constant in ucb is also nicknamed "the regret factor" for good reason. If there is a chance you'll regret the decision that the smart rollout is doing, then you need a higher C

jacek: maybe C = 4, you know, for C4 game :v

struct: if I increase my C to 100 I win vs robo but lose vs the rest

Wontonimo: for MCTS solver, once it finds a solution the C is meaningless. So, if your MCTS solver is able to quickly find a solution, don't worry that your C is too low

geppoz: 100?? Im talking about 2 vs 1

struct: my C is not 100

struct: :D

struct: but with 100 i win vs robo

struct: because my bot plays worse

geppoz: ;)

jacek: and you FPU is inf hm?

Wontonimo: some people put there C in the sqrt, some people out, so be mindful of the value other people say if they don't specify where they put it

struct: whats FPU?

Wontonimo: yeah, what FPU?

jacek: first play urgency, the value you give for unvisited child. it is inf by default

struct: oh I dont have unvisited childs

jacek: oh my

jacek: you put them all into orphanage

Wontonimo: if you have a heuristic, one method is to populate the child with the value of the heuristic as a proxy for the first play. I've read mixed reviews on that and it really depends on the game and the compute trade off

geppoz: well I always prefer to visit, so inf in my case, but I should try the struct strategy to expand all

struct: rollout*

Wontonimo: my UTTT populates the first move to be equal to the grandparent

jacek: uh

Wontonimo: which is another option and also has mixed reviews depending on the game

struct: geppoz if you rollout every child you will have more rollouts but less nodes used

geppoz: :thinking:

geppoz: if I rollout why should I not add also the node to the tree?

Wontonimo: jacek, the grandparent concept goes like this: most likely the nodes win/loss is going to be very nearly the same as the pervious move of this player. That is the grandparent node, so initialize it with that value

struct: I add the node to the tree

struct: then rollout

geppoz: so you expand also for all childs of the selected, right?

Wontonimo: the ucb (regret) can be thought of also as a standard deviation around which you are trying to find the real value. If you init it the win/loss with 0, and the "real" value is supposed to be +0.8 then your STD has to be large enough to lasso it. If instead you initialized it to the grandparent with was +0.7, then you need a much smaller STD

geppoz: so one selection, 9 expansion/rollout/backprop?

geppoz: (9 or reduced as needed)

struct: one selection one expansion 9 childs created 9 rollouts

Wontonimo: now, fair warning, struct darkhorse64 and Marchete all beat me hands down at UTTT, so please take what I'm saying with a grain of salt

struct: Well I think you understand the theory better than m

struct: me*

Wontonimo: oh an you too jacek ... beat me is an understatement

struct: I dont read the papers

Wontonimo: http://chat.codingame.com/pastebin/c1301628-4615-4a82-9d65-c7eca26545ed

Wontonimo: oh, paste binned again! ^^ That was for geppoz

geppoz: y, I read

jacek: my case may be different. i dont have 'rollouts' after all

Wontonimo: i forget what yours is, is it NN?

jacek: eeyup

Wontonimo: sweeeet

jacek: more like mcts-ept or jacekmax. whichever works better for a game

Wontonimo: is it just a tree search with NN eval instead of rollout?

Wontonimo: could we call it NNTS for NeuralNetTreeSearch ?

jacek: sure why not. no rollout, just NN eval

jacek: but even alphazero is called 'mcts' despite no monte carlo part in it

Wontonimo: i though alphaGo only did the smart rollout for about 20 moves then just MC for the rest

Wontonimo: or at least an early version did

Wontonimo: has anyone here tried using AutoEncoders for your NN to boost training and generalization ?

jacek: writing random NN words to look smart eh?

Wontonimo: you know it! hehe

Wontonimo: but seriously, an autoencoder can be very useful to turning data into a reusable semantic embedding that is more generalized than the raw data

Wontonimo: you know, I just need to get off my butt and actually code an NN for one of these games instead of just babbling about theory

Default avatar.png xAmaa: why am i not able to go back to the clash and finish it after the time is up?

Default avatar.png KP56: eh because it's over?

Default avatar.png xAmaa: okay? so why cant i go back and see if my code runs or not

Default avatar.png xAmaa: why cant i finish the problem after the time is up

Default avatar.png KP56: oh

Default avatar.png KP56: i dont know ask the one who coded it

Default avatar.png xAmaa: yeah hope hes reading this

Default avatar.png xAmaa: retard

struct: chill

Default avatar.png KP56: nah they are right i shouldnt have responded like that

Default avatar.png KP56: im sorry

Default avatar.png xAmaa: oh no i wasnt calling u a retard @kp56, sorry for the miscomuncation :)

Default avatar.png KP56: hah np

Wontonimo: hey xAmaa, did you know there is more than just Clash of Code on this platform? There are bot battles and puzzles also! The bot battles are where "it's at"

jacek: really?

Wontonimo: you didn't get the memo? yeah, it's in the TPS report. Check your fax jacek

Wontonimo: (Office Space reference)

jacek: uh

Wontonimo: https://www.youtube.com/watch?v=jsLUidiYm0w

Zenoscave: Someone has a case of the mondays

zsltg: "I understood that reference"

jacek: kids these days...

StreamingCoder: https://www.codingame.com/clashofcode/clash/18349614e8f3b8f9e6c06be2a8f084aa28bfab7

StreamingCoder: https://www.codingame.com/clashofcode/clash/18349614e8f3b8f9e6c06be2a8f084aa28bfab7

struct: Dont post clashes links here, use #clash

Zenoscave: Hey struct

Vintarel: Question : when i get "timeout" in the running of a code, is it only a timeout or can it be other type of error ? Like seg. fault ?

struct: hi zeno

struct: can be seg fault

Default avatar.png KP56: i believe it can

Zenoscave: vintarel timeout can be seg fault

Default avatar.png xAmaa: .

Default avatar.png KP56: even compiler errors count as a timeout one

Vintarel: ohhhhh ok thx !

Zenoscave: how's your bot struct

struct: which one?

Zenoscave: your current one

struct: well my last one was C4

Zenoscave: Is C4 on here?

struct: i still have to start my breakthrough bot

struct: yes

struct: https://www.codingame.com/multiplayer/bot-programming/connect-4/leaderboard

Zenoscave: bitboards?

struct: yes

Zenoscave: I'm thinking of trying to build a RL bot

Zenoscave: need to get a lot of learning on the subject done first

Default avatar.png KP56: RL?

Zenoscave: reinforcement learning

Default avatar.png KP56: ah

struct: Which game Zeno?

Zenoscave: I'm thinking Othello or breakthrough first

struct: I think in breakthrough is easier to see whats hapening

Zenoscave: gotcha

Zenoscave: How are people reproducing the NN Policies? Obviously exporting to source. but I never could get a framework together to run the weights

Marchete: copy on a paper, then type them on NN

Zenoscave: thanks marchete

jacek: have you seen that article?

jacek: https://www.codingame.com/playgrounds/58137/alphazero-like-implementation-for-oware-abapa-game-codingame/alphazero-like-implementation-for-oware-abapa-game

Zenoscave: not yet. Thanks!

Marchete: this is a working framework, Zenoscave

Marchete: no theorical BS

Zenoscave: Sweet!!!!!

Marchete: like many github python alphazero bots

jacek: who needs theory :unamused:

Marchete: https://github.com/suragnair/alpha-zero-general#experiments

Marchete: 10 iterations to win a random bot

Marchete: 3 days training

jacek: eeyup

jacek: at least they should test it against vanilla mcts

struct: 3 days to win against random?

Zenoscave: I assume based on mokka?

Marchete: my code? yes, Mokka

Marchete: so it's tested to work on a real bot

Zenoscave: good to know

Marchete: if you plan to use elsewhere

jacek: and jolindie actually made it

struct: ill try NN after I get rank 1

Marchete: and probably jolindie_n used it on oware

jacek: get rank 1?

Marchete: so it wasn't just a lucky weight test on my side

Marchete: but jacek's bot is much much better, just we don't have his framework :)

Marchete: I was trying different things

Marchete: separate NN for policy and value

struct: are you still improving it marchete?

Marchete: smaller networks

Marchete: 1 smaller and 1 bigger

Marchete: nothing good

struct: just like intel next gen cpu

struct: small and big cpus

Marchete: https://arxiv.org/pdf/1905.13521.pdf

struct: cores*

Default avatar.png KP56: how would you even train networks on this website

struct: you train offline

struct: localy

Marchete: against itself

jacek: and here i am using only value network

Marchete: I'm not improving but just testing

Zenoscave: Marchete why conda?

Zenoscave: in your environment

Marchete: why not?

Zenoscave: over virtualenv or pyenv or other lighter methods

Zenoscave: does it come with something needed?

Marchete: no idea :sweat_smile:

jacek: he probably tried random stuff untile one worked

Zenoscave: fair enouhg

Marchete: I mean, take all I say in this tutorial with a pinch of salt

Zenoscave: Isn't that most software :D

Marchete: I probably saw it on some tensorflow tutorial

Marchete: I'm open to suggestions and improvements

Zenoscave: The big improvement I can think of is distributed and/or asynchronous work

Zenoscave: It's a heck of a undertaking thoug

Zenoscave: though*

jacek: i think he meant the network itself so it can play better

Zenoscave: I'm no help there :D

Zenoscave: Convolution layers would be cool but wouldn't that explode the weights?

jacek: convolutions are pointless in oware no?

Zenoscave: I meant to add to the framework in general for future games

Marchete: it's simple to propagate the model to do self play

Marchete: it takes time to generate games

Marchete: convolution seems to need less weights but more CPU time

RoboStac: conv layers are usually less weights (unless you add lots of filters per layer, but it gets slow very quickly)

jacek: for most of the games im more limited by codesize than cpu

Marchete: I don't think so

Marchete: how many NN can you sim per turn?

Marchete: maybe I'm bugged

Marchete: I hardly reach 5k

jacek: at least locally, in bt the bigger NN is significantly better than the one i have

jacek: oware?

Marchete: yes

RoboStac: yeah, but you have a one hot input with no optmisations for it

jacek: 10k 'playouts' in 2nd turn

Marchete: that's a lot

Marchete: maybe I'm bugged, because I use AVX2 and it should be faster

jacek: but i during expansion i expand all children, i dont measure that. that would be probably around 40k nodes

Marchete: I know how your jacekmax works ;)

jacek: my last improvement was something that in theory could gave at most 2x speedup, but gave 3.5x speedup due to cache coherence and whatnot

RoboStac: I get 15-18k NN evals per turn

Marchete: then I'm doing something horribly wrong

jacek: i have 1 layer

jacek: (hidden)

Marchete: my weights file is like 97KB floats

Marchete: 22k parameters

jacek: one hots?

Marchete: yes

Marchete: 342 or so inputs

Marchete: some layer, then split to policy and value

Marchete: so 3 hidden layers

jacek: btw. i finally managed to do the mirror thing, so i cut my weights by half

Marchete: I've tried to "join" them

jacek: so i could use more hidden units

Marchete: mirror?

jacek: i have 14*32 inputs, and 128 hidden units

RoboStac: mines 14x32 -> 128 -> 128 -> 6/1

jacek: previously i had 14*64 inputs depending on side to move

Marchete: 128?

Marchete: but that's a lot!

Marchete: and with that you can do 16K sims?

RoboStac: yes

Marchete: then my damn code is buggy/slow :S

RoboStac: my first layer has no multiplications in it

jacek: mine too

Marchete: ???

RoboStac: the inputs are 1/0 , neither needs a multiplication

jacek: and i cache the pairs, so first layer has 7 * HIDDEN additions

Marchete: how they don't need mults

Marchete: I'm lost

jacek: huh

RoboStac: normally you add input * weight - if the input is 1 you can just add weight and if its 0 you don't do anything

Marchete: so you have some custom layer for one hots?

RoboStac: yeah

Marchete: very clever

Marchete: I just go the "proper" way

Marchete: it seems it's overkill

Marchete: not overkill

Marchete: unoptimized

Marchete: esp. for the first layer

Marchete: that it's where all the heavyweight is done

jacek: so you dont have anything special for one hots :scream:

Marchete: ofc not

Marchete: I just replicated "real" layers

jacek: btw. this is also how n-tuples work or how nnue folks do it. most heavy computations occur in first layer

Marchete: but thanks for the inso

Marchete: info*

Marchete: yeah, 20k parameters on first layer

Marchete: like 3k on next ones

RoboStac: I get about 6k with a standard layer

Marchete: relu and other activations invalidates any further propagation of one hot

Marchete: on lower layers, no?

jacek: ?

RoboStac: yeah, after first layer it's just standard matrix multiplication

Marchete: 6k is still a lot, my NN is much smaller

Default avatar.png KP56: how to train a network offline on a codingame game

Default avatar.png KP56: with tensorflow for example

Marchete: you need a lot of things before

Marchete: the game simulation, some inference engine, and a way to pass weights from TF to this code

jacek: :drooling_face:

struct: not a good time to learn NNs

MSmits: oware is pretty easy to mirror

MSmits: just flip the two sides

MSmits: http://chat.codingame.com/pastebin/17026614-0953-47d1-a394-8fbc462d87d5

MSmits: mine is more complicated than it should be, because of the 60-64 bit overflow

jacek: yeah, my first experiments were bugged due to sign and whatnot

MSmits: it's always the signs that get you

jacek: thats a bad sign isnt it

MSmits: significantly bad

jacek: https://i1.kwejk.pl/k/obrazki/2021/06/qTHAD67AZWJgeLWO.jpg

MSmits: :)

Default avatar.png KP56: the latest commit on https://github.com/dreignier/cg-brutaltester has been made 3 years ago, is it still a valid platform to use?

DomiKo: latest commit is from May 25

Default avatar.png KP56: my bad

DomiKo: and yes is still valid

struct: I wonder if I should try to improve my c4 bot a bit

struct: or do bt

struct: ive been lazy past few days

sprkrd: is there anyway to close the chat (not just hide it)? it's kind of annoying to see messages popping up when i'm losing my nerves debugging something. When I'm so nervous it's kind of hard to not see them (no offense meant guys <3)

RoboStac: put ?disableChat on the urk

RoboStac: *url

sprkrd: thank you!!

Marchete: and it can even ping you in red sprkrd

Marchete: for maximum rage, sprkrd

Default avatar.png jpnt: glow in the dark n

Default avatar.png Fleviticus: https://escape.codingame.com/game-session/KcE-mCb-aiI-Nr1

Default avatar.png Plantchant: Say you have experience in Lua and Python... would you learn Perl or Ruby next?

Westicles: perl isn't worth much on a resume these days. all that work switched to python

Meme_Magician: I've been golfing in Ruby. I've heard people putting it on Rails for some purposes

NativeX64: cmoonn robin

Default avatar.png khanghugo: where do i find my solved problems?

DaNinja: Your Completed problems are at the bottom https://www.codingame.com/training/easy