Chat:World/2021-07-22

From CG community
Revision as of 05:29, 23 July 2021 by Chat Log (talk | contribs) (Created page with "<img src=/a/63052365393434> jacek: OBenjOne you can also try search race optim <img src=/a/5338452207730> NinjaDoggy: the top 3 bots in breakthrough have a very interesting d...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

jacek: OBenjOne you can also try search race optim

NinjaDoggy: the top 3 bots in breakthrough have a very interesting dynamic: 100% winrate vs everyone, except 0% winrate vs the bots ranked higher

NinjaDoggy: just how high is the skill ceiling in breakthrough ._.

derjack: look at reCurse. this is the ceiling

dbdr: martinpapa69 seems to be in submit 24/7 for a week on oware :)

martinpapa69: ye i add "groundbreaking" improvements pretty often to my code, that i must submit asap

derjack: instant gratification generation :unamuased:

derjack: :unamused:

martinpapa69: ye.. gamer brain

Default avatar.png LennyPhoenix: bebus

martinpapa69: but now I think I made something that actually works. wrote a script, that runs a local TrueSkill "server" with my bots, and finds wich one is the strongest

Default avatar.png DB124: beebuus

derjack: as long as you push me up

dbdr: unlikely derjack

dbdr: martinpapa69: that's nice, but not sure it means much on the leaderboard

martinpapa69: ye i wasnt sure either, but it looks like it works

martinpapa69: not that it improved my rank, but it dont have to submit 20 versions manually

martinpapa69: I*

dbdr: CG servers thank you!

derjack: no! you paid for CG servers, then use all of the CG servers

Marchete: what ground breaking changes, martinpapa69?

martinpapa69: I actually submit after every small change i do. but I have some more serious changes. what I actually improved I think is changing hashing and mpoving to alpha-zero-like training. all other stuff i did, just removing parts I didnt like

derjack: whats alpha-zero-like training in this context

martinpapa69: I basically jsut train a single NN with replays generated by itself. very simple.

derjack: so no pitting

martinpapa69: no pitting

derjack: :3

martinpapa69: but ye still need something to find the best state of the NN, because its not the most recent one usually

martinpapa69: one thing is interesting, that the top10 of my local trueskill-run is from all around the timeline

Marchete: hmm

Marchete: I don't know I see it a bit weird

martinpapa69: im actually not surprised, but ye its strange

martinpapa69: models\20210721-184320 trueskill.Rating(mu=45.276, sigma=3.237) models\20210721-133603 trueskill.Rating(mu=45.619, sigma=3.016) models\20210721-113809 trueskill.Rating(mu=47.117, sigma=2.852) models\20210721-164732 trueskill.Rating(mu=49.360, sigma=2.165)

martinpapa69: uhh I thought it will go to a paste, sry

derjack: :rage:

martinpapa69: :innocent:

sangokuhomer: Does clashofcode see when we are just printing the result?

Default avatar.png vulkanino: how can I see the input of a test case?

KiwiTae: vulkanino u can print them on stderr

Default avatar.png vulkanino: gosh! didn't think about that! thanks

DaNinja: or click the Show Testcases menu button

derjack: but clash of code shows the test cases in description :thinking:

Marchete: then why it's good to play from latest model, martinpapa69?

Marchete: it could be well into some local optimum

martinpapa69: ye, dunno. I might not be the best way.

martinpapa69: maybe I'l ltry to combine this trueskill stuff with the training script

Marchete: then suddenly you have pit matches, congrats!

martinpapa69: :joy:

martinpapa69: It's actually not a bad idea. I simulate a submit locally of the lastest model. and on the sample generation I prefer models with higher trueskill score. It should add more variety

derjack: you have a pool of models. use GA to breed new ones :o

martinpapa69: crossover between the bits, of the compressed model ?

derjack: between the weights or parts of weights

martinpapa69: I think if you'd do something like that your model would just collapse

derjack: incest is wincest

martinpapa69: man of culture

Default avatar.png tduck973564: i forgor :skull:

Marchete: I'd random pick models based on winrates

Marchete: a weighted pick

KiwiTae: breeding nns works well

KiwiTae: just gotta also keep strongest fits in the pool

KiwiTae: and some randoms like Marchete says worked well for me :/

martinpapa69: ye I'd do something like that, make a probability of the trueskill score of the model

Default avatar.png Fijo: hey guys

dbdr: mu and sigma give you a probability distribution

dbdr: breeding nns sounds like a shame, replacing a principled gradient method with random changes

martinpapa69: ye sigma could be used too somehow i guess

Default avatar.png Fijo: can someone help me?

derjack: with?

dbdr: what's your problem Fijo?

Astrobytes: Guess he fell down the well

KiwiTae: o/

KiwiTae: send him a rope

Astrobytes: lol Kiwi

derjack: nn checkers trained via evolution https://en.wikipedia.org/wiki/Blondie24

Illedan: Damn, that training gotta be slow

Marchete: on what game, Illedan?

derjack: its from 1999 with reasonable time

Illedan: The wikipedia

Illedan: Training the weights with evolution

Marchete: ahh

Marchete: from 2002

Marchete: so it's a bit old

Marchete: any modern NN bot can beat it, I guess

Illedan: I wonder how big the network was

dbdr: the algorithm for efficient backpropagation in deep networks is relatively recent, isn't it?

Illedan: I tried to evolve weights for TTT that way, but it struggled bigtime. Guess I had a bad way of evolving

dbdr: part of the reason we got out of the AI winter

Marchete: "and eventually in obtaining a victory against a dumbed-down version of Chinook."

Marchete: ok that doesn't sound good

Illedan: :D

dbdr: https://www.youtube.com/watch?v=TS8QlL-3NXk

D

Illedan: Those who wrote that article Marchete: https://i.kym-cdn.com/entries/icons/original/000/030/329/cover1.jpg

Marchete: . When Blondie played with other professionals, she won 31.25 percent of her games.

Marchete: "F^ck yeah!!!"

Marchete: :champagne:

Marchete: :kissing_heart::dancer:

Astrobytes: lol

Marchete: 3rd place meme

dbdr: I think these guys were good at marketing and packaging, not science

