Chat:World/2021-07-22
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
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
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?
vulkanino: how can I see the input of a test case?
KiwiTae: vulkanino u can print them on stderr
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
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
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
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
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
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
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
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
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
TerryDenn: I have create a file locally and have executed my script - locally everything is find. the last turn it produces the correct command
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?
TerryDenn: there is output on the last step but it's wrong
TerryDenn: it's even not from the allowed actions
TerryDenn: how can I paste the code here
Mr_Chakalaka: thanks for asking wontonimo
Astrobytes: paste the problematic part if possible
TerryDenn: I can't because I'm not sure where is the problem
TerryDenn: I do not know what the script doesn't read :(
Astrobytes: Well paste the reading and output at least
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
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!
TerryDenn: http://chat.codingame.com/pastebin/8f2e6c1f-9e4b-4ec8-b525-f3e8acd995c0
Wontonimo: excellent, payment received
TerryDenn: here are the parts that read the input
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
TerryDenn: so there is limit of data that I can log
Illedan: nah, this is my game failing
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
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
Astrobytes: you're welcome
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?
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?
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)
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
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
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
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.
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)
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:
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"';
BobLob: Then you can make your own bathrooms like String B="UUU!UUU!";
SeizedSilver: aaah BobLob thank you, I understand now
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
rohith1125: https://www.codingame.com/clashofcode/clash/18788928346ff60825c160b3093242224614313
rohith1125: https://www.codingame.com/clashofcode/clash/1878898fad3d67220c419bb0a55c75e3330db9f
Wontonimo: post to #clash , not here
Wontonimo: (╯°□°)╯︵ ┻━┻︵┬─┬
Wontonimo: good night
PatrickMcGinnisII: gn