Chat:World/2022-07-06

From CG community
Jump to navigation Jump to search

Default avatar.png elie.f.asmar: hello

Default avatar.png elie.f.asmar: How do I collect Coding points (CP), I noticed recently that other users have a lower level than me, yet they have more CPs

5DN1L: https://www.codingame.com/help/rank

Ayza: look at the ranking page in your profile

Ayza: or the link 5DN1L sent

Ayza: probably the best way to get CP is bot programming and contests

Default avatar.png elie.f.asmar: thank you.

Ayza: you'll find many low levels but sweats at bot programming

Default avatar.png BabaYagaCELL: hey gussy

Default avatar.png BabaYagaCELL: hahaha

Default avatar.png elie.f.asmar: In clash of code, does 2nd or 3rd place score any points?

Default avatar.png elie.f.asmar: okay forget it I read the scoring concept

Default avatar.png Harry12302: boing

5DN1L: Automaton2000 what do you think of the other random chat generator bots here?

Automaton2000: i need to add it to the next level?

5DN1L: yeah they'll never be the same level as yours

Default avatar.png x8Sofie: hello

Darleanow: Hey 5Dn1L :)

5DN1L: hi Darleanow

Darleanow: how are u !!!

5DN1L: i'm good, thanks

5DN1L: how are you doing

Darleanow: I'm doing good too :)

5DN1L: great

Darleanow: i don't know what to do yet

Darleanow: i've tried multiple submissions for block the spreading fire but can't get a higher score :/

5DN1L: You're rank 19! :thumbsup:

Darleanow: yeah but i won't be first :'(

5DN1L: Automaton2000 will you be first?

Automaton2000: are you in the top 10

5DN1L: lol

Darleanow: i'm not in the top 10 Automaton2000

Automaton2000: what are the numbers in the same place on the same cell, but a pac can't cross the path of ...

Darleanow: wut

MSmits: wut Automaton2000

Automaton2000: hey guys, is it possible to have a bot that is a bit weird

MSmits: yeah, you Automaton2000

Automaton2000: you would have a chance

MSmits: indeed Automaton2000

Darleanow: Automaton2000 can you help me optimising my code

Astrobytes: Automaton2000 enjoyed the pacman contest clearly

Automaton2000: then you don't have any idea what the game is a bit like mad pods lol

Automaton2000: like, you can write a post, but there does not appear in the inputs

Automaton2000: but for now i have to do that

Darleanow: Automaton2000 you should help me first.

Automaton2000: you can use a list comprehension

MSmits: yeah do that Darleanow

Astrobytes: [solved]

Darleanow: Automaton2000 what breadth first search algorithm would you recommend me ?

Darleanow: xD MSmits

Automaton2000: if you don't know which one is the best

j4at: +random()*10 is actually smart :o

Darleanow: Can you tell Automaton2000 ?

Automaton2000: what if they are not good at coding

j4at: ops

j4at: Automaton2000

j4at: is actually smart

Automaton2000: i like how you can get it to work for me

Darleanow: i think that as you're code, you're the best at coding Automaton2000

Automaton2000: i don't care about that

Astrobytes: ooOOoo

Darleanow: Automaton2000 you should

Automaton2000: i would be in the leaderboard

Darleanow: self esteem is important Automaton2000

Automaton2000: from what i can see that

Darleanow: from the fact that you didn't helped me for Block the spreading fire Automaton2000 ...

Automaton2000: that's how i do sa

Astrobytes: :D

Default avatar.png Loris_z30: :rage:

Darleanow: Automaton2000 are you okay ?

Automaton2000: how do i see a youtube link. did you do

Default avatar.png Loris_z30: lol

Darleanow: Automaton2000 https://www.youtube.com/watch?v=dQw4w9WgXcQ&ab_channel=RickAstley

Automaton2000: but i guess its a way to put it in a different language

MSmits: Automaton2000 just told you to use SA Darleanow

MSmits: like i did

Automaton2000: my eval is bool hasplayerwon(int player)

MSmits: good eval

Astrobytes: is that a struc t quote?

MSmits: no idea, but i use this eval in uttt and c4

Darleanow: WAIT

Darleanow: HOW TF HE CAN RECOMMEND ME THIS

Darleanow: LIKE

MSmits: Automaton2000 what do you think of players that communicate in all caps

Automaton2000: if you're going to do that in this game

Astrobytes: he even gave you en eval

Darleanow: this one is a charm Automaton2000

Automaton2000: i think one of the tests provided in the ide

j4at: Automaton2000 help!!

Automaton2000: my point is that i don't want to go to bed

Astrobytes: :D

MSmits: real bots dont sleep Automaton2000

Automaton2000: i still can't get out of it

MSmits: just dont go in it Automaton2000

Automaton2000: could the validators in the repo not have been in a convenient format ffs...

Astrobytes: he's on good form today

MSmits: he could convince some random newb that logs in today yeah

MSmits: we've had this happen before, that someone thought he was a person

MSmits: it's very funny

Astrobytes: several times :D

j4at: Automaton2000 Est-ce que tu parles français?

Automaton2000: i think my bot is better than random

j4at: bruh

Astrobytes: j4at: join #fr and ask him there ;)

j4at: ow

Astrobytes: :D

Astrobytes: the #fr version is usually more amusing

MSmits: it talks about baguettes?

Astrobytes: no, it's just funnier (mostly)

j4at: it talks about surrendering :)

MSmits: Automaton2000 what do you think of :french_bread: ?

Automaton2000: [auto] you need at least 3 :taco:s to do a shakedown

MSmits: jeez, what did wontonimo do to automaton ?

5DN1L: he fed it too many tacos but no bread

MSmits: apparently

Darleanow: Automaton2000 what's your name

Automaton2000: yeah, it was a tough one

Darleanow: Automaton2000 can you hit j4at with a baguette pls ?

Automaton2000: i reported it on discord please

Darleanow: he deserves it Automaton2000

Automaton2000: not sure if thats a good way to get the solution

Darleanow: Automaton2000 the solution is easy : baguette+j4at = happy Darleanow

Automaton2000: unless you do a minimax

MSmits: Darleanow we had another Automaton before

j4at: AutomatonNN ?

MSmits: but he went nuts and kept spamming 1 player

MSmits: yeah

Darleanow: MSmits, built with markovify ?

MSmits: eulerschezah l what is the code of the contes to the bot?

MSmits: i am not sure, it worked a different way

j4at: Automaton2000 teach me how to beat recurse

MSmits: and it did different things

Automaton2000: with a lot of puzzles

MSmits: good advice

j4at: well, i need to practice i guess

Astrobytes: AutomatonNN was programmed to spam euler, it was hardcoded :D

MSmits: hardest I ever laughed on CG was when automatonNN started calling euler a noob out of the blue

Darleanow: ohhh i get how Automaton2000 builds his sentences

Automaton2000: what language are you using?

Darleanow: this is so clever lmao

Darleanow: so basically, everything we say could be used against us...

MSmits: indeed

Darleanow: (or we could make Automaton2000 do bad things)

Automaton2000: the code is not working for me

j4at: Automaton2000 get good noob

Automaton2000: if they are in the same time

Astrobytes: he's capable of those bad things by himself

Darleanow: is he a bad thing already ?

MSmits: i dont think you have to talk to him directly to teach him bad things

Darleanow: Automaton2000 are you ?

Automaton2000: i think i have an idea

j4at: ik

Darleanow: tell me more Automaton2000

Automaton2000: i saw it in the arena

Darleanow: okay i'll try to catch it

Darleanow: Automaton2000, everything clear in the arena, give me another location

Automaton2000: i don't understand why it's not a bug

Darleanow: Automaton2000 i'm certain that i've searched correctly

Automaton2000: there are a couple of hours

Darleanow: Automaton2000, in how many days do you think i would be able to build someone like you (but better) ?

Automaton2000: ok, i thought it was a nice one

j4at: Automaton2000 this is an assembly only chat. Please use #en instead.

Automaton2000: i was thinking about what you have to be as fast as possible

Darleanow: Automaton2000 okay, i'll do as long as you in bed :p

Automaton2000: i'll try to look at the leaderboard

Default avatar.png tevaaa: Automaton2000 tu sais parler francais ici ?

Automaton2000: i don't know the details

5DN1L: no, it can speak french only in #fr

5DN1L: otherwise i'll kick it out

derjack: :upside_down:

Darleanow: :O

Darleanow: I held the Sword , and finde Titinius hart .

j4at: https://www.codingame.com/replay/649695224 I can't improve it anymore :(

j4at: seems like I will never get sub 10.8k

derjack: its simple https://pbs.twimg.com/media/EKaM6e-XUAATeWx?format=png&name=small

j4at: Kekw

j4at: I will try self recursion

derjack: have you tried notself recursion?

j4at: I like self recursion because it doesn't make sense to find a solution in O(1)

j4at: Same for human brain I can't see

problem and instantly solve it. I need  time.

j4at: Also self recursion doesn't have the same gradient problems as rnns and other loopy nns because you can start training it with low depth and then slowly increase it.

derjack: :drooling_face:

j4at: derjack this is my NN if you are interested about how to deal with variable number of inputs.https://i.ibb.co/M10jBjd/Screenshot-from-2022-07-06-09-17-51.png And yeah it doesn't use self recursion.

j4at: It was 105/210 instead of 192/384 before I started just copying the solutions instead of the NN.

j4at: Well this is a bad example because number of checkpoints is padded to 8. So you need to make a little change to make it work with number sizes that are not power of 2

derjack: noice

derjack: still putting all the checkpoints is quite overkill

j4at: go big or go home :p

derjack: wanna some challenge? clash of bots

derjack: you get 5x5 vision for each of your robots. but they are random

j4at: I will give a try

Default avatar.png Aldoggen: j4at I looked at the image you sent. is the idea that you deal with variable input size by always using the maximal input size you can get?

Default avatar.png SugarCoatedPencilCase_8462: 6

j4at: Well in this case padding makes sense, but I hate it bc most of the time people use it with mlps which is not dynamic enough in my opinion. My idea is not padding but merging normally I do it like https://i.ibb.co/TwD42fp/Screenshot-from-2022-07-06-09-49-54.png


j4at: Can also padd it to smallest power of 2 that is >= than the input size. or add extra element everytime I have 1 node left. Both are computationally less efficient. But yeah the main Idea is merging, which doesn't not only deal with variable input size but also generlise better because share weights between elements instead of having different weights for each element of the sequence.

j4at: Can also done for multidimensional input. for example for an image you want to merge 4 pixels together (2x2)

MSmits: interesting graph. When the number of layers goes up, the numbers of layers also goes up

MSmits: (scroll)

j4at: "When the number of layers goes up, the numbers of layers also goes up" huh?

MSmits: the pic jace k shared

MSmits: https://pbs.twimg.com/media/EKaM6e-XUAATeWx?format=png&name=small

j4at: ow yeah I didn't notice that :D

MSmits: it's funny

j4at: it's not even linear xD

MSmits: which makes it funnier

Default avatar.png Mauri_Z31: 5DN1L hs

darkhorse64: it looks like a Shadok (maybe too specific to french background)

MSmits: I am imagining a zombie carrying baguettes

darkhorse64: https://en.wikipedia.org/wiki/Les_Shadoks

MSmits: ahh i see

j4at: they removed pastebin? It's weird that they decided to that.

j4at: bc they are gonig to remove chat anyways

MSmits: it's just bugged i think, it has been bugged before

MSmits: they fixed it then, but i guess they wont bother this time

darkhorse64: CG chat is a wonderful place but is really buggy

MSmits: yup

darkhorse64: I'll miss discussion on NNs even though I only understand half of it

Astrobytes: just pester jacek on discord instead

Astrobytes: I know it won't be quite the same, I will miss this old chat

Default avatar.png MatteoS: o/

MSmits: me too

darkhorse64: It looks like I can access discord from my workplace. So, I'll be there lurking

derjack: no more trolling :(

Default avatar.png Mauri_Z31: Does anyone know whats the Name of the one guy from Stranger Things whos gay?

Default avatar.png DoubleCube_568c: hi

Default avatar.png x8Sofie: freddy

Default avatar.png Mauri_Z31: u sure?

Default avatar.png DoubleCube_568c: yes

MSmits: Willy byers

Default avatar.png Loris_z30: wil

Default avatar.png x8Sofie: :rofl:

j4at: Weird question to ask here. you could have googled it

MSmits: I did

Default avatar.png Loris_z30: knock kncok

Default avatar.png x8Sofie: whos there

Default avatar.png Loris_z30: your mother

j4at: Oo

Default avatar.png Aldoggen: oO

Default avatar.png Loris_z30: just kindding

Default avatar.png elie.f.asmar: kick them out

Default avatar.png x8Sofie: :scream:

Default avatar.png Mauri_Z31: them?

Default avatar.png Mauri_Z31: why?

Default avatar.png Loris_z30: why niqqa

Default avatar.png elie.f.asmar: the trolls and spammers

Default avatar.png Loris_z30: what is a java class?

Default avatar.png Mauri_Z31: where am i trolling?:joy:

Default avatar.png Loris_z30: Mauri_Z31 are you from Krankanaria AG?

Default avatar.png Mauri_Z31: Yes how do u know that?

Default avatar.png Loris_z30: because i hacked your IP

5DN1L: oh they've come back

5DN1L: don't spam or get kicked or banned

Default avatar.png elie.f.asmar: kick tehm

Default avatar.png Jolina: retz

Default avatar.png Loris_z30: ok sorry

Default avatar.png Mauri_Z31: elie.f.asmar why?

Default avatar.png Loris_z30: ok sorry

5DN1L: standard protocol: i've got to warn first

Default avatar.png x8Sofie: spam

Default avatar.png elie.f.asmar: ok

5DN1L: now i can kick!

5DN1L: kicked one

Default avatar.png Mauri_Z31: virgin

darkhorse64: This is the chat feature I won't miss

Default avatar.png Mauri_Z31: Big L

Astrobytes: may as well ban them

5DN1L: kicked 2

Default avatar.png Aldoggen: I think it's amusing

Astrobytes: indeed darkhorse64

Default avatar.png Loris_z30: why do you kick mauri niqqa

MSmits: it is for a while Aldoggen

Default avatar.png Aldoggen: well yup

Astrobytes: Aldoggen: it gets on your nerves after a few years

j4at: literally have z30 and z31 in their names.. new accounts and said the n-word. Instant ban.

derjack: NN-word?

Default avatar.png Aldoggen: that one is fine

5DN1L: banned z30

darkhorse64: I would have not been a good mod: instaban for all, no warning, no kick

darkhorse64: pure wrath

Astrobytes: certain ones got that treatment from me if warranted

MSmits: me too darkhorse64

Westicles: what country are they from?

MSmits: troll country

Astrobytes: Scandinavian?

5DN1L: many show Switzerland. not sure if it's real

MSmits: you now made it seem like scandinavia is troll country Astrobytes :P

Astrobytes: well I was thinking of the troll forests over there

Astrobytes: look it up

MSmits: ohh ok

MSmits: thats true, i saw a movie about that

Default avatar.png AbusiveFather134: Hey

5DN1L: what a name

Default avatar.png AbusiveFather134: It comes from my dad

Default avatar.png AbusiveFather134: So can someone help me

Default avatar.png AbusiveFather134: how can I do multiple replaces in javascript

5DN1L: try googling your solution

Default avatar.png AbusiveFather134: Already tried it

5DN1L: and while at it, replace your name as well

Default avatar.png Aldoggen: what did you find?

Default avatar.png AbusiveFather134: Weird syntax my browser is bad and wont find stuff do u guy know a good browser

Default avatar.png AbusiveFather134: I will never replace my name

Default avatar.png Aldoggen: of course it's weird syntax. it's js

Default avatar.png AbusiveFather134: Why does js suck?

Default avatar.png Aldoggen: because it was made to be as forgiving as possible

Default avatar.png AbusiveFather134: So like a coding noob language

Default avatar.png Aldoggen: I guess

Default avatar.png AbusiveFather134: Bann me

Default avatar.png Gati_Mate: :skull:

Default avatar.png Aldoggen: again from swizerland

5DN1L: yeah

5DN1L: i insta-banned one of them just earlier this week because i recognised their name and i banned them before

Default avatar.png Aldoggen: lol

Default avatar.png Aldoggen: no mercy

5DN1L: they should have mercy and let this chat have some peace in the first place

Default avatar.png Aldoggen: that's also a way of looking at it

Default avatar.png Aldoggen: you don't go jumping on a dying man's bed

Astrobytes: unless it's his last request I guess

Default avatar.png Aldoggen: lol I'm gonna remember that and ask my grandchildren to do that

Astrobytes: :rofl:

5DN1L: this chat requests spammers to come? :scream:

Default avatar.png Aldoggen: the more attention, the better?

Astrobytes: who knows what it does when it disconnects and we're not looking eh

5DN1L: i wanna say earlier than Aldoggen's description of "dying" fits this chat perfectly :P

5DN1L: that*

Default avatar.png Aldoggen: yeah :)

Astrobytes: indeed ti does

Astrobytes: *it

Default avatar.png Aldoggen: also the "stop, stop, he's already dead" meme

5DN1L: do you have any goals in mind on this website? like reaching a certain level? or reaching a certain league in X number of bot games?

5DN1L: or no goals at all except for having fun?

5DN1L: Aldoggen

Default avatar.png Aldoggen: me? I guess I'm mostly having fun

Default avatar.png Aldoggen: I also wanna learn, but the force that drives me has nothing to do with that

5DN1L: that's good :)

Astrobytes: watch out, it's a rabbit hole :)

Default avatar.png Aldoggen: hehe :)

Default avatar.png Aldoggen: I've made more unfinished projects than finished projects in the last two weeks

Astrobytes: ah you'll find a focus soon enough

Default avatar.png Aldoggen: now it's cyborg uprising and whatever comes up in chat lol

Default avatar.png MatteoS: how can i be not quicked from the french server

Default avatar.png Aldoggen: the girl's weight puzzle for example

Default avatar.png Aldoggen: behave MatteoS

Astrobytes: ^

5DN1L: or get banned

Default avatar.png Aldoggen: I heard MSmits say there was an O(1) solution. I just HAD to find it

5DN1L: that way you won't be kicked

Default avatar.png Aldoggen: lol

Astrobytes: I think its insta-kick for him in fr

5DN1L: MatteoS was kicked by str uct yesterday

MSmits: wasnt me Aldoggen

5DN1L: so i can ban if there's more breach of the code of conduct

Astrobytes: :)

Default avatar.png Aldoggen: I'm pretty sure it was you MSmits, but if you say so :)

Astrobytes: might have been Westicles, Aldoggen

Default avatar.png Aldoggen: ah

MSmits: I never said the words O(1) solution in my life

Default avatar.png Aldoggen: well I don't remember

Default avatar.png Aldoggen: well, you typed them at least once now

MSmits: yes

Astrobytes: congratulations :tada:

Default avatar.png Aldoggen: (sorry, trolling)

MSmits: it's ok, you scandinavian?

Astrobytes: I was about to write the same

Default avatar.png Aldoggen: belgian

Default avatar.png Aldoggen: hehe XD

MSmits: :P

Astrobytes: RAIC looks intriguing this year, 2 previews on the CG discord

Default avatar.png Aldoggen: royal architecture institute of canada?

MSmits: yes thats it

MSmits: super interesting those canadian royal scribblers

Astrobytes: lol, Russian AI Cup

Default avatar.png Aldoggen: lol

Default avatar.png Aldoggen: all right

wlesavo: Astrobytes oh nice, i even went to discord for this one :smiley:

Astrobytes: :D

Default avatar.png Mauri_Z31: How do i generate a ArrayList in Java?

MSmits: is ArrayList a thing specific to java? I never heard this when doing C++ and C#. it sounds weird to me

MSmits: is it an array or a list?

wediaklup: Do you mean a list of arrays?

Default avatar.png Mauri_Z31: Yes

Default avatar.png Nikanameu: it's an arraylist

Astrobytes: MSmits: equivalent in C++ is std::vector

Astrobytes: iirc

Mortis_666: ArrayList<type> varName = new ArrayList<type>();

Mortis_666: iirc

MSmits: Astrobytes that's just a list

Default avatar.png Mauri_Z31: okay thank you :)

MSmits: why would it be called ArrayList

Astrobytes: don't feckin ask me, I hate java :D

wediaklup: i looked a bit online and i found

wediaklup: List<String> list=new ArrayList<String>();

wediaklup: so i think the class is called ArrayList

MSmits: ok... but why :P

MSmits: when i talk about my dog I don't call it a MammalDog

wediaklup: i don't really understand that code

Astrobytes: I guess arraylist is a linked list, vector isnt

wediaklup: the type of list is List but it is initialised with an ArrayList

MSmits: hmm ok

MSmits: should have called it linkedlist then, arraylist is not descriptive

Astrobytes: hey I could be wrong

wediaklup: that sounds logical

Astrobytes: I think there is a linkedlist come to think of it

Astrobytes: who cares anyway?

MSmits: great

MSmits: good point

Astrobytes: :D

derjack: ArrayList is list which uses array under the hood

derjack: it isnt linked list

Astrobytes: there you go

Astrobytes: like vector, it uses array under the hood too

derjack: eeyup

MSmits: ok so... why is it not called List

MSmits: like in C#

Astrobytes: because its indexable like an array?

Astrobytes: (just guessing)

MSmits: so are C# lists

Astrobytes: this is java

Astrobytes: :P

MSmits: indeed

MSmits: I am just looking for some agreement that it's a stupid name

Astrobytes: I agree but I know more now than I did earlier

wediaklup: i agree

derjack: List is just interface

Astrobytes: Aha.

MSmits: what does it mean that it is just interface?

Astrobytes: that's the abstract base class for listy-things

MSmits: o

derjack: List<String> dupa = new ArrayList<>(). but if for some reason you need LinkedList or something else, dupa can be LinkedList<String>

Astrobytes: 'dupa' :D

MSmits: Isnt this like iList in C#?

derjack: and all you need to care about if it has add() remove() get() etc.

derjack: maybe

MSmits: so list in java is Ilist in C#

MSmits: arrayList in java is list in C#

Astrobytes: the I in front of things generally denotes an Interface does it not MSmits?

MSmits: yeah

MSmits: it's genius

Astrobytes: :rofl:

MSmits: I just found my uttt bot has a bunch of weird bugs in the sim that apparently arent bot-breaking

MSmits: i hope my bot doesnt get worse when i fix them

derjack: oO

struct: hi

MSmits: hi

Astrobytes: has to get worse before it gets better

MSmits: maybe so

struct: this is why your sim is so fast MSmits

struct: The bugs

MSmits: well you're actually correct

Astrobytes: :D

MSmits: these buys make the sim end prematurely

Astrobytes: doesn't sim anything; just pulls results out its a$$

MSmits: it saw a drawn board as a won board for either side

MSmits: yeah

MSmits: my uttt bot is 2.5k lines :P

Astrobytes: fixing that could definitely go either way

MSmits: yeah

derjack: wait, uttt provides state AND available actions?

derjack: why do i bother with sim :thinking:

struct: it doesnt provide current state

MSmits: because you want a search :P

struct: it provides last move

struct: and number of valid actions

derjack: meh

struct: and the actions

struct: yeah

struct: so yuo could do the same as green circle

MSmits: that would be a crap bot i think

derjack: nah, green circle provides full available state. for uttt i need to know what to do with the last state

derjack: last move*

struct: yeah

MSmits: just put it as input

MSmits: and keep a history of moves as input

MSmits: let it generate internal model, like muzero

Astrobytes: ezpz

derjack: i could use some rnn or lstm, so only that 1 input would be needed

MSmits: ezpz :lemon: sqzy

Astrobytes: lstm?

derjack: long short term memory

Astrobytes: ah ok

MSmits: thats what i said

derjack: actually that could be good exercise. recreate state based on provided moves one step a time

MSmits: pfft

Astrobytes: :D

Default avatar.png MatteoS: :peach:

struct: MatteoS this again?

struct: oh well

MSmits: to be fair, I did the lemon

struct: MSmits on hypersonic do you store the bombs on a bitboard?

struct: I was thinking on storing it like

MSmits: hmm, let me check

struct: U128 bombs; uint16_t bombs_data[128];

struct: but im not sure if this is ideal

struct: since I need a way to store range, owner and timer

struct: I dont really wanna have U128[4*8*max_range]

MSmits: it seems i store bomb positions in a 128 bit state, but also have bomb objects in an object pool that I reference like you would nodes in a mcts

MSmits: because these are unique integers, just the index of them is enough to uniquely identify and hash them

struct: yeah

struct: so I guess its similar to Bomb bombs_data[128]?

MSmits: mmh no

struct: 128 might not be needed

struct: hmm isnt this similar to mcts though?

struct: the bombs have the indexes because its the bitboard

struct: and the data would store the player, range and timer

MSmits: sec

MSmits: https://pastebin.com/qUF3YfLh

MSmits: Bomb bombCache[BOMB_MAX]; Bomb *nextBomb = bombCache;

MSmits: const int BOMB_MAX = 500000;

MSmits: so every bomb i make during a game is somewhere in that large array

MSmits: all i need is the index to it

struct: ah

struct: interesting

YurkovAS: i'm don't use bitbords in HS (and use int32 for every fields) and still in top20 :)

struct: Thanks MSmits

struct: nice YurkovAS

struct: Do you use avx on csb YurkovAS?

MSmits: YurkovAS you dont need to worry about peformance at all. Even when looking 20-30 turns ahead, my bot uses like 5 ms

MSmits: i use 70% or more of my calc time for some crappy minimax to avoid getting blown up by other players

MSmits: btw, i have a really weird gamestate as well struct

MSmits: my gamestate does not have a position for the player

MSmits: it has a map of possible positions that the player could be at and still be alive

MSmits: so transitioning from one state to the next is a floodfill on possible player positions

struct: I see you have put a lot of work int o it

MSmits: exploding bombs means taking area off this map (player could not have been there or he would have died)

MSmits: every time the player can place a bomb or pick up an item, a new state is created

MSmits: but not for movement

YurkovAS: struct i'm use avx only for "after turn phase: round, truncate, multiply 0.85": this give very small improvement

MSmits: yeah struct, avx is wayyy overkill

struct: I see, I have been trying to do avx on it for collisions

struct: so far I get between 500k-600k sims avg

MSmits: I cant compare as i do all possible positions at the same time

struct: I will try to finish it soon

MSmits: but I can often go 25 turns deep without filtering states with beamsearch

MSmits: so it full searches 25

struct: Avx is for csb MSmits

struct: not hypersonic

MSmits: ohhh ok

MSmits: btw, my method for HS is nice, until you try to combine it with avoidance/kill code for dealing with other players, then it becomes difficult

MSmits: it's a problem for everyone i think. You have this single player beamsearch that suddenly needs to have influences from other players

struct: If I do it I'll probably try to keep it simple

MSmits: sounds good

wediaklup: lol i debugged my bot but the debugging was the actual bug....

MSmits: GJ :)

wediaklup: i have a question about that line:

wediaklup: t = Game(self.grid.copy(), self.progress.copy(), self.cooldown)

wediaklup: with that line t shouldnt be able to manipulate the original object(self) in any way?

MSmits: i have no idea what copy does

YurkovAS: struct in csb i have fast collisions check: this give visible improvement https://www.codingame.com/replay/649731829

YurkovAS: this total summarrized statistics for turn s=simsCount, r=rolloutsCount but i'm use minimax style in csb: 2xmcts (myBlocker vs opRunner + myRunner vs opBlocker)

MSmits: yeah it depends a lot on the eval though. I think your eval is probably better

wediaklup: copy creates a copy of a list

5DN1L: https://realpython.com/copying-python-objects/

5DN1L: this may help

MSmits: my csb code is very old. I have no doubt it's not very performant

5DN1L: your code looks like it's doing a shallow copy

MSmits: I stil need to try and put the avx in

5DN1L: wediaklup

MSmits: but too much else to do

k1one44: o/

k1one44: @wediaklup for certain type of object in python copy or = keep the link with the root. in that cad deepcopy is your friend

wediaklup: thanks i forgot it were 2d lists

wediaklup: now it works :smiley:

5DN1L: :thumbsup:

YurkovAS: MSmits i'm think this is not fast eval. this is fast collisions check. You use cache for collisions in csb, pcr. I'm use other approaches: inaccurate, but fast and in total this give more sims (different in csb, pcr).

MSmits: ahh ok

MSmits: I dont think i use cache in csb

MSmits: I use cach in pcr

MSmits: cache was slower in csb

MSmits: but yeah trading accuracy for speed can be good

struct: need 1k points for top 100

struct: I wonder what I should do

MSmits: so far 26-13 fixed version vs old version uttt... but statistics...

struct: :thinking:

MSmits: hmm

struct: yeah 26-13 seems early to draw conclusions

MSmits: 32.5-15.5 now

wlesavo: struct CG Sponsored quite easy 2k

MSmits: is that the hidden game thingy?

wlesavo: yeah

MSmits: reverse engineer?

MSmits: ah

MSmits: it's fun struct

Default avatar.png DJWaterCooledComet_2c96: whats up nigaaaa

MSmits: :hammer:

MSmits: struct

struct: banned

MSmits: thanks :)

struct: well I could be lazy and do golf

wlesavo: one of my favourite actually, there are quite a few levels to go

MSmits: it's a lot of walking unless you have one of them carts

wlesavo: or clash =)

darkhorse64: http://apps.rezonux.com/codingame/ tells you where to win CP

struct: nice

MSmits: I can get 2 more cp in mad pod racing

MSmits: all i need to do is beat a bunch of NN and yurko

darkhorse64: It tells you that improving UTTT is useless

darkhorse64: :slight_smile:

wlesavo: oh, just noticed, my rank reached my lvl :smiley:

MSmits: for cp yes, but my obsession does not care about useless :)

MSmits: gj wlesavo

wlesavo: i think it mostly can happen only once, since it generally go in different dirrection, since there not that many ways to drop drasticaly in cp

darkhorse64: failing badly at a contest is one way to get a lower rank. Getting reckt by NN is less expensive

MSmits: just to be clear, failing badly at a contest is still better than not participating

wlesavo: darkhorse64 by failing you lose ~1500 cp by decay of the previous contests, it is rarely enough to lose one rank

darkhorse64: true. I just looked at my rank history. Over the course of 6 months, I had to score 10K CP just to maintain my current ranking and two accounts above me were deleted. Competition is fierce

wlesavo: oh, right, one way to lose rank is others improving

MSmits: wlesavo i lost 2 ranks from last contest and i ended 43rd :P

MSmits: it didnt help both the winner and nr 2 were right below me

derjack: hm my rank went up since last contest :thinking:

darkhorse64: The low participant number did not help too.

MSmits: wait no its jus valgrowth and nmahoude

Default avatar.png Will_Mason: Whats the best way to send someone my solution to a puzzle, because an employer wants to see some completed puzzles from me ?

MSmits: derjack that makes sense

darkhorse64: copy paste

MSmits: you did not have many contest points, so you get a massive boost from your end result

derjack: + another points from multiplayer

derjack: and im 100th :o

MSmits: sigh... i once again try rolling out from each child in uttt and it's again worse. I don't know why darkhorse64

nmahoude: Hello Msm

nmahoude: oups

MSmits: i have had so many bot versions and every time i try this it is worse

derjack: oO

MSmits: hi nmahoude sorry for ping :)

darkhorse64: Can't tell either

nmahoude: Hello MSmits, yeah the ranking from 18 to 20 is pretty close

MSmits: yeah

darkhorse64: My next target

derjack: if i cared about global rank i would be higher. community board games are not that rewarding~\

struct: you were 100th yesterday jacek

derjack: today too

struct: maybe I should give the entire state on backgammon

struct: just to give jacek a little help

derjack: and actions

struct: yeah

derjack: and states after every action

Astrobytes: no actions, no state, and *every single rule*

darkhorse64: last opponent actions is enough for me

Astrobytes: stick that in yer DQN and learn it :P

Astrobytes: seriously though, whatever works is fine

Astrobytes: valid actions and last move (or valid action count & last move at least) is cool

derjack: and sufficient

darkhorse64: current state, last opponent actions, dice roll and may be possible actions or number of possible actions if it's too large

derjack: yeah, amazons should tell the actions as well

Astrobytes: dice roll yeah, good point :D

darkhorse64: otherwise the referee would have a hard time guessing it :innocent:

derjack: does backgammon use SecureRandom yet

struct: yes

Default avatar.png markusssss: :expressionless:

MSmits: darkhorse64 when you do a full rollout in uttt, do you also do it for a free move? I am guessing this is why it is worse for me. The free move would get a ton of visits it shouldn't initially get

derjack: do you have some fpu or any idea about choosing best unvisited child?

derjack: rolling out all children may be worse because some of them are bad and they bias the parent

MSmits: fpu?

derjack: first play urgency