Default avatar.png Fijo: :ok_hand_tone2::point_left_tone5:

Marchete: they even make a book

Marchete: maybe at that time it was an achievement

Marchete: 31% vs checkers players..

Marchete: I feel the urge to write a book about how I reached 900th place on Spring 2021 chanllenge

dbdr: again, not a science achivement. you can see from the program, they polished the package, played on the fantasy of AI

dbdr: lol

dbdr: I guess the book is written for the general public

Illedan: 5/7 would read that book

Marchete: science fiction AI, written to scare old ladies

derjack: the thing is, it didnt need human expert inputs

dbdr: it needed it, it just didn't get it ;)

derjack: it was the network https://i.imgur.com/KrrzqHl.png

derjack: hmmm

dbdr: martinpapa69, you moved to spain overnight?

Marchete: lol

Marchete: sí, es español ahora

Marchete: olé, toros, sol

derjack: he's in spain. the s is silent

dbdr: Marchete, you're full of clichés, you should meet real spanish people

Astrobytes: donde

dbdr: /s

Marchete: Sorry I only speak paella

Marchete: no entiendo you

dbdr: he's in bread then?

martinpapa69: taco, taco, buritooo

dbdr: baguette

Marchete: paella with bread

Marchete: hmmm bueno

Astrobytes: paella with chicken + chorizo right...

derjack: yaoi te nani

dbdr: french ppl are tough, they have pain for breakfast everyday

Astrobytes: I love me some chocolate pain

dbdr: :D

dbdr: chocolate sweetens the pain

Astrobytes: hehehe

tecnosam: hello world

tecnosam: been a while

Illedan: Astrobytes, should snake be about filling the board fastest with many moves a step or about collecting the most food in 600 steps?

Astrobytes: Hm, I'd say food off the top of my head but tough call

dbdr: 2p snake?

Illedan: Snake optim

Illedan: Not tron style, but normal

dbdr: :scream:

Illedan: https://www.codingame.com/ide/demo/8462468ed0113b37c6abb9f1a25ad764b388cc

Illedan: I made this for a friend a long time ago

Illedan: but I'll make it into an Optim later today

Illedan: Just not sure what the goal should be

dbdr: if you get more food, you grow faster, no?

Illedan: Sure

dbdr: so how do the the two differ?

Illedan: But the goal could be to move 1 tile every frame with goal to get the most food in 600 frames. Or multiple moves like 2048 and fill the board fastest

struct: multiple moves only if its single player right?

Illedan: Yesh

Illedan: I wont make it a multi

Illedan: too equal to Tron imo

Illedan: Optim seems more fun

dbdr: maybe multiple moves will lead to more depth

Illedan: Yeah, I think so too

dbdr: literally and as an optim

Astrobytes: yes, I think you're right

Thyl: Why I get an acess for all elements of a queue of STL c++

Thyl: ???

struct: what do you mean?

Thyl: queue<int> q;

Thyl: for(int i=0;i<10;i++){ q.push(9); }

Thyl: for(int i=0;i<10;i++){ cout<<q[i]<<endl; }

Thyl: for example

Astrobytes: pop()

Thyl: I want to my elements are in my queue qfter the cout

Astrobytes: q.front(); q.pop();

RoboStac: you can't use a queue then, the whole point is you can only access the first element and add to the end

Thyl: ok

Thyl: Thanks !

Astrobytes: use a deque or list or something

RoboStac: dequeue would probably work

Thyl: It was for debuging

RoboStac: or just a vector if you don't actually want to pop elements

Astrobytes: Yeah, your purpose is unclear here

Thyl: it's for a BFS

Astrobytes: http://chat.codingame.com/pastebin/c43ddde1-1370-4367-a1e7-ec1119fe1154

Thyl: Thanks Astrobytes

Astrobytes: :+1:

dbdr: strange to have two functions. pop could just return the element, that's a very common usage

dbdr: and the compiler can optimize if you don't use it

dbdr: rust version: while let Some(currentNode) = q.pop() { ... }

Astrobytes: C++ innit :P

dbdr: :stuck_out_tongue_winking_eye:

struct: my secret is not to use queue

Astrobytes: I use an array if I need speed

AllYourTrees: all hail rust

martinpapa69: in rust we trust

Astrobytes: Another meeting of Rustaceans Anonymous is it?

Astrobytes: "My name is Ferris and I'm a Rustacean"

darkhorse64: for snake, including starvation may make the optim more interesting or drastically change strategies for a game

dbdr: self.name = "Ferris"; assert!(self.is_rustacean());

Astrobytes: :)

Astrobytes: Nice idea darkhorse

struct: Anyone knows if there is a database for breakthrough games?

Marchete: asking for a friend?

Astrobytes: No idea struct

struct: I wanted to check popular openings

struct: asking for me, I want to know if the opening my bot does is even played

struct: or is trash

Marchete: yes to both

Astrobytes: :P

Marchete: search "breakthrough" in google :rofl:

Marchete: you'll find exactly what you need

derjack: try littlegolem

Marchete: yes, littlegolem indeed it's usually a good source for that

Marchete: if not maybe you can parse the replays

derjack: you can parse that https://littlegolem.net/servlet/sgf/2229093/game2229093.txt

struct: Thanks Ill check it

derjack: and get list of games https://littlegolem.net/jsp/games/gamedetail.jsp?gtid=brkthr&page=rg

darkhorse64: Apart from one paper on BT strategy that describes very tersely two openings, I have found nothing

derjack: or you could just play rebless vs rebless in ide and observe the opening

MSmits: did this plenty of times before when counterbooking. So... how does re curse beat re curse?

MSmits: help the meta mcts along a bit

MSmits: go explore that branch, re curse says its good

derjack: rebless and meta mcts? he would never say such a thing

MSmits: his bot does :P

MSmits: when bots play perfectly deterministically you can just pit them against eachother and copy their moves

derjack: ah

MSmits: it's lame, but works

MSmits: trying template meta programming

MSmits: I'm having trouble getting a specialized template with 1 param fixed and the other variable

MSmits: was going to do a template loop

MSmits: which works if the loop variable is the only templated var

MSmits: but if you have another you runinto problems apparently

MSmits: I'm trying to do this:

MSmits: http://chat.codingame.com/pastebin/1f2a03c5-8e75-4bf6-924c-dafe4d56e460

MSmits: but get error of "illegal use of explicit template arguments"

MSmits: trying to follow this:

MSmits: https://www.wikiwand.com/en/Partial_template_specialization#/

MSmits: probably I am asking a question not many can answer :p

dbdr: not many can even ask it ;)

MSmits: hehe i guess so

reCurse: You can't partially specialize a function

MSmits: oh so only classes then

MSmits: thanks reCurse, then i can stop wasting my time trying :)

MSmits: I was using it to try and get a template loop going

Astrobytes: Did you scroll down to caveats on that page?

MSmits: apparently not :)

Astrobytes: :P

MSmits: thanks for your reading skills Astrobytes

Astrobytes: I was a bit late, was afk :/

MSmits: ah well

Illedan: darkhorse64 starvation? :thinking: Like losing 1 every N round? I don't think it adds any value? Expect make it more complex

derjack: it would make more sense with infinite frames

derjack: but with limited moves you die anyway

Illedan: ^

Counterbalance: MSmits: here's a way to fake it:

Counterbalance: http://chat.codingame.com/pastebin/4a5e255b-eb26-4c76-a052-516216c6be87

MSmits: wow

MSmits: thanks will try

MSmits: such obscure tricks

MSmits: Counterbalance is there any performance hit to this? do you create some kind of struct?

Counterbalance: it shouldn't impact performance, and yes you create a zero sized struct using that method..

MSmits: funny

ThereIsFunInFuneral--Jewelery: there is a way to split and map in ruby at the same time ?

Counterbalance: it's more or less the same as this:

struct ChainLoop<depth0, 4> { static void bar() {} }; call: ChainLoop<true, 4>{}.bar();

MSmits: oh you call it as a method of the struct?

