Chat:World/2021-07-31

From CG community
Revision as of 05:29, 1 August 2021 by Chat Log (talk | contribs) (Created page with "<img src=/a/65081889941512> Peached: i just woke up and got promoted 2 leagues at once <img src=/a/65081889941512> Peached: -3vel op <img src=/a/63052365393434> jacek: happy...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Peached: i just woke up and got promoted 2 leagues at once

Peached: -3vel op

jacek: happy Caturday

Default avatar.png Maxim251: how return value from tree search?

Default avatar.png 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:

Default avatar.png ikustom: 😂

Default avatar.png Maxim251: @dbdr I try pass number to child node. But later I figureout that I can do it by class constructor.

Default avatar.png 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:

Default avatar.png Maxim251: With this tree aproach, I save memory for tree, because only one branche is created, and deleted before creating next one....

Default avatar.png Maxim251: But what You can recive is only return value,

Default avatar.png 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

Default avatar.png Maxim251: And in the end, I need care to delete all branch.

Default avatar.png Maxim251: my self..

Default avatar.png Maxim251: I found nice tutorial about binary search... https://www.youtube.com/watch?v=8nCDvuNOWNU&list=PLTxllHdfUq4d-DE16EDkpeb8Z68DU7Z_Q&index=6

Default avatar.png 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

Default avatar.png SoWhatMan: Reported?

Default avatar.png SoWhatMan: where?

Astrobytes: Bug Report channel on the Discord

Default avatar.png SoWhatMan: thank youi

Default avatar.png 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

Default avatar.png 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)

Default avatar.png 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.

Default avatar.png Maxim251: UFFF..

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

Default avatar.png 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

Default avatar.png RohitKaushal: is there.. it automatically takes me to a game with random players..

Default avatar.png 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

Default avatar.png RohitKaushal: oh thanks ..

eulerscheZahl: https://imgur.com/a/wvEi0jH

eulerscheZahl: or there

Default avatar.png RohitKaushal: ❤,

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

Default avatar.png MinthangML: hello world

Default avatar.png Anonymousrate: hello

Default avatar.png MinthangML: where r u from?

struct: Spain

Default avatar.png MinthangML: I'm from Myanmar

Default avatar.png MinthangML: do you know Myanmar

struct: no

Default avatar.png MinthangML: do you know Burma

Default avatar.png MinthangML: which language do you use?

struct: no, c++

Default avatar.png MinthangML: greate

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

Default avatar.png RohitKaushal: can i set the difficulty and number of questions in Clash of code?

eulerscheZahl: no

Default avatar.png RohitKaushal: :(

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

Default avatar.png RohitKaushal: how..

MSmits: 3%

Default avatar.png 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

Default avatar.png prateek2112: hello

Default avatar.png aman_garg001: hola

Default avatar.png 123abc123: Yo

reCurse: ?

Default avatar.png prateek2112: hi

Default avatar.png aman_garg001: loda

dbdr: :disappointed:

Default avatar.png prateek2112: bye

Default avatar.png prateek2112: bye

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

Default avatar.png 123abc123: How y'all doing today?

Default avatar.png prateek2112: Hello

Default avatar.png prateek2112: Hi

Default avatar.png prateek2112: Bye

Default avatar.png prateek2112: Bye

Default avatar.png prateek2112: fuck you all

eulerscheZahl: 3 2 1 ...

reCurse: Bye

Default avatar.png aman_garg001: hola

Default avatar.png aman_garg001: nith

Default avatar.png aman_garg001: so jao

Default avatar.png 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

Default avatar.png mhasel: ah, thanks

Default avatar.png 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

Default avatar.png mhasel: embedded systems :3

jacek: :scream:

eulerscheZahl: you prefer C++ too jacek

jacek: because its faster

Default avatar.png mhasel: also would like to dabble in chess programming

Default avatar.png 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

Default avatar.png mhasel: nice, thanks

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

Default avatar.png mhasel: still a student, mostly used C# and C, I kinda feel like C++ is the best of both worlds

Default avatar.png mhasel: so I wanna get into it

jacek: euler, try random DMs like mk

eulerscheZahl: we should discuss that on teamviewer

Default avatar.png Maxim251: #mhasel, You should try, but there is a lot of learning

Default avatar.png Pramatarov: In everything have a lot of learning

Default avatar.png Pramatarov: :)

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.

Default avatar.png 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

Default avatar.png Proktophantasmist: noOo

Default avatar.png Proktophantasmist: code golf is fun

Default avatar.png SoWhatMan: Rank view stoped

IlIlIlIIIllIlI: fastest or reverse when the answer is like x+1 is cancer

Default avatar.png Sulzbach: its sad to see that a factor of deciding the best code its his size

Default avatar.png Sulzbach: a good code its a code ment to be read by humans, even more then to the machine

FalINTOblivion0112: I agree

Default avatar.png 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

Default avatar.png 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


Default avatar.png ricknardo: LOL

Default avatar.png 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

Default avatar.png EdwinJagger: thanks