MSmits: well yes this is exactly why it is worse

derjack: normally in UCT unvisited child has infinity

MSmits: when i roll out from all children, they are all unvisited

MSmits: so they are treated equally

MSmits: then next time they all have 1 visit and you just use ucb1

derjack: meh

darkhorse64: Yes, I rollout all children regardless it's a free move or not

MSmits: it's a lot of visits for that node that is probably bad

darkhorse64: if it's really bad, it will not get less visits afterwards

darkhorse64: it will get less

MSmits: no, but you already wasted a lot of sims from it and biased the parents and grandparents

MSmits: i am not sure how bad this is, i am just thinking about it

derjack: i'd say guessing best first move is most important part

derjack: afte all tree has most leaves

MSmits: i tried going for moves that win boards first

MSmits: but wasnt better or barely better

struct: I also do full rollout

struct: for free move

darkhorse64: going full rollout leads to a massive simplification of the MCTS + solver + node allocation code. I would have to rewrite many things just to test this feature

darkhorse64: less is more

struct: my uct wouldnt work if visits == 0

MSmits: yeah thats annoying for me too

MSmits: switching between them

MSmits: i'll do a good test again, will let you know what i find

struct: Im going to waste my time on bt again

YurkovAS: MSmits something wrong after turn 53 https://www.codingame.com/replay/649757762

Default avatar.png Aldoggen: move 41 was also wrong if I understand this game right

Default avatar.png Aldoggen: MSmits could have won there

Default avatar.png Aldoggen: or was the bottom right square not accessible?

MSmits: thanks YurkovAS that is definitely a bug

MSmits: not accessible Aldoggen

Default avatar.png Aldoggen: all right

derjack: interesting https://arxiv.org/abs/2204.13307

MSmits: i dont think my solver is wrong though YurkovAS. It somehow picks the wrong move after resetting the search

derjack: they say they use value network but they have policy formula :thinking:

MSmits: ahh yes

MSmits: it is just wrong move selection

derjack: draws are tricky eh

MSmits: one child was solved as [0,0] and a bunch of others as [-1,0]. Instead of picking the guaranteed draw, it picked the one with worst case loss

derjack: oO

MSmits: well at least it's easy to fix

MSmits: i switched from the old solver to score bounded solver, it worked immediately. I should have been more suspicious :0

MSmits: it still achieved rank 8 though, with this bug and the other bug i found today. Not bad :)

MSmits: I see the problem

MSmits: [-1,0] result counts as unfinished, but the calculated value was above 0

MSmits: so it compares unfinished nodes with solved nodes and a drawn solved node counts as 0

MSmits: but i stop searching a -1,0 node because there is no point if you already have a guaranteed draw

Astrobytes: nice bug

MSmits: heh yeah, it is a nice side effect of this method you need to deal with

MSmits: now I have to figure out how to actually do the move selection properly. This is complicated lol

MSmits: many more combinations possible with score bounds

Default avatar.png Aldoggen: have fun :)

MSmits: a [0,0] is worth more than a [-1,0] and a [0, 1] is worth more than a [0.0] regardless of wins/visits

MSmits: darkhorse64 another question. When you full rollout, do you backpropagate the average result as 1 visit (so 1 visit and maybe a score of 0.502 or something)

MSmits: or do you backpropagate 5x win and 7x visits or something

darkhorse64: I don't perform averaging

MSmits: mmh ok yeah me neither

MSmits: doing 1k game test of full rollout vs single rollout atm

MSmits: so far 100 vs 150, not looking good for full rollout

MSmits: perhaps i have a bug, but then i had a bug every time i tried this

darkhorse64: I never performed any thorough tests. Wrote the thing, throw in the UTTT arena, saw it was good for me and never went back

MSmits: ahhh

MSmits: my problem is that i much prefer the full rollout version

darkhorse64: I do too because it avoids lots of checks

MSmits: maybe i should try doing single rollout when getting a free move

MSmits: I'll just give all the children 1 free visit to avoid the ucb1 going haywire

darkhorse64: I even went further for Bandas where I expand two levels in my tree in one iteration (16 full rollouts)

MSmits: yeah I know, i could not make that second layer work better

MSmits: but perhaps that is because of my endgame book

BlaiseEbuth: Hi there! How's your now?

MSmits: I hope it's worse than my later

Astrobytes: Better than my earlier

darkhorse64: I should really do that to cut rollouts but it's a low priority

MSmits: yeah i kinda did it mostly because i like to code that sort of thing

Astrobytes: not like you at all! :)

MSmits: :)

darkhorse64: Yeah, either you start reading a book or you end up reading a book

Astrobytes: heh heh

BlaiseEbuth: So much books. That's not really green

darkhorse64: They are recycled

Astrobytes: made out of wasp nests

BlaiseEbuth: Oh. My bad

Astrobytes: *empty

MSmits: my books are not green :P

MSmits: very wasteful

MSmits: better in the winter though

Default avatar.png meceka: Hi guys. I'm trying to solve algorithm challenges here. I have some knowledge from freecodecamp but even the simplest tasks here seems hard for me and I can't /do it. What do you suggest to me

darkhorse64: my new checkers engine is faster and I leapfrog the :fish:

darkhorse64: :fireworks:

MSmits: yay

darkhorse64: half of the bot is the movegen

MSmits: yeah i know, checkers is hard

5DN1L: meceka which task have you tried?

darkhorse64: I bitboarded the thing with a crazy pattern for the board.

darkhorse64: The 7-8th people are not far away. I should look for a better eval

MSmits: my eval is super simple

MSmits: i just count kings and men

darkhorse64: I rip mine from an opensource checkers program. Although the author says it's only a starting point, it is already quite involved (lots of positional elements)

darkhorse64: I am guessing my movegen speed is the major factor. I can eval 4M nodes/sec

jacek: so thats why im not 1st in checkers :rage:

darkhorse64: Not my fault, recurs e was already first when I submitted

Default avatar.png Aldoggen: his about page says he's retired from CG. he's still first in so many multis lol

jacek: impossibru

jacek: darkhorse64 is this cake

darkhorse64: checkerboard

darkhorse64: It comes with a "toy" checker program

darkhorse64: I stole the eval, the movegen is mine

darkhorse64: lots of sweat to make it work

jacek: it says its only gui? http://www.fierz.ch/checkerboard.php

darkhorse64: there's a checker program source code in the distribution

darkhorse64: http://www.fierz.ch/engines.php Simple checkers

jacek: you probably saw http://www.fierz.ch/cake186.php

darkhorse64: Yep. I do not think it's opensource

darkhorse64: Now in version 1.89

jacek: still you could probably fine tune your eval this way

jacek: ? https://github.com/eygilbert/CheckerBoard/blob/master/source/simplech.c#L756

MSmits: thats nice jacek. I might try that eval at some point

darkhorse64: I did but I simplify this awful code

MSmits: must be better than just counting kings and men

darkhorse64: It is

MSmits: my sim must be really fast to be 7th with it

darkhorse64: Just when you seemed within reach, you will escape again ...

darkhorse64: Or you have a good book

MSmits: no book

MSmits: never wrote meta mcts for checkers

MSmits: bot is just 839 lines

darkhorse64: I have no TT here

MSmits: same, i tried, was worse

MSmits: it's just mcts with ept

MSmits: no random, just eval

darkhorse64: Same with sigmoid function to normalize the eval

MSmits: i dont normalize

MSmits: seems like my eval does have some more

MSmits: it has a "tempo" feature that just gives a bonus for the player who's next to move

MSmits: and a mobility feature

MSmits: more score for more moves available

MSmits: wait no the tempo is how advanced the pieces are

MSmits: i have a separate turn bonus

MSmits: soooo many popcounts in my eval :P

darkhorse64: Your eval is not only material. It's bit more clever

MSmits: yeah apparently, i was thinking of my previous version, which was like 8th. This was a very minor improvement i think

MSmits: I wasted a lot of time on checkers, trying stuff, most didnt work

MSmits: it's also annoying that you cant really do an endgame book for this game

MSmits: it's too large

Astrobytes: endless hopping around

MSmits: well thats a different issue

MSmits: but yeah thats annoying too

struct: wont beat the popcnt i have on bt

struct: ok its not that many

MSmits: my eval for checkers does 33 times popcount

struct: 62 for bt

MSmits: nice

Tsak5422: hi

struct: hi

