Chat:World/2021-09-11
Westicles: Solving Vox Codei 2 and struggling with ASCII art is how he knows
MiyamuraIzumi: :(
gggsfjw: whats the best thing to learn first in python?
Illedan: Good morning
Illedan: eulerscheZahl, how is that contest going?
eulerscheZahl: that's how, Illedan https://yare.io/replay/ai0gvj2ao2l7
eulerscheZahl: devs don't see an issue, will just increase the HP of the base from 5 to 8. which doesn't matter when I destroy all enemy units
eulerscheZahl: you can play 3 different shapes. squares can rush the other 2
Illedan: Lol, rushing is just that strong
Illedan: xD
BlaiseEbuth: Zeeerrrggg!!!!
eulerscheZahl: a more serious gameplay: https://yare.io/replay/ncggvu0111q4
Illedan: Only rushing if close?
eulerscheZahl: i have a rush vs other shapes. but disabled that feature on the 2nd replay
NinjaDoggy: is yare.io fun? :D
eulerscheZahl: not really searchable, more of a heuristic contest. probably some rock paper scissors
eulerscheZahl: hard to test, as you can only fight against opponents that are online and 2 test bots that aren't completely stupid
eulerscheZahl: it's not a full bot game
eulerscheZahl: you can update your code during the match. and even add some UI elements to interact, if you want
eulerscheZahl: to give commands via clicking or whatever you can think of
eulerscheZahl: but https://yare.io/tournament
eulerscheZahl: huge prizepool
NinjaDoggy: :O
eulerscheZahl: too late to join now. the contest was linked on CG discord. that's how I found it
NinjaDoggy: not too interested anyways :P
NinjaDoggy: gonna spend some time learning CGZero to prep for fall contest ;)
Illedan: date launched?
eulerscheZahl: i like your optimism
eulerscheZahl: no date yet
eulerscheZahl: toad prediction date: November 11th
NinjaDoggy: doesn't really matter anyways right
NinjaDoggy: as long as it's not cancelled it'll be 2 a year
NinjaDoggy: longer wait = shorter wait for next one :P
BlaiseEbuth: You think CGZero will works for cgescape? :/
eulerscheZahl: i'll link it again, should bookmark it https://forum.codingame.com/t/solo-contests/1114/3
eulerscheZahl: that's what I meant with "optimism"
NinjaDoggy: Doesn't CGZero work for literally any game if you write a simulation + search algo that makes use of an eval function :P
NinjaDoggy: even if it's not MCTS there's no reason why you can't train it on just game state -> win rate right?
BlaiseEbuth: NinjaDoggy https://www.codingame.com/cooperate
NinjaDoggy: ?
eulerscheZahl: we speculate that the next contest might be an escape room and not a bot game
NinjaDoggy: pls no...
NinjaDoggy: surely 2 multis a year isn't too much to ask for :(
eulerscheZahl: "The format of the challenge hasn’t been decided yet." https://forum.codingame.com/t/codingame-fall-challenge-2021-details-please/191792/6
eulerscheZahl: there was also this test contest "finding sherlock"
eulerscheZahl: https://www.codingame.com/forum/t/finding-sherlock-coding-escape-community-event-on-july-7/191634
NinjaDoggy: the wild conspiracy theory is seeming more likely :(
eulerscheZahl: and RAIC will be delayed until February
Fenris.: escape room? what's that like?
eulerscheZahl: go to youtube, search for "codingame escape room" (might contain spoilers)
eulerscheZahl: you are supposed to play these with a group of multiple people. as a team
Justin-Truong: play escape room?
ProCoder03: yup..
Justin-Truong: could you invite me
Fenris.: is it any good for newbs? I'm not exactly a full newb but I have not been coding for quite a while.
eulerscheZahl: the escape rooms require less coding skills than clashes
Justin-Truong: yeah
Serpi90: i hate shortest mode clashes
Fenris.: how and when can I try it out?
Justin-Truong: i played with myself clash all of this afternoon
ProCoder03: Its just a harder reverse...
Serpi90: nah, they are useless in real life
Serpi90: and you end up doing dirty hacks to use 2 less characters
eulerscheZahl: just go to activites->cooperate at the navigation bar at the top
Justin-Truong: nah the hardest for me is fastest
eulerscheZahl: and find some friends willing to play with you
Serpi90: i don't hate them because they are hard, i hate them because they are pointless
ProCoder03: or go to discord channel for CGescape
Justin-Truong: is it hard
ProCoder03: what's hard ??
eulerscheZahl: right. i muted that discord channel the second it was created
Justin-Truong: https://escape.codingame.com/game-session/w4c-5eP-MXt-i5H
Justin-Truong: play coding escape
0ffset: Hi I have a doubt regarding the dice puzle
eulerscheZahl: which of them?
eulerscheZahl: dice duel? codindice?
eulerscheZahl: probability dice?
BlaiseEbuth: Miami dice
BlaiseEbuth: Dice city
0ffset: The thing is that i dont get to fully understand the fact that they want something that follows a normal distribution...
eulerscheZahl: do you know what normal distribution is?
0ffset: yes, but isn't it overcomplicating things?
0ffset: otherwise i guess i'm not fully understanding the problem
eulerscheZahl: it's not totally trivial to solve, if that's what you ask
0ffset: the point is that i know what a normal distribution is but i dont know how to implement it
eulerscheZahl: how I solved it: when I see d6, i generate 6 strings: "1", "2", "3", ... to replace it
eulerscheZahl: then evaluate each of them
0ffset: that's way more trivial that what i imagined
eulerscheZahl: it's possible that the substituted string still has mode "d"s in it. in this case i will recursively replace those too
eulerscheZahl: too me a total of 18 lines in python (including 2 empty lines and an import)
0ffset: okay, i guess that I'm overcomplicating things then
geppoz: or you can use qbits :D
jzen: Is it possible to reopen a closed clash chat?
Justin-Truong: yes
Justin-Truong: oh no
eulerscheZahl: yes. open the clash itself again
eulerscheZahl: you can find it in your last notifications
geppoz: it's saturday, so why not to talk bad of js ?
geppoz: someone can explain me why that split() limit is so silly in js?
geppoz: any brained would have implemented it as: "after the limit, return remaining in last element"
geppoz: not just "throw away the remaining"
geppoz: or it is just me?
MiyamuraIzumi: so the point is "limit meaning"
geppoz: yes, and his usefulness in that silly way
MiyamuraIzumi: why do you think that others will think like you
geppoz: since serious languages, like java, think like me :D
MiyamuraIzumi: not really
geppoz: ofc if I want just first elements, I can slice()
Ocho: can someone help me with C?
geppoz: the usefulness is to stop the parsing
geppoz: not just throw the remainder
geppoz: hi ocho , try to ask, let's see if someone can
geppoz: MiyamuraIzumi you don't think that, implementing in "my way" you will have all needed cases, and nothing less and something more?
MiyamuraIzumi: as always
MiyamuraIzumi: those support javascript will say
MiyamuraIzumi: why Java is doing like that
geppoz: you have the stop of the parsing, if the problem is the computational weight, so you can just after take only the first elements if you want, but you will also have the remainder, so you can do more things
MiyamuraIzumi: it make the last element of split not really following what they expected
geppoz: because you have more thing at same price, and nothing less
geppoz: on the contrary, if you want to do something with the remainder, you are in trouble, since you don't have where to start
MiyamuraIzumi: so as what say, it's depend on the pov of the language designer
MiyamuraIzumi: or api designer to be extract
geppoz: well, you can't just say "that's my pov", there are better pov than others
geppoz: I'm just sayng, for me, that's not an useful pov
geppoz: express yourself freely, that's a friendly environment :D
BlaiseEbuth: Everybody can have his opinion. But I'm the one who's right.
MiyamuraIzumi: :D
geppoz: ofc
MiyamuraIzumi: i am not the author, but I think that not everyone will suport Java idea
BlaiseEbuth: Or even Java
MiyamuraIzumi: they api just meaning, I want to split this string with this limit
MiyamuraIzumi: yes
MiyamuraIzumi: so maybe javascript say, so it is limit => the out of lime will be truncate as what "limit" always be
littlebear: when I refresh sometimes I am losing some chats
MiyamuraIzumi: so "limit" again
eulerscheZahl: entire chat rooms or history of single rooms?
MiyamuraIzumi: haha
littlebear: clash chats
MiyamuraIzumi: even private chat
MiyamuraIzumi: only store some of the recents
MiyamuraIzumi: just a bit
MiyamuraIzumi: so MCTS share some characteristic of negamax, is this correct?
MiyamuraIzumi: can anyone help me on this?
MiyamuraIzumi: I mean MCTS sovlver
eulerscheZahl: have some demo code: https://tech.io/snippet/UGXgTEg
eulerscheZahl: formula at line 100 is wrong, should use the direct parent instead of root node for N
eulerscheZahl: afk lunchtime
ProCoder03: what is the difference between MCTS and MCTS solver ??
MiyamuraIzumi: thank you
BlaiseEbuth: solver
MiyamuraIzumi: I am leaning solver
MiyamuraIzumi: so I don't really know for now
ProCoder03: :unamused: Ikt BlaiseEbuth
ProCoder03: Okay
bear314: hi :D
ProCoder03: :wave:
sprkrd: http://chat.codingame.com/pastebin/888a998f-1861-4569-a8d4-2f31c765ed9c
sprkrd: And I've been pastebinned :)
ProCoder03: Thank you sprkrd
ProCoder03: :joy:
sprkrd: just search for MCTS solver and you'll find the paper
ProCoder03: OK...
ProCoder03: LoA means Line of Attack, right ?? and what does it mean ??
sprkrd: http://www.ru.is/faculty/yngvi/pdf/WinandsBS08.pdf
ProCoder03: I am new to these algos :sweat_smile:
sprkrd: As far as I known there's just one paper describing it, and then very small references to it in other papers (the classic references you do to fill the "Related work" section of the paper without paying too much attention to it), so I don't think MCTS solver is a raging success, at least yet. However, it can tell you (in some instances) whether you're following a path that leads to victory or to defeat
sprkrd: Yeah, LoA = Lines of Attack
ProCoder03: "whether you're following a path that leads to victory or to defeat" Wow...... Seems Interesting....
sprkrd: It's the thing some people use to set the messages of their bots to something like a smiley face if they know they're gonna win of to a frowny face if they're gonna lose :joy:
ProCoder03: sounds cool :sunglasses:
sprkrd: Btw, LoA = Lines of Action, I got carried away before
ProCoder03: yeah.. you mentioned it...
sprkrd: No, I said Lines of Attack
sprkrd: it's not attack, it's Action
ProCoder03: Ohhh.....
ProCoder03: what does it mean ??
sprkrd: dunno, don't know the game. It seems somewhat similar to Othello? Never cared enough to learn the rules
ProCoder03: Its game related!! Okay Thanks sprkrd
duckymirror: I just did a Clash of Code where nobody got more than 25%. Can I look at the solution the author uploaded?
JBM: the answer to the question doesn't depend on the sentence before it
ProCoder03: You can't
duckymirror: Hmm. Okay, thanks!
BlaiseEbuth: You can...
BlaiseEbuth: If you pkayed enough clashs
BlaiseEbuth: *played
duckymirror: Do you know how many that is?
ProCoder03: is it 500 clashes, BlaiseEbuth
BlaiseEbuth: Yes.
duckymirror: That's a lot. I'm going to do a few then. 😀
_NikJ: How on earth did these people solve Temperatures in 29-30 characters? And Chuck Norris within 50 characters? o.o
ProCoder03: That's the art of code golfing !!
ProCoder03: writing shorter but uglier code...
_NikJ: No, I get THAT.
_NikJ: But 29 characters?
_NikJ: Come on
_NikJ: How do you take input and solve it within 29 chars lol
ProCoder03: Bash..??
geppoz: the only "cheat" I found in that, is when they write some language solution as "exec" of a bash
geppoz: that ruins real competition in a language
ProCoder03: you mean running another language from bash
geppoz: no, i mean exec bash from any language
geppoz: so you have one short bash solution, and use in all languages
geppoz: (or almost all, which have "exec" command)
ProCoder03: ohhh.... I thought it was the other way around....
_NikJ: Yeah.. I mean, doesn't seem legit that code that in 30 chars in C no less
ProCoder03: Now, 30 chars in C is not even legit...
ProCoder03: The include and main itself will come to around 15 chars
_NikJ: you don't need includes
_NikJ: but yes, idk how :d
ProCoder03: how will printf work without stdio.h
_NikJ: I guess the validators used to be much weaker before, so that even "wrong" solutions would pass them all
_NikJ: It can be done in C
_NikJ: you can write main(){printf("hi");} and it will work as expected
ProCoder03: What!! Then why does GCC throws an error when I try it locally
_NikJ: probably a compiler flag
_NikJ: here: https://stackoverflow.com/questions/2199076/printf-and-scanf-work-without-stdio-h-why
ProCoder03: will check
ProCoder03: Thanks
_NikJ: but anyways, yeah, the input+the algorithm in like 30 chars in C? :open_mouth:
ProCoder03: Impossible, Unless He is a master in it...
ProCoder03: *He/She
_NikJ: I actually think it's this " guess the validators used to be much weaker before, so that even "wrong" solutions would pass them all"*pasted from above*
BlaiseEbuth: There's a rerun when validators are modified.
Westicles: It isn't clear how one becomes a state-of-the-art golfer in bash. Lots of weird, undocumented knowledge involved
BlaiseEbuth: HCF
Illedan: (╯°□°)╯︵ ┻━┻
sprkrd: "state-of-the-art golfer" sounds way too serious, like it will have any implication in computer science
eulerscheZahl: Illedan in chat. of course he's submitting FB
Westicles: I would put bash golf high on the list of the last things human outperform machine intelligences
EngineHeart: how to make the console to give all the output ???
MSmits: damn i hate it when this happens, bug on release, but not in debug mode. I am guessing it's an uninitialized var somewhere
struct: Hi
MSmits: hi
Illedan: Always eulerscheZahl
Illedan: Had a major bug, which kinda worked out xD
MSmits: i was not returning from an expansion function... oops
MSmits: only c++ thinks thats fine
MSmits: debug mode makes it return 0 i guess
jacek: ohai
struct: hi jacek
MSmits: hi jacek
struct: you are working on Yavalath Msmits?
jacek: welcome back, yavalath runner up
MSmits: yeah applying some stuff i learned since that old version
MSmits: I know jacek
MSmits: thanks for the headsup
jacek: :scream:
MSmits: saw it a few days ago
struct: im sure you learned a lot in that time
MSmits: not a lot, but some things are helpful. Trying to get a better hashing scheme to work
MSmits: was using unordered set
MSmits: also, on expansion i was automatically reserving 61 - depth hexes. Which is a bit wasteful on forced moves
MSmits: i kept instantly lost moves as children
MSmits: so every time on selection, these were iterated over
struct: why do you need to reserve hexes?
MSmits: on the node pool
MSmits: as children
struct: ah 61 nodes
MSmits: i basically had no expansion function, i just set a block of memory to 9
MSmits: to 0
MSmits: cheap on expansion, but expensive for selection
MSmits: will be a while before I get anything working. I am adapting my local version + meta mcts before getting a new leaderboard version
MSmits: oh btw, the expansion thingy i had before was terribly bad at finding chains of forced moves, because whenever a forced move happened, it would be something like 50 losses and 1 continued game, so that makes that move really unattractive to explore
MSmits: now it just has 1 child so it can keep going
struct: These little things should help
MSmits: Yep. These NN's on Y are really RPS anyway. Royale had a bot that beat me and then Robo resubmitted and beat Royale harder than me
MSmits: but I want to try getting an opening book that's not countering any specific player. I am kinda past that exercise
jacek: oO
MSmits: Y is the only game where i still have one of those
MSmits: only thing I still do is that when it seems like my bot is not finding countermoves locally, I increase the exploration param
MSmits: but that's similar to changing a NN hyperparam
MSmits: hot russian guys?
MSmits: I'm not russian
BlaiseEbuth: ngl
MSmits: but hi Jamez707
MSmits: are you coming to codingame to pickup minecraft buddies
MSmits: ?
struct: I don't
MSmits: I stopped playing minecraft. I was too awesome. Wasn't fair to everyone else
Jamez707: ive just started learning java and i skipped a level by accident and now im stuck
BlaiseEbuth: ngl
MSmits: skip a java level?
MSmits: how do you do that?
BlaiseEbuth: Better skip java
Jamez707: i kindof just happend
MSmits: you were an accident?
Jamez707: yes but so was the level skip
MSmits: this convo is all over the place
BlaiseEbuth: Condom for the win
_Royale: MSmits: you are first on C4 now ;)
MSmits: oh, what did you do?
MSmits: also congrats on all your NN success, are you still building on marchetes work? Or doing your own?
_Royale: I pushed another NN that loses 100% against you
Jamez707: invalid input. Expected 'x y power' but found '28000'
MSmits: ahhh i see
Jamez707: its saying that but its not in the code
MSmits: you are outputting 28000 somehow, check the output i guess
Jamez707: http://chat.codingame.com/pastebin/6ac6f74a-8075-4cc0-83ab-bd7a192631da
_Royale: MSmits: I still use my own version (no AVX) but learned a lot thanks to the community
MSmits: ahh ok, well gj. Yeah community is great for this
MSmits: Jamez707 you are just adding them all up before output
MSmits: so it's a single number
struct: you dont use avx on c4 _Royale?
Jamez707: so should i change the 3000 and 9000
MSmits: it should be nextcheckx + " " + nextchecky + " " + 100 or something
MSmits: thrust being 100
MSmits: the " " is to separate the output, because otherwise you're mathematically adding
MSmits: struct he doesnt use avx in his NN framework, which he also uses on c4
_Royale: struct: no I rely on auto vectorization
struct: But you dont need a sim anyways MSmits?
Jamez707: http://chat.codingame.com/pastebin/bdb47ce4-5cac-4cfc-b31f-c0ad05f3c929
MSmits: ohh, you mean in the sim. I don't think that matters for NN's. Sim speed is not a bottleneck
MSmits: very small speedup if you avx that part
struct: ah I see
struct: Jamez707 follow the tutorial
Jamez707: i understan approximately 3 words of that
Jamez707: i started like 2 hours ago
MSmits: perhaps it's better to just do some easy puzzles
MSmits: csb isnt the best tutorial
MSmits: if easy puzzles don't work, then you're not ready to use java on CG
Jamez707: it wont letme till ive done this
MSmits: wait, do you know any language?
MSmits: is java just a new language, or your first?
Jamez707: do i sound like i do?
MSmits: i don't know
MSmits: ok, well this is not a good place to learn your first language. It is a good place to practice using your first language though
MSmits: assuming you already know the basics
MSmits: but it seems like you're stuck on the basics
MSmits: you need a real java tutorial
Jamez707: i got told to start on this website
MSmits: do you really need to learn java btw?
MSmits: or can it be any language?
MSmits: personally I like python and C# better for starting out
Jamez707: i was told it was the best starter language
MSmits: mmh, well that's an opinion I guess
Jamez707: my source is a bit of an idiot tho
MSmits: yes
struct: starting on this website might not be the wisest choice
MSmits: the thing about coders is that they quickly forget how hard it was to learn the basics of their first language and to learn computational thinking
MSmits: so it's easy to make the mistake of referring people to CG when they have no basis
Jamez707: can we message on steam this is really glitchy for me
MSmits: sorry, I only chat here
struct: message on steam?
MSmits: yeah steam has some chat thingy i guess
struct: Yeah but why not use this chat?
MSmits: well he's right that it can glitch sometimes
Jamez707: bc it doesnt work very well 4 me
struct: my recommendation is to learn the basics first
Jamez707: i gtg walk my dog now anyway but another time
MSmits: code.org is ok if you don't know any computational thinking at all, but may seem a bit childish to you. I kinda like it though
MSmits: at least you'll be able to solve most of their exercises and they have minecraft stuff =)
Jamez707: i dont care if its childish as long as it helps
MSmits: will not help with written language, but with solving skills
Jamez707: i will see you i dont know when
MSmits: you can convert your block code to real code though
MSmits: sure, have fun
jacek: aww you made a new friend
eulerscheZahl: what's that? drunken Thor wandering around the map?
MiyamuraIzumi: what is different between "unroll-loops" vs "unroll" flag?
MiyamuraIzumi: for GCC optimize?
BlaiseEbuth: loops
MiyamuraIzumi: :(
MSmits: sorry, the trollforce is strong today =/ I don't know or would say
jacek: untroll flag?
MSmits: :trolleybus:
MSmits: that's the bus for the trolls
MSmits: fyi
jacek: i dont have the ticket
MSmits: don't need, just have to open your mouth and say something :P
BlaiseEbuth: Happy Jenga day! :tada:
jacek: happy 0.(81)
MSmits: what does that mean jacek
jacek: youre not trolly enough
MSmits: I know :(
eulerscheZahl: https://linux.die.net/man/1/g++ the best I could find
eulerscheZahl: but it only mentions unroll-loops and unroll-all-loops. no unroll alone
MSmits: euler been looking all this time
jacek: why would they want to linux die :(
eulerscheZahl: just a short break from yare
MSmits: yare?
jacek: yare yare, ara ara
MSmits: pirates?
eulerscheZahl: https://yare.io/replay/8ksgv1192o152
MiyamuraIzumi: thanks :D
MSmits: very minimalistic
MSmits: no idea what it all means
eulerscheZahl: it's a contest starting soon (qualification closed)
eulerscheZahl: harvesting energy which you can use to build new units or attack the enemy
eulerscheZahl: and it's somewhat interactive. you can change the code during the game. or even build your own UI for manual control
MSmits: whoa... bots and manual combined?
MSmits: thats new
MSmits: this is what i need to get nr 1 at Y back :)
eulerscheZahl: wasn't screeps similar?
MSmits: dont know screeps
BlaiseEbuth: Is it euler? Thought it was bot only
MSmits: I can see this being useful for games with lots of logistics. Bot handles that part and big decisions can be handled by player manually
eulerscheZahl: never played screeps myself
eulerscheZahl: i wonder how the contest format will look like (details not determined yet)
BlaiseEbuth: Me neither, the possibility to buy things sound too much "pay to win" for me
eulerscheZahl: i didn't see why I should pay when I have CG as an alternative
eulerscheZahl: with more language flexibility
BlaiseEbuth: For now
eulerscheZahl: :(
jacek: you pay with a soul
BlaiseEbuth: Yeah... :/
MSmits: doesn't seem like PTW to me
MSmits: just has some expenses
MSmits: but people copy github bots for it
MSmits: different issue
MSmits: Sayonara!
eulerscheZahl: pay to play the game. and then just copy what others did
eulerscheZahl: smart move, really :smirk:
MSmits: yeah
BlaiseEbuth: My concern is more about extra CPU you can buy.
eulerscheZahl: that's like buying a PC game and then watching a youtube let's play instead of playing yourself
MSmits: on community servers it is free BlaiseEbuth
MSmits: it's just the servers they provide
BlaiseEbuth: Hmmm
MSmits: also, there is a maximum amount you can spend (quite high still)
MSmits: i've seen PTW games where people spend 1000 a month to get ahead
MSmits: this game is not like that
MSmits: i can kinda understand having to pay for the official servers. You can't expect them to provide infinite calculation time after the initial price. I think that's what it is about mostly
MSmits: normal games don't require much calculation per player, but coding games are different
MSmits: anyways, that's what i get from the steam store page, havent played it myself
struct: yeah it would be similar to cg charging like 5€ to month or something
struct: for servers
eulerscheZahl: ok, that sounds fair
eulerscheZahl: it's just that i can't keep the pace to play everything on CG. and I play some other contests too. I matter of time
eulerscheZahl: and it looked more like a heuristic game, which isn't exactly my cup of tea
struct: yeah, its not a game I would enjoy
struct: also I would need to use js
eulerscheZahl: perfect summary of yare :D
eulerscheZahl: one player managed to code in Rust with WASM
eulerscheZahl: and shared a starter bot
jacek: rust addicts :unamused:
struct: I never used wasm tbh
BlaiseEbuth: Addicts these days
**Chairmanfmao hello
Skynse: Rust do be addictive
MSmits: I prefer wasd to wasm. The m is too far away
struct: (╯°□°)╯︵ ┻━┻
MSmits: :grin:
Illedan: (╯°□°)╯︵ ┻━┻
struct: hard to make improvements Illedan?
MSmits: hard to improve on nearly perfect
struct: 7.0 points difference is not perfect
MSmits: nearly
struct: nah
struct: im only 27 points behind
struct: :p
struct: What rank did you get on the fb copy Illedan?
Illedan: Sogeti?
Illedan: 3rd
struct: yeah
struct: nice
struct: How well does your fb bot performs without spells?
Illedan: Poor
struct: > top 10?
Illedan: Didnt try
Illedan: I can do a test
struct: pb4 was top 10
struct: before you submited your bot
Illedan: :P
struct: I mean his bot that uses no spells
Illedan: I know
struct: Might be worth a try just to get an idea
Illedan: pushed
struct: :thumbsup:
Illedan: This version had 35 points with spells
jacek: facebook?
Dr_Monkey: fantastic its i think
Dr_Monkey: bits
jacek: tits?
Illedan: Language!
Dr_Monkey: exactly
jacek: im using C++
Dr_Monkey: i use python
BlaiseEbuth: language!
Dr_Monkey: bit late but ok
BlaiseEbuth: Late? Its an answer to the message just before, so no.
Illedan: 70 ish I guess struct
Dr_Monkey: wdym
struct: Maybe you can play with eval with this version
struct: I think thats what pb4 did
opitt: If you like a simple game, please approve mine - if you like it. https://www.codingame.com/contribute/view/7204a06363301568107e0e98085cfc40eb6a
MSmits: tb wdym seems much worse than wasm. As I said, use wasd
MSmits: tbh
MSmits: well... for lategames my hashing thingy drops solving time by around 30% in Yavalath
MSmits: over unordered set that is
jacek: jokes on you, lategames in yavalath are rarew
MSmits: not when my bot plays them
jacek: :smirk:
MSmits: but yeah in general you're correct
struct: you sovled 2 moves right?
struct: solved*
MSmits: Yeah, center 7. It's 2 moves when considering symmetry
MSmits: it's really not hard, anyone can do it
MSmits: center move is an hour or so, the ones around that a day or so if you have a reasonable algo
MSmits: all the others seem unsolvable
MSmits: which basically means there is no way to avoid going into the very late game where either player runs out of safe moves
MSmits: you can see why that would be hard to solve
struct: yeah
MSmits: however, if you start with 3 2 for example, there are only 2 followups that aren't solved
MSmits: and only 1 that is strong
MSmits: a lot of these starting moves that arent solved have most of their replies solved
MSmits: which turns a game with high branching into a manageable game
struct: forced moves also help right?
jacek: eeyup
MSmits: yeah and trap moves
MSmits: typically you have maybe 3-5 options to survive a trap
MSmits: i should say, a trap that is coming. You either block the trap or play an available forced move
MSmits: once the trap happens and you didn't prevent it, you've lost
jacek: if you start playing game, you already lost
MSmits: nooo, that is when the fun begins!
MiyamuraIzumi: can a solver improve much on mcts of UTTT?
MiyamuraIzumi: my solver seems quite dump, is this mean, I have done wrong?
eulerscheZahl: i don't know. for connect4 it didn't make much of a difference
eulerscheZahl: Scambaiter got access to some cameras this time https://www.youtube.com/watch?v=tpzUjYYUp-Q
MiyamuraIzumi: yeah, I am trying to make thing
struct: solver took me from 100
struct: to top 50
struct: on uttt
MiyamuraIzumi: I am around 105, and solver make me to 160 :(
MiyamuraIzumi: so that must be my implement problem
struct: probably
MSmits: solver cant really hurt you if you do it right. It should only kick in on games that end in your expansion function
MSmits: so otherwise it should not cause slowdown
struct: unless is solver is very expensive
struct: his*
MSmits: yeah if you do it right, it should not be
struct: i have no idea how mine performs tbh
struct: its hard to test
struct: you cant really test solver vs non solver
struct: because you will end up using diferent paths
MSmits: you can profile your solver. That gives you enough information
MSmits: see how much % of total calc time it takes
struct: True
MSmits: it will likely be < 2%
struct: Not sure if I did that
MSmits: < 0.1% for early game
MSmits: big question is whether to backprop solved games
MSmits: i mean backprop the statistics
MSmits: or only solve
MSmits: if(ended) solve else backprop
struct: i do backprop
MSmits: sometimes that seems bad
struct: Never tested the other way
MSmits: because you will also backprop paths noone would ever take
MSmits: like a move thats insta loss in Y
MSmits: might depend on the game
struct: if you never took it you will never go into that node
struct: because it was not expanded right?
struct: Like if its a losing mvoe
struct: on c4
MSmits: well if your expansion function is really restrictive, the point is moot
struct: moot?
MSmits: there's no point
MSmits: you already fixed the problem
struct: ah
jacek: hm? backprop solved when available
MSmits: as win/loss stats jacek?
MSmits: or just for the solver?
jacek: backprop solved states as high as possible
MSmits: thats not what i mean
MSmits: do you both solve it and backprop it as win/visits
MSmits: if(ended) solve else backprop
MSmits: or
MSmits: if(ended) solve
MSmits: backprop
jacek: i just overwrite solved if thats what you mean
MSmits: i just mean do you do both things, the solver function and the backprop function, on a solved expansion
MSmits: or just the solver
jacek: just solver
MSmits: ah ok, me too, mostly
struct: maybe im the one doing it wrong
MSmits: not really, there's no rule that says either way is wrong
MSmits: i can argue both ways
MSmits: might depend on game
MSmits: best thing is to try it
MSmits: it's difficult for EPT though
MSmits: if you backprop eval instead of win/loss stats
MSmits: because what is the eval of a solved game?
struct: 1
struct: I see what you mean
MSmits: really? What if a good game state for me has an eval of 10k
struct: i normalize the game state
MSmits: i don't
struct: my bt eval is always between [-1,1]
MSmits: at least i don't think so, in most cases
MSmits: extreme results average out mostly
MSmits: i tried using tanh to get it in a fixed interval
MSmits: wasn't better for onitama
MSmits: slightly worse
struct: I dont use tanh
struct: I do some weird stuff
MSmits: i also tried clamping
struct: might not even be good
MSmits: clamping was better than tanh actuallyu
struct: like if there is a max of 16 pawns
struct: its easy to normalize(?) it
struct: current/16
struct: then I apply score to it
MSmits: yeah but your eval has many more parts
struct: ofc
struct: I do this for every part of it
MSmits: ah
MSmits: still hard to compare it to a won or lost game
struct: true
Astrobytes: tanh worked for me in oware, can't remember if I still use it
MSmits: oh it works fine, just when I did a lot of testing it was a small winrate drop
MSmits: who knows what that meant, could be RPS
Astrobytes: I would guess so yeah
MSmits: back then a small alteration to any param would change my winrate against a specific NN from 20% to 70% or vice versa
struct: one day ill finish breakthrough eval
Astrobytes: I really should rewrite that oware bot, it looks like a dogs breakfast
struct: I wont touch oware
struct: or yavalath
MSmits: hah thats what i am doing with my Y bot, but I am not touching the sim. It's so complicated
MSmits: I do weird stuff with pdep and pext
Astrobytes: always fun looking back on those :D
MSmits: at least I understand my oware bot
MSmits: oh Astrobytes I did that hash table thingy, got 30% improvement on solving speed. For Y
Astrobytes: Aha, see ;)
MSmits: yeah i knew it worked from other games, but this bot is old, hadnt tried yet
MSmits: well i tried it before, but not with the loop that looks for empty spot
MSmits: marchete explained that part to me
Astrobytes: I remember
Astrobytes: Many ways to do it, stick with what works imo
MSmits: yeah
MSmits: btw, I have 40 million games now in my loca meta mcts tree for oware
MSmits: not a single loop yet
MSmits: they must be really long
Astrobytes: wow, that's impressive tbh. Not 1 loop?!
MSmits: nope, not in a selection phase I mean
Astrobytes: Yeah I remember you explaining before
MSmits: I go 50 deep in some places
Astrobytes: When are you going to unleash the beast?
MSmits: i keep increasing exploration param too. It keeps hitting solved states
Astrobytes: Intriguing
MSmits: it's at 120 now. Based on seed gain
MSmits: so a value can be +1 meaning expected net seed gain is 1
MSmits: 120 is crazy high
Astrobytes: gotcha
MSmits: i unleashed the opening book from this on the leaderboard already, well a 30M version
MSmits: it helps a bit, but it only goes to 36 seeds
Astrobytes: Ah, I still haven't looked, other priorities atm
MSmits: after that it needs a NN trained
MSmits: and i havent done that yet
MSmits: so it's really just an opening book
Astrobytes: Yeah, quit procrastinating with Yavalath :P
MSmits: not an option :)
Astrobytes: hehehehe
Astrobytes: anyway, off for some guitar. See ya later or tomorrow.
MSmits: but it's cool to see games vs Robo that use moves from books like 30 plies deep until it's down to 36 seeds
MSmits: bye Astrobytes
struct: cya
struct: your oware is with end game book right?
struct: how many seeds?
MSmits: yeah locally 36 seeds, in game 9 seeds
MSmits: ingame includes turn limit, locally assumes no limit
jacek: he may have slight chance with 48 seeds endgame
MSmits: :)
darkhorse64: re ept, I have used sigmoid for normalization. It failed for onitama and did wonders for checkers
MSmits: oh
MSmits: i never had a good eval for checkers though
MSmits: also hi darkhorse64
darkhorse64: hi
MSmits: did you get around to the whole nn thing yet?
MSmits: not sure if you were going to
jacek: oh my 3rd in checkers :(
darkhorse64: no, I am reluctant to spend months before getting decent results. I love too much writing engines. For checkers, I picked the eval on Internet. You can already get something good by just valuing material
MSmits: ahh, i guess i did that too, my rating is the same as yours
jacek: i think material value will give you top30
MSmits: I'm 8 with it
MSmits: really fast sim though
struct: scoring pawns on bt was top 20 I think
MSmits: not sure how much that helps
struct: the amount of pawns
MSmits: I think i did like 100 score for men, 120 or 150 for kings
MSmits: thats all
darkhorse64: I have spent a lot of time on movegen
MSmits: same
MSmits: we probably ended up with something similar, like we did in c4
struct: my movegen on bt is just a lot of while loops
MSmits: most movegens of mine are that
darkhorse64: It's a crazy bitboard thing. My eval is a bit more sophisticated but material is still hugely valued
MSmits: yeah i have a crazy bb thing also
MSmits: doing moves and jumps in parallel
struct: on bt I dont think pawns are that important because you can have pawns that can be stuck for almost of the rest of the game
darkhorse64: You use a skewed bitboard pattern ?
MSmits: i think so yeah
jacek: huh
jacek: welp i have simple bitboard, movegen speed isnt that crucial to me
MSmits: struct yes material count is much less important in bt than in checkers
MSmits: bt is very positional
jacek: in bt, forward pawns are better, but protected forward pawns are betterer
MSmits: like chess
darkhorse64: We looked at the same things, then
jacek: what the same thing?
jacek: like that oware eval thing?
jacek: but for checkers?
MSmits: this is a piece of it darkhorse64
MSmits: http://chat.codingame.com/pastebin/b61e69ac-0d0a-404e-850b-ecfd00eb5c67
MSmits: it basically finds all jumps in one go and then does a while loop over the possible loops to create the children
MSmits: possible jumps
MSmits: makes more sense for moves i guess, since there usually arent that many possible jumps
Kairu111: I have a problem with the Chuck Norris Quest My code says that % in binary is 100101 In the Chuck Norris job, the % binary is represented as 0100101
struct: http://chat.codingame.com/pastebin/8cb18057-cca1-4540-82fc-045845ad6779
Kairu111: P.S Google translate
struct: I do stuff like this for bt
struct: Kairu111 its 7bit binary I think
struct: You need padding zeros
MSmits: oh, you make a move array!
MSmits: I always immediately make children, skipping any intermediate array. Isn't that faster?
struct: i get moves then create the children
MSmits: yes, but the children come from the moves, so why not immediately get the move and make the child, without storing it
struct: ah I see what you mean
MSmits: without storing the move i mean
struct: Never tried it
MSmits: it might be a negligible difference
darkhorse64: My implementation is completely different but the algo is the same. jacek: look at http://www.fierz.ch/checkerboard.php as a starting point
MSmits: as long as you're not using vectors that are being resized and such
struct: yeah
struct: stockfish does it this way
Kairu111: Can you tell me how to convert a 7-bit ASCII string to binary? thanks
MSmits: then it's probably fine
struct: but they use minimax
jacek: oh that guy finally used n-tuples for his checkers
MSmits: nn also didnt he?
jacek: no, just tuples + eval
MSmits: oh it's his competitor then, that uses nn
MSmits: it has some good information on creating endgame books also
jacek: Kairu111 you need to add 0 at the left
darkhorse64: Yep, that a thing I should do to speed up things for some old bots of mine
darkhorse64: oops, scroll
MSmits: yeah i was wondering what you were going to do with that extra 0
Kairu111: jacek I don't really understand how this works, since when converting 'C' to binary, 0 is not appended to the left. And when I convert '%', it adds
jacek: python?
jacek: use .zfill(7)
MSmits: thanks *python knowledge increased*
darkhorse64: for checkers bitboarding, see https://www.3dkingdoms.com/checkers/bitboards.htm
MSmits: seems different from what i did. This uses a little bit more ops, but i am guessing cheaper ones, because I use pext
jacek: i have very basic 'bitboard'. 64bits for 1 player. actually it doesnt differ much from 2d array approach, except i use long instead of the array
darkhorse64: I use 32 bits and no pext
darkhorse64: 32 bits for pawns and kings, so it's actually 64 bit for one player
MSmits: yeah same
MSmits: mmh for yavalath, is it ever worth it to play on a hex that can't contribute to a win and can't be played on by opponent?
MSmits: except when there are no other options
MSmits: seems like a way to speed up solving if this is a correct rule
jacek: maybe it will pay off in endgame if opponent doesnt have free hex
MSmits: yeah but thats why i said, cant be played on by opponent
MSmits: so its already a losing hex for him
MSmits: i cant win on it and he cant play on it
jacek: youre the most qualified person to answer that :)
MSmits: yeah i guess so, I was just wondering if i am missing something
MSmits: noone else shares my obsession :(
MSmits: I guess you all have different ones.
Dr_Monkey: anyone wanna look at my clash of code idea
darkhorse64: Using domain knowledge to have a sort of quiescence search during expansion or rollout is very rewarding. Combined with a solver, it rocks. I remember solving completely a C4 position at move 48 in less than 800 searches
struct: i do a sort of quiescence search during rollout on bt
MSmits: mmh how do you do a quiescence search on c4?
MSmits: i mean i keep expanding if there is only 1 possible move
MSmits: that's sort of similar i guess ?
struct: I would say so
struct: I dont think I do it in my current submit
struct: I kinda lost track of versions
MSmits: it's pretty easy to implement. Just put a while loop in for when you expand. While (selected->childcount == 1) etc.
MSmits: break on solved nodes
struct: yeah I have it implemented
darkhorse64: Yes, that's what I meant
struct: just not on this versions
MSmits: ahh ok darkhorse64, i just never thought of it as quiescence. That's usually mentioned in the context of minimax type searches
MSmits: but yeah i see the parallel
struct: my qs on bt rollout is like add 2 more depth
struct: if a pawn is capruted
struct: :d
struct: or if there is a forced move
MSmits: 2?
struct: i increase max depth sorry
struct: Yeah 2 more turns will be played
struct: Dont know why I put 2
struct: It might even not do much at all
MSmits: for checkers it's worth it for sure
MSmits: bt prolly also
MSmits: because capturing isn't that helpful if you get captured right back
darkhorse64: I tried the same on checkers but it failed. It may be me
MSmits: it is a basic feature for checkers minimax
MSmits: but dont know how well it would work for mcts
darkhorse64: With C4, it works
MSmits: http://chat.codingame.com/pastebin/abcbed0f-e26f-433c-83cb-9801648eb015
MSmits: just coded this for y
MSmits: the quiescence thingy
MSmits: should be good for series of forced moves
darkhorse64: Yes, I should revisit this bot. I have learned a lot since then
MSmits: yeah that's what I am doing
MSmits: sometimes it takes people beating you to do that :)
**jacek
Tiberiusen:
MSmits: :scream_cat:
BlaiseEbuth: https://www.youtube.com/watch?v=9RRhKrrbFwE
69razer69: any news abt contests
struct: no
Dr_Monkey: anyone want to look at my clash of code contribution
BlaiseEbuth: no
struct: I dont really do coc so its hard to evaluate them
struct: seems easy enough
jacek: just put it in contributions and wait
BlaiseEbuth: ^this
struct: I had a contribution waiting for years
BlaiseEbuth: Clash ?
jacek: yinsh?
jacek: no one made a sim for it ~
struct: im joking
struct: I rewrote yinsh I think
struct: https://www.codingame.com/ide/demo/8320154e02a9d71f3762bace58879164b46899
noobroso: Lo.cC.ut.Us share pls
Justin-Truong: coc best
C26_1: My question didn't related to programming but what website can I put Math paper in here?
Code_Turtle108: hi
ProCoder03: :wave: