Chat:World/2021-07-23
Drichie: http://chat.codingame.com/pastebin/6384b03c-6974-4e82-8de7-4330d7f65e51
martinpapa69: 48 is the ascii code of"0"
martinpapa69: 49 -> "1" ...
Drichie: Thanks
padobranac: https://www.codingame.com/clashofcode/clash/18791043cead081df8eccda4a64a5786354c916
Peached: hi, im new to clash of code
Peached: can someone tell me what to expect
Peached: oh wow lets go
Peached: 2nd place how did i
BlaiseEbuth: No mods here ? -_-
BlaiseEbuth: Use #clash for sharing clash links and invite people guys. Thanks.
derjack: maybe they arent paid enough
BlaiseEbuth: Paid? :money_mouth:
dbdr: 1 kick = 1 XP 1 ban = 10 XP
BlaiseEbuth: I'll be xp first since a long time if that was the case... :(
BlaiseEbuth: Me: Doing the 15 puzzles in Pascal achievement and searching how to sort an array. Qwant: Meet Mr Pascal Sort, customer manager, on Linkedin.
dbdr: :D
dbdr: in pascal, you do buble sort
dbdr: (hint: pascal was my second language after basic)
BlaiseEbuth: The sort type doesn't matter, is there any native function ?
derjack: stalin sort in O(n)
dbdr: my comment is to be understood in the same vein as "in COBOL, it's a type error not to wear a white shirt and a blue tie"
BlaiseEbuth: :thinking:
BlaiseEbuth: Don't get it... :(
derjack: thats the advantage of UDP - i dont care
dbdr: http://chat.codingame.com/pastebin/ac6264b6-ef79-45f7-a9f6-1b8c61c46c3b
BlaiseEbuth: :no_mouth:
BlaiseEbuth: Meh... I've done pascal during an internship few years ago (really, 2013), but I didn't remember it was so old...
derjack: hedgewars is/was written in pascal no?
BlaiseEbuth: Pascal/C++/Haskell... wth
derjack: server in haskell
Illedan: Agreed on the format of the position dbdr. I'll just move it into a list like the food
Illedan: Was like this when it was a multiplayer
BlaiseEbuth: Snake Illidan! <3 I'll take a look once pascal buried.
ChampKai: :grin:
Illedan: Should I change the scoring?
Illedan: Better to see 1 more score per step faster you solve a level?
Illedan: 600 + 25000 - steps? (only + 25000 if a level is solved)
BlaiseEbuth: Not in WIP... Aren't you afraid of a savage validation Illedan ?
Illedan: Moved to WIP now
Illedan: ty
BlaiseEbuth: :thumbsup:
BlaiseEbuth: What?! The map isn't cyclic?!
Illedan: nah :P
Illedan: You want that?
Illedan: hmmm
BlaiseEbuth: Was the case on the snakes I played. But perhaps not a good idea here. Don't know...
derjack: huh?
Illedan: Will just make the game simpler?
derjack: i always played with walls around map
BlaiseEbuth: :o
BlaiseEbuth: Yes. For an optim game walls are better.
Illedan: darkhorse64, the position format is now building. Soon on a server near you.
Illedan: Unless I broke something ^^
Illedan: Seems right :)
Illedan: 486331 is my current score :tada:
Illedan: Anyone better? :D
darkhorse64: Changes downloaded
Illedan: Lol, trying to print all 25000 moves in 1 go gives a timeout xD
BlaiseEbuth: Hmm.. The 'input during the while loop' doesn't seems very clear to me...
BlaiseEbuth: Mostly beacause of the order.
BlaiseEbuth: *because
Illedan: On those 4 first ints?
BlaiseEbuth: The fact that all var explanations come at the end.
Illedan: Ah, I can move it to right after each line
BlaiseEbuth: I think it'll be clearer yes.
Illedan: On it
Illedan: I'll also make the food spawn flipping to make it closer to each other
Illedan: BlaiseEbuth, makes sense now? (updated)
BlaiseEbuth: Yeah, much better.
BlaiseEbuth: Btw. Is giving the seed each turn necessary?
BlaiseEbuth: Just once with height and width will be enough, isn't it?
KiwiTae: Illedan you are making a snake game?
BlaiseEbuth: C'mon kiwi https://www.codingame.com/contribute/view/7158e51466a40b049897dd44c641191a2119
Illedan: Sure, you can calc it yourself BlaiseEbuth, but I think it is better to give each round to use for validation that your logic is correct too
Illedan: I'm off for a few hours. I'll make it Ready for publish later unless you find something more :) bye
KiwiTae: oooh sweeet
BlaiseEbuth: Oh. You mean the seed change? I thought it was constant, that's why
Illedan: It is used to spawn food
Illedan: For perfect sim
BlaiseEbuth: Ok. Got it.
KiwiTae: pewpew
BlaiseEbuth: Hey KiwiCave!
BlaiseEbuth: Or ZenosTae ? :thinking:
KiwiTae: u way too fasty :(
BlaiseEbuth: :race_car:
derjack: racecar? tacocat?
BlaiseEbuth: Meh. I haven't seen the clash chat Kiwi... Yet other haters...
MSmits: yay, finally getting some wins vs mikla
MSmits: http://cgstats.magusgeek.com/app/multi-dots-and-boxes/msmits
MSmits: look at that 100% vs everyone else too :P
MSmits: mikla is so tough :(
Marchete: :tada:
MSmits: still doing random moves until i start nim solving
MSmits: maybe i should give the loopy thing another shot
Marchete: "some wins" == 100% winrate vs 1st
MSmits: no
MSmits: 4-10
MSmits: but winning 4 is huge. It used to be 1-20 or something
Marchete: again, 100% winrate vs everyone else
MSmits: yeah
MSmits: it's the nim thing really
MSmits: it really decides everything and mikla is still a little better at it
MSmits: or he does something in the early game
MSmits: and i do not know what
MSmits: I tried a simplified nim-mcts but by the time there is "any" deviation from 50% win probability, the board is already nim-solved and it's pointless information
MSmits: and thats simplified, so not including sacrifice moves
MSmits: nim solving is so much stronger than mcts, that it becomes useless =/
Marchete: why not both?
MSmits: I mean using both, it becomes useless
Marchete: why?
MSmits: because the mcts will give you 50% WR on each move
MSmits: until you solve it
MSmits: so why even search
MSmits: you cant combine the information really, just use the mcts until you solve, but if there's never any benefit...
MSmits: you *can* affect the overall structure of the map though
MSmits: but that doesn't tell you who wins, at least not with the loopy thing
Marchete: I'd like to use NN
Marchete: but it seems hard
MSmits: NN might do better here
MSmits: in the early phase that is
MSmits: I know there's some information you can use from chain counting
MSmits: but by then the chains arent done yet. The NN might be able to guess though
Marchete: "graph info"
MSmits: right
derjack: graph games?
Marchete: dots and boxes
derjack: are there any other graph games
BlaiseEbuth: ghost in the cell
derjack: that could be manually played on paper using pencil ~
BlaiseEbuth: And so it's not a graph game ?
derjack: :s
MSmits: mmh gitc is a graph game, but the graph is constant during the game, so far less interesting
MSmits: eulers triangle game is a real graph game
dbdr: someone create ultimateGITC with changing graph ;)
MSmits: gitc is hard enough as it is
MSmits: just not the graph part
MSmits: the hard part is the extreme amount of options you have, like in a multi agent game
struct: dbdr you can change the graph on try angle catch
dbdr: hard is relative.gitc worked out easily for me, old Java bot
struct: i have no idea how to code a bot for gitc tbh
dbdr: tge I'm not even legend
derjack: whats with leadeboard in amazons :s
struct: he is catching up o.o
struct: Cant say the same about my bt bot, i still have 0% win rate vs NNs :(
derjack: dont worry, theres slight chance they may timeout, no?
struct: That doesnt really count
derjack: 7th is very good
struct: is it?
derjack: above tric so its like the mine nonNN
struct: I see, mine is mcts with ept
struct: yesterday I improved eval a bit
struct: I still have some stuff to do to improve hte bot
Illedan: dbdr, any other finds in Snake? Or should I move it to ready state?
dbdr: i'm writing a dumb AI right now
Illedan: I only read the head position in mine xD
dbdr: don't you die? :)
dbdr: score?
Illedan: Finish all maps but 2
Illedan: Points 501,889
dbdr: lucky then? or you remember your direction?
Illedan: nah
Illedan: You can figure it out ;)
dbdr: I mean, with the head you can figure the rest if you store it, sure :D
Illedan: Not stored
Illedan: No data inbetween rounds
dbdr: don't even need the head
dbdr: didn't you change the food gen? was there always a single food in 1337?
Illedan: I just changed it a little yeah
Illedan: I move from min of 3 to min of 1
Illedan: I think 1 food gives other challenges than 20 food
Illedan: Which makes it more fun
dbdr: probably, yes
Illedan: So food amount is from 1-30
Illedan: Which should prob be in the statement ^^
dbdr: yeah
Illedan: ok, updated
eulerscheZahl: hi Illedan, got your message
eulerscheZahl: i see some similarities in the RNG ;)
Illedan: ^^
Illedan: Check of the initial hidden seed :D
Illedan: But validators are visible in the contribution, so it just makes it little less easy :(
Illedan: But harder!
Illedan: Though a lot of moves to store in the code to beat it
Illedan: hmm
Illedan: With offline that is
eulerscheZahl: " The game will NOT display all moves separately to save server storage." you are just lazy
Illedan: Nope
Illedan: CG crashed on too many interactions from the viewer
eulerscheZahl: yes
Illedan: And yeah, lazy
struct: not if you used custom js
eulerscheZahl: look at 2048, the replays go for hours
Illedan: But with disabled UI, the replays go for hours without anything happening
eulerscheZahl: just write your own serializer+deserializer
eulerscheZahl: ezpz
Illedan: Not in the mood
eulerscheZahl: i'm just nagging you
Illedan: :)
Illedan: Keep it up, glad to see you around :)
eulerscheZahl: i like the game idea. and you always wanted a TSP optim
eulerscheZahl: search race could be seen as TSP now that I think about it
eulerscheZahl: (not really, fixed order of checkpoints)
Illedan: If I made the order of checkpoints visits as you wanted yourself
eulerscheZahl: next week: search race 2
struct: whats TSP?
Illedan: traveling sales person
eulerscheZahl: travelling salesman problem
struct: thanks
Illedan: Ah, that is the full version. With all missing letters in my words. got it
Illedan: What do you think about the scoring for snake euler?
Illedan: makes sense with 25000 - steps?
Illedan: I thought about - steps/25000, but that would give very little changes on faster wins
eulerscheZahl: sounds reasonable to me
eulerscheZahl: (your current scoring)
Illedan: :+1:
eulerscheZahl: And it will not render all steps with multiple steps.
that's a lot of steps ;)
Illedan: dbdr, I just changed my hidden seed btw. That is why the amount of food just changed on that one testcase
dbdr: are you trying to hide the validators?
Illedan: :D
Illedan: Ofc
Illedan: https://github.com/Illedan/CG-Snake/blob/CG-Optim/src/main/java/com/codingame/game/Game.java#L25
struct: is it even possible?
eulerscheZahl: in case you missed it: my seeds aren't chosen randomly at 2048. some seeds cause a long chain until it repeats while others have a much shorter cycle
struct: you can still see the validators after the game is approved
Illedan: :(
dbdr: you need to be elite to crack it
Illedan: ^
Illedan: But I have to do some changes I see. Need more maps with less food
eulerscheZahl: i'm with struct: you can't really hide it. so give equal changes to everyone - some will play it offline no matter what
**dbdr stops his 64 GCP instances
eulerscheZahl: i think the only way to hide it is either something like number shifting (not suited here) or random validators like bulls and cows (oh god, please no!)
Illedan: haha, never
dbdr: how is it hidden in NS? I forgot
eulerscheZahl: meanwhile #de is back to moin
eulerscheZahl: you have to solve the levels offline to unlock the next level
eulerscheZahl: SecureRandom and hidden seed (you can't download the code)
Illedan: There is a secret seed to generate the maps, else everyone could run the generation and reverse it
eulerscheZahl: so now i'm the only one who can cheat on NS
dbdr: ah, true, you can disable code download
eulerscheZahl: usually I hate contributors who disable it
dbdr: depth 1 => 1.4k
derjack: yeah, its like winning clash and not sharing the code
Illedan: Your AI is done dbdr?
dbdr: I wouldn't call depth1 done :D
dtiwari: Hi
derjack: good afternoon
Illedan: Do it 20 times and you have depth 20? :D
dbdr: const DEPTH: usize = 25000;
dbdr: my job is done here
BlaiseEbuth: All your depth are belong to us.
Illedan: I tried to print 25000 steps of going in circles. I timed out just by printing it :P
eulerscheZahl: is there an output size limit on CG?
Illedan: oh, nvm
Illedan: I guess I timed out by creating that string 24999 times with 1 extra char each time
Illedan: xD
struct: I think so
eulerscheZahl: who needs string builders?
Illedan: shh
eulerscheZahl: ssh
dbdr: sss
BlaiseEbuth: hss
eulerscheZahl: hhs
dbdr: GOTO eulerscheZahl@03:32pm
eulerscheZahl: actually I was referring to the SSH protocol
BlaiseEbuth: hhh
dbdr: really? /s
Illedan: I'll add the amount of foods to each testcase. To make it more predictable and divided
BlaiseEbuth: *shindeiru
BlaiseEbuth: Fix your romaji
Beta_Scribbles: heyya guys I am new here
BlaiseEbuth: *roumaji btw
BlaiseEbuth: Hello new here, I'm BlaiseEbuth
dbdr: you won't last long here
dbdr: too polite
dbdr: that was for BlaiseEbuth other people are welcome to be polite ;)
BlaiseEbuth: שם המפורש
Beta_Scribbles: lol
BlaiseEbuth: ngl
Beta_Scribbles: i am enjoying this site so far
derjack: clashes? or something more
Beta_Scribbles: yeah. that and the algorithms classes as well
Astrobytes: where? Take cover!
BlaiseEbuth: hm?
Astrobytes: helo = helicopter
BlaiseEbuth: Hm...
Illedan: Can I update a contribution with new testcase names? struct?
Illedan: Not file names, the names inside the files
struct: not sure
struct: I guess if its still a demo it should be fine
Illedan: Ok, I'm sorry to everyone if this crashes CG again
Illedan: but we will see
Illedan: Worked
Illedan: :)
Illedan: dbdr, I changed all testcases
Illedan: They have number of max food now
eulerscheZahl: in the past updating a the testcases lead to funny effects
eulerscheZahl: something caching-related
BlaiseEbuth: Here Astrobytes https://archive.org/details/dongcopterpirate
BlaiseEbuth: If you're minor, or puritan, don't click. I deny any responsibility if you do.
Illedan: You are right euler. I used the buffered Group on Vindinium I think
eulerscheZahl: for vindinium it was still a bit buggy
BlaiseEbuth: :see_no_evil::hear_no_evil::speak_no_evil:
eulerscheZahl: i later reported bug with it while working on sokoban. got fixed now
Astrobytes: lol, I don't even have to click on that to recognise it Blaise
BlaiseEbuth: Disclaimer was for others
eulerscheZahl: i wish i would have read the URL text before clicking
BlaiseEbuth: ^^
**eulerscheZahl sees a link and clicks, ignoring all but the yellow text
Astrobytes: :D
eulerscheZahl: and the nice hover effect, great CSS :P
Astrobytes: lol
Illedan: Worked euler.
Illedan: Pushed
eulerscheZahl: nice
BlaiseEbuth: So puzzle ready? Can I validate it?
Illedan: Think so
BlaiseEbuth: Yea!
Illedan: Any other objections? dbdr? darkhorse64? Astrobytes?
Astrobytes: Seems all good Illedan
BlaiseEbuth: Automaton2000?
Automaton2000: not sure if we can do it
Illedan: :(
BlaiseEbuth: (╯°□°)╯︵ ┻━┻
Illedan: Ready.
BlaiseEbuth: Done.
eulerscheZahl: Illedan you should not add these to the BufferedGroup https://github.com/Illedan/CG-Snake/blob/CG-Optim/src/main/java/com/codingame/game/ViewController.java#L67
eulerscheZahl: that's a great way to kill your tooltips
Illedan: ah, true
Illedan: my bad
Illedan: thx
Illedan: fix pushed
eulerscheZahl: :+1:
dbdr: it's a pain that it stops rendering
eulerscheZahl: i might code something next week. got a swollen finger :(
BlaiseEbuth: Pierce it
BlaiseEbuth: C'mon validate Snake guys, I want to sub my code.
dbdr: it must be advanced code, right? ;)
eulerscheZahl: as soon as we get a full animation :imp:
BlaiseEbuth: Of course. There's a BFS :scream:
eulerscheZahl: i know, that would cause a lot of headache to change. been there, not recommended
dbdr: how many points BlaiseEbuth?
eulerscheZahl: 7
dbdr: I think it's min 1 per validator, if you crash
dbdr: :D
dbdr: so 7 is an achivement for sure
Illedan: :D
eulerscheZahl: oh, it's green when we run into the wall
Illedan: Sure
eulerscheZahl: nice, 1 step closer to the language achievement
BlaiseEbuth: No idea. That's why I want the puzzle to be released: To not have to count them myself.
dbdr: Submit does that for you
eulerscheZahl: what's your score on 1 testcase?
Illedan: 90
dbdr: 51 points on 1
Illedan: On 30 I get 22233
dbdr: I must trap myself but viewer does not want to it
dbdr: to show it
eulerscheZahl: fix it Illedan
BlaiseEbuth: Oh. Haven't thought to submit... -_-
dbdr: you must be new here
Illedan: I guess I can work on it during the weekend. But I can fix that on a submitted contribution
Illedan: I think
Illedan: Unless that breaks everything
Illedan: or only old replays afaik
BlaiseEbuth: I am dbdr. And I found a bug in Temperature.
eulerscheZahl: submit? do you mean "test in arena"? you must be old here :D
eulerscheZahl: will only break old replays
Illedan: Which is no problem for optims
eulerscheZahl: but really isn't fun to code
Illedan: -.-
Illedan: I guess I can steal your 2048 thing?
Illedan: :eyes:
eulerscheZahl: yes
Illedan: :dance:
eulerscheZahl: basic idea is to serialize the actions (or state) and then deserialize again in JS
Illedan: But I have to go in 5 min and remodel my kids bedroom tomorrow, so I got that going, which is nice
eulerscheZahl: then call the SDK functions from JS so you don't have to deal with pixi at least
BlaiseEbuth: eulerscheZahl seems to not have played anything but multi since a long time...
eulerscheZahl: i know that it's still submit for other types than multiplayer games
eulerscheZahl: still wanted to make a poor joke
BlaiseEbuth: Oh. So you're simply not fun...
BlaiseEbuth: :rolling_eyes:
eulerscheZahl: of course, i'm German
Astrobytes: Leave him alone he's German!
Astrobytes: Dmmit!
Astrobytes: ffs
BlaiseEbuth: fss
BlaiseEbuth: Well. This code is shit.
Illedan: No other approves? :P
BlaiseEbuth: :(
eulerscheZahl: not without thorough testing
BlaiseEbuth: thoroughgood
BlaiseEbuth: you're bad to the bone eulerscheZahler
Astrobytes: b-b-b-b-b-b-bad
eulerscheZahl: Zahler?
dbdr: I still need to test the seed stuff
Astrobytes: yeah, I haven't tested thoroughly enough to approve yet
BlaiseEbuth: Don't know from where that come from
Astrobytes: BlaiseEbuth: *Thorogood btw
eulerscheZahl: did Illedan keep all my seeds or use his own?
Illedan: Only 1337 is new
eulerscheZahl: what's the period length of this one?
BlaiseEbuth: No joke Astrobytes... :smirk:
eulerscheZahl: when does it loop?
Astrobytes: afk for a bit
BlaiseEbuth: Astrobytes<<
Illedan: eulerscheZahl https://tech.io/snippet/AkGqdfu
eulerscheZahl: 6308949
eulerscheZahl: just checked myself :D
eulerscheZahl: in the good old python interactive shell
eulerscheZahl: get rid of your index and just print the set size
dbdr: no food, starving: https://i.snipboard.io/BGx9kT.jpg
eulerscheZahl: how approved that mess?
Illedan: Wtf
eulerscheZahl: who*
dbdr: using left-right arrows
dbdr: that breaks a lot of viewers
Illedan: Yeah, CG should fix that shit
Illedan: -.-
eulerscheZahl: did you try ↑↑↓↓←→←→AB?
jacek: its B A start
eulerscheZahl: :(
jacek: uncultured frog
dbdr: https://github.com/Illedan/CG-Snake/blob/CG-Optim/src/main/java/com/codingame/game/Game.java#L27
Illedan: https://www.codingame.com/ide/demo/8462468ed0113b37c6abb9f1a25ad764b388cc
Illedan: this is the original
Illedan: dbdr
eulerscheZahl: if the loop would have more iterations, you would need the for-switch paradigm
dbdr: why not:
for(int i = 0; i < 1; i = 42){
Illedan: lol
dbdr: would be much clearer
eulerscheZahl: https://thedailywtf.com/articles/Switched_on_Loops
dbdr: so we need to reimplement Java's RNG
dbdr: did you do it?
Illedan: only for offline sim
dbdr: if it's any complicated, a simpler one might be nicer. I don't think high randomness matters much
Illedan: but I can remove it?
Illedan: I'll fix in 1 hour
dbdr: you have a offline solver? :)
eulerscheZahl: you only need the java random for the initial map generation, right?
dbdr: no, for the next food
eulerscheZahl: no more deterministic seed?
dbdr: seed is deterministic you need to go from seed to x,y of food. that uses Java's builtin RNG
eulerscheZahl: that's confusing, i think i have to read the code to understand what you are saying
dbdr: https://github.com/Illedan/CG-Snake/blob/CG-Optim/src/main/java/com/codingame/game/Game.java#L114
dbdr: if your bot is not in Java, you need to reimeplement java.util.Random
jacek: is implementation of Random guaranteed across different jvm?
eulerscheZahl: it's just for the initial setup (snake pos and initial food)
dbdr: I think so jacek
BlaiseEbuth: Is anything guarenteed between different jvm?
eulerscheZahl: everything after is the same way as for 2048
AllYourTrees: i wish all rngs across languages were consistent given the same seed
dbdr: oh
jacek: then they wouldnt be so random eh
dbdr: right, https://github.com/Illedan/CG-Snake/blob/CG-Optim/src/main/java/com/codingame/game/Game.java#L147
dbdr: thanks eulerscheZahl
eulerscheZahl: just FYI Illedan: dreadylein reversed Java random quickly on Number Shifting, so I had to switch to secure random (and clear the leaderboard :( )
dbdr: I guess it would be better to use that always, for offline, as Illedan said
eulerscheZahl: i don't think it matters for you though
dbdr: I don't understand why the loop iteration direction matters
dbdr: statistically
jacek: does it?
dbdr: if not, why is it there? and comment tries to say something...
Westicles: My guess is dbdr solves them all in less than 8k steps by monday
jacek: neuroevolution snek https://www.youtube.com/watch?v=zIkBYwdkuTk
jacek: :scream: http://cgstats.magusgeek.com/app/multi-amazons/sprkrd
Wontonimo: nice bot sprkrd !
sprkrd: thank you :D
sprkrd: It'll get better
struct: So many draws I wonder If I should implement what illeda n suggested
sprkrd: what did he suggest?
struct: in case of draw the player who had more empty squares in his win, wins
jacek: but did we reach ceiling yet
sprkrd: I don't know if I'm convinced by that. I think the reason jacek and I have so many draws is because our bots use an almost identical approach, right now
jacek: how do you know what approach my bot uses o.O
sprkrd: minimax vs minimax, no pruning, a decent eval?
jacek: depends on your definition of minimax, but i use alpha-beta :v
jacek: pruning
sprkrd: not much depth at the beginning, 5-6 depth middle game
sprkrd: alpha beta as well, that's given
jacek: then we also have similar eval eh
sprkrd: I'm gonna guess: territory (voronoi-like)?
jacek: eeyup
sprkrd: then I feel like we have almost the same thing
AllYourTrees: j not using a NN for amazons :eyes:
jacek: not yet. still have local version beating 90% current bot
Wontonimo: his NN was used to make his bot
AllYourTrees: oh wow (to both of those things)
Wontonimo: i'm just joking. i meant his brain
AllYourTrees: oh lol :plane:
AllYourTrees: ✈
dbdr: how come you guys use alphabeta in amazons?
jacek: what would you use
dbdr: I haven't looked at the game
jacek: ;s
dbdr: you usually use MCTS
sprkrd: I'm working on MCTS now, but it's not trivial to implement for amazons
sprkrd: the branching factor is huge, the usual fix for that is using move groups
sprkrd: for amazons there a good heuristic evals, so you'd probably want to include those in your MCTS somehow, either in expansion, in rollouts, or in both
struct: when you have 1k+ moves in first turn it can be tricky
sprkrd: anyway, several points where you can introduce bugs :disappointed_relieved:
sprkrd: with move groups I can do 15K rollouts in 100ms at the beginning, but apparently that's not enough to beat jacek
sprkrd: so I was trying to incorporate mcts-solver, but since nodes do not alternate between me and my opponent, the logic is a little bit more difficult
jacek: do not alternate?
sprkrd: nah, it's 3 nodes for me, 3 nodes for my opponent, and so on
AllYourTrees: wheres the third come from? 1st is move, 2nd is arrow right?
sprkrd: in the first node i select my amazon, in the second node I select its destination, and in the third node I select the target of the arrow
AllYourTrees: ooooh
jacek: you count queen move and arrow move as different plies?
sprkrd: 1st = amazon, 2nd = move, 3rd = arrow
jacek: welp, resubmit time
sprkrd: OK, I'm gonna take a screenshot while I'm first
sprkrd: done
jacek: its photoshopped
sprkrd: Officially, I've been 1st in a ranking, even if it's been for a few seconds
sprkrd: photoshopped? really? if I wanted to doctor the results I'd manipulate the DOM of the page :relieved:
sprkrd: is your new bot your feared NN?
jacek: you tell me
jacek: https://www.codingame.com/share-replay/571715470
sprkrd: well, there's a funny float number there
sprkrd: so I'm gonna say yes
jacek: or its just random
sprkrd: maybe, but I can take only 1 guess :joy:
sprkrd: I'm glad I took the screenshot
sprkrd: I think I can drop amazons already
jacek: welp https://www.codingame.com/share-replay/571716056
sprkrd: You accomplished my objective on my behalf
jacek: and eval is 0.99 just before losing :f
sprkrd: yeah, I saw it
sprkrd: before you sent the link, apparently there's something funky going on
sprkrd: but it's either a draw or a win for you, so I think you'll sit comfortably at #1 again
jacek: at least you can come up with some eval
jacek: unlike d&b or clobber when it is all or niothing
sprkrd: indeed
struct: is this the NN?
jacek: eeyup
jacek: i made him rage quit :(
sprkrd: oh no
sprkrd: not at all
sprkrd: I already have my screenshot
sprkrd: I'd like to see my MCTS-solver approach working also
sprkrd: at the moment it does funky stuff
jacek: would solver work much better here? it seems there is no end until the very end
sprkrd: from what I could see, it detects defeats fairly early, practically as early as minimax
sprkrd: for some reason, however, it does not have an easy time with victories, tho
jacek: so it just avoid traps
struct: I think its similar on bt
struct: solver doesnt add much
sprkrd: for the moment yes, but I have yet to see once I solve the problem with victories
struct: even when solve 10+ turns before ending
sprkrd: there is a bug somewhere, because it only sees victories 1 step ahead
sprkrd: i'd expect it to see a little bit earlier, specially when the board is already pretty filled up
sprkrd: to see it*
MSmits: sprkrd mcts solver isnt going to be hard because of the alternating. It's going to be hard because there's no way to benefit from the move groups. You'll still need to solve every move if you want to prove a win for the parent
MSmits: or a draw
MSmits: so the full branching
sprkrd: i don't mean hard for the algorithm
sprkrd: i mean hard for me to implement
MSmits: ah you mean hard to code
MSmits: it's a bit messy yeah
MSmits: should be doable though
sprkrd: yup
sprkrd: yeah, i got it working somewhat
sprkrd: but still something smells funny
MSmits: it's hard in D&B as well because of multiple moves per turn
MSmits: per ply i mean
sprkrd: remind me again, which one is D&B?
MSmits: dots and boxes
sprkrd: I'm so bad with acronyms
MSmits: https://www.codingame.com/multiplayer/bot-programming/dots-and-boxes
jacek: drum&beats
MSmits: I think it's bass
MSmits: but sure :P
sprkrd: Haven't tried that one yet. Probably in 6 months or so when I'm satisfied with Amazons :joy:
MSmits: yeah there's tons i havent tried. I get too obsessed by a single multi
jacek: amazons? that tutorial game?
struct: I should have released the 16x16 version
jacek: its even easier than onitama ~
MSmits: onitama is not easy
MSmits: for a board game
struct: The hardest part of breakthrough was parsing inputs
MSmits: breakthrough is pretty easy to code, just not to eval
struct: yeah
MSmits: checkers is hard
struct: I think i finally found something on eval
jacek: psqt?
MSmits: cool
struct: whats psqt?
sprkrd: i want to reply to you with something witty, but I really cannot think of anything. So at least know I tried
MSmits: :trophy:
MSmits: for participation
sprkrd: thank you, thank you
jacek: piece square tables
struct: nah
struct: dont have that
jacek: do you have at least row-based score?
jacek: home row is somewhat important for example
MSmits: if you have column values and row values and you combine them in your eval, it's kinda like psqt right?
struct: yes but very simple
struct: i eval home row as the lowest :D
jacek: oO
struct: home row as almost no value for my bot
MSmits: home row should be higher than the next row
struct: has*
MSmits: and not just the whole row
MSmits: some pieces on the home row are more important than others
jacek: well corners are less
struct: im rewriting the bot
struct: https://i.imgur.com/szmkGuB.png
struct: So it knows this position is solved
MSmits: my problem with this is that if you have all these parameters, you need to fit them and if you're doing that, you might as well go NN
MSmits: just take marchete's thingy
MSmits: adapt it
struct: dont think its that easy
struct: But I havent checked it yet
MSmits: seems easy enough to use on oware at least
struct: I still need to finish the book
MSmits: everyone and their mom is doing it
MSmits: I think you can plug in a different game by just changing the inputs
MSmits: and sim
MSmits: it wont beat the top 3 probably
jacek: youre booking?
struct: Still I want to learn how to do it
MSmits: NN book jacek
struct: no jacek i meant finish reading the nn book
jacek: oh
jacek: cg spoiled me
MSmits: how os
MSmits: so
martinpapa69: imo the easiest way to learn NN is doing it
jacek: or twisted? :thinking:
MSmits: martinpapa69 the book helps you do it
MSmits: it's code you can just test and use
MSmits: not just theory
struct: sure maybe I can use Marchete code and apply it, but will I understand how it works?
jacek: there are some many resources on NNs but mostly theory and math. until i wrote one, i didn't know what to do with them
martinpapa69: Marchete basically provided a complete code. you will learn nothing by running his train.py script and submitting it
MSmits: I think I know enough to use marchetes thingy and its high on my list, but there's mikla to beat :(
jacek: :bacon:
MSmits: yes, the bacon
MSmits: martinpapa69 when i say use, I mean adapt to my own purposes
martinpapa69: but there is so much knowledge in the field of neural networks. and you dont need actually much to build one
MSmits: I still have a lot of data to use in supervised learning for oware
MSmits: i'd just be using his NN inferer
MSmits: and maybe parts of the training pipeline
Illedan: dbdr, I'll try to optimize this viewer
martinpapa69: he shared a lot of cool stuff other than the inference
MSmits: yes i know, but i dont want to make another azero
MSmits: I am trying to make it learn from perfect data, not selfplay
Illedan: You say it like it is easy :P
MSmits: it is easy if you copy marchetes work
Illedan: Play snake now .)
jacek: he'll get blind
sprkrd: :smirk:
MSmits: when I use templates, my VS tells me: "well if you're gonna be that way, no intellisense for you"
seshoumara: hi everyone, I'm back after a long time, 2 years or so
MSmits: welcome back
sprkrd: I use vim with no plugins, so I'm quite used to the absence of intelligence
MSmits: I see
jacek: and you have not quitted ever since
sprkrd: not IDE have convinced me yet, unfortunately
seshoumara: @MSmits thanks
sprkrd: too much bloat for my taste
MSmits: bloat?
sprkrd: yeah, too many features
MSmits: ah, I just ignore most of them
jacek: he programs with punch cards
sprkrd: and sometimes a noticeable slowdown
sprkrd: jacek I actually think I belong to that era
MSmits: VS is quite good, but yeah other IDE's I mostly hate. I'd prefer plain text to those
MSmits: sometimes i dont like VS
MSmits: mostly when it's telling me how to code
sprkrd: I've heard good things of the profiler
struct: VS tells you how to code?
MSmits: "you really ought to make this readonly"
martinpapa69: especially when you code in c#. pretty annoying
MSmits: yes
struct: ah for C#
MSmits: C#
MSmits: profiler is cool sprkrd
MSmits: mostly it works well. But for a massively recursive algorithm I dont know how to interpret it
sprkrd: If I ever program something in Windows, I think I'd like to try VS just for the profiler
sprkrd: and in the absence of valgrind, of course
martinpapa69: if you go vs you never go back
sprkrd: :joy:
MSmits: like my nimsolver. a function will run itself 5 times and it will use 80% 60% and 30% of calc time. Ehhh... that doesnt add up to 100%
martinpapa69: ye i like how percentes just disappaer in the profiler
martinpapa69: 30+60 = 100
MSmits: oh, right
MSmits: but on recursion its worse i tell you
martinpapa69: never tried profiling recursion
MSmits: well if you do a minimax for example, you'd have to
MSmits: pretty common
MSmits: or dfs
jacek: just stack it up
MSmits: :confused:
eulerscheZahl: "if you go vs you never go back" I ditched VS for MonoDevelop while dumping my Windows
eulerscheZahl: that was in 2014 I think
MSmits: and you still miss it
eulerscheZahl: much less now that I have VS Code
eulerscheZahl: except for the profiler
MSmits: yeah vs code is kind of ok
eulerscheZahl: haven't found anything close to VS profiler
MSmits: I used it sometimes to read those CG referees
martinpapa69: vs code if pretty good for go, and for rust as i heard. but for c++..mehh
MSmits: yeah it sucked, the one time i tried to use it for c++
MSmits: was for hypersonic, had to use gcc only types (128 bit) and VS wouldnt have it
MSmits: at least VS code would have (half the time) some intellisense
MSmits: but it crashed often for some reason
martinpapa69: ye intellisense is rly weird
martinpapa69: in vs..its just too clean
MSmits: i couldnt code that well back then. If i were to repeat this I'd just code my only 128 bit type and use VS
MSmits: my own
MSmits: too clean?
martinpapa69: like, works perfectly
MSmits: ah, mostly yes
MSmits: sometimes i make it crash though
MSmits: with C++
MSmits: well it doesnt exactly crash VS, it will just no longer see error
MSmits: usually with really big files
MSmits: 2k-3k lines
MSmits: especially with templates
sprkrd: oh will you look at that, another spaniard
sprkrd: it's absolutely disgusting, the worst kind of people
jacek: budapest in spain? :thinking:
sprkrd: :grimacing:
martinpapa69: pretty cool place
MSmits: a fellow covid red zone country
martinpapa69: I couldnt register to the private contest, so i had to move
MSmits: thats the spirit
struct: which contest?
MSmits: you just moved the whole city of budapest to Spain
MSmits: sponsored contest struct
struct: The one with 3 pods?
MSmits: Protugal isnt in
MSmits: but
MSmits: you can move Leiria to Spain as well
jacek: it had HS in screenshot
MSmits: It's a pretty big country
sprkrd: so... which one is it? bulgary or spain? :joy:
MSmits: jacek i've often seen that picture for contests
MSmits: it's never actually HS afaik
struct: I need to finish bt anyways
sprkrd: hungary, sorry*
sprkrd: got my cities mixed up
seshoumara: how does quest map work? It detects automatically if the conditions are met for that node, or it trusts me I've done it?
struct: im still trying to code the win check
MSmits: detects seshoumara
MSmits: wincheck>
MSmits: that seems pretty basic
struct: from the 6th row
MSmits: hmm, does this wincheck include cooperation between your pieces?
struct: yes
MSmits: ah ok, i have a 1 piece race lookup
MSmits: from row 5
MSmits: so on opponent side
MSmits: it takes 1 piece of yours and all pieces of opponent
struct: yeah I was trying to do this with lookup table
MSmits: but my pieces cant cooperate
MSmits: the information you need is in how many turns you can force the win
MSmits: because the opponent could also be forcing the win
struct: well it wont get to that point
struct: because solver wont allow it
MSmits: why not
struct: i make a move if opponent cant stop it i win
MSmits: unless you cant stop him from winning sooner
MSmits: what if he has a 1 piece situation on 5th row
MSmits: and is faster than your 2 piece on 6th
MSmits: 2 pieces take more time to move
struct: dont think it can happen
struct: no
struct: because he must capture the piece that moves to 7th row
struct: or he will lose by 1 tempo
MSmits: ok, but you lose time to move it to 7th row
jacek: so many ifs
MSmits: and then you need to move the other one
MSmits: takes 3 turns to win
MSmits: oh right he took 1 then
MSmits: so net 2
MSmits: good point
MSmits: yeah this could work
MSmits: do you do a triangular PEXT lookup in front of anything that moves to 6th?
MSmits: should be 3^9th possibilties
MSmits: not that bad of a lookup
seshoumara: I'm lvl 21, 1K XP, how does that compare now?
jacek: oh my
MSmits: not sure seshoumara
MSmits: you need 30 for full powers I think
Marchete: about BT, have you seen that paper about Race Patterns, struct?
Marchete: that doesn't solve some endgames?
jacek: the one when you need pay for
MSmits: nah that one is free
Marchete: that's free
jacek: oh
Marchete: the damn paper behind a paywall it's an NN model for Dots and Boxes...
MSmits: reading that paper, it did not seem like a huge success to me. A lot of caveats
Marchete: well, model
jacek: link?
MSmits: whats it called?
Marchete: some input definition
sprkrd: which one is behind a paywall?
struct: no marchete
jacek: ? https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.51.2676&rep=rep1&type=pdf
Marchete: https://ieeexplore.ieee.org/document/7317912
MSmits: Marchete in my experience a lot of this stuff is not suitable for larger D&B sizes. Usually it's 5x5 or smaller
MSmits: the game becomes different at larger sizes
struct: thanks Ill check it
MSmits: way more opportunity for complex structures
sprkrd: Marchete do you have it already?
sprkrd: (the paper)
Marchete: you barely know about D&B... :rofl:
sprkrd: I don't
Marchete: just kidding :P
Marchete: I was talking to Smits
sprkrd: I was asking if I could get the paper for you
Marchete: he barely knows it
sprkrd: In case you don't have it
MSmits: lol
sprkrd: Ah, ok
sprkrd: :joy:
Marchete: I don't have the paper
Marchete: I've read the abstract and seen some images
sprkrd: OK, I can get it for you, I think I have access
Marchete: it seems similar to some ideas I had
Marchete: for free?
Marchete: it's freeeeee
sprkrd: I won't charge you anything, no :joy:
jacek: sci hub?
sprkrd: no
sprkrd: I have legit access
sprkrd: through the university
Marchete: :hugging:
Marchete: My google fu were useless
Marchete: no way to get it
Marchete: neither there or in related conferences
MSmits: https://www.mdpi.com/2076-3417/11/5/2056/htm
MSmits: is that it?
MSmits: ah no
sprkrd: Here you go: https://we.tl/t-oyAlWoa7dh
Marchete: :O
sprkrd: Maybe I should upload it to Drive so the link is persistent
Marchete: no
Marchete: better no
MSmits: probably not
Marchete: I imagine you shouldn't
MSmits: it's a violation of some terms somewhere
MSmits: even sharing it here
MSmits: but should be ok i guess
sprkrd: thank you for your concern for me :cry:
sprkrd: anyway, I think only a few of you were looking for that paper, so I think it's alright already
MSmits: yeah technically i am a student at my university for like another month
MSmits: so i should have access myself if i figure out how
sprkrd: if you're a teacher probably you should have access also after that month
MSmits: mmh not automatically
MSmits: universities do
MSmits: but high schools, doubtful
MSmits: i could probably arrange it though, with some effort
sprkrd: ah, i see, I thought you were teaching at university
MSmits: no, I teach physics/CS to 16-18 yr olds
jacek: and not fair for those who pay for the papers
jacek: oops scroll
MSmits: coming schoolyear just CS
sprkrd: who pays for the papers?
MSmits: i was at university to get a teachign degree for that
Marchete: papers should be free, or at least $$ for researchers
sprkrd: it's a stinking business, it's what it is
Marchete: indeed
sprkrd: IEEE it's not going bankrupt anytime soon
MSmits: :poop:
sprkrd: you know how much they make in entrance fees for each conference?
MSmits: at least part of the money should go somewhere other than IEEE shouldnt it? Like the universities?
Marchete: sprkd you are from now on on a research for a novel D&B strategy
Marchete: so it's OK to share with me :D
sprkrd: they brought the freaking cirque du soleil to the last one I attended to, for chris sake
MSmits: yes we will conscript you
Marchete: there I have your back
sprkrd: :joy:
MSmits: Marchete it does seem very similar to what you do
MSmits: with the graphs
MSmits: I doubt its usefulness for 7x7 though
sprkrd: OK, next one after amazons, it's D&B
MSmits: only do it if you enjoy the math, or if you're just looking to make a quick working bot. Getting top 20 is not so hard
Marchete: yeah, I have the same ideas but I don't ask for my ideas 40$
Marchete: D&B is a different game, and imo hard
sprkrd: I enjoy difficult math problems
Marchete: hard to master*
MSmits: then you'll like it
sprkrd: more than bruteforcing games with raw speed
sprkrd: (which I also enjoy, but slightly less)
MSmits: If I converted my bot to python, I'd still beat everyone other than mikla :P
MSmits: bruteforcing is only useful here when you and your opponent are using all the same tricks
MSmits: but if you're using only 1 more math-trick your opponent isnt using, then you can beat him with python
Marchete: domain knowledge plz, not trick
MSmits: sure sure
MSmits: but so much typing
sprkrd: let's not get carried away, never will I ever participate with python :joy:
MSmits: just mentioning that to get the idea across how important math is here :)
MSmits: dont actually use python ofc
sprkrd: i guess at the top 5 or top 10 speed becomes important again
sprkrd: OK, you got my interest, I'm going to read what D&B is all about
sprkrd: although I really really don't want to open another watermelon before I'm satisfied with amazons
Marchete: "The input [...] contains 25 elements: the number of chains of the first 11 types shown in table I, the number of loops with different length and the number of nodes with different valence."
MSmits: sprkrd currently the 1 and 2 and 3 are so far apart, speed doesnt matter
Marchete: very simplified, but similar to my idea, do you see Smits?
MSmits: well for 1 and 2 maybe
MSmits: yeah i saw that
MSmits: thats why i said it's similar
Marchete: Maybe I can win you with NN
Marchete: :slight_smile:
MSmits: I dont believe it if it is just with NN, but NN + math. sure I believe that
struct: I think re curse tried NN
struct: But im not sure
MSmits: very briefly
struct: yeah
MSmits: he quickly saw other low hanging fruit
MSmits: like othello
Marchete: I prefer low player games
MSmits: why?
struct: board games
Marchete: oware is like a f*cking subway now :D
Marchete: I play static
MSmits: is it really?
Marchete: I don't want rock paper scissors
Marchete: and retake it each day
MSmits: only 219 players
struct: only 218 on bt
MSmits: but you mean the active top 10 i guess
jacek: amazons has low player count
jacek: [solved]
MSmits: so basically you dont mean low player games, but stale games
MSmits: where people have moved on and left their bots behind
MSmits: to serve as benchmarks
Marchete: stale, yes
Marchete: I play them as puzzles
MSmits: yes, I dont mind that either
MSmits: it's not like it's not a challenge
Marchete: to test stuff and take my time
Marchete: an optimization game
MSmits: still hard to beat year old bots. It's not like they got weaker in the meantime
Marchete: also many of these games are gems
Marchete: and few people played it
Marchete: meanwhile CSB, UTTT are crowded, dunno why
struct: less leagues
struct: no exp
jacek: :notebook: :soccer: ?
MSmits: csb because of tutorial
martinpapa69: and because of MadKnight ofc
MSmits: and uttt because people know TTT and it's easy. Also the player amount makes it seem more attractive to some
sprkrd: gonna leave now, see you later ^^
jacek: who?
MSmits: bye
jacek: finally beat oware lb
jacek: this time i used win/lose values from selfplay of my best model
Marchete: hmm I think the guys at the paper I was looking for are these:
Marchete: http://dotsandboxes.tar.xyz/
Marchete: https://github.com/yimmon/dots-and-boxes
Marchete: same name
martinpapa69: nothing works better for me than selfplay training
Marchete: yimmon.zhuang
Marchete: like what else martinpapa69?
martinpapa69: i tried some rly complicated stuff. maintaning a local leaderboard of my models with TrueSkill system. and picking models from the top to generate samples
martinpapa69: same result as selfplay
Marchete: same results than always last model?
Marchete: then maybe you need to try more sample pool
Marchete: jace_k and Robo have much much more
Marchete: but then you might need to change some parts
martinpapa69: same result as the best version of the selfplay-model history. the most recent model is not always the best. but i just stick with the selfplay trainign for now and try other stuff. might move to other game
martinpapa69: always wanted to make a decent bot for ghost in the cell. dont think there are many nn bots there
struct: just wait until I finish porting ultimate d&b
struct: I dont think there is any NN gitc bot
martinpapa69: don't know if i have to rebuild the 2d map, or is there easier way to input it to the nn
Marchete: gitc nn?
Marchete: that's madness
struct: I would try bt
struct: its a fun game
Marchete: there are many others to test
Marchete: BT, C4, etc etvc
struct: and easy to see if bot is playing well or not
Marchete: indeed
Marchete: gitc? it's a very mathematical game
jacek: checkers *.*
Marchete: any board game
Marchete: without hundreds of units
struct: without multiple moves
struct: *outputs
jacek: othelo can has multiple moves :(
Astrobytes: I can haz cheezburger
Illedan: Snake might break now. I'm trying to enable the viewer again
jacek: oware is fast because you have 14 active inputs. then comes checkers with 32
jacek: bt would be 64
struct: or you can try chess :)
martinpapa69: implementing chess sim sounds like a nightmare
jacek: rebless is working on the bot :scream:
Astrobytes: "the bot" ?
jacek: :cheese: 960
struct: chess nN bot
jacek: he cant beat the one trained on ccrl games
Astrobytes: ah yeah, it's regular chess currently though isn't it
jacek: he knows standard chess so he knows when the bot fails
Astrobytes: very cool project
jacek: im chess noob. actually im noob at most games
Illedan: dbdr?
jacek: the bots i make would crush me even within cg constrains
dbdr: Illedan?
Illedan: Updated Snake
Illedan: Viewer should be better
Illedan: Always on
Astrobytes: No one said you had to be good at them jacek :)
Illedan: never disabled
Astrobytes: Oh it updates all the time now
dbdr: The game has crashed. Please contact the author and enclose the following error:
java.lang.RuntimeException: The amount of data sent to the viewer is too big!
Illedan: (╯°□°)╯︵ ┻━┻
Astrobytes: :rofl:
dbdr: 511 frames
BlaiseEbuth: Yeahh, you can be bad jacek
Illedan: How many moves a turn?
Astrobytes: didn't you use eulers 2048 code?
struct: Maybe he has like 200 moves per turn
Illedan: I tried it without first
dbdr: 20moves / turn I think
struct: ok so the contraint is 10k
struct: i thought it was 100k
Illedan: The snake has a lot of parts
struct: Illedan upload hacked sdk
struct: :)
struct: and remove that constraint
struct: ezpz
Astrobytes: lol
Illedan: I guess I can do 200 frames all every game?
Illedan: :thinking:
dbdr: I try refreshing the IDE
Illedan: Crashes for me too
Illedan: I'll render 200 frames only
Illedan: should be enough
dbdr: yes
Illedan: I do 500 moves every frame
Illedan: So I only need 50 frames xD
dbdr: nice
dbdr: did you hardcode some patterns?
dbdr: 500 moves is a lot of depth
struct: hmm i dont get the viewer data error
Illedan: Should I update the random generation? Or is it ok that the initial creation is based on Java rnd?
struct: puts "SENW"*100000
Illedan: Try again now dbdr, it is updated
struct: doesnt break the game
dbdr: if it's easy to replace, it would be simpler to have the same rng for everything
Illedan: Sure, gimme 2 min
dbdr: if it's hard, don't worry, those who need will figure it out :)
dbdr: I had 600 frames without crash
dbdr: ah, but it stops moving again
Illedan: After 200 frames yeah..
Illedan: You want to view the result when you lose too?
dbdr: yeah
dbdr: ah, you could do only that frame?
Illedan: Yeah
Illedan: 200 + the last one
dbdr: nice
Illedan: (╯°□°)╯︵ ┻━┻
Illedan: crashed on 191
jacek: bazinga
Illedan: 150 now
struct: Illedan when a piece is eaten do you remove it or move it?
Illedan: Just hide it
struct: in the graphics
struct: I think move can help
struct: you can make it instant
Illedan: I create it the first time it will show on a tile
struct: Ah I see
Illedan: Try now dbdr
dbdr: last 3 frames are shown (out of 600)
dbdr: nice
dbdr: but not when I crash :(
Marchete: Msmits https://www.codingame.com/share-replay/571753453
Marchete: :D
Marchete: why you were sad and then happy?
dbdr: looks like a bug
Illedan: ah, true. I need to mark you as dead first
Illedan: Fixed dbdr
dbdr: yes, it shows the last frame in case of crash
Illedan: I can do 1500 moves for 10 rounds and then 1 the rest of the game with a viewer :)
Illedan: Approve? :D
Illedan: Ok, pushed the seed thing now too. Had forgotten
Illedan: *pushed to github
Westicles: ah, integer scores now. that seems better
Illedan: Yeah
Westicles: Any idea what the bests are going to end up being? Like 5k steps?
Westicles: Going to be tough to anneal. Any change in the middle kills all the rest of the move list
Illedan: No idea
Illedan: Depends on the food amount
linjoehan: this is a test
Astrobytes: FAILED
MSmits: Marchete
MSmits: that replay you shared
MSmits: first I was sad because i lost the nim game
MSmits: then I was happy because you made a mistake and i won the nim game again
MSmits: then i lost on score. Winning the nim game is not a guarantee you win on score
MSmits: especially if you sacrifice boxes to get there
MSmits: that ridiculous amount of loops though
MSmits: thats what won you the game
MSmits: I still need to extend my score solver till before the endgame with some negamax. It's on my list, but did not get around to it as it's not what loses me games vs mikla
MSmits: at endgame it takes me roughly 80 microseconds to solve the game, so i can do it like 100 times. Solve maybe 2 turns sooner
MSmits: also on a map like the one you showed me, it's less than 1 microsecond to solve
MSmits: very simple
Liquidor: Hi everyone 👋
Astrobytes: Solving in μs is the way forward
MSmits: hehe, just endgames though, where there are no safe moves left. Some of them are so simple, you can do them in your head
Wontonimo: welcome pinao , what brought you here to Codingame ?
Wontonimo: Hi Liquidor, what are you working on?
Wontonimo: I've been trying to improve my Ultimate Tic Tac Toe bot in prep for Connect 4
MSmits: need any tips before I go to sleep Wontonimo
MSmits: what are you trying?
Wontonimo: how do i get my team members to not turn everything into bad news? I'm been trying beer.
MSmits: lol
Wontonimo: perhaps though, i should administer it to them
MSmits: perhaps :)
MSmits: :beer:
MSmits: :beers:
Wontonimo: but that would be less for me
Wontonimo: cheers Msmit, have a great night
MSmits: gn!
struct: for connect 4 i recommend implementing this
struct: http://blog.gamesolver.org/solving-connect-four/09-anticipate-losing-moves/
struct: Then port it from scalar to avx
Wontonimo: nice
Wontonimo: Thanks!
struct: its a bit more tricky for 9x7
Wontonimo: only slightly. after you told me yours was 64bit, i puzzled over it and realized that after figuring it out it seems so obvious
Wontonimo: but, i haven't *actually* coded it yet, just pseudo code in my NN
Wontonimo: I really like the mechanic in connect 4 where the second person can take the first persons move. It really encourages a fair first move even in the most unfair starting boards.
Wontonimo: i think this is a mechanic we should encourage in future games
struct: it makes sense in unbalanced games
Wontonimo: it would really improve UTTT
struct: I implemented it on yavalath due to suggestions
Wontonimo: +100
struct: The game is solved if you play middle
struct: I think msmits solved for middle and cells around middle
struct: also I think that 2 games is important
struct: The problem is that 2 games in same replay is not equal to two games in different replays in terms of ranking
reCurse: It's lazy design :P
Wontonimo: first time i saw 2 games in 1 replay I thought it was a nice work around
reCurse: Sorry I meant the pie rule
Wontonimo: i get my kids to use the pie rule for dividing chores. One of them divides them, the other picks the group they want.
Wontonimo: it's a wonderful mechanic
reCurse: It's fine for kids yeah
reCurse: But it's lazy game design
Wontonimo: i had it in my business contract for my last business as a way of buying out the partner in the event of the need for such things. I've heard it called the shotgun clause
Wontonimo: There are variants of it where there one person can pay the other to make the cut
Wontonimo: in an escalating fashion
reCurse: Sure I'm not saying it's a bad idea in general
Wontonimo: oh, i was just babbling
reCurse: But for game design it's basically the designer throwing his/her/its hands in the air and giving up, basically telling the player to figure it out and it's not his/her/its job
Wontonimo: i didn't think it was an argument
Wontonimo: LazyMammal and I made a game together for a gamejam where the core mechanic was just such pie cutting. You had to bet which tower was going to win in a simulation with canons and such
Wontonimo: you could either accept the simulation, or pay the other player to swap sides. They could then do the same with an ever increasing payment
Wontonimo: winner gets X virtual tacos for winning
MaliciouslyCrypticUsername: :taco:
Wontonimo: i mean dollars
MaliciouslyCrypticUsername: :o
MaliciouslyCrypticUsername: Sadge
Wontonimo: thanks for the :taco: MaliciouslyCrypticUsername
MaliciouslyCrypticUsername: np!
Wontonimo: the game wasn't a hit or anything, and i think 3 who people played it.
reCurse: Why are chess endgame tables so complicated :scream:
struct: they are scary
struct: how well does your current bot play endgames?
struct: I know some NNs used to struggle a bit on end games
reCurse: Saw a game where it drew a KRvK endgame
reCurse: Which prompted me to look this up
reCurse: I may also have watched an hour or two of 1sec/move games between 2 different nets
Wontonimo: i've never coded an endgame table
reCurse: It's very interesting
reCurse: Like instead of defending a threatened piece they almost always do a counterattack instead
reCurse: Sometimes I have to double-take and do tactics myself to convince it's actually an even trade and not just sacing
struct: you trained based on top ais games right?
reCurse: No I'm on self-play now
reCurse: I'm very pleased to see it play openings properly now
struct: nice
reCurse: It's playing in a way I haven't seen before
reCurse: Endgames suck though
reCurse: Failing to draw a KRvK basically not only eats tons of training time for no reason, but it also screws up the value of the game
reCurse: Err failing to win
reCurse: So I'm stuck between implementing EGTB lookup myself (ugh), reusing existing code (ugh) or live with it (ugh)
struct: endgame net
struct: :D
reCurse: Seems pointless
reCurse: I don't need a NN to win a KRvK
reCurse: It's a waste of everything
struct: https://lichess.org/study/kPWZgp6s
struct: look here
struct: lc0 cant win with KQvsK
reCurse: Sounds familiar...
reCurse: Don't know what to do :/
reCurse: Even if I use an EGTB I can end up overtraining on endgames due to the sheer amount of moves to mate
Wontonimo: if you have space (which you eluded to in a previous chat), have 2 nets and switch to the end game one once there are less than X pieces left
reCurse: Oh I don't care about CG
Wontonimo: ;(
Wontonimo: lol
reCurse: I'm still aiming for small sizes because that's the angle I like
reCurse: Fast training, fast search, already have the expertise etc
reCurse: And that way I have my own little corner eh
reCurse: No one cares about 1sec/move chess :P
reCurse: Well I guess for now the easiest is to rip off some probing code and keep 1 net
reCurse: I already have huge games that probably mess up the training anyway
reCurse: 300+ moves
reCurse: Figure I could double my training speed too
Wontonimo: you can mitigate overtraining on common or known scenarios by using "the biggest loser" loss filter trick
reCurse: ?
Wontonimo: i sent you the link
reCurse: Oh isn't that like importance sampling
Wontonimo: it seems counter intuitive that dropping 75% or more of your backprop would actually help, but it does, and by a large amount
reCurse: Hmm ok so not the same thing
reCurse: I'll check that more in details later thanks
reCurse: Though I'm more concerned about the data being overly skewed towards those endgames
reCurse: Maybe I can just arbitrarily weigh down the gradient of any move generated from an EGTB
Wontonimo: there's another concept of making multiple subnetworks, and then a controller that chooses the subnetwork. To encourage
Wontonimo: the system to not just pick one always, there is a fatigue mechanic applied to the choice of subnetwork
Wontonimo: this encourages specialization and discrimination
reCurse: Hmm
Wontonimo: if you had 2, it may (or may not) just naturally divide it's learning between mid game and end game
Wontonimo: but more likely it will divide it by something else that maximizes its change for success
Wontonimo: that it's obvious to us
Wontonimo: these are all heavy weight network designs with many more layers
Wontonimo: which, considering you said you are going to speed, this may not be a good path
struct: I think the speed is related to 300+ moves games
reCurse: Yeah it's interesting but probably overkill for me
Wontonimo: "the biggest loser" opti for training i think is still worthy of investigation
reCurse: Ok
Hackercodehp: Hello world
Wontonimo: hello Hackercodehp programmer
Wontonimo: most of us who are online now spend a lot of time playing bot battles (not clash of code)
Wontonimo: come join is
Wontonimo: *us
Wontonimo: if there was an intro bot battle, it would be https://www.codingame.com/multiplayer/bot-programming/coders-strike-back
Hackercodehp: sure
Wontonimo: let me know if you need any help getting started
Hackercodehp: s Iam new to bot programming friend.
Wontonimo: so, the idea is that you control one bot and when you submit your code it will battle someone else who has written a bot
Wontonimo: i'll PM / DM you and tell you more
Hackercodehp: Thank you Wontonimo
antiwonto: incognito
Wontonimo: oh, now i get to see what it's like to be a noob in CSB again. i forgot about the lack of data
Wontonimo: anyway. good night all
MaliciouslyCrypticUsername: antiwonto and Wontonimo are the same person ?
MiyamuraIzumi: Ominotnow
Tuankiet8b: hello