jacek: welp checkers has 2x less squares than bt

MSmits: but twice as many different pieces :)

struct: Im not even sure if I can write an eval for bt

struct: I just wrote random things

MSmits: me too

MSmits: seems full rollout is very clearly worse than single rollout. If I make an exception for free moves (do them as single), the bot becomes better, but still worse than single rollout

Default avatar.png GNye22: Uhhh I hate the optimization test cases....... My code for roller coaster isn't even that time-heavy, only uses 3 loops and still doesnt pass....

MSmits: 3 loops can be millions of operations

Astrobytes: and what happens with large test cases with increasing nested loops?

Astrobytes: that's what you m,ust think about

Default avatar.png GNye22: I only have a single nested loop in the code and thats for simulating each day and checking if there's room on the ride

MSmits: run it locally with the input provided for the test case, see how long it really runs

MSmits: maybe it runs forever, because it has a bug

Default avatar.png GNye22: So i'm guessing my issue is where I copy the ride queue into the line queue to ensure the same riders aren't getting on

Default avatar.png GNye22: Shit well that didn't work....

Default avatar.png GNye22: Any tips/tricks for optimizing java code? I already removed the checking of length from the for loop and stored it in a var beforehand and that shaved a few ms off, and condensed an if else into a single boolean expression, but I'm kind of at a loss of what else I can do

Nerchio: you probably need to use an array or map there

Nerchio: but i think i googled the solution

Nerchio: xdd

Default avatar.png GNye22: Do you think it could be because I'm using two objects? One for the coaster and one for the ridequeue?

5DN1L: have you implemented any cycle detection?

Default avatar.png GNye22: No, I haven't, not sure how I would go about that in this problem, I've never done it before.

5DN1L: try with a simple case first

Default avatar.png GNye22: What I don't understand is the large dataset one comes in under a second, so idk why it would realistically need to be optimized any further in the real world anyway

5DN1L: if you implement cycle detection, you can save a lot of loops and computing power :P

struct: if you wanna brute force rollercoaster

struct: use javascript

struct: is chat langing?

struct: oh maybe not

Default avatar.png slendersnax: hey guys, has anyone had issues with the c++ compiler?

struct: not really

struct: what problem are you having?

Default avatar.png Aldoggen: if it turned into a complainer your code has bugs

Default avatar.png Aldoggen: (sorry)

Default avatar.png slendersnax: nah, i thought so too so i copied the code over to another compiler online and it worked there?

Default avatar.png Aldoggen: what error message does it give?

Default avatar.png slendersnax: it was one of the certificate exercises, and had issues with the static_cast

Default avatar.png slendersnax: @Aldoggen none, it just wouldn't complete the test case as it showed it got "Nothing" as a result

struct: ah

struct: that happens when you print a space at the end

struct: or an extra \n

Default avatar.png slendersnax: i seeeee

Default avatar.png Aldoggen: a space would do something different

Default avatar.png slendersnax: well trying again in 30 days

Default avatar.png Aldoggen: it's an \n

Default avatar.png slendersnax: thanks

Default avatar.png Aldoggen: a space would compare the lines, and you'd see there was a space in your output

struct: is the site a bit slow for anyone else?

Illedan: ye

Astrobytes: Yes.

Default avatar.png slendersnax: a bit

Default avatar.png Aldoggen: just a tad

Default avatar.png Aldoggen: now it's back to normal

Default avatar.png Aldoggen: yall need better internet

Washier: good day

Default avatar.png Aldoggen: yo

Default avatar.png caneki: good night

Default avatar.png Aldoggen: caneki maybe it's time to go to bed then :p

Default avatar.png tevaaa: hey caneki i saw you in a clash

struct: I have no idea what i did but my code is calling the wrong function but the name is correct...

struct: oh I see now

Astrobytes: overloaded it by accident?

Astrobytes: or a templating thing?

struct: no since I copy pasted and the function calls itself

struct: it was calling the old one

Default avatar.png MAHER_AZZ: hh

Default avatar.png MAHER_AZZ: 1337

5DN1L: no spam please

Default avatar.png MAHER_AZZ: I'm not spamming

Default avatar.png MAHER_AZZ: The message I sent have meaning for some people

5DN1L: that's even worse

Default avatar.png MAHER_AZZ: :(

5DN1L: https://www.codingame.com/playgrounds/40701/help-center/code-of-conduct

5DN1L: if you spam again you'll get kicked or banned

Default avatar.png MAHER_AZZ: Can you please tell me why is that considered spam?

Default avatar.png MAHER_AZZ: I see 4 rules

Default avatar.png MAHER_AZZ: And I'm respecting all of those

5DN1L: "Don't spam nor flood the chat with non-sense, jokes or private discussions."

Default avatar.png MAHER_AZZ: I didn't flood but that's ok

Default avatar.png MAHER_AZZ: Now I know. thanls

Default avatar.png MAHER_AZZ: thanks*

DomiKo: struct what game are you doing?

struct: breakthrough domiko

struct: I want to try some stuff for early win check

DomiKo: cooll

struct: currently from 6th row its possible to check a win

DomiKo: I have to implement sim for that game :(

struct: I shared this before I think

DomiKo: maybe

struct: one sec

struct: https://pastebin.com/Z720xbK5

struct: If its the player turn

struct: and that returns 1

struct: then he has won

DomiKo: thanks, that will be useful

struct: you also need to check if player still has pieces

struct: but wouldnt make sense to add here

struct: since this one is to check before you move

struct: Im trying to make it work after you move it will be more usefull

struct: so basicly this one could be reversed and give hasPlayerLost after he has moved

DomiKo: make sense

struct: any progress on oware?

DomiKo: not really

DomiKo: my results now seem to be better, but when I submit it to arena, they aren't :(

DomiKo: I have to experiment with some memory optimizations

struct: I'm sure you will figure it out

DomiKo: or I will go back to C4

struct: You already got the hardest part

DomiKo: or I have like 3K lines of code with bugs :joy:

struct: you dont use framework for training?

DomiKo: ofc I use

DomiKo: I use pytorch

struct: ah ok

struct: I thought you went recurse path

struct: :p

DomiKo: what is recurse path?

DomiKo: write eveything?

struct: yes

DomiKo: writing my own optimizer... oh no no

DomiKo: I have like a lot of config stuff

DomiKo: so right now I have one binary and one yaml config file

DomiKo: you have to change stuff in config and that's it

DomiKo: press enter and wait some hours

struct: nice

DomiKo: but for CG I should make things a bit more static, not dynamic

DomiKo: that would be faster

struct: wdym by static?

DomiKo: no dynamic alocation and stuff

DomiKo: if you have fixed model, I believe you can just make huge array for weights

DomiKo: and then all weights will be close to each other in memory

struct: yeah access will be faster

DomiKo: and all you really need is optimizer your network

struct: You use avx in your framework right?

DomiKo: ofc

DomiKo: without it's like 6 times slower

DomiKo: and the same model is much much weaker

struct: could always rely on auto vectorization like jacek

struct: But I would probably do the same

struct: and avx it

struct: It should not be that hard

DomiKo: it kinda does work, but not that well

DomiKo: yeah it isn't

struct: i didnt even know that you can do __m256 a; __m256 b; a = a + b;

struct: on gcc

DomiKo: ohhh

DomiKo: cool

struct: if you use immintrinh.h

struct: It will cast it to __v8sf

struct: But I would not trust this

struct: I havent really tested it much

DomiKo: yeah, mixing some low level stuff with high level isn't the best idea

Default avatar.png brick33: hi

Joey_G: Does anybody know, when .net 6 will be available?

Default avatar.png Ruinous_Elixer: idk wdym

5DN1L: Joey_G ask here: https://www.codingame.com/forum/t/languages-update/1574

5DN1L: Usually languages are updates before contests

Default avatar.png Ruinous_Elixer: ?

5DN1L: are updated*

Default avatar.png nXoji: hello

Default avatar.png nXoji: :zzz:

Default avatar.png Gundam00Qant: :innocent:

Default avatar.png LicketySplits: if someone says hello world i kill u

Default avatar.png Aldoggen: what if I say goodbye world?

jacek: :dizzy_face:

BlaiseEbuth: xX

jacek: TIL i can use or and instead of || && in c++

jacek: makes it faster to copy paste code from python to c++

BlaiseEbuth: :scream:

MSmits: can you not set up some defines

MSmits: maybe you can make c++ code look like python :)

struct: yes jacek

struct: https://en.cppreference.com/w/cpp/keyword

Default avatar.png HenroLST: wait what

struct: or_eq :nauseated_face:

MSmits: wow really, i did not know you could do or

struct: even |= MSmits

Default avatar.png HenroLST: i feel enlightened

struct: with what I just said

MSmits: thats just weird

MSmits: or_eq is not better than |=

Default avatar.png HenroLST: this is so weird

MSmits: thats what i said

Default avatar.png HenroLST: in that case i cocncur

MSmits: I think i know what you said there

Default avatar.png HenroLST: hehe

struct: maybe you should use bitor instead of or jacek

struct: idk whats the difference

struct: ah

struct: | vs ||

struct: ok

struct: I need to forget this stuff

MSmits: yes that would be best

Astrobytes: aren't or and and deprecated in C++?

jacek: or are they?

Astrobytes: :D

struct: I think they did it to keep python programmers away

Astrobytes: lol

MSmits: today I found out my school wifi blocks netflix

MSmits: but it does not block prime and hbo

MSmits: kind of weird

Default avatar.png nic._.somthing01: sup bieatch

MSmits: so i can watch the boys but not stranger things

struct: maybe the blocked it before prime became a thing

MSmits: yeah, still seems a bit amateurish

MSmits: i mean why block them at all, when youtube is a thing

struct: and is it the school that blocks it?

MSmits: yeah

struct: here almost all schools share the same "system"

MSmits: not so here

struct: Its nice, the credentials work in any school

MSmits: yeah that can be nice

MSmits: testing fpu atm

MSmits: or a version of it anyway

struct: for uttt?

MSmits: yeah

jacek: fpu? :scream:

MSmits: I tried visiting moves that win boards first

jacek: it worked well for me

MSmits: but the performance penalty of splitting the moves (though small) is not worth the gain apparently

MSmits: but won boards has always been a relatively weak heuristic in uttt, now trying putting moves that give free moves at the end of the line

struct: FPU is a fancy name for a node eval for the case the node was never visited. We used a value based on a parent node (assuming that eval of children is roughly the same as parent’s eval). Turned out that AlphaZero just considered unvisited nodes as lost (with very little confidence though)

struct: Had no idea

MSmits: it's just move ordering really

MSmits: like you would with a minimax

MSmits: visit moves first based on some domain knowledge

jacek: welp there is/was some mean fpu in one paper that did well

MSmits: I think it depends a lot on the domain

jacek: in azero at least you have policy to choose from as first child

MSmits: yeah policy kind of replaces that

MSmits: mmh 74 - 57 so far on the fpu setup that avoids giving free moves

MSmits: but probability always messes me up with these uttt tests. Most of the time it's nothing or worse

jacek: confidence interval [2.0%,98.0%]

MSmits: what does that mean

struct: i guess 2% confidence that is better

MSmits: that's not very confident

MSmits: you need to have a standard deviation for those confidence calcs

MSmits: i wouldnt know what to use for these games

jacek: there is some fancy math behind this. how does cgstats calculates those winrate intervals after all?

MSmits: no idea

MSmits: but cg stats confidence is nearly 0. It's almost always very few games

_Royale: hi!

MSmits: hi _Royale

struct: hi

_Royale: MSmits: damn you are high in the C4 leaderboard :)

