Chat:World/2021-07-31
Peached: i just woke up and got promoted 2 leagues at once
Peached: -3vel op
jacek: happy Caturday
Maxim251: how return value from tree search?
Maxim251: http://chat.codingame.com/pastebin/480ae80d-76a5-41a7-8070-c2b45495a083
dbdr: Maxim251, why do you do left.layer = layer; it seems to undo the increment in the constructor
Thyl: Hello
Thyl: Do you know link for learn MaxN
Thyl: I want to do a search algorithm in Tron
jrke: MaxN is just minimax for more than 2 players
jrke: not having any link for that
Thyl: ok
Thyl: thank!
jrke: np
jacek: maybe https://dke.maastrichtuniversity.nl/pim.nijssen/pub/cgw.pdf
Thyl: thank
[.: hello guys. i need some help. i do not understand https://www.codingame.com/ide/puzzle/aneo
jacek: :scream:
Maxim251: @dbdr I try pass number to child node. But later I figureout that I can do it by class constructor.
Maxim251: Interesting aproach of not using pointers, is that each node is created only for time of calculation, and when it finish work in that node, it is deleted, and previouse node open next child, do stuff, and is deleted, then higher node also is deleted, because he do his job.
jacek: :thinking:
Maxim251: With this tree aproach, I save memory for tree, because only one branche is created, and deleted before creating next one....
Maxim251: But what You can recive is only return value,
Maxim251: With pointers and new keyword, I have alll branch tree in memory, and is acces to each of node seperatlly... Thats the pluses and minuses
Maxim251: And in the end, I need care to delete all branch.
Maxim251: I found nice tutorial about binary search... https://www.youtube.com/watch?v=8nCDvuNOWNU&list=PLTxllHdfUq4d-DE16EDkpeb8Z68DU7Z_Q&index=6
Maxim251: is totally different approach then my thinking.
jacek: oh my
dbdr: :rocket:
jacek: another NN player in oware?
struct: 4.3M visits rollouts o.o
struct: who jacek?
struct: the teacher?
jacek: yes. but he seems too weak
jacek: 4.3m visits? where?
struct: c4
struct: on the best cpu though
jacek: oO
struct: the 2.4ghz one
struct: the lowest I get now is around 3.5M
jacek: think smarter not harder
struct: its still kinda smart though
Astrobytes: leaderboards frozen?
Astrobytes: battles still go on and submits complete but leaderboard seems stuck
struct: seems so
struct: last battles not showing
struct: on bots that are on a current submit
Astrobytes: Reported
Astrobytes: Bug Report channel on the Discord
Maxim251: Now I understand treesearch, its is all about calling function of it self. this way I can go deep in to tree , and also get back return type from de last node to the beggining :D
jacek: :tada:
MSmits: that's mostly about understanding recursion in general, but sure, treesearch as well
Maxim251: What I was missing was in this function void check_for_avaible_move() - input from curent node, and in side of that function call void check_for_avaible_move(node->next)
Maxim251: My mistake was also creating functions in side of class, where after watching tutorial, I see I dont need do that. Class, node is only container and it can be called from function of itself to create levels.
MSmits: yeah sometimes it's convenient to make class functions
MSmits: sometimes not
struct: are you still working on d&b MSmits?
MSmits: yes
MSmits: recoded my entire scoresolver yesterday after i found some wrong assumptions
MSmits: works well it seems
MSmits: https://www.codingame.com/replay/573246937
MSmits: solves at frame 49 for score in this case
MSmits: and only goes up as mikla makes it worse
MSmits: still debugging though, won't submit yet
struct: damn
MSmits: it's completely bitboarded now. No more graphs
MSmits: I merged the two negamaxes i had for it
MSmits: just 1 now
MSmits: eliminated 1000 lines of code too
MSmits: 3.9k to 2.9k
MSmits: it's still bloated because it has a mcts, a nim solver and a score solver
Astrobytes: doesn't matter if you submit, leaderboards are frozen
MSmits: oh, why are they frozen?
Astrobytes: No idea
martinpapa69: you still can get your actual score from replays
Astrobytes: yeah
MSmits: you mean you can still use the IDE ?
Astrobytes: ofc
Astrobytes: You can submit, battles go, but leaderboard doesn't update
martinpapa69: you open a replay, you see your elo
MSmits: ohhh ok
MSmits: so it's a visual bug for the leaderboard?
Astrobytes: I don't know
Astrobytes: Been reported. no one seems to have seen it yet
martinpapa69: ye, your elo updates, but there is something with the lb view
jacek: maybe it was friday evening update
jacek: (again)
Astrobytes: lol
NguyenVinhHien: the server is tired on the weekend :))
eulerscheZahl: the classic friday afternoon release :D
MSmits: I wonder what they were *trying* to do though
jacek: nerf d&b
MSmits: :)
BlaiseEbuth: Na, Tibo broke the whole architecture removing my mods rights. CG classic side effects. :smirk:
MSmits: why were your mod rights removed?
eulerscheZahl: oh, you already lost your badge here on chat. that was quick
BlaiseEbuth: Oh, he did it right after.
eulerscheZahl: somehow i thought it would be more complicated for the chat
**eulerscheZahl feels terrible :(
BlaiseEbuth: Because I was spoiling the nice and shiny CG's public image MSmits.
MSmits: aha
jacek: and mk doesnt?
MSmits: mk is banned
MSmits: afaik
jacek: oh my
Illedan: Yo!
BlaiseEbuth: By me, not CG.
jacek: oO
BlaiseEbuth: Harass people by DM doesn't affect the public image of CG.
KiwiTae: o/
BlaiseEbuth: \o
BlaiseEbuth: It's not complicated for the chat eulerscheZahl, you just need to renew the site's certificates. :rofl:
eulerscheZahl: which is done daily, isn't it?
BlaiseEbuth: :shrug:
**eulerscheZahl has headache and is sweating just from the concentration it takes to have this simple chat :(
struct: o.o
eulerscheZahl: 2nd vaccine doesn't feel that good
MSmits: ohh ok, yes it doesnt
eulerscheZahl: got it yesterday
MSmits: my wife felt bad for 3 days also
MSmits: 4 almost
struct: I should take mine in 2 weeks
struct: finally
MSmits: mine in 12 days
struct: my first dose
MSmits: wow first
reCurse: No side effects here
MSmits: lucky
MSmits: or maybe not
eulerscheZahl: great, take it. better sick for a few days than the risk of the actual desease
MSmits: maybe side effects is a sign it's working well
MSmits: hard to say
MSmits: eulerscheZahl yes, the people who i've known that got actual covid didnt get hospitalized but were still sicker than the side effects you would get
BlaiseEbuth: My second dose was OK. Just a little tired.
eulerscheZahl: i got tired yesterday evening (even earlier than my usual time)
eulerscheZahl: then some pain in my limbs at night, which is mostly gone again already
MSmits: sounds typical
MSmits: i was unlucky with 1st shot, could not move 1 arm all day
eulerscheZahl: but this time my arm doesn't hurt and I can sleep on the side \o/
MSmits: ah nice
MSmits: that sucks
MSmits: not sleeping on 1 side
MSmits: I could not even put my coat on without great effort
RohitKaushal: how do i create a custom game to play with friends here..?
MSmits: but will gladly pay the price again if it means feeling safe while teaching
struct: a clash RohitKaushal?
struct: I think there is an option to create private
RohitKaushal: is there.. it automatically takes me to a game with random players..
RohitKaushal: i'm new here.. am i missing something.?
struct: https://www.codingame.com/multiplayer/clashofcode
struct: scroll to the bottom
struct: on the left side there is private clash
eulerscheZahl: https://imgur.com/a/wvEi0jH
eulerscheZahl: or there
eulerscheZahl: so many ways
BlaiseEbuth: Hmm...How do you handle collisions with goals poles in FB? I mean for the bounce. Infinite mass for the pole?
eulerscheZahl: sounds like what I would do (i don't have much of a simulation)
KiwiTae: BlaiseEbuth yes so it doesnt move~
MSmits: BlaiseEbuth doesn't the referee tell you how this is calculated?
MSmits: you can probably simplify the calculation a lot
BlaiseEbuth: Is there a referee ?
MSmits: yeah
MSmits: someone will link i
MSmits: it
eulerscheZahl: https://github.com/dreignier/fantastic-bits/blob/master/fantastic-bits.cpp#L624
eulerscheZahl: Magus agrees with infinite mass
eulerscheZahl: https://github.com/SpiritusSancti5/codinGame/tree/master/Referees/Fantastic%20Bits
MSmits: but as i said, because the mass is infinite, there will probably some unnecessary calculation steps
eulerscheZahl: the official referee
reCurse: Just don't update it...
struct: yeah thats what I do
struct: dont change pos or vel of the pole
jacek:
BlaiseEbuth: For the pole Ok. But doesn't the pole mass has an effect on the other entity? (Blaise and physic...)
MSmits: yeah and there is probably some division in there. Which you can ignore because you divide by infinite -> = 0
struct: its not moving
jacek: :rage:
MSmits: but check it as a coder, not as a physicist. Put in the infinite mass and see what the calculation does.
reCurse: What's the mass of a wall?
MSmits: infinite
jacek: what if infinite force hits it?
struct: you break the wall
reCurse: Does it have a mass is more the question
BlaiseEbuth: Another break in the wall.
MSmits: well in the way it's coded it might have a mass, but then you can simplify the calculation so it doesn't
struct: does it matter at all if it has mass? It cant move.
struct: But im not very good at physics
reCurse: That's my point
reCurse: If you don't worry about mass for walls
reCurse: Why do you worry about mass for posts
MSmits: you shouldn't
BlaiseEbuth: Haven't considered the walls yet, so..
MSmits: the collision could be different, but not mass related
MSmits: just the direction of bounce
BlaiseEbuth: My only concern was about the use of the mass in the calculation of the other entity vector, but you're right, the mass disapear with simplification.
BlaiseEbuth: Thanks.
MSmits: np
struct: Spain
MinthangML: do you know Myanmar
struct: no
MinthangML: which language do you use?
struct: no, c++
BlaiseEbuth: asl struct?
struct: what do you mean?
BlaiseEbuth: Age Sex Location ^^
struct: lol
KiwiTae: :flushed:
BlaiseEbuth: print(KiwiTae, flush=True)
KiwiTae: im trying to get some ego back doing easy puzzles but there are so many :(
struct: you can always try a simple multi to pass the time
KiwiTae: any suggestions of multis struct?
struct: well I enjoy board games
struct: I enjoyed breakthrough
struct: connect 4 is nice but hard to improve the bot after a certain point
struct: I might try WW next
KiwiTae: im gonna do another ez puzzl then check how to setup jdk on my computer I started hypersonic last mon th i prob go back to that one
KiwiTae: or join snake hehe
jacek: :notebook: :soccer:
ja_fica: ranking is not updating?
Astrobytes: Yeah, CG are aware
struct: its bugged
PatrickMcGinnisII: First time sending a contribution
struct: check a replay to see how many points you have
PatrickMcGinnisII: hmm, errors
ja_fica: Well but I don't know how much points the other have xD
PatrickMcGinnisII: wow, contributions are kinda a pain in the butt huh
eulerscheZahl: what aspect of it? creating it? waiting for approval?
PatrickMcGinnisII: There is a learning curve to the stubs and such
PatrickMcGinnisII: *shrug*
PatrickMcGinnisII: I've had games to implement, but I
PatrickMcGinnisII: 'm too lazy
PatrickMcGinnisII: I'll start small
PatrickMcGinnisII: I'll pull out the java next moonth. ;)
BlaiseEbuth: Hmm. No minimal impulse on wall collisions, but what about poles?
PatrickMcGinnisII: sogeti up to 101 people, good ... too bad I'm lazy there too
Astrobytes: leaderboards working again :tada:
ja_fica: :grinning:
69razer69: how to approve a contribution
eulerscheZahl: surprise, a new leader
jacek: sogeti wheres the leaderboard
Astrobytes: ah pb
eulerscheZahl: https://www.codingame.com/hackathon/sogeti-codefest-2021/leaderboard/global
ja_fica: MSmits where do you use AVX in UTTT?
jacek: :O
struct: with no spells
eulerscheZahl: 69razer69 first you have to find a contribution. when it says WIP (work in progress), it can't be approved
struct: probably its his fb bot that is rank 8 :D
struct: ja_fica I dont think he does
eulerscheZahl: then depending on your achievements you might not be eligible for approving
struct: He used to do win check with avx
struct: but lookup is faster
eulerscheZahl: clash approval: play 50 clashes
eulerscheZahl: every other type: reach level 20
PatrickMcGinnisII: wow pb4 got the physics on lock
eulerscheZahl: https://www.codingame.com/replay/573265910 when 0 sims is too much already and makes you timeout
BlaiseEbuth: I'm lost in the referee... :(
MSmits: it's very gripping
MSmits: once you start, you can't stop
BlaiseEbuth: :no_mouth:
BlaiseEbuth: Well, I gonna say that's "yes". Will not search for hours. -_-
MSmits: ja_fica I don't think i currently use avx in uttt
MSmits: there's not many opportunities for it
MSmits: I tried 2 things
MSmits: avx wincheck, was slightly slower than 512-sized array lookup
MSmits: parallelized inverse squareroot for UCB1
MSmits: was also slower
MSmits: than just doing a fast sqrt
struct: I tried parallelized ucb for c4 yesterday
MSmits: parallizing the sim is pretty much impossible
struct: I got same speed :(
MSmits: ahh
69razer69: whats 5% of 5025
ja_fica: yes fast sqrt cant be done in avx
struct: but I do something awfull to get status of the node
struct: to check if its solved or not
struct: avx2 doesnt have gather for 8 bytes
struct: So I need to do this
BlaiseEbuth: The 5% are the competitors 69razer69
struct: const __m256 status = _mm256_cvtepi32_ps(_mm256_srli_epi32(_mm256_i32gather_epi32(&nodes[nodes[current_node].first_child].score, _mm256_setr_epi32(7, 23, 39, 55, 71, 87, 103, 119), 1), 24));
struct: I get a previous variable that is 4 bytes
struct: then select the next 7 bytes instead
struct: but it will grab 4 bytes in total
struct: So I have to shift by right :D
MSmits: seems complicated
MSmits: ja_fica
MSmits: http://chat.codingame.com/pastebin/8562ef1b-f407-4150-9fdb-4cdfd945e9d3
MSmits: those are some basic functions i use in many bots
69razer69: lol i was wondering about a clash weirded out said that tax of 5025 is 5% and its turns to be 1.25
MSmits: if you know one that beats any of them let me know
dbdr: now we know your secret seed ;)
ja_fica: unions in AVX requires changing the type of the variable
MSmits: that is the seed i used to beat remi :P
ja_fica: xorshift ?
struct: counter seeding
struct: how dare you
struct: uint32_t seed = time(NULL);
MSmits: xorshift is an easy way to get reasonably good hash keys
ja_fica: nice
jacek: seed = time(NULL) ^ uint64_t(&main); kthxbai
MSmits: snippet from my D&B bot:
dbdr: lol
MSmits: http://chat.codingame.com/pastebin/1072a996-ee37-4a88-a1fb-f42232ed4511
MSmits: h and v are horizontal and verticla lines
MSmits: i xorshift the h
MSmits: can also do both
MSmits: but 1 works fine in this case
ja_fica: you dont store log and sqrt results in precomputed values?
MSmits: heh, that's a sad story
MSmits: I used to always do that
MSmits: and searched forever for a way to stop, because it's so annoying
MSmits: but never found a faster way
ja_fica: yes
MSmits: it's really annoying because you need to artificially cap it
struct: I also stopped doing it
struct: its not worth
MSmits: too many sims and you crash
ja_fica: I prefer thomson sampling focer UCT
MSmits: what does that do
ja_fica: over*
MSmits: and why prefer?
ja_fica: its a better formula to converge into better results in less rollouts
MSmits: why doesnt everyone use that?
ja_fica: the problem is that the math to calculate it is slower
MSmits: I see
ja_fica: leads to less rollouts
eulerscheZahl: my rollouts are low for other reasons already
ja_fica: and you cannot precompute it all
eulerscheZahl: thus some more math is ok
MSmits: so it's worth it when the random sim, or your eval is very slow and selection is not a bottleneck
struct: This is why I have lots of rollouts
struct: i dont use UCT
Astrobytes: if the tradeoff is worth it then I guess it works
MSmits: what do you use?
BlaiseEbuth: I use the force.
dbdr: always select child 0. it's fast!
struct: rand()
MSmits: ??
Astrobytes: I use the Schwartz
eulerscheZahl: you do completely random rollouts struct?
ja_fica: that makes no sense xD
struct: im joking msmits
MSmits: thought so
struct: euler no
struct: I make smart rollouts
eulerscheZahl: :/
eulerscheZahl: don't troll me
struct: Im serious
BlaiseEbuth: There's no trolls there.
dbdr: mine is struct + https://xkcd.com/221/
MSmits: struct, use emotes are every message
MSmits: after
MSmits: to help euler
MSmits: (and me)
dbdr: except my dice said 0
struct: I also make smart rollouts in uttt and bt
eulerscheZahl: 0 is better in case you have less than 5 children
dbdr: yes, it's fast AND safe!
MSmits: 1 is better if the first child is a brat
RohitKaushal: can i set the difficulty and number of questions in Clash of code?
eulerscheZahl: no
struct: also yesterday/today I shaved 10 nanoseconds from my rollout
eulerscheZahl: you can set the number. that's equal to the amount of participations
struct: massive gains
struct: it went from 290ns to 280...
MSmits: 3%
RohitKaushal: it is always one question
struct: I saw a replay where I had 4.5M visits in the root
struct: on first turn
eulerscheZahl: exactly. play twie for 2 questions
struct: but rest of the cpus give me 1M less
MSmits: yeah that's around the range of the cpu speed
MSmits: 3.5-4.5
dbdr: if (badCPU()) {
// Hopeless assert(false);
dbdr: }
Astrobytes: lb frozen again?
eulerscheZahl: ping staff, they like it
dbdr: yes, it seems :(
ja_fica: Its hard to analyse but it converse faster
ja_fica: https://aijunbai.github.io/publications/NIPS13-Bai.pdf
ja_fica: *converge
eulerscheZahl: *converges
MSmits: nice, i should probably use something like that for local meta mcts
eulerscheZahl: you guys share so many interesting papers. one day i should start collecting these links
MSmits: yeah :)
struct: I collect the links
struct: but thats about it
MSmits: they are in my favorites
MSmits: but
MSmits: so much is in there
MSmits: I think I have 4 links to your heroku apps euler, probably duplicates
eulerscheZahl: :D
struct: is othello simple to sim?
MSmits: it is if you steal a sim off google
MSmits: which is what most of us did
MSmits: there's some great avx functions
MSmits: let me see if i can find the one i used
reCurse: zotero is pretty good to keep papers
MSmits: https://www.hanshq.net/othello.html#bitboards
MSmits: middle of the page
MSmits: no not middle
MSmits: Game Representation: Bitboards
MSmits: and
MSmits: Move Generation and Resolution
MSmits: I also used a little bit of stuff off the great open Edax bot
MSmits: i think it was called Edax
MSmits: not sure
MSmits: you can find that on github
struct: thanks Ill check it MSmits
MSmits: np
MSmits: edax is a giant rabbit hole btw. It also uses that stuff dbd r uses
MSmits: dbd r is the strongest non-NN bot I think
Astrobytes: multi probcut
MSmits: yes that
MSmits: though it's very similar to working with a NN as he also trained 300k params or something
jrke: finally i pruned and optimized my solver
MSmits: cool
jrke: and added something in early game to keep less chains
MSmits: it needs to be used later too, i found, most of the formation of loops and such happens between frame 40 and 55 i noticed in games vs Marchete
jrke: but still i take lot of time to solve
MSmits: do you hash?
MSmits: and use ab ?
jrke: transpotion tables are there but the problem is no bitboards
MSmits: oh i see
MSmits: mine is now completely bitboarded
jrke: i represent a state by a string of lenght 196
MSmits: a string!
jrke: which is very heavy
MSmits: strings are very very slow
jrke: yeah ik
MSmits: my state is two uint64_t
jrke: there are few more things like that need to optimized
MSmits: one for vertical and one for horizontal lines
jrke: yeah you told that
MSmits: http://chat.codingame.com/pastebin/39779f06-d32e-4b49-8fa4-acccf5bd8b50
MSmits: lower and upper are for storing lower and upper limits in TT
jrke: grt
MSmits: when they are equal, it's an exact value
jrke: i have introduced some bug during optimization lol
MSmits: the difficult part of using ab + TT is the turns when you have to choose to keep control or take the boxes
jrke: look at output
jrke: G7 R MSG 53 - -4 = WIN
MSmits: all boxes ?
jrke: my best score = 53 opp best score = -4
jrke: lol
MSmits: seems like sign error somewhere
jrke: not all boxes its bug
jrke: yes looks like that only
MSmits: btw i made too many assumptions in my earlier solvers
MSmits: some exceptions in 1 out of 1000+ cases
MSmits: the only two assumptions you can really make is that smaller chains are better than longer chains and smaller loops are better than longer loops. To offer i mean
MSmits: but a 2 chain isnt even always better than a 3 chain, apparently
jrke: yes that what i pruned from yesterday
MSmits: only when it's a simple loony endgame
jrke: smallest chain and loop
MSmits: yes but make an example for chain1 and chain 2
MSmits: chain 1 is always better than 2
MSmits: but 2 is not always better than 3
MSmits: because 3 has the control switch option
MSmits: and intuitively i assume that always makes it a worse move than 2
MSmits: but it doesn't
MSmits: only on simple loony endgames
jrke: that chain 2 also have control switch if you do not play middle line
MSmits: sure, ok, but don't do that :)
MSmits: not playing middle line is a loony move
MSmits: always bad
MSmits: anyways those cases where playing 3 chain is better than offering 1 or 2 are super rare
jrke: in that case even god wants you to lose lol
MSmits: probably
MSmits: I think these are cases where the winner is already decided and you're just trying to get the best margin of score
jrke: ah
MSmits: but it's hard to say anything for sure. I just try each assumption with million + randomly generated boards
MSmits: with and without the assumption they should all have the same result
jrke: yes
MSmits: otherwise it's a bad assumption
MSmits: but many of these assumptions are mostly good except in 7 cases or something.... out of a million
jrke: do you have any assumptions for non loony games
jrke: i mean having joints
MSmits: ah
MSmits: well yes, but very few
MSmits: isolated 1 chain always better than isolated 2 chain
MSmits: only play smallest chain that is 3 or larger
MSmits: so dont play 4 if there's a 3
MSmits: same for loops
MSmits: play 4 if there's also a 6 or 8
MSmits: for stuff that's connected to joins you can do the following
MSmits: if there's a grounded 1 chain and a grounded 2 chain connected to the same join, play the 1
MSmits: same for larger chains, play 3 instead of 4 or 5
MSmits: if connected to join and otherwise grounded
MSmits: but dont play 1 instead of 3... that's uncertain
jrke: ohk
MSmits: i dont use these join-rules in my current solver
MSmits: but they are correct
jrke: is there any formula which directly calculates loony games value?
MSmits: it takes a lot of calculation to check for this and i am currently unsure how to do it with bitboard
jrke: just having loops of all size and closed chains
MSmits: jrke yes but only if there are no joins
jrke: yeah only loony
MSmits: i shared it before didnt i?
jrke: closed chains and loops
jrke: i think it was just for loop of size 4 right?
MSmits: no
jrke: http://chat.codingame.com/pastebin/3536899d-1ad3-4f09-9e70-e9ab1aa0699f
MSmits: for all loops and all chains
jrke: this one^
MSmits: yes
MSmits: ll means looplong
MSmits: so 6 and 8 and 10 etc.
MSmits: cl means chainlong
MSmits: it doesnt matter how long, just long
MSmits: >3 for chains
MSmits: >4 for loops
jrke: so its ll is count of loops or count of boxes present in all loops?
MSmits: count of long loops
MSmits: the boxes are also taken into account
MSmits: but thats in the other variable
MSmits: "b"
jrke: so l4 = count of loop4 ll = count loop>4
MSmits: in a sense it doesnt matter if you have a 5 chain + 8 chain or 4 chain + 9 chain
MSmits: it matters that you have to give up 2 boxes twice
MSmits: not how the boxes are distributed over the long chains
MSmits: yes jrke
jrke: c3?
MSmits: chain of 3 length
jrke: ohk
MSmits: cl is the rest of the chains, longer than 3
jrke: cl means >3
jrke: ohk
MSmits: yes
jrke: and what about chains < 3
MSmits: i take them into account separately, sec
MSmits: http://chat.codingame.com/pastebin/4f49d174-c9aa-474b-a964-4cc34d5f2d7b
MSmits: chaincount[0] are chains of length 1
MSmits: chaincount[1] are chains of length 2
MSmits: it's a bit poorly coded
jrke: np
jrke: and what does b denotes for
MSmits: i have a better version now, but it doesnt combine with the other function i shared
MSmits: boxcount
jrke: or what is it for
jrke: boxcount of what?
MSmits: just how many boxes unfilled
MSmits: uncaptured
jrke: in complete board?
MSmits: int boxes = c.c8.boxCount - totalShortBoxes;
jrke: having all loops and all chains
MSmits: boxcount is the total boxcount left
jrke: ohk
MSmits: boxes is the total boxcount left minus the short chain boxes
MSmits: the weird c.c8 naming is because of the union i used before
jrke: so
jrke: http://chat.codingame.com/pastebin/2d186089-ba7f-4a4f-8a10-d6883bec7fca
jrke: this func is enought to get value of loony games
MSmits: no
MSmits: you need the giant one
MSmits: it's calling that one
MSmits: thats the controlled value
MSmits: not the exact game value
jrke: oh yes
MSmits: the controllled value is the value of the game when you never give up control
MSmits: sometimes it is beneficial to give up control
MSmits: thats what the giant function determines
jrke: oh
MSmits: btw it's large, but it's not slow
jrke: yeah i can see
MSmits: i created a 6k array lookup to replace both those functions
jrke: if else and maths
MSmits: and it was slower
jrke: c.c8.loopCount[1]
MSmits: that's a chain of length 2
jrke: is this loop of size of 6?
MSmits: oh
MSmits: wait
MSmits: yes
MSmits: loopcount[0] and loopcount[1] are loops of 4 and 6 yes
jrke: and c.c8.loopLongCount loops bigger than 6 or 4?
MSmits: yes
jrke: >6 i guess
MSmits: but for the function it doesnt matter if they are 6 or 8
MSmits: thats why 6 is added to looplong
MSmits: it did matter for other things, or so i thought
jrke: so you add 2times loop chains
jrke: of size 6
MSmits: no 1 time
MSmits: te looplongcount does not contain loops of 6
jrke: ah my bad
MSmits: so i need to add them before using the function
jrke: i misunderstood
MSmits: this is because my previous solver had a special case for loops of 6
jrke: oh
jrke: is this from kevin buzzard paper?
jrke: or your own mind
jrke: ?
MSmits: yes this whole function comes from there
jrke: oh
MSmits: i took all his rules and put them in
jrke: grtt
MSmits: you can even check the comments, it says "theorem 10" and all that
jrke: even i read that pdf many times but never understood completely
jrke: now it looks understandable
jrke: thanks
MSmits: well the rules should be understandable
MSmits: the proofs are a different thing
MSmits: dont worry too much about those
MSmits: np
jrke: values are me-opp right?
dbdr: what if you find a mistake in the proofs though? ;)
MSmits: they are the net score of the rest of the game
MSmits: so say there are 30 boxes left
MSmits: and the value is +2
jrke: got it
MSmits: then you will get 16, he will get 14
jrke: my value = 30+2/2 opp value = 30-2/2
MSmits: that's quick
MSmits: need some parenthesis but damn
MSmits: quick study
jrke: yeah
MSmits: dbdr if there are errors I will see it on the leaderboard :)
dbdr: :)
jacek: hm?
MSmits: btw jrke there's two parts to this
MSmits: 1 is determining the value of the game
MSmits: most important for the solver
MSmits: but 2 is getting the actual move out of a simple loony endgame
jrke: and another?fetching best move?
MSmits: there's also rules for that in the paper
jrke: np i will read it again
jrke: btw Aug 18, 2020 8:14:45 AM - first time when i submitted bot for D&B
jrke: its soon going to be an year
MSmits: yes almost a year ago
MSmits: 7% of your life
jrke: :grin:
MSmits: you're the craziest 14 yr old i have ever met. But jealous about what you can do that that age
MSmits: it's amazing
Astrobytes: +1
jrke: lol
MSmits: I think when i was your age I was trying to save princess Zelda
MSmits: also important, but still
jrke: :relieved:
jrke: world changes!
MSmits: there's still people of that age trying to save princess Zelda though
jacek: the future is now old man
jacek: and they think zelda is that green guy :unamused:
MSmits: thats Link!
Astrobytes: link?
dbdr: Startrek
Astrobytes: jeez, surely they can't get those two mixed up
jacek: https://www.youtube.com/watch?v=bxqLsrlakK8
MSmits: yes the elf main character
Astrobytes: I know who Link is!!!
MSmits: lol
dbdr: :D
MSmits: haha jacek, i didnt get rickrolled. I got an ad :P
MSmits: jokes on you
MSmits: and me for watching that ad
Astrobytes: I don't click his youtube links
MSmits: wise
jrke: my time to sleep
jrke: b-bye gn
MSmits: gn jrke
Astrobytes: gn jrke, take care
jrke: stay safe!
reCurse: Today in AI news: AI develops hubris, promotes 4 knights in a row to troll the opponent and fails to find the mate on a lone king.
MSmits: lol
Astrobytes: :D
dbdr: way to go!
jacek: hubris?
reCurse: I wish I was joking :sweat:
MSmits: it's more funny if you're not :P
reCurse: It's funny until you try debugging it
MSmits: true...
reCurse: Well I could expand a queen promotion first
MSmits: i have no idea how to debug something like that if it comes out of a NN eval
reCurse: But where's the fun in that
jacek: but how one can promote 4 things in a row
MSmits: 4 diff pawns
reCurse: Had 4 pawns left
reCurse: Promoted them all to knights because reasons
reCurse: Couldn't find the mate
struct: opponent should have resigned
reCurse: Because I only have 5 men TB
MSmits: finding the mate is a hard thing in general for a NN. Because of the low search depth
dbdr: apparently, no need to resign, it's a draw ;)
reCurse: It shouldn't be
dbdr: obviously
reCurse: No I mean
reCurse: It shouldn't be a hard thing to find for a NN
MSmits: i guess a good policy should help you
reCurse: The concept of space should be helpful there
MSmits: value network is useless for it
reCurse: See the value was dropping over time
reCurse: Because it saw the 50 move rising
reCurse: So there was space for it to have a win except it didn't
MSmits: oh 50 moves no capture
reCurse: I barely understand how it's playing as it is
jacek: dont we all
reCurse: Minimax is just cold tactics
reCurse: You can sort of reason around it
MSmits: not when its results are based on action 10 turns deep
MSmits: at least i cant
reCurse: Yeah but it is still the best evaluation at a fixed depth
MSmits: true
reCurse: Like you know there's no other combination that scores higher
reCurse: So you have some sort of fallback
reCurse: If it didn't pick another line it's because its score was lower
struct: could have been worse, it could have promoted to 4 same color bishops
MSmits: but that should be the same for the NN
reCurse: I still can't find an intuitive grasp on mcts and nn
MSmits: oh right, mcts
martinpapa69: NN is mAgIc
MSmits: yeah mcts is tough like that
jacek: friendship is magic
jacek: therefore nn is firenship
reCurse: So it's insanely difficult to debug
ANONYMOUS42: 🤯
MSmits: i think there are 2 separate issues though. First that you have mcts, that can cause you to miss traps and such and then the NN where you have no idea what the eval does
reCurse: I mean it does some things right obviously
reCurse: It's just very hard to follow
MSmits: yea
reCurse: I still intensely dislike the score average of mcts
reCurse: But the value is too unstable to "minimax"
jacek: use jacekmax [solved]
MSmits: well there's enhancements to mcts, did you look at all of those?
reCurse: Many of them
MSmits: i'm sure some of them are about this
reCurse: Most of my intuitions have been wrong so far
MSmits: well that's ok, but if you notice the things that dont disgust you perform worse, you really need to let go of the disgust of the best method :)
reCurse: Isn't that the whole point of trying stuff
MSmits: yeah, so you can feel ok about using what you use, even if you never changed it as a result
MSmits: and maybe you get lucky and do find a better way
MSmits: problem with going with what experts recommend is that that makes it harder to find improvements
reCurse: I'm not sure what you're responding to I was just ranting in general
MSmits: I am co-ranting
reCurse: Hit a little hard plateau and it's not obvious how to tackle it
MSmits: are you sure you're not nearing the limit of what you can do with CG limitations (assuming those are still the limitations you use)
reCurse: Well I'm looking into 1 core CPU only
reCurse: With 1 sec/move or around that
jacek: hyperparams tuning?
MSmits: training time might also be a limitation
reCurse: So there's a tradeoff that sort of indicates what can actually work
reCurse: I am speeding up research by exclusively going back to SL for now
reCurse: It's been translating well to RL so
MSmits: ah ok
jacek: you sound like using SL is a disgrace
reCurse: It's kind of cheating
reCurse: But it helps finding stuff
MSmits: I like it for when exact values are known
MSmits: not for copying expert play
MSmits: like you're using it to train an endgame solver
jacek: im using SL to copy 'expert', which was train on RL. is it still SL or RL?
reCurse: Find someone else to troll
jacek: :(
dbdr: SRL
jacek: i mean the RL with more rollouts becomes expert for the SL
MSmits: yeah you did that before
jacek: and it works
MSmits: and it's similar to the azero method isnt it
MSmits: fitting to the results of the previous iteration
reCurse: azero uses no SL from data it didn't generate
reCurse: Hence the zero
MSmits: i know
reCurse: RL is SL from data you generated
MSmits: yeah
reCurse: Let's not troll with semantics
jacek: it is more self-supervised learning than real rl eh
MSmits: well personally I did not have this realization before
MSmits: did not think about it that way
reCurse: The problem with NN is it develops general knowledge
reCurse: When an obscure tactic comes up it's difficult to find it
reCurse: It correctly evaluates the first few moves to be unlikely which makes it probability of exploration pretty much 0%
dbdr: I thought that sentence would continue differently
reCurse: ?
dbdr: :disappointed:
reCurse: Alright that was a warning kick
reCurse: The rest are ban
reCurse: How different dbdr
dbdr: The problem with NN is it develops general knowledge and then it wants to kill all humans
jacek: oO
reCurse: Oh
dbdr: don't mind me ;)
eulerscheZahl: and you started the message with a space. that will highlight it in your chat logs
reCurse: ?
dbdr: appropriate
123abc123: How y'all doing today?
eulerscheZahl: 3 2 1 ...
reCurse: Bye
mhasel: hi folks. I'm trying to change the programming language from C# to C++ but I can't seem to find th option to do so. Can somebody help me out?
jacek: its above the IDE
eulerscheZahl: https://prnt.sc/1hv8y29
mhasel: Was looking around in the profile/quest map. never would have figured this out, cheers
jacek: what experience lead you to use c++ instead of c# ;o
jacek: :scream:
eulerscheZahl: you prefer C++ too jacek
jacek: because its faster
mhasel: also would like to dabble in chess programming
mhasel: where performance is paramount
eulerscheZahl: outside of CG what's your language of choice?
jacek: woah python is 9th in chess
eulerscheZahl: good news then: we have chess: https://www.codingame.com/multiplayer/bot-programming/chess
dbdr: expression "outside of CG" unclear, please explain
jacek: in work i use java/kotlin android
eulerscheZahl: oh, interesting. i should ask people more often to learn something about them
mhasel: still a student, mostly used C# and C, I kinda feel like C++ is the best of both worlds
mhasel: so I wanna get into it
jacek: euler, try random DMs like mk
eulerscheZahl: we should discuss that on teamviewer
Maxim251: #mhasel, You should try, but there is a lot of learning
Pramatarov: In everything have a lot of learning
AntiSquid: teamviewer? why no remote PC controller ? far more versatile
aetrnm: You guys not familiar with discord and chrome remote desktop ^^
Astrobytes: It was a meme related to another user.
Pythonator: @Tsloa, nice solution mate
Tsloa: @Pythonator cheers :) i was trying to declare a function with console .log and do an if elseif but it didnt work then i though of tha
vysotsky: shortest mode = cancer
Proktophantasmist: code golf is fun
IlIlIlIIIllIlI: fastest or reverse when the answer is like x+1 is cancer
Sulzbach: its sad to see that a factor of deciding the best code its his size
Sulzbach: a good code its a code ment to be read by humans, even more then to the machine
FalINTOblivion0112: I agree
Sulzbach: i wish i could finish my code even when the time has ended though lol
therealbeef: requiring human readable code is not entirely true for competitive programming; it's all throw-away code we write here. which is part of the fun
Sulzbach: Oh, I got it now, but I confess im afraid of doing that type of bad practice at work if i play this to much haha
therealbeef: true :)
FalINTOblivion0112: I SOLVED MARS LANDER EPISODE #
FalINTOblivion0112: LETS GOOOO
FalINTOblivion0112: *Episode 3
FalINTOblivion0112: I have to show this to wontinomo
FalINTOblivion0112: AHHH CAVE DWELLER I FEEL SO OVERPOWERED
Jon_vibes: We vibin up in here?
KatMan911: just here for some hard CoCs
IlIlIlIIIllIlI: my CoC is shorter than yours oh wait
KatMan911: True. AND you probably also finish quicker, don't you? Go you! :D
Pythonator: @EdwinJagger, nice work