Chat:World/2021-07-23

From CG community
Jump to navigation Jump to search

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

Default avatar.png pyprog: great man!

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...

Default avatar.png Manopphysics: No U

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

Default avatar.png pyprog: hello coders

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 ;)

Default avatar.png Thamidu: Hello

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

Default avatar.png pyprog: omae wa mou shindiru

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

Default avatar.png pyprog: helo helo helo

Astrobytes: where? Take cover!

BlaiseEbuth: hm?

Default avatar.png pyprog: :metal_tone1:

Astrobytes: helo = helicopter

BlaiseEbuth: Hm...

Default avatar.png pyprog: no i mean hello:joy:

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.

Default avatar.png Xeylo: uwu

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

Default avatar.png pyprog: :nerd:

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

Default avatar.png NOT1: i am noob )

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

Default avatar.png pinao: hi

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