Counterbalance: that's the idea.. and when you make it static, it's not even a method anymore (disregards any this pointer in the method call if the compiler didn't optimize that away, which I doubt)

MSmits: I see

MSmits: how do you pass parameters into the function?

MSmits: in your example the struct has no params

MSmits: i mean normal params, not template params

Counterbalance: just declare them as params of the method

MSmits: I guess i dont understand this part:

MSmits: void operator()() {}

MSmits: it has double parentheses

Counterbalance: yes, the first is the operator, the second is for the args.. operator() (int a, float b) {...}

MSmits: ahh great thanks

darkhorse64: I have not played snake a lot but I remember you have to eat pellets regularly not to die from starvation: so you have several strats: eat more pellets or deprive your opponent (while trying not to die yourself). When selecting a pellet to target, you have also to take into account the next one. That makes the game less Tron like

darkhorse64: Clobber has passed the 100 players mark. I really did not expected it. It's really an abstract and difficult game with a noob hostile bot

Astrobytes: Impressive!

reCurse: You just described uttt

darkhorse64: My bot is even more brute force than the UTTT one

darkhorse64: However, there exist heuristics for Clobber. It's just that I cannot understand the papers

MSmits: they're painfully hard to understand

darkhorse64: chock full of strange and poorly explained symbols

AllYourTrees: what papers?

darkhorse64: lmgtfy ?

AllYourTrees: :scream:

struct: this was linked yesterday

struct: https://project.dke.maastrichtuniversity.nl/games/files/msc/Claessen_thesis.pdf

Benedikt.Huber: Hello everyone!

darkhorse64: If you read it, you see that the author had trouble to beat a vanilla MCTS because CGT took too much time. It's a mission for MSmits to optimize it by 1 million factor

MSmits: yes, it is, but 1 mission at a time :P

MSmits: I did see that. So much good math wasted without much improvement

dbdr: it's miklla #1 too. so same mission ;)

MSmits: he wrote that mcts solver helped most

MSmits: same opponent, different mission, clobber is a different game really. It's jus also math and also uses nim, but clobber has different complications

darkhorse64: I can confirm

darkhorse64: on the slver

darkhorse64: *solver*

MSmits: yeah, it makes sense really

MSmits: nim games require an exact solution

MSmits: you can't "fuzzy" your way to a good score

MSmits: might be less so in clobber as there are some eval opportunities

MSmits: but in D&B this is 100% the case

darkhorse64: in the top 10, anyone can win anyone, it's just depend how you can randomly play the first turns

AllYourTrees: hmm what do they mean for the selection part of solver? "in the selection phase a proven loss node is never considered, but in the simulation phase it is considered."

MSmits: are you saying the top are only ahead because of pruning and math in the solving process darkhorse64?

AllYourTrees: what is a simulation phase?

MSmits: simulation is random rollout

MSmits: you want it to be fast

MSmits: if you do mathematical pruning you lose a lot of sims

AllYourTrees: wouldn't a node that is already in the tree not be encountered in a rollout? :thinking:

MSmits: rollout is a poorly defined term

MSmits: some people mean the whole tree traversal

MSmits: others just mean the random rollout

MSmits: (simulation)

AllYourTrees: ah so are they say, when you traverse down the MCTS tree using UCT, they do consider proven loss nodeS?

MSmits: they do it in expansion

MSmits: and by extension, during selection

MSmits: because selection uses expanded nodes

darkhorse64: MSmits: dunno, they seem to come out of the opening in a better shape

MSmits: but what happens in the random rollout is not stored

struct: on c4 pruning helps a lot, but rollouts get more expensive

struct: But become a lot more accurate

MSmits: darkhorse64 could be some simple mathematical pruning in the random rollout, that could work a bit in the opening even

struct: on Breakthrough I also did smart rollouts

struct: on clobber is pure random mcts

MSmits: also darkhorse64 i was referring to the paper. In the paper it didnt work for them when they used the math in the simulation, but it did work during expansion

MSmits: simulation was too costly

MSmits: (this was the part I could understand)

MSmits: it's very possible our top players in clobber managed to speed it up enough for the sim

darkhorse64: Yes heuristics may help for sim. For BT, i use EPT but my heuristic is not strong enough

darkhorse64: https://www.researchgate.net/publication/221932254_New_Trends_in_Clobber_Programming

MSmits: it never ages well to include the word "new" in your paper title

darkhorse64: :older_man:

jacek: who cares about math in clobber. just throw NN at it and call it a day

MSmits: until someone uses a NN + math and beats your NN

MSmits: I believe you should always use the NN for things you can't answer with 100% certainty using domain knowledge

MSmits: you would not replace the xor operator with the xor NN example

jacek: watch me

MSmits: :grin:

RoboStac: do you not do anything special to make the nn work jacek?

darkhorse64: also try to solve at move 30

RoboStac: mine refuses to learn it at the moment

jacek: nothing special

jacek: stil one-hots and very little because of size limit :(

RoboStac: hmm, wonder if I've got something else wrong then

Totomns: Do you know if it is possible to unroll and inline a const array of function pointers in C? Or do i have to use constexpr and cpp?

Totomns: https://godbolt.org/z/GceYoojMT

Totomns: function dilatation_F does not inline functions inside the loop

reCurse: C is very limited with those kinds of optimizations, I think you're at a deadend unless you start using macros

reCurse: Or ask yourself why you code in C

Totomns: mainly out of habit

Totomns: thanks

jacek: bad habit eh

Totomns: the MCU i'm working on do not have cpp compilers

Totomns: yeah...

Totomns: so when i write cpp, i mostly write C Style, really bad habit.

Totomns: Zero cost abstraction seems more approachable in c++ than in c

reCurse: Very true

reCurse: You usually have to do it yourself in C with codegen like macros or something more evolved

jacek: k

KiwiTae: Totomns time to join the cpp squad

Totomns: \o KiwiTae

MSmits: the MCU does not have cpp compilers? Then what language does Tony Stark code in?

TobiasA: python

TobiasA: and GBASIC

MSmits: ahh makes sense

MSmits: btw I am enjoying this template stuff a lot

MSmits: it's really compressing my source code

MSmits: for example I had 5 different while loops for different movetypes and now it's just 5 lines of calls to a single function that changes a bit depending on movetype (template var)

jacek: template stuff?

MSmits: yeah

jacek: is it faster

MSmits: it makes no difference, the compiler creates different functions for each template version

MSmits: but it makes the code readable and smaller

jacek: codegolfing eh

MSmits: except it becomes more readable, not less :P

TobiasA: template for what?

MSmits: I loop over 5 different movetypes in D&B for example

MSmits: the loop is almost the same for each

MSmits: with 1 line difference

MSmits: perfect for templating

geppoz: I have a propostal for CG:

geppoz: the winner of a clash has auto-published solution

reCurse: The answer is no

geppoz: :D

geppoz: ok, I tried

geppoz: it seems fair to me

Wontonimo: go on discord and suggest it as a bug

geppoz: to the spirit of learning

Astrobytes: suggest clash as a bug, yes.

Wontonimo: "bug: the winners solution isn't visible"

geppoz: :D

Astrobytes: "bug: clashes exist"

Wontonimo: "bug: i haven't gotten any tacos for completing quests"

Astrobytes: *that* is a bug

CodeStar777: can somebody tell me how to solve pirate tresure in loop

Default avatar.png pyprog: hello

KiwiTae: CodeStar777 i just solved it hehe

jacek: oO

derjack: beautiful avatar https://www.codingame.com/profile/5c21551cc5cd7cbfd9cd8e98a9a4932b4516514

MSmits: it's so good

Wontonimo: hey CodeStar777 , other than just giving you the answer, what kind of help would help?

MSmits: the help-type of help :P

Astrobytes: Wontonimo is the new CG ECH

MSmits: sorry, I blame the pony, it's a bad influence on me

jacek: ECH?

Astrobytes: Emergency Coding Hologram

Astrobytes: "Please state the nature of your coding emergency"

MSmits: jacek I think you can watch ST DS9 on netflix

jacek: finally 1st again in checkers :tada:

MSmits: err voyager

MSmits: but ds9 too

jacek: EMH is more of voyager

MSmits: ye, though the actor did have an epsiode in DS( :)

MSmits: Ds9 whats with the emotes

Wontonimo: yeah, voyager

Astrobytes: Robert Picardo pops up everywhere

Astrobytes: Anything cheap, scifi, or both :D

MSmits: ye

jacek: im waiting for the orville s3

Astrobytes: Is that good?

jacek: i didnt have high expectation of the orville, thinking it was star trek parody

Wontonimo: i loved Orville

jacek: but it turned to be very good. really, it could be another star trek

Astrobytes: Noted. I'll give it a go.

Wontonimo: i love how they use the replicator to do shots, even on the bridge

jacek: its more 'uncesored' making it more realistic TNG

Astrobytes: lol

jacek: and picardo appears there as well

Astrobytes: I am not surprised about that :)

burger4d: hello Automaton2000

Automaton2000: and i don't use the same thing

MSmits: orvill has a slime thats voiced by norm mcdonald

MSmits: enough reason to watch

MSmits: i still have to by the way

MSmits: but i saw this on yt

jacek: meow

Wontonimo: :ball-of-yarn:

Wontonimo: ^^ if your browser doesn't support the above image, press crtl-shift-W

MSmits: :rage:

reCurse: Watching self-play on a game you actually know well enough is kinda frustrating

reCurse: So close yet so far

struct: chess?

reCurse: An actual legit advanced caro-kann after 110k games

reCurse: Then it plays h4 for some reason

Wontonimo: why so mad MSmits? Did you try and fix the image?

struct: a0 style

MSmits: ye, it didn't work

MSmits: it showed me my desktop background instead

MSmits: so weird

Wontonimo: you may have to try a few times

MSmits: ok

struct: How early does it play h4?

reCurse: 4th move lol

struct: It seems to be a move

reCurse: Oh wait maybe it was exploratory move...

jacek: standard chess still

reCurse: 4th move h4 on a caro-kann?

reCurse: Maybe I'm too dumb to get it

jacek: i dont know, im chess noob

jacek: i didnt know how en passant really works until i made the bot

sprkrd: h4 on first move is a thing, apparenttly

sprkrd: on 4th move*

sprkrd: in the caro kann

struct: https://i.imgur.com/1XBYug3.png

struct: dont know how to share the link to that board sorry

struct: rn1qkbnr/pp2pppp/2p5/3pPb2/3P3P/8/PPP2PP1/RNBQKBNR b KQkq - 0 4

struct: This is the FEN

reCurse: Wow ok, TIL

reCurse: lc0 didn't seem to think it was great

sprkrd: here's a game where h4 is played: http://kenilworthchessclub.org/games/java/2007/caro-adv-h4.htm

reCurse: Then again it seems any slight mistake is considered a blunder

reCurse: The caveman approach uh

reCurse: At least I know which age my learning is at

sprkrd: i don't know if "caveman approach" is just a funny name or it's indicative of the level of the move :joy:

jacek: are you still training chess or chess960?

reCurse: Chess

sprkrd: I guess it doesn't as impressive as "the dragon variation"

reCurse: It's easier to see if it's converging by looking at the openings

reCurse: I think anyway

reCurse: That it fumbles in the endgame is less concerning to me

jacek: ive never hooked up on chess, i dont know whats going on

reCurse: I'm not pretending I'm great at it but there's a lot of blunders I can spot instantly

jacek: endgames requires precision in which nn are mostly crap

reCurse: Which is a nice change compared to typical CG games

reCurse: Not convinced about that statement

jacek: maybe d&b talking spoiled me

reCurse: Openings are almost looking like legit chess now actually

jacek: and yet your bashing opening books

reCurse: ??

reCurse: How is that even related

jacek: nevermind ~

jacek: you raed when msmits counter booked in othello

reCurse: I still fail to see any connection with what I just said

jacek: you do RL now in chess?

MSmits: counterbooking is different from just learning common/effective openings

MSmits: especially when done by selfplay

MSmits: it's pretty cool that your bot finds those openings reCurse. Early game play seems hardest to learn as it's furthest from the reward

jacek: its cool to see my bot rediscovers usual opening in bt

jacek: it prefers the one from the other

MSmits: is it your usual opening or the opening that comes from professional play/scientific papers

jacek: it is discovered by bot by itself

MSmits: i mean, does it match

MSmits: the "meta"

MSmits: like chess openings

jacek: at least using more time in littlegolem

MSmits: how do you make it run on littlegolem?

jacek: parsing html

MSmits: who are its opponents? Other bots or players?

jacek: littlegolem are played mostly players

MSmits: do they know it's a bot?

jacek: i named it derjack_bot duh

MSmits: ahh ok

MSmits: dont they have any problems with this?

jacek: even the guys from papers used littlegolem as benchmark

MSmits: ahh ok

jacek: i wasnt banned yet

MSmits: well on some sites they dont like it

MSmits: it's cool if they allow it

sprkrd: I'm gonna say they would had a problem with it if they knew :joy:

reCurse: Actually I think early game is easiest to learn in chess because it's based on positional themes that are important for most of the game

sprkrd: would have*

MSmits: reCurse yeah i guess it depends on the game a lot. in oware and uttt the best opening is also very quickly found

martinpapa69: also the more early in the game you are the lesser the variance is

MSmits: i guess the state is more heavily visited/searched

jacek: oh? in one paper for go the bot found good endgames and middlegames first, then later the openings

reCurse: I know nothing about go

MSmits: so yeah, dependent on the game then

jacek: given how computers are better at go than humans, it should be called 'went'

sprkrd: god

Wontonimo: The game of go involves placing stones on a board but in the right place so that you win.

MSmits: jacek, what about "gone"

jacek: nyoro~n

MSmits: is that the fire in water thing?

jacek: quite obscure old meme

reCurse: Wasn't even funny when it was out either

jacek: but if you insist https://www.youtube.com/watch?v=RoSs9-NDP3E

jacek: robo? never heard of her https://www.codingame.com/replay/571560253

jacek: wtf dbdr https://www.codingame.com/replay/571561606

dbdr: :eyes:

dbdr: the 8 points?

dbdr: jacek

jacek: eeyup

dbdr: oh, trictrac is active on oware now :)