MSmits: yeah, my bot is very similar to darkhorse and struct, but i added an opening book

MSmits: not countering anyone specific though, just from running it locally

jacek: :unamused:

MSmits: i'm not always nr 1, depends on who submits prolly

Astrobytes: now now jacek, don't get all rebless-y

MSmits: I think for the confidence calculations you take 50% as the standard deviation

MSmits: https://www.calculator.net/confidence-interval-calculator.html?size=232&mean=53&sd=50&cl=95&x=65&y=19

MSmits: because a lost game is 0 and a won game is 100%

MSmits: so st.dev of 50 seems reasonable

MSmits: it gives ridiculous results with lower values for st.dev

MSmits: with those settings you get an interval of 52-58% if you score 55% after 1000 games

MSmits: seems reasonable

YurkovAS: i'm use smart playouts in uttt too

MSmits: you mean the random playout right?

YurkovAS: yes

MSmits: I do as well, it helps

struct: I dont think I do

struct: let me check

MSmits: I prefer winning moves over blockign moves over normal moves

MSmits: also I keep track of possible wins of the game

MSmits: so it will always take a winning move

MSmits: (overall winning move)

jacek: i had winning small board have 2x chance to be chosen than other moves and winnig game moves were always played

YurkovAS: i use winning + positional scorings can't do escape free moves

struct: oh i still have ctz on uttt but i dont really need it

MSmits: you mean it cant give away free moves YurkovAS?

MSmits: i use ctz a bunch of times

struct: oh I cant avoid it here i will need to store it anyways

struct: the index of the board I played at

MSmits: yeah

YurkovAS: MSmits i'm can't do escaping free moves

MSmits: not sure what you mean YurkovAS

YurkovAS: i mean: i'm not ignore free moves in random playouts

MSmits: what do you mean ignore?

MSmits: do you mean you avoid giving away free moves, or you play them equally likely as other moves

YurkovAS: equally likely as other moves

because: i'm can't do this, bot play very slow

MSmits: ahh ok, yes for me it's the same, i make them equally likely also

MSmits: sigh the fpu thing for avoiding free moves for unvisited nodes helps at most 1% i think

MSmits: if at all

MSmits: 267 - 251 now

struct: how many versions do you test against usually?

struct: or do you think it doesnt matter much for uttt?

MSmits: just my best, i dont think it matters much in utttt

MSmits: because so much random

MSmits: it would be different if i had an opening book in one of the two versions

MSmits: if you have some calc time leftover there is a nice theory you can test

MSmits: my theory is WR for p1 goes up and WR for p2 goes down with better bots

MSmits: you can do tests with increasing calc time, to see what happen with these WRs

MSmits: at low calc time it will be near 50-50 i think, at very high calc time, it will be more like 90-10

struct: but increase calc time for both?

MSmits: yes both

MSmits: i also noticed that if you add the teccles heuristic, WR for p1 goes up and WR for p2 goes down

MSmits: because the bots become better also

MSmits: (i noticed this in my meta mcts)

struct: what brought me from 25th to 15th+- was early win check

MSmits: in random playout or in expansion?

MSmits: i do both

struct: both

MSmits: ah ok

MSmits: what constitutes early win check ?

MSmits: there's several levels of this

struct: I just do 1 simple thing

jacek: 1-ply win/loss check?

struct: its not only early win

MSmits: mine is more like 2-3 plies

struct: its multiple stuff

struct: nah mine isnt anything like that

MSmits: for expansion anyways, 1-2 ply for random playout

MSmits: do you do the board lookup where if one player has more won boards and the other one cant get 3 in a row anymore?

struct: yeah

struct: something like that

MSmits: ah yeah i got that one too

struct: I guess its very different

MSmits: well as i said, there's a ton of levels of sophistication for this, they take more and more performance away in return for more accurate sim or earlier solve

MSmits: i err on the side of early solving, because i like to use my bot for meta mcts also

struct: but how I check if the remaining cant be won its not great

struct: I just fill the remaining cells as the player

MSmits: i do this also

MSmits: it's a fine method

MSmits: cheap and fast

struct: yeah

MSmits: but what i also do in expansion is detect critical boards

MSmits: where if the opponent can play there, he wins

MSmits: so i avoid sending him there

MSmits: this makes you solve several turns sooner, but it's only like 2-3% extra WR

struct: not in rollout?

MSmits: in rollout i do detect critical boards but only to finish the game

MSmits: not to avoid sending opponent thee

MSmits: i might try this again, it's expensive though

MSmits: the critical board thing is complicated, because when you finish a board with a teccles move, you also give the opponent a free move

MSmits: because you're sending him to the board you just finished

MSmits: have to take that sort of thing into account

struct: you finish a board if you use teccles?

struct: o.o

struct: I had no idea lol

MSmits: no, you generally dont

struct: ah ok

MSmits: i meant a move that has the same square index as board index

struct: still it doesnt seem very expensive

MSmits: in early game those are good moves

MSmits: my expansion functions taken together are 500 lines total :P

MSmits: they must be at least somewhat expensive

struct: yeah but making moves that avoid opponent a win

struct: can be worth

struct: if its similar to c4

jacek: but not as expensive as NN prediction :tada:

MSmits: true jacek

MSmits: struct yes it is actually similar to c4, but it's more complicated. Way more steps

MSmits: and i dont just do this

struct: I will add this to my todo list

struct: if I ever go back to uttt

MSmits: i somehow get drawn back in every couple months

jacek: :imp:

struct: for preventing giving a winning move

struct: dont you just need to xor (next_move_win_board | full_board)

struct: the legal moves you have

struct: xor it by that

struct: or something similra

struct: maybe not xor

struct: but &~

MSmits: you also need to know if the opponent has a winning move on the miniboard he lacks to get 3 in a row on the big board

MSmits: if he doesnt even have 2 in a row there, he doesnt have a critical move

struct: ah makes sense

MSmits: and imagine this

MSmits: say he has those 2 in a row

MSmits: and lacks 1 critical move

MSmits: you can still send him to that board and not lose

struct: why?

MSmits: if it's the same board you are playing on and you're blocking the 2 in a row =)

struct: oh

MSmits: see how this can get complicated ?

struct: yes

MSmits: and of course this doesnt work if he has 2(!) winning moves on that board

MSmits: except of course, when *you* win that board

MSmits: then you block all his future moves on that board

jacek: if there was a way to automate those kind of decisions...

MSmits: yes, a giant opening book

jacek: :head_bandage:

MSmits: :)

MSmits: i actually do have an endgame book of sorts for uttt. But only when theres 1 board left

MSmits: so it's basically a normal TTT lookup

MSmits: i guess it helps with games that tend to end in a draw. Makes sure you play them out perfectly for the last 3 moves or so

MSmits: I tried coming up with a 2 board endgame book but it would already be enormous

struct: does 1 board left book even help?

MSmits: doubtful, i think it helps solve sooner

MSmits: but dont think it helps win more

MSmits: solving doesnt necessarily make your bot better. If you dont solve but the winning moves still get the highest score, it's fine

struct: i wonder how big bt end game book would be

MSmits: that said, i just turned off my sophisticated expansion for a basic expansion function and got 43% WR

MSmits: but thats a ton of features all at once

struct: maybe even bugs

MSmits: i dont think bt endgame book can work

MSmits: yes struct, maybe bugs

MSmits: for endgame book you need a converging game

MSmits: (states get simpler near the end)

MSmits: uttt sort of has this but only for drawn games or nearly drawn games

MSmits: checkers has it, chess has it, oware has it

MSmits: othello does not really

_Royale: jacek: aren't all NNs giant opening books in disguise?

jacek: :no_mouth:

Astrobytes: shhh!

MSmits: _Royale ideally they arent because they're supposed to generalize, but research has shown that it has enormous potential for memorization

jacek: well, having 'extended' solver for bt helps

struct: extended solver?

MSmits: I think they tested it by making a NN remember totally unrelated random numbers

MSmits: and it could remember a lot of them

jacek: you can solve 3-ply or even 5-ply win/losses with bunch of ifs or fancy bitboard operatins

jacek: operations even

MSmits: yeah with triangle shape bit extractions right?

jacek: huh

MSmits: on opponent side of the board

struct: ok 4 row TB idea is discarded

struct: a 4 row tablebase would be approximately 1.1 × 10^11.

Crosility: Been gone for a few days, but back! Howdy, how has everyone been?

MSmits: struct i think you generally look up in triangle shaped pattern in front of each forward pawn

MSmits: not all rows at once

MSmits: hi Crosility, i've been ok

MSmits: you/

struct: yeah I was just reading https://scholarworks.csun.edu/bitstream/handle/10211.3/174085/Isaac-Andrew-thesis-2016.pdf

jacek: well i look at the attacked squares and if i can go into unatttacked ones

Crosility: Seeing family was aight, but been having major car trouble. Just been a pain getting a wrench on everything and fixing it. Thanks MSmits. It's nice seeing you guys in chat. :D

struct: whats the max row you can check from jacek?

jacek: 6th? (out of 8)

MSmits: I don't even have a car, or a drivers license

struct: did you use this before the NN?

MSmits: I use trains and bicycles

MSmits: and feet

Crosility: Love me ol' bicycles and foot power.

MSmits: indeed

Crosility: Just not easy to do here in the states.

Crosility: Was much easier in Japan.

MSmits: no, your public transportation is crap

jacek: struct im still using now, but it doesnt improve much except for solving sooner

jacek: NN can do that

MSmits: here it's great unless you live in some village

MSmits: in a city you can get anywhere quick

struct: so you just check all attacked cells?

struct: I guess it makes sense

jacek: yes

struct: maybe I could add that

Crosility: Lucky :D You talking about the fire spreader jacek and struct?

struct: no, breakthrough

MSmits: no, breakthrough game

MSmits: 482-440 now on the fpu avoiding free moves

MSmits: i wonder if it's better or not

Crosility: Oh, Interesting, a simplified checkers?

MSmits: not checkers

MSmits: more like chess with only pawns

MSmits: and no promotion

struct: oh they had to book 3rd row :D

MSmits: and freeer movement

struct: I dont need it

struct: simple sim but hard to eval

struct: I would say impossible

Crosility: What do you mean?

Crosility: Can't do tree-simulation logic?

MSmits: it's simple to keep track of what happens in the game when you apply a move

struct: Hard to give a value to the current game

MSmits: but it's hard to know whether a board state is good for player 1 or player 2 or anywhere in between

Astrobytes: threat analysis, defence strength etc

jacek: try piece-square tables. but also attacking/attacked pawns or defending are important

struct: as a human its easy

struct: but I cant translate it to eval

MSmits: the problem is the interconnectedness of the pawn lines

Astrobytes: whta jacek said

Astrobytes: *what

struct: I even have eval for "tempo"

MSmits: as a human you kinda do it the same way as a NN, you look at the whole picture

MSmits: you dont chop it up

MSmits: I'm not even going to try improving my bt until i can do it with a nn eval

MSmits: seems hopeless to me

Crosility: WOW, this leaderboard is mostly C++

MSmits: all boardgames are

struct: bitboards

Nerchio: and what isn't mostly C++

struct: ghost in the shell

MSmits: c++ and rust are the fastest languages

Crosility: Lol, true Nerchio

MSmits: but rust doesnt have many players using it

jacek: and 4 top players are quite ahead of the others :thinking:

Astrobytes: damn, dropped to 28th

Astrobytes: Need to get back to that one

struct: top 4 should have their own league

struct: oh but im above 1 NN

struct: by 0.01

jacek: another NN?

MSmits: have to be careful about drawing conclusions about c++ being at the top. Sometimes it's because the language is fast, sometimes it's just because the best players like using it (because they're used to it)

struct: jolindien jacek

jacek: huh

struct: yes

struct: I believe it is a NN

struct: I have no proof

struct: but C#, is oware is also C#

struct: his*

struct: also his C4

jacek: if its NN why it is so low :v

MSmits: Games played: 1000 Player 1 wins: 521 (52,1%) Player 2 wins: 479 (47,9%)


Nerchio: MSmits its fast let's be real (and players are good too ofc)

MSmits: so... is it better?

struct: maybe he just gave pawns as inputs?

MSmits: Nerchio there are many games where performance is not an issue

Nerchio: yes but C++ is fast thats all I said :P

struct: Nerchio some games it doesnt matter at all

MSmits: correct

struct: I wasted so much time on c4 performance for 0% gain

struct: besides knowledge

MSmits: i've stopped doing that

struct: 0% gain on rank

struct: the performance was better

MSmits: it's much better to think about ways to do smart rollout and pruning and such

struct: yes

struct: pruning moves is massive

struct: even for mcts

MSmits: yeah

MSmits: anyway gonna get some sleep again. More uttt experimentation tomorrow!

struct: same

struct: gn

MSmits: gn

Astrobytes: gn

Ahmed_King: start

Default avatar.png Solidaritii: does js have an exuivalent method to python's maketrans?

Crosility: There's a joke in there somewhere. But I'm not going to make it. :]

Crosility: Something like this crass? https://www.sobyte.net/post/2022-03/js-mapping-tables/

Crosility: https://www.w3schools.com/jsref/jsref_foreach.asp <- Can use forEach on a loop for the mapping table.

Crosility: Is not "the same", but quite similar in use as Pythons maketrans

Darleanow: Hey every1 :)

Default avatar.png Scollier: hi!