jacek: i bet its still not NN

Astrobytes: trictrac: https://www.codingame.com/replay/571561329 You output an invalid move

Marchete: have you improved jacek?

jacek: just tweaking parameters as always

AllYourTrees: anyone trying NN on clobber yet?

dbdr: yeah, the NN/nonNN border looks pretty sharp now

dbdr: in oware

jacek: i use nn in clobber

dbdr: 5 points

AllYourTrees: oooh nice j

Astrobytes: Other than Smits the divide was pretty much the same before, just more of the bloody things now D:

Astrobytes: * :D

jacek: oh my

Marchete: it was fun to invest time in learning NN

Marchete: nice winrates jacek

Marchete: http://cgstats.magusgeek.com/app/multi-oware-abapa/jacek

Marchete: with a value only NN

trictrac: thanks astrobyte, I have a bug to find !

Astrobytes: :)

jacek: good against robo, but meh against royale, ill push him up

Marchete: rock paper scissors

Marchete: been there

MSmits: lizard spock

MSmits: :lizard: :vulcan_tone1:

jacek: nyoroń

jacek: anyway its good to have bot working differently than the others

Illedan: Astrobytes, do you think I need to animate the snake when there is multiple moves a step? :thinking:

Illedan: I feel like just teleporting the snake if there is a lot of movement

Astrobytes: teleporting is probably more efficient

Illedan: Done deal

Illedan: Signed by Astro himself

Astrobytes: Blame me when it goes balls up :D

Astrobytes: (kidding)

Illedan: Yeah, you are my go to guy when ship hits the fart

jacek: oo

sprkrd: I'm zooming in on you in Amazons, jacek :eyes:

jacek: impossibru!

sprkrd: I won't beat you with this bot yet, tho, but I feel for the first time that the 1st position in the ranking is within my grasp :D

struct: oh no

struct: jacek will have to resubmit :D

sprkrd: even if it's a game with less than 30 participants

struct: gj sprkrd

jacek: im gonna delete account

jacek: leave no trace of failure

sprkrd: the number you output alongside your action is the number of rollouts you do?

sprkrd: or simulations or whatever you want to call it

jacek: its the eval

jacek: im using minimax here

sprkrd: ah, I see

sprkrd: which depth can you achieve? I assume not much at the beginning, right? Like 2 at most?

Astrobytes: You can prune

struct: I dont know that word

Astrobytes: :D

reCurse: You can delete

Astrobytes: hehe

jacek: 2 even 1 at beginning

jacek: but 4-5 ni late middlegame

jacek: its all about the eval

sprkrd: yeah, i think I have a fine eval function too, but I don't use minimax

sprkrd: I wanted to start easy first and build up the complexity incrementally

jacek: :scream:

struct: teach me

Astrobytes: Time to push the NN jacek

struct: will the NN get 100%?

sprkrd: can you hold off the fancy stuff until I get a screenshot at #1, pretty please? :joy:

sprkrd: or is this war? :rage:

jacek: i will wait

jacek: until amazons will be potw

Astrobytes: It's always war in community multis :D

sprkrd: but being friendly and asking things nicely is just another war tactic

sprkrd: then I bite the jugular off

Astrobytes: Well, you have to help each other to have better competition

sprkrd: of course, exchange of prisoners

sprkrd: yet another tactic

Astrobytes: :grin:

sprkrd: what does potw mean, btw?

struct: puzzle of the week

sprkrd: cool

Default avatar.png Mr_Chakalaka: new user here. what are the chat rules?

Ram3nAddict: can't share porn

jacek: :(

Wontonimo: chat about code, don't share full solutions, don't be overly rude, watch your lang vicotory

Wontonimo: what brings you here vicotory?

Astrobytes: Spamming most likely

Default avatar.png TerryDenn: http://chat.codingame.com/pastebin/88191e05-29fa-490d-a9fc-3284ce8abc04

jacek: Oo

Counterbalance: TerryDenn the most common cause is that you print more than 1 command per turn. And the only way to see the input passed to your bot is to print it yourself.

Astrobytes: And check you didn't delete any important default code. Also, if you use python, set flush=True

MSmits: always flush, helps with the smell

Astrobytes: Enough with yer jobby talk laddie :D

Illedan: I always peek after I pop

Astrobytes: :rofl:

Illedan: https://www.codingame.com/replay/571579087

Illedan: Looks fun without animation

Illedan: xD

Illedan: Enjoy:

Illedan: https://www.codingame.com/ide/demo/891456b6863b283882fae02a1b78b5d98cda09

struct: An error occurred (#UNAUTHORIZED): "You are not authorised to view replay 571579087".

Illedan: hmpf

Counterbalance: gotz to love :crab:

Illedan: play the game then :P

struct: cant share replays of demos

Astrobytes: Eh. It's not called Snek.

Illedan: Snek better?

Astrobytes: lol I'm just messing

Counterbalance: Snik

Default avatar.png TerryDenn: well I have only one output per turn and I'm logging what the script read

struct: ill probably try it after im done with breakthrough

struct: should take me a while though im rewriting it

Astrobytes: post your code here TerryDenn

Default avatar.png TerryDenn: I have create a file locally and have executed my script - locally everything is find. the last turn it produces the correct command

Default avatar.png TerryDenn: so if the script doesn't read something it's not logging it and I can't reproduce it locally :(

Astrobytes: Are you timing out?

Default avatar.png TerryDenn: no

Default avatar.png TerryDenn: there is output on the last step but it's wrong

Default avatar.png TerryDenn: it's even not from the allowed actions

Default avatar.png TerryDenn: how can I paste the code here

Default avatar.png Mr_Chakalaka: thanks for asking wontonimo

Default avatar.png TerryDenn: it's a long one

Astrobytes: paste the problematic part if possible

Default avatar.png TerryDenn: I can't because I'm not sure where is the problem

Default avatar.png TerryDenn: I do not know what the script doesn't read :(

Astrobytes: Well paste the reading and output at least

Default avatar.png Mr_Chakalaka: just started my university year and admittedly my coding career as well. Im currently in a mad dash to acquire as many coding resources as possible to further my knowledge on the topic

Default avatar.png Mr_Chakalaka: heard about this site on a whatsapp group and now im hooked

Illedan: Ah, have to break the stub already

Illedan: Need to change the number of foods red each round

Illedan: *read

Astrobytes: Lots of cool stuff here vicotory, Wontonimo will show you the way :taco:

Wontonimo: tacos?

Astrobytes: I'm not doing anything on it until you stop tweaking it

Illedan: Uploading

Astrobytes: Wontonimo: I sent you a taco so you can show vicotory the way!

Default avatar.png TerryDenn: http://chat.codingame.com/pastebin/8f2e6c1f-9e4b-4ec8-b525-f3e8acd995c0

Wontonimo: excellent, payment received

Default avatar.png TerryDenn: here are the parts that read the input

Default avatar.png Mr_Chakalaka: happy to be here man :smile:

Illedan: The amount of data sent to the viewer is too big!

Illedan: -.-

Astrobytes: That's PHP right

Default avatar.png TerryDenn: yes

Default avatar.png TerryDenn: hmmm

Default avatar.png TerryDenn: so there is limit of data that I can log

Illedan: nah, this is my game failing

Default avatar.png TerryDenn: this sounds strange but I will try without the logging

Illedan: :sob:

Astrobytes: TerryDenn: Are you printing your logs to STDERR? Doesn't seem so

Astrobytes: Well, I can't see your printLogMessages() but you might be outputting too much or outputting to STDOUT

Astrobytes: Guess it worked.

Illedan: Damn, these viewer constraints on CG -.-

struct: yeah

Illedan: 6 exports later and it should work. As I disabled everything after 1000 steps xD

struct: you can always make the viewer in js :D

Astrobytes: ^

Astrobytes: struct will help

Illedan: Astrobytes, it is ready for you :)

Astrobytes: Hah, at this time of night the (ahem) 'snake party' is tomorrow lol

Illedan: :(

Astrobytes: I'll have a look, don't worry :)

Illedan: I guess I can wait 5 min for Euler to wake up :D

Astrobytes: 5 days you say?

Illedan: He here that rarely?

Astrobytes: Yeah, pops in now and then but mostly doesn't interact or do anything.

Illedan: :(

Astrobytes: Lost the interest. Can't blame him really.

Illedan: Indeed

Illedan: Same for me

Astrobytes: I think most of us feel that.

Astrobytes: 'us'

Illedan: 5 % thingy

Astrobytes: Aye. I try not to let it bother me now but the contest being an unconfirmed format makes me sad

Astrobytes: I do love the community multis though, keeps some part alive I guess.

darkhorse64: Let's write more "fun for 5%" stuff

Astrobytes: And lose participants! :tada:

**Astrobytes takes back my salt

Astrobytes: *his :(

Astrobytes: gah, brb, cat vomit

AllYourTrees: unconfirmed format?

AllYourTrees: :eyes:

Illedan: gl astro

Illedan: You can keep your salt

Illedan: got my own

Astrobytes: Someone remind me why I have cats

Astrobytes: AllYourTrees: yeah, they haven't decided on the format

struct: battle royale

Astrobytes: CG vs _Royale?

Astrobytes: :grin:

Wontonimo: you don't have cats, your cats tolerate your company and gifts in exchange for your privilege of worshiping them

MSmits: :smile_cat:

Astrobytes: Yes. Very true Wontonimo.

Astrobytes: When one spews up and you clean it, then the other one does a jobby *next* to the litterbox, it tests my patience

Astrobytes: well, OK, 0.5 of a jobby

MSmits: :poop:

MSmits: hey, they were probably in the litterbox when they did their thing

MSmits: their aim is just poor

MSmits: so they were trying. It's just poop-incompetence

Illedan: I'm off. Gl on Snake. cya :)

Astrobytes: Yeah, the one that did it has never got used to an open litterbox, she had a closed one as a younger cat

Astrobytes: Gn Illedan, and thanks for the effort on Snake!

MSmits: ahh I see

MSmits: gn Illedan

MSmits: go sleep like a normal person does at this time

Astrobytes: Normal is overrated

MSmits: I went to bed at 4 am last night, so many weeks off is making it too tempting to stay up

Astrobytes: hehehe

Astrobytes: Gotta be done sometimes, make the most of it

MSmits: yep

MSmits: finally done refactoring my bot. Down to 2.6k, not that much smaller, but way more readable

MSmits: I'm working on that improvement now

MSmits: will be a while

MSmits: templates are so nice

Astrobytes: Good job man. Yeah? I thought it would be (relatively) straightforward to implement?

MSmits: it is straightforward as in, i know what to do, still a lot of code and probably some debugging

Astrobytes: And yep, templates are a pain sometimes but very handy!

MSmits: this really was missing from my bots. I always have so much duplicate code i cant get rid off

Astrobytes: test as you go

Astrobytes: lol, refactor ALL your CG bots after Clobber

MSmits: nooo, I'll refactor them when i revisit them :P

Astrobytes: hehehe

Default avatar.png TerryDenn: @Counterbalance you were right. I have found the place that sends 2 commands instead of 1

Astrobytes: Awesome :)

Astrobytes: TerryDenn: you don't need the '@' (or the ':' for that matter), it highlights for the user when you mention their name

Default avatar.png TerryDenn: aa good to know

Default avatar.png TerryDenn: thank you

Astrobytes: you're welcome

Default avatar.png Retroblaze: bonjour

Counterbalance: TerryDenn :thumbsup:

Wontonimo: hey noobs. Welcome, hope you enjoy it here and you stick around

SeizedSilver: ok who has done The Urinal Problem? I'm passing all of the test cases, but when I submit, I'm failing the last validator. It's driving me nuts I can't think of any edge cases where it wouldn't work :(

sprkrd: i've done it

sprkrd: the urinal problem or the optimal urinal problem?

SeizedSilver: just urinal

SeizedSilver: http://pastie.org/p/6XvxuLSA1sc1Q8e45ozHBI

SeizedSilver: thats my code for it

MaliciouslyCrypticUsername: SeizedSilver probably shouldn't paste code in a public chat, it gives people the opportunity to copy it, instead of figuring it out themselves

SeizedSilver: good point. my bad. but It doesn't work anyway lol

MaliciouslyCrypticUsername: xD

Wontonimo: i don't know about malicious, perhaps playfullyRandomUsername

MaliciouslyCrypticUsername: :eyes:

MaliciouslyCrypticUsername: Wontonimo scarfield suggested this one, and ive kept it for a looooong time Too lazy to change :P

Wontonimo: :relieved:

MaliciouslyCrypticUsername: :taco: Here is taco for you btw

Wontonimo: oh, thankyou

struct: saw my bot having 70% won locally

MaliciouslyCrypticUsername: :o

struct: ran more battles it went down to 50 :'(

MaliciouslyCrypticUsername: D:

AllYourTrees: rip

Wontonimo: are you working on any multis MaliciouslyCrypticUsername ?

Wontonimo: but, isn't it supposed to get to 50 when it levels off anyway?

Default avatar.png BobLob: I think I see a problem, SeizedSilver

MaliciouslyCrypticUsername: Wontonimo yes, i have bots for a dozen different ones, but im focusing on csb rn. I cant get past rank 400 gold :( I wrote this code a couple years ago and I dont remember what all the variables are Names are all "oa" and "e" and stuff

struct: Not if the version should be better :D

SeizedSilver: boblob oooo what do you see?

Wontonimo: has anyone introduce you to the -3v algo for CSB?

Default avatar.png BobLob: @SeizedSilver I chnged the B string to see if it was reporting the correct position. Try this string: !UUUUUUUUUU!

struct: maybe -3 x popcount(pieces)

Default avatar.png BobLob: I changed, even, and that's 10 U's between the two !'s

MaliciouslyCrypticUsername: yes xD MadKnight did for me Wontonimo I used it to get past silver, but i still cant get past gold

Wontonimo: did he tell you about the slide to next checkpoint algo?

MaliciouslyCrypticUsername: That's what I'm doing :eyes: I turn right before checkpoint, and I have a few more lines that determine the direction of the checkpoint after and turn in that direction I also have my blocker to slow down my opponent

Default avatar.png BobLob: SeizedSilver It gives a result or 5, while 6 is an equally valid result. Maybe try reporting the last index found instead of the first?

Wontonimo: how do you determine if it is the right time to turn and what to turn to?

MaliciouslyCrypticUsername: I do it based on velocity And as for the direction, I have a list of checkpoints, in order of number I just go the next index over and check the position in relation to the pod

MaliciouslyCrypticUsername: Or if it's the last checkpoint i just go to index #0

MaliciouslyCrypticUsername: oops

Default avatar.png BobLob: Failing that, it's easy to generate strings and run them through your program. You can automate the checks as well

SeizedSilver: aah but it says to use the leftmost if there is more than one

Default avatar.png BobLob: SeizedSilver I can't read obviously. It says to report the left most index in case of tie, but you can still generate your own known patterns and test tem.

Default avatar.png BobLob: them, even

Wontonimo: i'm looking at this playback https://www.codingame.com/replay/564821620 and it doesn't look like your bot is checking if it is good to slide. Gotta look at least 5 moves ahead

Wontonimo: maybe it is looking 1 move ahead. Just put that in a loop 5 times maybe

SeizedSilver: this may be a dumb question but how do i automate checks and test the patterns? boblob

SeizedSilver: like in my own IDE?

MaliciouslyCrypticUsername: Wontonimo yea it's only looking 1 move ahead, for the reason that I can't predict opponent's moves, and that may affect me, especially if they're close I could just predict, and assume they won't affect me, but that's not going to work in the long run

Wontonimo: oh yes it will

Wontonimo: well, not long long run, but it will work amazingly

Wontonimo: for now

Wontonimo: if you get ahead, doesn't really matter if you don't predict collision

MaliciouslyCrypticUsername: mmm Well my bot doesn't turn anyway if there're two checkpoints in a row, I think Let me check

Wontonimo: (for now. high legend is different)

Default avatar.png BobLob: SeizedSilver nah, you can do it in your code. You can make a counter that counts from say, 1 to 1000, in binary, and use that binary number to create a sting ( 1 is a ! and is a U ). Send that string through your algorithm, and see what result you get out the other side.

SeizedSilver: BobLob idk how to do that:sweat_smile:

Default avatar.png BobLob: SeizedSilver oh, well, you can manually do it instead to test edge cases. Where the string " String B = in.nextLine();" is, just replace that with String B="whatever here"';

Default avatar.png BobLob: Then you can make your own bathrooms like String B="UUU!UUU!";

SeizedSilver: aaah BobLob thank you, I understand now

Default avatar.png BobLob: Have a function put a * or some other unique character where you should stand in the B string, then print it out again. You can visually check it to see if it looks right.

SeizedSilver: that's a great idea. thanks for the help. im going to start testing this thing...its driving me crazy lol

struct: 65% in a few more battles, I guess ill try it the arena

AllYourTrees: if im getting 12 mill nodes first turn its probably a bug right? ><

struct: my other version can just be bad vs this bot

struct: Which game?

AllYourTrees: clobber

struct: Do you rollout each node?

AllYourTrees: wait are there games where you can get 12 mill nodes?

struct: Dont think so

AllYourTrees: hmm where have i gone wrong...

struct: Maybe if I expand and only rollout once and have EPT

struct: on cobbler I get like 1.7M nodes in first turn

struct: but I rollout for all nodes created

AllYourTrees: cobbler!!! lol

AllYourTrees: hmm okay

struct: also depends on cpu

struct: The range is between 1.5-1.8M

struct: These god damn NNs

struct: (╯°□°)╯︵ ┻━┻

AllYourTrees: BT?

struct: yes

Wontonimo: (╯°□°)╯︵┬─┬

AllYourTrees: ohhh i know whats happening. im adding 12 mill nodes, but not visiting all of those

struct: holy im not lucky at all :D

struct: rank 7

struct: 0 wins vs NNs :(

AllYourTrees: hand code a NN

AllYourTrees: ez

AllYourTrees: like the actual weights

struct: I dont even know what a NN is

AllYourTrees: matrix multiplications

AllYourTrees: B I G D A T A

struct: dont know what matrix is

AllYourTrees: its a movie

AllYourTrees: we're all living inside of i

AllYourTrees: it

struct: rank 7 on clobber 7 on bt

struct: Ill still try to improve bt first though

struct: Havent implemented what I wanted to do yet

struct: But it will only help me solve sooner

struct: So it wont be of much use vs NNs

AllYourTrees: gl

struct: thanks

struct: These are my rollouts count AllYourTrees

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

AllYourTrees: dang impressive

AllYourTrees: im still at 600-700k first turn

AllYourTrees: i don't think ive done mcts solver completely correctly

AllYourTrees: still kinda confused about selection strategy when a child is solved

struct: http://chat.codingame.com/pastebin/9c778882-b8fd-43b3-801c-d98d255101db

AllYourTrees: you just skip all together?

AllYourTrees: do you add that 1/sqrt(n) when selecting best move?

struct: yes

struct: skip?

struct: I skip if the child is solved

AllYourTrees: err yeah

struct: if the parent was solved I would never have selected it

AllYourTrees: in the paper they talk about over/underestimation if you don't select proven losses

struct: why would I select a proven loss?

AllYourTrees: But when one or more children are proven to be a loss, it is tempting to discard them in the selection phase. However, this can lead to overestimating the value of a node, especially when moves are pseudo-randomly selected by the simulation strategy

AllYourTrees: https://dke.maastrichtuniversity.nl/m.winands/documents/uctloa.pdf is the one im looking at

AllYourTrees: :shrug:

struct: makes sense if the lose was hard to find I guess

struct: i dont have a lot of knowledge about this though

struct: I havent read the papers

AllYourTrees: it probably doesn't make that much of a difference lol

AllYourTrees: or rather, maybe there are efficiency gains that outweight the potential over/understimations?

struct: it will allow you to search other nodes

struct: one of the other children can be a win

Default avatar.png rohith1125: https://www.codingame.com/clashofcode/clash/18788928346ff60825c160b3093242224614313

Default avatar.png rohith1125: https://www.codingame.com/clashofcode/clash/1878898fad3d67220c419bb0a55c75e3330db9f

Wontonimo: post to #clash , not here

Wontonimo: (╯°□°)╯︵ ┻━┻︵┬─┬

Wontonimo: good night

PatrickMcGinnisII: gn