Chat:World/2021-08-17

From CG community
Jump to navigation Jump to search

blakestone: Hello, is there a way to print/debug something without it registering as an output in the IDE? When I try to do this it's treating it as an output and failing to progress etc. Thanks.

blakestone: for Javascript

DaNinja: console.error("test')

blakestone: worked - thank you :)

xxd: getting closer and closer to getting this GA to work...

ProCoder03: how to floodfill @xxd ??

xxd: OH MY GOD

xxd: IM SO CLOSE TO GETTING IT WORKING I THINK

xxd: LOOK AT THIS SCREENSHOT

ProCoder03: dude is it Mars Lander 2 ??

xxd: wait let me try it on a harder one

xxd: yeah im doing mars lander

ProCoder03: wontonimo did it in just 19 lines !!!

ProCoder03: PIDs

xxd: yeah

xxd: but hopefully my method generalizes to all the Mars landers problems :)

ProCoder03: superb !!!

xxd: okay im doing a trick where i only check collisions every 12 moves and its biting me

xxd: xD

ProCoder03: Btw where did you learn GA ???

xxd: I learnt a lot of it from Di_masta's Mars landers post mortem

xxd: :pray:

xxd: its really good cuz he tells u exactly what he was thinking at each step. i stil had a bunch of questions tho which havent been answered yet

ProCoder03: welll, i read that my mind literally died !!

ProCoder03: GA is confusing:stuck_out_tongue_closed_eyes:

xxd: my code doesnt even deserve to work right now though... my fitness function is literally so bad

RightHandElf: use a genetic algorithm to make a better fitness function

ProCoder03: are there any pre requisite for GA ??

ProCoder03: I am just 15 and finding GA terrible hard ??

xxd: frik

ProCoder03: what's frik ??

xxd: cuss word

xxd: im gonna ask wonton if he ran two floodfills

Default avatar.png HMS_123: hi

ProCoder03: hi

Default avatar.png HMS_123: hey y'all did the 'Coders Strike Back'? Can u tell me the answer for the code?

Default avatar.png HMS_123: I can't find it lol

ProCoder03: you can't find it !!!

Default avatar.png HMS_123: Yea

ProCoder03: you need to code it yourself

ProCoder03: hint: see the last line of the code !!

xxd: there's no answer

xxd: quite literally

ProCoder03: is there any string Contains method in C++

ProCoder03: ??

M1nerman: well, no, but you can work out whether a substring exists with the find() method

ProCoder03: Thanks , that's exactly what I want !!!

xxd: https://pasteboard.co/KgfZYrR.png

xxd: A:OIFJ:WOIEJF:WOIEJF:OIWHE:IOFJWE:OIFJ

xxd: alright

xxd: im making steady progress

xxd: look at that floodfilled beauty

xxd: i think wontonimo will be proud of me

ProCoder03: wow!!!

ProCoder03: really nice !!

ProCoder03: Mars Lander 3, right ???

xxd: yeah

xxd: i am like

xxd: pretty close i think

Default avatar.png shashj: Hello everyone!

Default avatar.png shashj: How is the lockdown treating you all??

xxd: badly

xxd: eh

xxd: my school year is starting in <36 hours

Westicles: lockdown? lol that was last year

Default avatar.png shashj: LOL Its now for us

xxd: so close yet so far

xxd: i need to mess with like 200000000 hyperparameters

xxd: wait. i completely forgot that each pair of parents makes TWO children

xxd: that is so not similar to real life

Westicles: Such a shame, Australia used to be such tough guys.

martinpapa69: they even won the great emo war

martinpapa69: emu*

RightHandElf: they very specifically did not win the great emu war

martinpapa69: ye, i just checked on wiki :D

martinpapa69: I thought it was only a meme

xxd: my GA was like sorta working, then i fixed some bugs and now its broken

RightHandElf: lmao

xxd: I feel like GA where genes are delta_angle and delta_thrust is just... odd

martinpapa69: GA too is just a meme algo

xxd: im starting to believe that

martinpapa69: there are better algos out there

Westicles: I feel like someone should tell him most ML2 solutions are 3-4 if statements

xxd: brb gonna write a GA to try all combinations of 3-4 if statements

ProCoder03: @xxd https://www.youtube.com/watch?v=CZE86BPDqCI

ProCoder03: this one is abt using PID controllers with GA !!

ProCoder03: *tuning a PID

xxd: thanks, will watch

Almin5k: Goodmorning everyone :))

Default avatar.png Merfi: Goodmorning. If you’re changing the world, you’re working on important things. You’re excited to get up in the morning

Westicles: That's a poster on the wall in Taliban headquarters\

Default avatar.png Merfi: nonononono. If opportunity doesn't knock, build a door

Default avatar.png Merfi: And remember, if you want to be happy, be

Westicles: Remember, if you spout cliches, people will think you are vacuous

Almin5k: Fairy tales are more than true: not because they tell us that dragons exist, but because they tell us that dragons can be beaten.

Default avatar.png kobebryant: curry when u want, curry when u need, curry in the morning curry on the beach.

Default avatar.png kobebryant: curry when u want, curry when u need, curry in the morning curry on the beach.

Default avatar.png kobebryant: curry when u want, curry when u need, curry in the morning curry on the beach.

Default avatar.png kobebryant: curry when u want, curry when u need, curry in the morning curry on the beach.

ProCoder03: @kobebryant are you a foodie ??

Default avatar.png peppers: what are u talking about?

Broski_974: hello

ProCoder03: hello @Broski_974

Default avatar.png Merfi: Remember this everyone! Next to trying and winning, the best thing is trying and failing

Default avatar.png kobebryant: what is a foodie??????

Westicles: Ain't no curry on the beach if they fine you $3700 if you go outside

Default avatar.png kobebryant: curry when u want, curry when u need, curry in the morning curry on the beach.

Default avatar.png kobebryant: curry when u want, curry when u need, curry in the morning curry on the beach.

Default avatar.png kobebryant: curry when u want, curry when u need, curry in the morning curry on the beach.

Default avatar.png kobebryant: curry when u want, curry when u need, curry in the morning curry on the beach.curry when u want, curry when u need, curry in the morning curry on the beach.

Default avatar.png kobebryant: curry when u want, curry when u need, curry in the morning curry on the beach.

Default avatar.png kobebryant: curry when u want, curry when u need, curry in the morning curry on the beach.

Default avatar.png kobebryant: curry when u want, curry when u need, curry in the morning curry on the beach.

Broski_974: :zipper_mouth:

Default avatar.png Merfi: Wise men speak because they have something to say, anyone else because they have to say something


Uljahn: guys please discuss coding related topics here, it's a warning

Default avatar.png peppers: :nerd:

Default avatar.png Merfi: ok, sry, im just trying to motivate my friend here. but i will stop now my friend, im sry :sob:

grindy: ok

Uljahn: Merfi: use DM, don't flood the channel

grindy: ?

Broski_974: x)

Broski_974: i'm still about shadow of the knight

Broski_974: :muscle:

Almin5k: which episode

Broski_974: 1

EthanLu34: lol

Broski_974: I understand, so i should write code

EthanLu34: curry=STEPH=GOAT🐐

grindy: curry, haha

Broski_974: curry <3

grindy: hi

grindy: i am back:)

grindy: me back

grindy: food?

grindy: ?

Uljahn: next time is ban

grindy: sorry i will stop

Default avatar.png peppers: lol

Default avatar.png peppers: how can i see others code?

Uljahn: in clashes or puzzles?

Default avatar.png peppers: puzzles

Default avatar.png peppers: new here.

Uljahn: solve it at 100% first

Default avatar.png peppers: emm.

EthanLu34: hi

EthanLu34: clashes

Default avatar.png peppers: u mean all problem???

EthanLu34: idk

Uljahn: no, solve the puzzle to see other's solutions

EthanLu34: how u kick people?"

Uljahn: with mod powers

EthanLu34: ???

EthanLu34: so u famous?

EthanLu34: also i followed u

EthanLu34: :happy:

EthanLu34: :grinning:

Default avatar.png peppers: i just solve a problem but in the share web, everyone has a locked icon.. :joy:

Uljahn: is your result 100%?

Default avatar.png peppers: yep successfully submited

grindy: i finish one :)

EthanLu34: gimme code

Uljahn: peppers: while being in the puzzle click results on the left, then click "Learn from the best coders"

Default avatar.png peppers: let me see

EthanLu34: ...

Uljahn: giving a code is not encouraged here

grindy: me gots 100%

Westicles: I think it is... there is XP incentive to publish

Default avatar.png peppers: @Uljahn see it, thanks.

Westicles: oh you mean on chat... sorry, I agree

Default avatar.png peppers: aha if i submit with python . i cant see other language solution right?

Uljahn: ye

Default avatar.png peppers: ye, thanks for guide

grindy: bye bye bye bye i am leaveing

Almin5k: Goodbye Grindy, if you’re brave enough to say goodbye, life will reward you with a new hello.

dotori: :grinning:

Default avatar.png Panavia_tornado: anyone used bezier curves in coders strike back?

Uljahn: not reasonable

Uljahn: any collision will push you out of an optimal path

Default avatar.png Panavia_tornado: i play at wooden league, no collision

Uljahn: seems like overengineering for a wood league

Default avatar.png Panavia_tornado: I suspect here the main difficulty in the beginning is that I cannot instantly turn the car in the right direction

Uljahn: yes, there is a limit of 18 degrees per turn max

Default avatar.png DJUndyingKnight_b8a9: any further hints for the ASCII art excercise? i don't understand how to transform a text input like 'E' to my program knowing its shape without hardcoding anything :<

Westicles: did you look at the hints?

Default avatar.png DJUndyingKnight_b8a9: yea i saw that the shapes are given in input, my question was badly phrased. i guess what i don't understand is, how to use that input properly

Default avatar.png Armin_programmer2010: hello every body

Default avatar.png DJUndyingKnight_b8a9: like how to compare the asked letter "e" with the shapes given

KiwiTae: they give you the ascii version of the alphabet

Default avatar.png Merfi: is there anyone else who has some difficulty with the weekly puzzle? becaus i have

Default avatar.png Armin_programmer2010: me too

Default avatar.png Armin_programmer2010: hey guys

Westicles: which one is it?

Default avatar.png Armin_programmer2010: how can i get the 100% of score in clash?

Default avatar.png Merfi: it is called PROPOSITIONS IN FREGE’S IDEOGRAPHY, do you maybe have any tips/hints on how to do it?

Westicles: Not a very popular puzzle... I would ask on the forum

RightHandElf: I did it with recursion and python's eval function

RightHandElf: and then iterating over every possible combination of trues and falses for every token

Default avatar.png Merfi: ok thanks very much, i will try to do that

Default avatar.png Armin_programmer2010: hello

LTims080913: I can't click on results to see solutions

LTims080913: I'm doing "temperatures"

Uljahn: you can see solutions until you 100% solve it

Uljahn: *can't

LTims080913: then how do I LEARN??? I want to be able to solve algorithms but can't seem to think correctly

Akshei: You try as long, to do it correctly, one way or another, or you can ask us for hints

Akshei: Getting solutions is not learning

LTims080913: Have you finished "temperatures"?


LTims080913: I know a condition needs to be written for the code to run correctly...but I don't know what or how to check

Akshei: Yup, they are pretty easy

Akshei: What inputs do you get in this exercise?

LTims080913: the number of temperatures to analyze (n)

LTims080913: and a string with the temperatures expressed as integers ranging from -273 to 5526

Akshei: And what output do you need to write?

LTims080913: I need to display 0 if no temperatures are provided. Otherwise display the temperature closest to 0

KiwiTae: if n = 0 return 0?

Akshei: And how can you check, what temperature from input is closest to 0?

LTims080913: idk

KiwiTae: is 199999 or 1 closest to 0?

Default avatar.png Armin_programmer2010: how can i solve all of the clash of code reverse mode

Default avatar.png Armin_programmer2010: ??

RightHandElf: for CoC, you've just gotta be able to recognize the pattern

Default avatar.png Armin_programmer2010: i know

Default avatar.png Armin_programmer2010: i mean how to enter the answers

TobiasA: or use openAI codex

LTims080913: 1

Westicles: You know guys, Forrest Gump got through his whole life without doing any programming, and he was happy. Just something to think about

RightHandElf: mama always said programming was like a box of chocolates

RightHandElf: [punchline]

LTims080913: lol

Default avatar.png Armin_programmer2010: lol

Akshei: How do you know that 1 is closest to 0?

Akshei: And what is closest to 0, 2337 or -1995?

Westicles: Akshei, have you ever played ping pong?

TobiasA: min(abs(2337), abs(-1995))

LTims080913: because it is smaller

LTims080913: and -1995

TobiasA: pong ping

peppers: who like pingpong?

peppers: :raised_hands:

TobiasA: me

Default avatar.png Armin_programmer2010: me

Default avatar.png Armin_programmer2010: me

TobiasA: want to play?

TobiasA: :ping_pong:

Uljahn: guys, join #pingpong gang, don't spam here

TobiasA: pingpong looks dead

TobiasA: i'll pass

Westicles: We were trying to gently suggest there are minimal mental requirements needed to program. Maybe something should be added to the FAQ?

Default avatar.png Armin_programmer2010: hey how can i create a group in here?

TobiasA: there was a time i mistakenly pronounced FAQ as fack-que

RightHandElf: well fack que too, pal

TobiasA: brruh

TobiasA: frequently asked questions too you too

TobiasA: to*

Default avatar.png Merfi: does anyone have tips for the spring challenge 2021? im stuck

derjack: use fertilizers

TobiasA: what league are you in?

Default avatar.png Merfi: wood 2 only

TobiasA: i think you just have to harvest the trees

Default avatar.png Merfi: ok

Default avatar.png Merfi: i will try

AntiSquid: i use this, it says you can dilute it into 300 L on the package : https://www.amazon.co.uk/Doff-F-JG-A00-DOF-1L-Tomato-Feed/dp/B004Z4UOBM Merfi

TobiasA: :joy:

Default avatar.png Coder_noob001: any tips for increasing the difficulty level in private clash

derjack: make shortest mode in java only

Seahorse06: :D

Default avatar.png UltraDarkCoder: how to increase thrust in coders strikes back ; help me please

TobiasA: step 1: increase thrust

TobiasA: literally

Uljahn: step 2: promote to higher leagues and use boost

Uljahn: UltraDarkCoder: how does your output look like?

Uljahn: should be 3 space separated numbers, third one is thrust, max thrust is 100 till legend

Default avatar.png UltraDarkCoder: I done it

Default avatar.png UltraDarkCoder: thank you

Default avatar.png UltraDarkCoder: sorry about my grammer

Uljahn: no problem

KNTK: Is it okay to copy and paste code in CoC, such as predefined functions and data structures? I assume yes, just want to hear confirmation.

Astrobytes: Yes.

KNTK: Thanks

eulerscheZahl: paste all of your templates. especially for shortest mode

eulerscheZahl: did anyone solve a puzzle recently while having the auto-publish feature enabled in the profile settings? to me it looks like my published solution remains private

Westicles: which puzzle? I can check if I can see it

eulerscheZahl: i checked in incognito mode. but sure. this one for instance https://www.codingame.com/training/hard/adversarial-mate-with-rook

Westicles: nope, not there

Westicles: I know zeno was having problems with solutions auto publishing when he didn't want them to...

eulerscheZahl: https://www.codingame.com/training/hard/adversarial-mate-with-rook it says published. i guess i'll report it on discord

Wontonimo: i think anyone with an IQ above 80 can do some programming if they are patient and interested and we are liberal with the term "programmer" to include excel formulas and scratch.mit.edu

Wontonimo: oh, geez, sorry

Wontonimo: i guess my scroll didn't update. i was obviously looking at an old post by Westicles

Westicles: heh heh

eulerscheZahl: so this was not your reaction to me soling the adversarial mate?

Wontonimo: no no !

Wontonimo: West posted something around 5 hours ago, now that i look at the time stamp

MSmits: I don't think using excel is easier than some programming languages

MSmits: it's mighty unintuitive

MSmits: maybe this is because of coming from math/physics

MSmits: not sure

Westicles: the Bell Curve guy wrote you need 120 minimum to be a competitive programmer, but of course everyone thinks he is evil or whatever

MSmits: competitive is the operative word there

MSmits: you don't actually need to be competitive imho

eulerscheZahl: i facepalm every time a colleague wants to use excel for data entry and expects my program to extract the inputs and generate another excel from it

Wontonimo: it's the "new" normal average IQ 110 or 120 anyway.

eulerscheZahl: much less effective now that I work from home (and without a webcam)

eulerscheZahl: average IQ is 100 by definition

Wontonimo: if we are talking about IQ measuring abstract thinking

Wontonimo: average IQ *was* 100 at the time it was created

eulerscheZahl: so if you have an IQ of 100 today and later generations get smarter, your IQ will actually decrease without you doing anything

eulerscheZahl: https://en.wikipedia.org/wiki/Flynn_effect

Wontonimo: that's not how they do it in America iirc

MSmits: nah, they educate their kids worse with every new generation, just to make their IQ go up :P

martinpapa69: pretty smart of them

eulerscheZahl: and you are part of that system of bad education

Westicles: they play around with the standard deviation sometimes, it isn't standardized

MSmits: I am not American :P

MSmits: we have our own education problems

eulerscheZahl: we too. whenever a new Pisa study comes out *insert this-is-fine meme*

Wontonimo: I REALLY liked this ted talk (before ted talks became just product advertisements) https://www.ted.com/talks/james_flynn_why_our_iq_levels_are_higher_than_our_grandparents?language=en

MSmits: in my country it's mostly a matter of investment and making the job as a teacher more attractive

MSmits: it used to be a high status job, but not it's almost looked down upon in some circles

MSmits: that's not good for quality

Wontonimo: a great reminder that the last 100 years has been substantially different than the previous 100,000

eulerscheZahl: but not = now?

MSmits: but now yes

MSmits: The question that's sometimes asked:

eulerscheZahl: some people just see that teachers got lots of holidays

MSmits: Hey you got a university degree, why go into teaching?

eulerscheZahl: and don't see that you have to invest time outside of class

MSmits: they forget you actually *need* this degree to even teach the ages/levels i teach

MSmits: eulerscheZahl that too

Wontonimo: in North America, there used to be a saying "They who can do, those who can't teach", so yeah, there is certainly a lack of respect for teachers here

MSmits: if you go back 50 yrs or so, doctors, teachers and lawyers would have about the same status

Wontonimo: I love teaching, but my dad repeating that phrase when I was young really got me out of considering it

MSmits: yeah it's bad

MSmits: teaching requires actual talent beyond the subject you're teaching

Westicles: Yep. A=business owner, B=employee, C=teacher, D=government

eulerscheZahl: former chancellor Schröder called teachers "faule Säcke" (lazy *scumbags? - not sure how to translate best*)

MSmits: wow really

Wontonimo: Teachers in Canada make great money, on par with other trained professionals, and better benefits

MSmits: oh, we actually don't get paid that badly, most of us

MSmits: the weird thing though, is that all teachers more or less get paid the same if they teach the same level of education, no matter the subject

MSmits: so an English teacher gets the same as a CS teacher

MSmits: which makes it *really* hard to find CS teachers

eulerscheZahl: as industry pays much higher on that field

MSmits: yeah, if you're at all competent at it, that is

MSmits: so mostly what you see is the biology teacher doing CS on the side, because noone else is available

eulerscheZahl: my CS education in the school wasn't much better

Wontonimo: It's a fantastic career option in Canada. The pay is related to the number of core subjects you can teach (not the number you actually teach), if you can teach in English and French, and how many age group related specializations you have (children, teens, adult), and special needs certifications.

eulerscheZahl: but good enough to get my interested in that field at least

Default avatar.png EngineHeart: can I join clashes only in one languiage ?

Default avatar.png EngineHeart: cause Java is longer and slower to code :)

eulerscheZahl: you can switch the language above the code editor

Default avatar.png EngineHeart: I can but I use Java only as primary language :)

Wontonimo: yeah, use python if you want to win clashes

eulerscheZahl: for private clashes it's possible to disable language selection

Default avatar.png EngineHeart: my question is can I compete on speed only with Java

Default avatar.png EngineHeart: I see

Wontonimo: yeah, that is true

Wontonimo: hey EngineHeart, have you seen any of the puzzles ? https://www.codingame.com/training

Default avatar.png EngineHeart: so no way unless I find other Java dudes? that's kind-a weird

Wontonimo: you can use java there. There is no time limit

Default avatar.png EngineHeart: sure I'm doing these as well

Wontonimo: and java does NOT put you at a disadvantage

Default avatar.png EngineHeart: but wanted to getr chalaange on Clash (for fun)

Default avatar.png EngineHeart: and the best so far is 1sec less the pyton (I shoulnd test all but just the first TC)

Wontonimo: well, if you are looking for fun, try out this bot battle https://www.codingame.com/multiplayer/bot-programming/botters-of-the-galaxy

Wontonimo: where your code battles other peoples code

MSmits: EngineHeart clash of code is to me, the least interesting thing on CG

Wontonimo: there are lots of other bot battles too.

Wontonimo: https://www.codingame.com/multiplayer/bot-programming

MSmits: or optimization arena's or practice puzzles

Default avatar.png EngineHeart: true - I just wanted to win :) this is the interesting part.... the rets is within the other tasks

Default avatar.png EngineHeart: I'm here cause of an interview where I times out

Default avatar.png EngineHeart: timed*

MSmits: ohh

MSmits: well

Default avatar.png EngineHeart: :)

MSmits: i recommend just doing practice puzzles

MSmits: you'll get faster without a time limit also

Wontonimo: i second that recommendation

MSmits: why stress yourself?

Default avatar.png EngineHeart: so no worries I just wanted to know if I can LOCK the lang to Java in the Clashes

Default avatar.png EngineHeart: if not I'm moving on

MSmits: nope

MSmits: language remains a free choice

Default avatar.png sasani: Hi

Wontonimo: EngineHeart , did they ask you to code in Java for the interview clash?

Wontonimo: Ni sasani

Wontonimo: *Hi

Default avatar.png sasani: My friends, I am a newcomer

Wontonimo: I can tell :D

Wontonimo: (lack of profile pic gives it away)

Default avatar.png sasani: Teach me someone who knows programming

Wontonimo: try some of these puzzles sasani https://www.codingame.com/training/easy

Default avatar.png sasani: Do you have WhatsApp to talk to?

Wontonimo: no

Wontonimo: i'm too old for that

MSmits: for 2 yrs I thought whatsapp was an appstore

Default avatar.png sasani: I want you to help me with programming

eulerscheZahl: we can. but not on whatsapp

Wontonimo: what programming experience do you have and what programming language do you know?

eulerscheZahl: i'm modern enough to have a discord account :muscle:

MSmits: discord confuses me

Wontonimo: lol

MSmits: I like it, in principle

eulerscheZahl: i muted most channels because there were always those unread notes

MSmits: I just get lost

Default avatar.png sasani: I am a computer engineering student

MSmits: oh right, that's probably my problem too euler

Wontonimo: and what programming language do you have some experience in?

MSmits: when you have to go here to learn

MSmits: your professors might not be very good :P

MSmits: ask for refund imho

Wontonimo: no! not at all. You just may be keen

Westicles: You guys are so nice. I guess bringing up IQ and making comparisons to Forrest Gump is less friendly..

Default avatar.png sasani: JavaScript and C # are basic

MSmits: python is like a box of chocolates

MSmits: you never know what it's gonna do

Wontonimo: sasani, you can select either Javascript or c# as the language you want to use in any of the programming challenges or multis here.

Westicles: All but one...

MSmits: C# is a great language to learn with

Wontonimo: If you want to learn the basics, like "if" "while" "for" and "arrays", this is not the place sasani.

eulerscheZahl: just don't try Pascal

MSmits: has a little bit of everything, yet easy to get into

jacek: kids these days... back in my days we were using irc

Default avatar.png sasani: Well I do not know I do not want to help me if any programmer knows professionally

eulerscheZahl: i still know my ICQ number

Wontonimo: do you use it in your passwords?

MSmits: I never did

MSmits: I did use icq

TobiasA: what is irc?

jacek: oO

eulerscheZahl: kids these days

eulerscheZahl: chat protocol

Wontonimo: (╯°□°)╯︵ ┻━┻

TobiasA: irc is chat protocol?

Westicles: iirc

TobiasA: what is iirc?

Wontonimo: and i bet they also never had to use a tap drive as their only storage device (no hard drive or disk)

eulerscheZahl: https://en.wikipedia.org/wiki/Internet_Relay_Chat and iirc = if i remember correctly

Default avatar.png sasani: Can anyone help you with your programming career?

TobiasA: check youtube sasani

Default avatar.png AlirezaNum1: hi i need a friend who has started to learn programming recently(python)

Default avatar.png sasani: I also need someone to teach me Python

TobiasA: what about one who didn't start recently?

Default avatar.png AlirezaNum1: im not in high level to teach

Default avatar.png sasani: If you have WhatsApp, give us a number so we can group there

TobiasA: so irc is just social media

Default avatar.png AlirezaNum1: +989331665090

MSmits: irc is like discord

MSmits: except more anonymous

MSmits: I think

Default avatar.png sasani: Alireza is my name, Mohammad Reza

TobiasA: oh got it

MSmits: mmh sasani you just told a million hackers your name

Default avatar.png AlirezaNum1: داداش ایرانی هستی؟

Default avatar.png sasani: ارع حاجی

MSmits: jk

MSmits: there's only a few thousand at most

TobiasA: wen't from english to noodles quick

Default avatar.png AlirezaNum1: عجب:v:

eulerscheZahl: oh I have something to contribute too ̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤

MSmits: pretty sure those are oware opening moves TobiasA

MSmits: I would start with move 5 though

Default avatar.png sasani: برنامه نویسیت چه قدر قویه؟

eulerscheZahl: seriously: english or kick

TobiasA: that's a possibility:joy:

b0n5a1: please english

Default avatar.png AlirezaNum1: دانشجوی سال اول علوم کامپیتر ام

b0n5a1: no need to speak arab to ask if others are from Iran...

eulerscheZahl: you have been warned

b0n5a1: stop

Default avatar.png sasani: منم مهندسی سال اولم کامپیوتر

jacek: :upside_down:

TobiasA: what happened to whatsapp sasani

eulerscheZahl: he's gone

MSmits: it got taken over by facebook

MSmits: which is why you should be terrified of using it

MSmits: i can never get over the fact that they state in their terms of use that you have to be 16 or older (or is it 18?) and teachers let whole classes make whatsapp chat groups for 12 yr olds

MSmits: very irresponsible

Default avatar.png JBM: yes but zoom=CCP

jacek: you give idea for the kids to report the teachers

MSmits: they dont want to

MSmits: they all love their whatsapp

Westicles: reddit=CCP as well

jacek: like they 1-starred zoom/meet/etc so no lessons would be done

MSmits: we dont use zoom at my school

MSmits: MS teams + google

Wontonimo: oh, there is an interesting marking on the right side of the chat, starting with MSmits saying "pretty sure those are ..."

Westicles: that's was euler's contribution

MSmits: yeah, sometimes the chat wants to emphasize the good points i make

Scarfield: ̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤̤

MSmits: oh noes

MSmits: don't cross out

MSmits: my wise words

Scarfield: im emphasizing them :p

MSmits: you're doin it wrong :P

Wontonimo: no really, what is that from? Is that a mod feature to emphasize or mark part of the conversation?

Scarfield: weird unicode stuff, idk

jacek: its emergence from automaons

GroutchKeu: :o

TobiasA: :O

Wontonimo: I think it was right after "oh I have something to contribute too" eulerscheZahl

Wontonimo: what did you paste right at the end of that sentence ?

TobiasA: now my name is obiasA

Wontonimo: fun unicode stuff!

Uljahn: guess it's a char from zalgo font

TobiasA: probably the ending moves of msmits oware bot:joy:

eulerscheZahl: actually that long vertical line was "invented" by AutomatonNN

MSmits: it's emergent behavior

Uljahn: doubt it

eulerscheZahl: probably a bug

eulerscheZahl: Agade said it should not print non-ASCII characters. yet it did

MSmits: it also called you a noob

Uljahn: t̸̡̡̧̢̧̨̨̧̡̨̡̨̺̟͙̰̬͕̜̖̳͎͇̠̟̣͕̺͈̦̗̞̠͇̳͎͉̻͚̺̹̞͉͍͙̟͔̺̝̲̳͍͉̜̩̟̹̙͖͙͉̤̳͎͈̠͍͙̯̲͓̻̣͔̜̯̠̜̖̠̘̣̗͕̞͍̹̲̬͓̝̖͇͍̮͇̮͓̜͕͚̭̙͈̪̩̗̙̪͔̩̎͐͗͑̌̉͆̉̑̈́̂̓̀̓̈̾̓̉̅͒̇̒̀̀͗̎̚̕̚͘͜͜͝͝͝ͅͅͅ

martinpapa69: this stuff was a thing even on facebook

MSmits: well automatonNN is a lot like mark zuckerberg

MSmits: sometimes it almost seems human

Scarfield: with lizard features

TobiasA: :laughing:

T-riPheo: hi

jacek: ohai

Default avatar.png xxJoxx: heyy

michaellan: hi

michaellan: good morning

TobiasA: hi

Wontonimo: :wave:

michaellan: when I compile with sanitizers I get an error but when I compile normally it runs without error

michaellan: :rage:

ProCoder03: probably, your code is refusing it because it's already immune to COVID

jacek: :drum:

ProCoder03: @xxd are trying to compile natively on mac

michaellan: its fine i fixed it

michaellan: I just.. dont inherently get how a GA _would_ work for this problem

KalamariKing: what problem?

michaellan: Mars lander 2/3

TobiasA: you can do mars lander 2 the physics way

KalamariKing: yeah wouldn'

KalamariKing: t a traditional convolutional work beter

michaellan: tf

Scarfield: you make a "gene" out of the action choices you have (angle,thrust), a genome (a series of genes). Simulate how the pod would fly with the actions from a genome and evaluate.

Scarfield: have a population of many genomes, keep track of the best scoring ones, make crossovers and mutations, rince and repeat

michaellan: Yeah but crossovers ...

michaellan: like I'm at least doing d_angle and d_thrust, not angle and thrust

michaellan: because that's what di_masta did

michaellan: so at each point its [-15,15] and [-1,1]

Scarfield: thats fine, depending on the way you do it, you need to make sure that the genomes still work within the game rules after crossover.

Scarfield: iterate through them, if total angle or thrust is out of bounds, fix them

Uljahn: welcome to a local optimum, Automaton2000

Automaton2000: tell him to play csb

Scarfield: xD

Wontonimo: no, i disagree Scarfield. Don't fix the out of bounds. That could be a possible mutation to fix them, but don't always

Wontonimo: the bounds checking would be in the interpretation

xxd: I clamp them during simulation

Wontonimo: yeah, i'd go with that

xxd: my local testing looks really good but its not translating to CG :/

xxd: I think my physics sim might somehow be off

Default avatar.png blaze96x: hey everyone

Wontonimo: do you have a print or something for local?

xxd: wdym?

Wontonimo: hey blaze

xxd: I generate it and print everything out in the first second xD

xxd: i should see if my local sim aligns with CG sim

Scarfield: im no expert, but it seems more reasonable to me to "fix" the genomes, to avoid them exploding

Wontonimo: and you have a solution in first second?

xxd: well i have one for at least one testcase

Scarfield: i fix/correct mine after mutation though

Scarfield: you could paste your sim here xxd, we can tell you if its wrong

michaellan: was thinking of doing that, going to refer to Post Mortem's first

michaellan: to make sure i didnt srew up

Scarfield: also, what is your pop size, gene count and how many generations do you get?

michaellan: 40, 40, 400

michaellan: OH GOD

michaellan: bruh

michaellan: wait lemme try smth

michaellan: basically i meant to have each gene last for 3 turns

Scarfield: 40 genes is too little, the maps take more turns than that

michaellan: but i realize I am applying the d_angle and d_thrust 3 times

Scarfield: ah

michaellan: when i mean to have it "hold" for 3 turns

michaellan: maybe that will help converg more sensibly

michaellan: alright, i can't find the post I used earlier, so here's the "next_move" function of my physics sim https://clbin.com/ipMx6

michaellan: oh originally i put the negative sign on n.a_x = -sinf(...

Scarfield: looks correct, its often the ½ * acceleration thats wrong, the only physics game on CG that works like that and not just adds the acc

Scarfield: what i mean is that people often doesnt multiply acc with ½, what you are doing looks good. dont take my word for it though, i suck at reading others code xD

Default avatar.png Mocky-FS: Les code clash quand on débute sur python, c'est assez chaud x)

michaellan: i hate this

michaellan: OH MY GOD

michaellan: it worked on the first test case

michaellan: xD

Scarfield: :muscle:

michaellan: not sure if it's any good though.. i wanna compare it to someone else's

Scarfield: https://www.codingame.com/ide/puzzle/mars-lander

michaellan: https://www.codingame.com/replay/576031355

michaellan: what

Scarfield: there an optim version of mars lander 2

michaellan: yeah ik

michaellan: okay my thing is like broken

michaellan: its luck that it works on the first testcase :(

eulerscheZahl: pro tip: view settings => Audio => off

michaellan: UGHHH this is so infuriating

eulerscheZahl: makes mars lander much better

michaellan: my code is 600+ lines of spaghetti

Wontonimo: yikes

Wontonimo: spaghetti is no good

Wontonimo: 600+ lines though, that sounds about right

michaellan: spaghetti cuz all my debugging/visualizing code is coupled to the actual logic

michaellan: and I used copy paste like a madman instead of properly abstracting

michaellan: Also, was my assumption that the mars lander is a point incorrect?

Westicles: 600 lines? just as long as you know most solutions are like 40 or less

michaellan: thanks westicles

michaellan: :cry:

Westicles: I'm not sure why you are being steered into a complicated solution

michaellan: I want a solution that will automatically work for mars lander 3 and do well on the optim too

Westicles: ML3 also has short solutions with a few ifs

Default avatar.png brok_38383: hola

michaellan: crud

michaellan: this is so sad

Default avatar.png brok_38383: alguien de latinoamerica

Default avatar.png brok_38383: no....?

Wontonimo: brok_38383 english on this channel only

Default avatar.png brok_38383: chale tabien :(

Wontonimo: there are other language channels brok_38383

Wontonimo: in spanish : inglés solo en este canal

michaellan: hay otros canales para otras lenguas

Default avatar.png brok_38383: ai clearly says world without english chat so i am free to speak the language that sticks to me

michaellan: english is the language of the world

Default avatar.png brok_38383: clear no offense

Astrobytes: No. It's a common channel for all nationalities, so they chose to use English in World.

michaellan: I'm gonna try to add more "biased" genomes at the start

Default avatar.png brok_38383: algien que hable en español...

Default avatar.png brok_38383: alo

Scarfield: one thing i did today was to make the genomes more biased in the end, if a genome reaches the landing zone, change the angle to being upright at that point, instead of fully relying on the GA to find it

Default avatar.png brok_38383: chale :(

michaellan: yeah I do do that scarfield, thanks for mentioning that

Scarfield: okay, btw if your replay wasnt a lucky fluke, it was a pretty good score :)

michaellan: I think that replay was incredibly lucky, i thikn the spaceship was *accidentally* upright the moment it hit the ground

michaellan: :/

Scarfield: xD

Swyfti: good morning everyone

Scarfield: tipStrobytes :wave"

Scarfield: :wave:

Astrobytes: Scarfolomew :wave:

Default avatar.png brok_38383: I already understood the world is the English chat sorry for the confusion and for interrupting your chat

Astrobytes: OK, cool

Swyfti: wait, are you guys saying that there are chats in other languages?

Default avatar.png brok_38383: yes

Swyfti: i never knew that existed

Swyfti: is there one for chinese

Astrobytes: Daniel probably knew about it.

michaellan: or maybe its daniel talking right now

Swyfti: guys chill its not

michaellan: omg i think i have a lead, my "left bank" and "right bank" genomes make 45-degree-angle lines into the ground instead of floating horizontally

Swyfti: wdym

michaellan: they dont float

Swyfti: there are many things that do not float

Astrobytes: But they all float down here :balloon:

Astrobytes: And you'll float too! :clown:

Scarfield: wdym by left bank genome?

michaellan: i took wontonimo's advice and added some intentional genomes in my initialization

TobiasA: *pennywise entered the chat*

michaellan: namely one that floats off to the left and one that floats off to the right

michaellan: i've fixed it, turns out it wasnt to do with my physics sim. so thats sad

Scarfield: ah, 21deg and 4 thrust or something close to it?

michaellan: close, 11deg

Scarfield: "close" :p

AllYourTrees: whoa royale causing big changes in c4 top

Scarfield: yea saw that too

AllYourTrees: thats crazy

michaellan: what did he do?

Astrobytes: NN'd it probably

Westicles: added cheese

TobiasA: caused big changes in c4

Scarfield: gotta try and join the NN club soon, and be part of the 0.5%

AllYourTrees: a bunch of players who haven't submitted moved around cause of him lol

michaellan: ah i see

michaellan: also, why is there only wood league for it?

AllYourTrees: :shrug:

Astrobytes: Community multis only have wood leagues

Astrobytes: Usually we have Wood 2 to get used to the game, and the boss filters out random bots so you get better quality in the top league

Astrobytes: (random as in just pick a random given move, no sim+search, no real bot)

xxd: gotcha

xxd: everyone's bitboarding for c4 right?

Astrobytes: About 98% of the community-made board games involve bitboarding

Scarfield: xxd if you want your pod to hover sideways, it should be 22deg and 4thrust, assuming you have no vertical vel

Scarfield: https://www.codingame.com/replay/576036849

xxd: oh, weird

xxd: okay let me change those

xxd: but i've been sufficiently distracted into c4 now

xxd: a basic MCTS doesnt seem that hard, bitboarding seems straightforward but i wonder if theres some fast bit operation to perform the move (i.e., "drop" the circle)

MSmits: |= 1 << index ?

martinpapa69: there is a template in c++ called bitset

TobiasA: yesh

xxd: i meant like, given you want to drop it in the 7th slot, which square does it end up in

MSmits: |= 1 << 7 ?

MSmits: no

xxd: huh

TobiasA: yesh

MSmits: |= 1 << 6 sry

xxd: do you not store the whole board in an int64 or something?

MSmits: if you're doing uttt, then mostly people use 9x uint16 for each player

Scarfield: depends on the way you "setup" your bitboard, bottom left, bottom right, top left, top right could all be set as 1 (and so on), different preferences

xxd: I"m talking about C4

MSmits: ohhh

xxd: sorry

MSmits: well then it's two uint64_t

xxd: yeah

MSmits: let me find out how i apply a move, sec

xxd: but im still talking about how you know where the circle lands

eulerscheZahl: "About 98% of the community-made board games involve bitboarding" that's 49 out of 50. There aren't even that many community games and I can easily tell you 2 that work without bitboards ;)

xxd: cuz the exact slot depends on how many previously have been dropped in that slot

xxd: and it can be done with a while loop but that sounds incredibly sloow

Astrobytes: eulerscheZahl: I stand corrected. Did you know that 75% of statistics are made up on the spot? :P

martinpapa69: including this one ?

Astrobytes: Yes.

martinpapa69: oh

eulerscheZahl: thanks for explaining the joke

MSmits: xxd I don't actually apply moves this way

xxd: :/

MSmits: I don't ever "choose" a slot

MSmits: I choose a square on the entire board and only consider the lowest ones to be valid squares

xxd: oh

MSmits: which may seem like it's the same, but it's a different approach

xxd: but that uses a lot more rng s

xxd: so its only valid if the square to the right is filled, basically

xxd: or if its the bottom one

eulerscheZahl: https://yare.io/ i wonder if i should get into this or not

MSmits: I'm trying to find a snippet of code i can share thats not completely obscure

eulerscheZahl: downside: it's javascript. and i'm not sure if there's an easy way to code offline

MSmits: xxd this is useful:

MSmits: http://chat.codingame.com/pastebin/4fe38c0b-50a5-4914-ac1d-fa5a95c63c97

MSmits: you add up both player boards

MSmits: p1 | p2

MSmits: and feed it to this function

eulerscheZahl: random match: https://yare.io/d1/lwegthe2dn2

MSmits: then it returns the valid squares you can play

xxd: i'm gonna need to ponder this for a while

MSmits: it works as follows

MSmits: (flipped ^ (flipped << 9))

Default avatar.png andyescobar: Hello guys does anyone know how to translate this c++ code into java for(int j = 0; j < ((digits[i]) + (i == 0)); j++)

               arrayB[numb6 | (j==6)] [numb8 | (j==8)]++;

MSmits: this compares each tile with the tile above

MSmits: if they are the same, it is 0, if they are different it is 1

MSmits: the places where it is different, is where the allowed move sits

michaellan: thats fucking genius

MSmits: struct came up with this one

eulerscheZahl: that part should compile in java too andyescobar, doesn't it?

Scarfield: MSmits the biz wiz

michaellan: i think you may need to cast if necessary andyescobar

MSmits: no no, not me this time

Swyfti: is there any real similarity between java and javascript?

eulerscheZahl: https://github.com/denkspuren/BitboardC4/blob/master/BitboardDesign.md

MSmits: xxd btw, if you calculate the "allowed moves" one time and just update it, it could be faster

eulerscheZahl: both java and javascript are somewhat based on C syntax

martinpapa69: https://en.cppreference.com/w/cpp/utility/bitset :/

michaellan: ah thats true, but its literally some bit operations

michaellan: no one likes bitset martinpapa69

Swyfti: C was my first computing language :sigh:

eulerscheZahl: as similar as "english and german use the same alphabet (mostly, german has äöüß)

MSmits: true

michaellan: so its like sacrificing another 8 bytes in your node, for a tiny speedup

michaellan: i'll try writing both

MSmits: wait, what is your node like?

michaellan: Wontonimo gave me a random_bit function that uses SSE instructions lol , i think i will use that here

michaellan: I havent started to write it, but just thinking about it it would probably have 2 int64s for the players, win/visit, parent pointer, heap array of children pointers

MSmits: http://chat.codingame.com/pastebin/f78ee5bd-96dc-4844-81ed-9de52458cd72

MSmits: this is all i have

michaellan: I might also remove parent pointer and instead do a thing with a path array

michaellan: ah you use the node pool as well

MSmits: no need for a parent pointer

michaellan: i think a lot of the top people do it

MSmits: and no need for a pointer to anything but the first child

MSmits: all of them

michaellan: is the node pool on the heap?

eulerscheZahl: you waste some space if you only visit the node once

Scarfield: thanks for the legal moves, i stole it :)

MSmits: it's a giant global array xxd

eulerscheZahl: and you store the full board in each node? not generate it again from the root?

MSmits: in this game i do eulerscheZahl, i never tried to do it otherwise

MSmits: in some games it's better to store on the node

MSmits: i coded this bot in a day

michaellan: Lol, the available moves is more advanced than what is shown in that github markdown file someone linked above

MSmits: you can be sure that if it comes from struct, it will be *very* hard to find better

michaellan: Is it sized at compile time? what happens if you run out of space? MSmits

Default avatar.png andyescobar: hello guys does anyone know how to translate this code into java

Default avatar.png andyescobar: for(int j = 0; j < ((digits[i]) + (i == 0)); j++)

               arrayB[numb6 | (j==6)] [numb8 | (j==8)]++;

eulerscheZahl: it crashes

MSmits: it's sized at compile time or in the first second, not sure. But I reset the tree when i run out

michaellan: darn

MSmits: you can only run out if you reuse tree between turns

michaellan: is it like 1 million or something

eulerscheZahl: andyescobar i already answered you. why would this snippet not work in Java already?

MSmits: way more

MSmits: const int NODE_MAX = 25000000;

michaellan: 10m?

michaellan: wowzer

MSmits: it's almost all the memory you get

Scarfield: and you run out o0

michaellan: msmits thanks so much

michaellan: im gonna try writing it now

eulerscheZahl: just write (int)2.5e7

eulerscheZahl: much more readable

MSmits: i sometimes run out, but not so much in C4 i think

eulerscheZahl: or does C++ support 25_000_000?

MSmits: bandas is horrible for running out of nodes. Happens in oware too i think

MSmits: but you can just reset

MSmits: eulerscheZahl no idea

michaellan: does the global array also have a corresponding "end" pointer

Default avatar.png andyescobar: I am sorry

MSmits: and yeah. I also still write some bit literals as decimals

Scarfield: sure, how many rollouts do you get you remember?

Default avatar.png andyescobar: I was stuck in the program

MSmits: for C4 ?

MSmits: I can check

Scarfield: ye

michaellan: is the type of the global pool Node[] or Node*[]

MSmits: wait rollouts are meaningless because of how i rollout

MSmits: I rollout form each child

eulerscheZahl: how many single steps then?

Scarfield: after expansion, so do i actually

MSmits: http://chat.codingame.com/pastebin/fe628476-f0a4-422a-84f9-584120b1e591

MSmits: 4

MSmits: 3 million sry

MSmits: on first turn

MSmits: (steps

michaellan: holy

michaellan: thanks MSmits

eulerscheZahl: 600k here :(

MSmits: wait, no

MSmits: it's 3 million expansions I think

MSmits: children expanded sry

MSmits: so 3 million / 9 expansions

Default avatar.png andyescobar: hello eulerscheZahl this does not work in Java it keeps showing an error of bitwise operator undefined

MSmits: 356k rollouts, a rollout being 9 children simmed to end of game, which means 3 million random rollouts

xxd: fix the error

Scarfield: if you rollout for each child, its also your rollout count i guess, im at 1.5mil

michaellan: why do you roll out each child

michaellan: i dont recall that being described in anything i read

MSmits: sometimes it performs a bit better

MSmits: you get less rollouts, but more statistics

michaellan: so u still backpropagate each rollout etc

eulerscheZahl: (i == 0) this should be (i == 0 ? 1 : 0) in Java

MSmits: this is worthwhile if your selection function is a bottleneck

MSmits: and in my case it is

Scarfield: there are many different ways to do it. i expand every child, rollout every child, instead of only expanding 1 child

michaellan: I see

eulerscheZahl: same for (j == 6) and (j == 8)

eulerscheZahl: == 8 )

michaellan: oh is it the rng thats the bottleneck?

MSmits: http://chat.codingame.com/pastebin/8e7b339c-984a-41ae-8e43-481523786b44

michaellan: or the UCT

MSmits: uct

michaellan: is UCT generally the bottleneck?

Default avatar.png P111111: hi

MSmits: xxd it depends on how expensive the random sim is and how long the random sim takes

michaellan: this pool method is so elegant

MSmits: near the end of the game, your selection tree is most of the tree and the random sim is very cheap

MSmits: in the beginning, random sim is the main bottleneck

michaellan: instead ofNode* you could also have used integer for index in node pool right, just confirming

MSmits: because it takes so long

Scarfield: yea i was thinking aplying some variable depth-rollout thing, but meh

michaellan: I see

michaellan: tree grows deeper

MSmits: yeah Scarfield things like that can help

MSmits: but my experience is that looking for improvements like that is really frustrating

MSmits: because most of the time it doesn't

michaellan: can re-writing it in C be faster

MSmits: only if you misuse C++

Wontonimo: xxd, if you rollout every node upon creation, then you don't have to account for zero visits in any of your UCB calculations

MSmits: thats true

michaellan: darn

michaellan: one less conditional branch damn

MSmits: and also you're supposed to pick the first child randomly according to basic mcts

michaellan: that prob makes a nontrivial difference

michaellan: oh

michaellan: i originally did that

MSmits: and if you just rollout from each, you dont have to worry about it

Wontonimo: pretty trivial difference

michaellan: but i watched a video that just said pick the first one

MSmits: mind you, i never pick randomly

MSmits: it's not really worth it

michaellan: and i did around the same

MSmits: yeah

Wontonimo: picking the first one is GREAT for debugging

MSmits: but when you rollout all children you dont even need to worry about the order

Wontonimo: so, yeah, do that until you work out all the bugs

MSmits: oh xxd, 1 piece of advice. When you create your pool, don't initialize the nodes

MSmits: so dont do "childcount = 0"

Wontonimo: very important

MSmits: otherwise you will be initializing 700 mb of memory

MSmits: and time out

Wontonimo: make a function called something like "init" that does it

MSmits: only when using the node

Wontonimo: ^^ that

MSmits: http://chat.codingame.com/pastebin/c5ff86e8-8128-40d5-a4e6-a5f7e7be84a7

michaellan: super confused

MSmits: we just mean the properties

MSmits: look at the node i shared

MSmits: none of the parts of the node have a value

MSmits: they are all unset

MSmits: well in fact they are set to whatever is in memory

darkhorse64: Another good reason to rollout every child is that near the end you get more terminal nodes and your solver performs better

MSmits: oh, yeah that's true

michaellan: theres too much info to take in.. i feel like i should be taking notes

AllYourTrees: lol

Wontonimo: holy cow xxd! you're 152nd in legend for UTTT !!!

Wontonimo: congrats !!

MSmits: yeah that's nicely done

michaellan: yeah... i told you a while ago

michaellan: thanks

AllYourTrees: smits when do you do solver stuff? didn't see it in the backprop fn you linked earlier

Wontonimo: i forget :sad:

Swyfti: :disappointed_relieved:

AllYourTrees: :eyes:

MSmits: separately AllYourTrees

michaellan: C4/UTTT/dumb bitboarding MCTS is more fun to me than hard physics problems :angry:

MSmits: if (finished) SolverPropagation(-bestResult); else MultiBackPropagation(startSign * rolloutWins, selectedState->childMax);

MSmits: bah no pastebin

AllYourTrees: ahh okay

MiyamuraIzumi: not yet write MCTS :(

michaellan: sorry MSmits but I still don't get what you mean by "MSmits> so dont do "childcount = 0""

Wontonimo: have you tried flat MC yet MiyamuraIzumi ?

MSmits: ok separate example xxd

MSmits: say you're creating a 2d vector

MSmits: struct Vector { int x = 0; int y = 0 };

MSmits: struct Vector { int x; int y; };

michaellan: ah

MSmits: this works too

michaellan: so latter here is better since it doesnt init

MSmits: but it doesnt set the memory to 0

MSmits: exactly

MiyamuraIzumi: I don't do any bot game for now

michaellan: gotcha

michaellan: so

MSmits: normally this is bad practice

michaellan: i put it in constructor instead?

MSmits: but we dont code normal here

MiyamuraIzumi: feel lazy :(

MSmits: no

MSmits: you dont construct

MSmits: you set by function

michaellan: OH

darkhorse64: We are fast and furious

MSmits: it's not a constructor

michaellan: i have a fake constructor

michaellan: that is never automatically called

MSmits: yeah

Scarfield: http://chat.codingame.com/pastebin/006b205b-6d85-4d30-b181-e0c3fa7a9214

michaellan: smart lads

Scarfield: this is what i do, and what you mean right?

michaellan: how 2 be more like u guys

MSmits: http://chat.codingame.com/pastebin/f5f263bd-2e26-4330-b755-388eaf0a0165

michaellan: yeah i think thats what msmits describes

MSmits: more info for you

MSmits: makes things more clear maybe

michaellan: why you call it setChild

michaellan: that seems like the wrong name

Wontonimo: i call mine "init"

MSmits: i am setting the node thats already there in the pool

MSmits: init is maybe better

MSmits: dunno

michaellan: true

MSmits: init has an issue though

MSmits: nodes can be reused

michaellan: when

MSmits: when your tree runs out

MSmits: and you start again at index 1

michaellan: 0*

michaellan: or 1?

michaellan: what

MSmits: well

MSmits: the root is 0

MSmits: the first child of the root will be 1

michaellan: but dont you set the root again too

MSmits: sure, i have a separate set root function though :)

michaellan: i see

MSmits: wait no i dont for this one

michaellan: o

MSmits: i have so many boardgame bots

michaellan: haha

MSmits: they are all slightly different

michaellan: by the way

michaellan: where do you teach computer science?

MSmits: in a highschool in my country

MSmits: 15-18 yr olds

shayah_goba: how do you make a string start with the letter 0 in python

michaellan: wow

michaellan: those kids are lucky

MSmits: i like to think so :0

shayah_goba: how do you make a string start with the letter 0 in python


Wontonimo: variable[0] = "O"

michaellan: nah you cant

michaellan: do that

Wontonimo: don't spam shayah_goba, just be patient

Default avatar.png StevenV: only know Heuristic :)

shayah_goba: dam so i just gotta give up

michaellan: s = '0' + s[1:]

Wontonimo: thanks xxd

michaellan: (strings are immutable)

MSmits: aren't they in most languages?

michaellan: shayah_goba: are you in some dumb clash?

MSmits: C# has the stringbuilder

michaellan: yeah, not perl thoug

MSmits: strings are misleading like that as you generally do a lot of += on strings

michaellan: I've been using a separet State struct and a Node struct

MSmits: but you're making a new string when you do that

michaellan: but i dont think thats necessary now

michaellan: ya

michaellan: i think c++ might optimize it sometimes?

michaellan: not too sure about that

MSmits: no idea

MSmits: btw, every time someone says struct here, we're ping a guy named struct :P

MSmits: pinging

michaellan: isnt he taking a break from CG though?

michaellan: sorry struc-t

Scarfield: but hes not here(?)

michaellan: also MSmits do you use this:

michaellan: uint16_t random_bit(uint16_t available_moves)

michaellan: { return __builtin_ctzl(__builtin_ia32_pdep_si(1UL << randval(__builtin_popcountl(available_moves)), available_moves));

michaellan: oops i thought that would pastebin

MSmits: i use pdep yes

MSmits: http://chat.codingame.com/pastebin/17ac554f-fd37-49fa-becf-df0ddaa9e40c

Default avatar.png StevenV: any good resource for learning those algorithms on CG bot game?

MSmits: we learned from chatting here and all over google

MSmits: google being synonymous with the interwebz

Default avatar.png StevenV: :)

xxd: can i see your fastrand please? or is that classified

MSmits: but you can often find some tutorial somewhere

MSmits: not classified

MSmits: these are standard functions i usually have. I came up with none of them

MSmits: http://chat.codingame.com/pastebin/9c06f49c-4e37-4827-bc3f-a77dd5bf40f1

xxd: nice

MSmits: the xorshift isnt used in this c4 bot

xxd: astroconsultant showed me 3 of those

MSmits: but i usually use that for hashing

xxd: for UTTT

xxd: ah

xxd: wait why does the fastrand not do anything random anywhere :rofl:

MSmits: it's pseudorandom

xxd: i feel like im learning the dark arts

MSmits: it just makes a sequence of numbers

MSmits: that is sort of random

xxd: i see

xxd: like a merseene twister sorta thing

Default avatar.png StevenV: any suggestion for fall-challenge-2020 ? I want to be in legend for this game

MSmits: exactly that yes

MSmits: its 2 to 5 times faster than normal c++ random

xxd: darn

MSmits: somewhere in that range

michaellan: probably even more of a speedup for me since i currently use uniform_int_distribution

michaellan: which probably has some overhead

Scarfield: but its 2-5 times less random

MSmits: never tried that

MSmits: oh yeah Scarfield it is that, but i did some tests and it had a good enough distribution

MSmits: karliso uses a way worse random in uttt thats even faster

Scarfield: xD i was just joking

xxd: Lols

xxd: how do you do faster than that

MSmits: i think karliso has a 255 sized array with numbers in there that he just reuses all the time

xxd: wait, the int Mod parameter is just the exclusive maximum bound right?

xxd: BRuh

MSmits: and if the number he finds is too high, he just caps it to the highest allowed move

Scarfield: yea

xxd: thats literally illegal

xxd: why does he not mod it intsead of something

xxd: or something*

MSmits: well in uttt you have 9 squares

MSmits: say 6 and 8 are taken

MSmits: then there are 7 moves left

xxd: oh thats true

MSmits: so if his random finds 7, it's too high

xxd: nvm

MSmits: so he'll just take the highest possible

MSmits: i was shocked to find he did that, but it works apparently since his bot is as good as the best NN';s

Scarfield: how do you actually determine if something is "random enough"?

michaellan: you click "Test in Arena"

Scarfield: xD

AllYourTrees: lmao

MSmits: well 1 thing you can do is just run it 100 million times and if you only have 9 possible moves you can see if they are equally distributed

MSmits: thats not enough of course

MSmits: I am sure there are other tests

MSmits: but i am no expert

MSmits: but if that test fails, you know your random sucks already

Scarfield: true

Scarfield: xxd are you a CS student/graduated, or just benefitting from eating avocadoes?

michaellan: i'm not sure how i'm supposed to pick from either option

michaellan: i like avocados and I'm a CS sstudent

michaellan: I don't like guacamole though

Astrobytes: Heathen1

Astrobytes: Heathen!

Scarfield: !

Astrobytes: avos were MADE for guacamole

Wontonimo: and toast with feta

Scarfield: xD

michaellan: MSmits: what is the point of xorshift?

Wontonimo: to solve the nintendo challenge

Astrobytes: https://en.wikipedia.org/wiki/Xorshift

michaellan: my bad, i thought "xorshift" was a made up term

Astrobytes: Nice and fast some of them

Scarfield: anyway, im off, enjoy your evening folks :)

Astrobytes: Later Scarfield, same to you :)

Scarfield: ty cya

MSmits: bye Scarfield

MSmits: xxd xorshift can turn your c4 boards into hash keys

MSmits: p1 ^ xorshift(p2) or use xorshift(p1) ^xorshift(p2)

MSmits: if you dont use it, you will get hash collisions

MSmits: especially since p1 and p2 are mutually exclusive, so when you xor them normally, you just get a lot of 1's where the pieces are

xxd: DAMN

xxd: i get what u mean

xxd: also by scarfield i wasnt looking at chat but hes probably gone now

xxd: bye*

MSmits: btw, I don't use hashing for C4

xxd: yeah idk why you'd ned it

xxd: oh

xxd: transpositions

MSmits: it's just those 5 lines are in each bot

MSmits: yes

MSmits: i use it for transpositions sometimes

michaellan: how does that work

michaellan: do you just link to the same node

michaellan: in the pool

MSmits: in mcts it is really really messy

MSmits: but yes, you set your childindex to the same node

MSmits: so they share children

michaellan: okok

MSmits: but i've never found it to work well in mcts

michaellan: also

MSmits: in minimax it's great

michaellan: why do you shift by 9

MSmits: thats a row

michaellan: wouldnt you shift by 8 to get the next

MSmits: 1 row up

michaellan: oh crud

michaellan: its 0-8 xD

MSmits: ye confusing sometimes

michaellan: wait so int64 is litearlly perfect

michaellan: for this

MSmits: i've had my fair share of bug do to that particular off by 1 error

michaellan: this couldnt have been a coincidence

MSmits: due to

MSmits: well

MSmits: 8x8 could have been chosen for c4

MSmits: but 8x8 is solved

MSmits: 9x7 isnt

michaellan: REALLY?

MSmits: yes

michaellan: i need to tell my brother tha

michaellan: i told him c4 was solved

MSmits: it is

MSmits: 8x8 and smaller

michaellan: huh

michaellan: oh ok

MSmits: normal c4 is 6x7

MSmits: easily solved

MSmits: btw, our version of C4 implements pie rule

Wontonimo: what that?

MSmits: player 1 starts and player 2 gets to decide to keep playing or take over p1's board

Wontonimo: oh, right

Wontonimo: i like that

martinpapa69: does that make it less-easily solvable ?

MSmits: yes

MSmits: far less

Wontonimo: i say we make that part of every board game

xxd: wait

xxd: taht seems overpowerd

MSmits: if re curse were here he'd say thats lazy game design Wontonimo

Astrobytes: :)

Wontonimo: i heard MSmits

Wontonimo: i say it's smart

xxd: wouldn't you always steal?

MSmits: no

MSmits: p1 will play a crap move if you always steal

MSmits: the corners are losing moves

xxd: oh

xxd: well this makes my implementation a bit omre complicated

MSmits: so he will play the most balanced move

MSmits: effectively auto-balancing the game

MSmits: if a balanced starting move exists

xxd: how do you add this in MCTS though

xxd: like

Wontonimo: you don't

xxd: the average?

xxd: the median child

martinpapa69: you check top players replay

Astrobytes: didn't you figure out the most balanced move MSmits?

Wontonimo: just hard code it in the first move with if statements

martinpapa69: and hardcode

MSmits: yeah it's 1 and 7 Astrobytes

xxd: xD okay bigbrain

MSmits: after 50+ million games simmed and many solved branches i am 99.7% sure that move 1 and 7 are solved as draw

Wontonimo: if you want to find the "bestish" first move, just run MCTS locally with 5 minutes of compute, copy the probabilities of the first move into an array and copy that into your game

Wontonimo: now you have a reusable concept for any game that has the pie

xxd: wait so if you "Steal", you basically switch sides on the table right

MSmits: yeah

Wontonimo: yes

xxd: why is the problem statement's explanation so bad

xxd: wait but in wood 2

xxd: should i just do best

xxd: and hopethey dont steal

MSmits: yeah

MSmits: 3 and 5 are best

MSmits: 4 is second best

xxd: oh seriously, not 4?

xxd: interesting

MSmits: nope

MSmits: probably both solved as win though

MSmits: if we were to solve them

xxd: is UTTT solved too

Wontonimo: yeah. wood 2 you can go middle, then random other than to prefer a winning move

MSmits: uttt is not solved, but i've done so much testing for that game that i am convinced that if you solved it, p1 would win

Wontonimo: without pie

MSmits: pie rule would make it a draw i think

MSmits: there are several bad starting moves that would lose the advantage for p1

MSmits: there;s 15 unique starters for uttt

michaellan: the pie rule is so interesting

MSmits: and only 1 of them has to be solved as a draw

MSmits: for pie rule to make the entire game a draw

michaellan: facts

MSmits: yeah pie rule is pretty neat

MSmits: do you know where the name comes from?

MSmits: say we have to share a pie. I get to slice it in half. You get to pick which half you get. I would be forced to slice it up exactly in the middle, or i get a smaller piece.

MSmits: they use this trick with children

MSmits: so they dont fight over dessert

michaellan: damn

michaellan: i watched a video where they explained how to do pie rule with 3 people

michaellan: it involved crumbs or something

MSmits: lol

MSmits: well thats too advanced for me

michaellan: https://www.youtube.com/watch?v=kaMKInkV7Vs

MSmits: jeez

MSmits: thats way too complicated!

michaellan: theres no cake for anyone at the end :rofl: all crumbs

YurkovAS: https://www.kaggle.com/c/lux-ai-2021/overview AI Challenge

eulerscheZahl: https://yare.io/ another one

eulerscheZahl: JS only

TobiasA: i like that second one i did the interactive tutorial

michaellan: wait

TobiasA: ooouuu the first one looks neat

michaellan: why are you guys using floats for win/visits

michaellan: larger range? more flexibility with scoring?

MSmits: so as not to have to cast when doing uct

MSmits: casting is expensive

michaellan: bruh im so dumb, how did i not think of this

michaellan: thx

MSmits: i spent months in real time on this :P

MSmits: it's not dumb at all

MSmits: we all run into the same issues

MSmits: we're just dumping all this accumulated knowledge on you all at once :P

michaellan: i think the way everyone has similar setups is almost like a GA

michaellan: everyone talks to each other = crossover

MSmits: yeah, thats true

michaellan: and we converge at the best most optimized solutions

michaellan: that is so satisfying to think about

MSmits: though, we also converge too quickly sometimes

michaellan: :thinking:

MSmits: if everyone tells you how to do something

MSmits: you dont try other stuff

MSmits: so sometimes someone stubborn comes in

MSmits: and teaches us all new things

Default avatar.png tohshiiki: hi

michaellan: thats why we have mutations

MSmits: too much sharing can be harmful to creativity

michaellan: maybe one day i'll be a mutation

MSmits: right

MSmits: sure, you be a mutant, thats cool

MSmits: you already got two x's

michaellan: ha

Default avatar.png tohshiiki: u guys r bots

MSmits: no u

Default avatar.png tohshiiki: no u

MSmits: couldnt resist sorry

MSmits: Astrobytes

jacek: oO

Default avatar.png tohshiiki: fihifhifowqfmifhcas

BlaiseEbuth: :popcorn:

Default avatar.png tohshiiki: www.petco.com

michaellan: please stop

michaellan: ;-;

Wontonimo: keep the chat on topic and (mostly) code related or you will be banned

Default avatar.png tohshiiki: i have no idea what this is tho

Default avatar.png tohshiiki: what is this cjat

Default avatar.png tohshiiki: i never even joined

michaellan: u can close it if you want

Wontonimo: you are on a coding site

MSmits: it's codingame world chat

Astrobytes: MSmits :D

Default avatar.png tohshiiki: ik im on a coding website not the chat tho

Astrobytes: wanna kick?

BlaiseEbuth: ban

Wontonimo: i'm okay with one more strike

TobiasA: imagine getting lost on the internet and ending up here:joy:

MSmits: maybe he was looking for information about vaccines with fetus in them

michaellan: lmao what

TobiasA: :joy:

MSmits: hey that's a thing

MSmits: well, that people believe it, is a thing

MSmits: anti vax theories would be funny if they weren't also depressing

BlaiseEbuth: No more moderation on this chat...

MSmits: astro does fine i think blaise

Astrobytes: No it's true in some cases (I believe I explained this a while ago) in that fetal cells are used

Astrobytes: in some vaccines

MSmits: ah yes, i should specify

MSmits: they think it's aborted fetus

MSmits: from abortions

michaellan: that is weird

Astrobytes: well, cell lines derived from aborted fetus cells. Yes that's the case. From decades ago.

michaellan: ._.

MSmits: really? Thats interesting, it's not the covid vaccine though

Astrobytes: The cell lines are just cells grown from those.

Astrobytes: I think one or two companies use them.

BlaiseEbuth: That's like the babies foreskins used in moisturizer to make it more creamy.

MSmits: oh right, Johnson does apparently

Astrobytes: And I think those cell lines were grown from 2 fetuses

MSmits: it was my assumption that the idea was total nonsense

Wontonimo: I was curious about running out of nodes in my node pool. Just added output for that and I at most use 10% of my pool

michaellan: wow

michaellan: what is your size?

Astrobytes: there are a couple of others that are grown from the odd other fetus here and there but from a long time ago.

Default avatar.png Ashishsr123: what is the code to print debug messages ?

Wontonimo: 30,000,000

xxd: just print to stderr

MSmits: wait, but there's no microchip right Astrobytes?

Astrobytes: The vaccine itself doesn't actually contain any of that though MSmits

Default avatar.png Ashishsr123: ok

MSmits: true

MSmits: it's used for production and testing

Astrobytes: But they are used to develop and test

Astrobytes: yes

xxd: but what about the 5G

xxd: do they put 5G in vaccines

Astrobytes: It's pretty standard practice MSmits

eulerscheZahl: no telemetry data for the producer?

eulerscheZahl: but MS does that too!

MSmits: I think G is part of rna/dna so lots of G's in mrna vaccine ?

eulerscheZahl: have you seen GATTACA?

MSmits: nope

Astrobytes: xxd: Of course! I'm streaming all my data directly to Bill Gates, Hilary Clinton and a secret cabal of baby-eating lizard-people

Wontonimo: xxd, instead of rolling out all children, I do 2 rollouts per child. It's a tradeoff that gave me 4 or so ranks

Astrobytes: GATTACA is one of my favourite movies

xxd: nice

eulerscheZahl: my favorite is probably Idiocrazy

xxd: is a 2^63 size win lookup table too big

MSmits: lol

MSmits: yeah

Astrobytes: Yeah, Idiocracy is up there for sure

xxd: so i gotta loop and stuff to find wins -_-

Astrobytes: back soon, cat just woke up

MSmits: my oware lookup locally is around 2^36

MSmits: and thats 57 GB

xxd: wtf

xxd: 2^36 bools?

MSmits: no bits

MSmits: 7 bits per state

xxd: i think my intuition is horribly off

MSmits: wait i think i am a power of 3 off

MSmits: 2 ^39

eulerscheZahl: 2^36 = 64GB

MSmits: yeah 2^36 bytes is

MSmits: i was thinking bits

MSmits: got confused

eulerscheZahl: ah

eulerscheZahl: only internet providers count in bits instead of bytes

MSmits: higher numbers = better

dmin: gotta pump those ads up

martinpapa69: brand new 2000ml coca cola!

eulerscheZahl: my physics teacher once told me that there's a difference between 2l and 2000ml

eulerscheZahl: it's the precision: 2l might as well be 1.6 or 2.4

Wontonimo: and my math teacher told me they are the same

Wontonimo: and my religion teach told me not to trust either because they can't agree

jacek: engineer would round down to 0

xxd: frick i got sniped

TobiasA: why?

xxd: MSmits: why do you set visits to 1 in SetChild

xxd: the backpropagate will set it again no?

xxd: i'm gonna set mine to zero cuz thats the way im used to it at least

MSmits: because i know i'll be rolling out from all o fthem

MSmits: that way i dont have to set the visits

MSmits: during the rollouts

MSmits: so only do this when you rollout from each child after expansion

xxd: so u just start from the parent of the node

xxd: when u backpropagate visits?

MSmits: i start at the root

MSmits: it's basically forward propagation i guess

xxd: oh i see

xxd: i just realize you dont store a "player" variable and its not necessary

MSmits: doesnt really matter if you start at the root or the leaf, as long as you get the sign correctly

xxd: like the current player

MSmits: yeah thats not necessary

xxd: made things eaiser when i was learning it at first

MSmits: selectedcount & 1 tells you the player

MSmits: even or odd

AllYourTrees: finally cleaned up my solver backprop to not have to visit all children every time

MSmits: all children?

AllYourTrees: when i backpropped before i scanned all the children of each node to check if they were all solved or not

AllYourTrees: but now im just tracking best found so far and number of solved children

MSmits: why do you need to track the number?

AllYourTrees: to know when all of them are solved?

MSmits: hmm

MSmits: so you're keeping this number on the node?/

AllYourTrees: for losses don't you need to know all children are proven losses?

AllYourTrees: http://chat.codingame.com/pastebin/da53dddb-35b0-42f9-b060-9b0266168dd0

MSmits: i never even considered that

AllYourTrees: requires you never visit a solved node though

MSmits: I just loop over all children and if i encounter a nonsolved node, i stop solving

AllYourTrees: ya thats what i did before

MSmits: is your way better?

MSmits: your new way

AllYourTrees: bumped up a couple of ranks on clobber

MSmits: thats a very bad test though

AllYourTrees: whats a good test

MSmits: leaderboard is very unreliable

MSmits: a performance measurement i guess

AllYourTrees: yeah it was a performance boost for me

MSmits: well thats all i need to know because then it can only be an improvement

AllYourTrees: well

AllYourTrees: performance is kinda inconsistent when i play in ide

MSmits: yes

AllYourTrees: haven't tested locally or anything lol

AllYourTrees: either way i feel better about doing it that way so im keeping it :P

MSmits: if you do it locally, you would need to pick a state thats solvable and solve it with both methods and time it

MSmits: it's a cool find

MSmits: never heard someone mention this

AllYourTrees: :scream:

MSmits: so 2 extra bytes?

YurkovAS: store bestSolved and numberSolved in parent node?

MSmits: yeah

AllYourTrees: ya to both

martinpapa69: i keep a bitset<children_count> unsolved_children; on nodes

MSmits: never used bitset

martinpapa69: so i can avaoid messing up my count, if i accidentally visit a solved child

martinpapa69: int8_t then

martinpapa69: whatever

YurkovAS: bitset is slow

martinpapa69: i do actually visit solved children

MSmits: I completely abandon those children

martinpapa69: thats not a good idea

martinpapa69: you can overestimate nodes

MSmits: I don't want to waste an entire selection iteration just to end on an already fully explored branch

Default avatar.png aayux: i am new to c++ need help where should i stary

MSmits: i started c++ by starting at C# :P

MSmits: has similar syntax, but doesnt turn you off programming entirely like C++ frustration can do :)

martinpapa69: the paper actually mentions solved children nodes

AllYourTrees: i vote rust

AllYourTrees: :D

martinpapa69: https://dke.maastrichtuniversity.nl/m.winands/documents/uctloa.pdf

MSmits: yeah, i know it

martinpapa69: you should never just "abandon" the,m

MSmits: their code is bad

MSmits: i just mean i dont visit them

martinpapa69: ye i dont down ther on a solved branch

martinpapa69: i stop at the last nonsolved node

martinpapa69: and sometimes backprop solved children

MSmits: ok let me put it this way

MSmits: do you always expand something, when you go down the tree

martinpapa69: no. if my ucb selects a solved node, i backprop it

MSmits: ah see, i feel thats wasteful

MSmits: you're all the way down there, why not explore a bit further

martinpapa69: i use alpha zero tho. 80% of the cpu time is NN

MSmits: you can always decide to backprop the solved node anyways

MSmits: but still explore something else

martinpapa69: its just make my mcts more accure with a small waste

martinpapa69: accurate*

YurkovAS: i'm ignore solved in ucb selection

martinpapa69: dunno if its a good idea never tried.

MSmits: well i tried in uttt to select solved draws but wasnt better

MSmits: i also tried to some tricks to pick nonsolved nodes and reduce the bias

MSmits: but it was usually a small performance hit and no real gain

MSmits: so i just select nonsolved nodes now and accept having the bias

martinpapa69: one thing that bothers me more is node duplicates

MSmits: what do you mean

MSmits: transpositions?

martinpapa69: ye

MSmits: it's really difficult to deal with those in mcts

MSmits: never seen it work in a cg bot

martinpapa69: i wont to link them to the same node somehow

MSmits: well

MSmits: it worked for me 1 time

MSmits: in yavalath, to solve sooner, but in early game it is costly

MSmits: what i do is i share the same childindex to the node pool

Wontonimo: if it's all pointers and no pooling, then it isn't an issue. if you've got pooling and you allocate the children in a block, it is a little more tricky

MSmits: yeah you can hash the childindex

martinpapa69: pooling is necessary

MSmits: oh and put the childcount in there too

MSmits: or you will have to re-expand to find out

martinpapa69: or make children a smart pointer, with ref counter

Wontonimo: why ref counter?

martinpapa69: oh nvm im talking about children node invalidation

MSmits: martinpapa69 i use this in yavalath:

MSmits: http://chat.codingame.com/pastebin/86f85041-36ff-4490-92fc-e336d0a6a62c

MSmits: value being poorly named, it's just the childindex

MSmits: the child count isnt needed in yavalath as its just the number of empty spaces on the board

MSmits: when i expanding i first check if the state is in the unordered set

MSmits: if so i take the information from there and keep on selecting

MSmits: not expanding at all

MSmits: it might be better to create your own hashtable, unordered set is slower than most (this is an old bot)

martinpapa69: I always use std stuff, when there is one for my problem

martinpapa69: its better to have a clean code than to gain 5% performance

martinpapa69: imo

Wontonimo: if your clean code means 5 fewer bugs, absolutely

AllYourTrees: even if you pointed things properly your backprop would have to be a BFS instead of a single line

AllYourTrees: cause now there are multiple parents

AllYourTrees: ^ re transposition

AllYourTrees: but i feel like bfs would be expensive

martinpapa69: i dont have pointer to parants

Wontonimo: the transposition is really for the benefit of that one branch and balancing it with the UCB calc

martinpapa69: and i dont have a separate backprop function

martinpapa69: if "backprop" with the return value of the recursive playout function

Wontonimo: i don't think it would be bad to only backprop the path taken and skip all related parents

michaellan: oh i completely forgot about backprop wrt transposition

martinpapa69: ye i dont think so

MSmits: AllYourTrees, about BFS, this is not really doable

Wontonimo: if you wanted to use the sum of the child visits instead of the parent visits, that would "correct" your UCB calculation

MSmits: Wontonimo even that is incorrect

Wontonimo: do tell

MSmits: well, I am thinking. I considered this before and dismissed it. trying to think of why

MSmits: if you keep a visitcount on every node

MSmits: but the real visitcount is the sum of child visits

MSmits: which is it then?

MSmits: the children also have children

MSmits: do i use their visit count, or the sum of the granchildren

michaellan: :mindblown:

MSmits: a child may have a grandchild that has been updated, but it's not reflected in the visitcount of the child

michaellan: what about some sort of lazy propagation

Wontonimo: -inception- ! i accept that it isn't "pure", but I attest that it is practical and

michaellan: where you have a flag that tells is it up-to-date

Wontonimo: keeps true to the spirit of UCB

MSmits: yeah, it's probably a first order correction that works Wontonimo

MSmits: but i generally just ignore the issue

MSmits: and accept the massive bias :P

MSmits: btw

MSmits: oware has loops

MSmits: think of the vicious circle of visit corrections you could get :)

martinpapa69: ye you need to hash turn too

MSmits: yep

MSmits: btw, my local meta mcts for oware hasnt found a single loop yet, with selection branches going 40 deep

MSmits: 14 million selections so far

MSmits: i have it set that when it encounters the same state twice during selection, it backprops 0

MSmits: because in that case, both players agreed on a draw, sort of

MSmits: a seed-draw that is. No more seeds captured after this point

MSmits: (there may have been captures before)

MSmits: but i cant debug it, because it doesnt happen =/

martinpapa69: in meta mcts yo ujust precalculate the ucb tree locally and hardcode it ?

MSmits: hmm not entirely

MSmits: my nodes are all in a dictionary

MSmits: a massive one thats persistent (memory mapped)

MSmits: the state hashes to the right node

MSmits: so when i select, i generate all children and find them in the dictionary

MSmits: then select one and do it again

martinpapa69: ahh okay

MSmits: transpositions are automatically handled this way

MSmits: but yeah i suffer from the backprop and selection bias

martinpapa69: that would definitely improve my nn bot

MSmits: how do you mean

martinpapa69: some precalculation of the nodes locally

AllYourTrees: i wonder if you could pay for expensive transposition tables/bfs backprop while training the NN, and then on CG just do normal uct

MSmits: do you mean an opening book?

martinpapa69: ye something like that

MSmits: thats what i am using it for

MSmits: and maybe for training later

MSmits: not sure yet

MSmits: the 48-37 seed region will never be exact. The mcts value is an estimate

AllYourTrees: martin what game are you working on

martinpapa69: oware

martinpapa69: but im basically working on my alpha zero framework not the game itself

AllYourTrees: :thumbs_up:

martinpapa69: MSmits btw. what if your book says that one note is a +4 for player 0

martinpapa69: but player 1 have 23 score

martinpapa69: and the node results in a series with 1 seed for player 1

martinpapa69: then 5 seed for player 0

martinpapa69: so i say its not enough to know the endresult of a node, you need to know every seedgain

Default avatar.png TawerLeon: hi there

MSmits: back, let me think martinpapa69

MSmits: I think it's a misconception that the game ending at 24 (or 25) seeds makes a difference

MSmits: the only reason the game ends is that the other player cant win anymore

MSmits: so you migth as well keep playing

MSmits: it doesnt matter

MSmits: so if it doesn't matter, why should I bother taking the issue into account?

MSmits: maybe i misunderstood your question/comment though

martinpapa69: (i thought game ends at 24 seed)

MSmits: well if you have 24, you can still draw

MSmits: or win

martinpapa69: so if player 0 have 23 seeds

MSmits: there are 48 seeds

martinpapa69: and seeds a +2 node

martinpapa69: sees*

MSmits: then he won

martinpapa69: ye, true. player1 cant get any seeds in that case

MSmits: but the move that has the biggest net seed gain at the end of the game is always the best move in my way of looking at it

MSmits: no matter what the current score is

MSmits: ofc when you have 23 points, you can take a quick 2 points and win the game

MSmits: or play longer and win the game by a larger margin

MSmits: but you're not going to lose by picking the move with a greater net gain

MSmits: thats impossible

martinpapa69: ye, you are right

MSmits: so this way i can ignore score and have a simpler gamestate for the NN. Might not help at all, but i like not having score as input

martinpapa69: maybe i can integrate this thing into my AZ. hmhm

MSmits: I have no idea if that's easy to do

martinpapa69: can i actually just drop the score input ??

MSmits: I am training my nn to output something thats easily converted to a net score, so i can add it to the current score

MSmits: well i am not there yet, but this is the plan

MSmits: so my values are not estimates of win chance

MSmits: but estimates of net score gain

MSmits: no idea how this goes together with a policy and such

martinpapa69: ye

MSmits: I am a big fan of using as much domain knowledge as possible and focusing the NN to just the thing that is hard to figure out for humans

MSmits: taking the score out fits with that idea

MSmits: azero is supposed to be generating its own domain knowledge

MSmits: so maybe not do that :)

martinpapa69: I always belived in giving NN the as raw input as it makes sense

martinpapa69: and let it do the job

MSmits: there is something to that

MSmits: but remember the xor example

MSmits: what if you can replace the entire NN with a single ^operation

MSmits: no need to do things needlessly

MSmits: there is irony in that last line btw

martinpapa69: ye sometimes it makes sense to transform the data

GeorgeDzigo: cout << "Hello how are y'all doing" << endl;

MSmits: hi GeorgeDzigo

GeorgeDzigo: sup

GeorgeDzigo: how are you?

jacek: how may we help you, Sir/Madam

MSmits: i'm fine GeorgeDzigo. Just chillin'

AllYourTrees: i like making input as small as possible for NN. they can fit anything so may as well save computation

MSmits: recur se said he makes small networks

MSmits: but that migth not refer to input

MSmits: maybe just few layers/nodes

michaellan: since I'm using a global selected/path array, should I have my rollout return from the perspective of the root player?

michaellan: i'm currently returning from the perspective of the node's player

michaellan: i thikn the answer is yes but i am not 100% sure

AllYourTrees: i think either way works, just changes where you place your negative signs

michaellan: thank

michaellan: what do you use?

jacek: depends on selection

AllYourTrees: perspective of current node

MSmits: xxd yeah, unfortunately i do this in all possible ways across my different bots

MSmits: when i do a random sim, some of my bots return 1 if the current player wins and some return 1 if the root player wins

michaellan: so many possibilities for off-by-one-player erros

jacek: if white wins in rollouts, add score to white's nodes and minus score to black's nodes

AllYourTrees: jace what do you mean?

michaellan: lol

AllYourTrees: ahhh

michaellan: yeah but i iterate from root downwards now

michaellan: so i thought that might be eaiser

MSmits: i do something silly

MSmits: i let the input format decide for me

MSmits: some games give you a player id

jacek: AllYourTrees well you can have score in node from its perspective or global perspective. you just need to adjust the selectio then

AllYourTrees: ahhhh i see

MSmits: and in some games you're always player 1 from your own perspective

michaellan: ok never shoulda asked now im 10x confused

AllYourTrees: lol

MSmits: you're supposed to be, this is literally the hardest part of mcts

MSmits: the sign errors

michaellan: i do think root is just easier in general though

MSmits: figuring out if something needs a - or not

AllYourTrees: i find node value relative to node's player the easiest to remember

MSmits: yeah but does the root value need a - or not? when flipping signs in backprop, do you do it at the beginning of the loop, or at the end?

AllYourTrees: then in selection, use -child value, and for rollout make score relative to current node

MSmits: so many places to flip signs

michaellan: ; - ;

jacek: i dont have 'root' node, just list of children at the top hmm

michaellan: MSmits: do you think of the "player" at each node as the player who just moved, or the player who is about to move?

MSmits: who is about to move

michaellan: goddamnit

MSmits: so my root node belongs to the opponent

MSmits: and the first child is my move

michaellan: the other ppl i asked do it the other way

MSmits: this is not the only way to do it

AllYourTrees: isn't that the other way?

martinpapa69: the "official" way is to backprop fro mthe prespective of the leaf node.In official i mean, it is used in papers and popular implementations on github

MSmits: there are many ways to do this

MSmits: just be consistent with yourselrf

AllYourTrees: ^

michaellan: yeah but i was just wondering if one way is easier

AllYourTrees: do whatever makes sense and what works lol

michaellan: none if it makes sense

michaellan: of

michaellan: i'm just trusting my gut now

MSmits: it makes sense once you found one way and used it a lot

MSmits: i wasted a lot of time, rewriting bots and doing it a little differently each time

MSmits: confusing myself

martinpapa69: i like it when i calculate the ucb scores i dont have to *-1

MSmits: darkhorse made a template for mcts he uses across all his games

michaellan: smart

michaellan: i wanted to do that but i got lazy and started coupling game logic and MCTS logic

MSmits: martinpapa69 yeah i dont do *-1

MSmits: and if i had to, i'd just take the minimum instead of the maximum

michaellan: why do you need *-1?

martinpapa69: because you messed up the signs

MSmits: if you backpropagated everything wrong :P

michaellan: breh

AllYourTrees: if node's score is for itself, then best child is -1 * child value

AllYourTrees: if node's score is for parent, then best child is child value

martinpapa69: the node's score is from the parents perspective

MSmits: xxd nothing we say about this is gonna make it more clear. You need to draw pictures on paper and such :)

MSmits: also, I am ashamed to admit i sometimes just coded a thing, flipped a couple of signs in various ways until it got into the top 10 :P

michaellan: ah i see what you guys mean now, but i will have to think about it more to actually udnerstand it

michaellan: urgh

martinpapa69: but ye i spent hours, if not days to just change signs everywhere and to hope it works

MSmits: haha thats what i just said

AllYourTrees: its a rite of passage

MSmits: it helps to minimize the number of signs required

MSmits: if you see somewhere you're doubling up on signs, eliminate both of them

michaellan: :bigbrain:

jacek: MSmits this is what i do with inputs. sometimes board is flipped and/or mirrored vs my representation, so i brute force changes until it works

MSmits: ohh yeah boardflipping makes everything worse :)

AllYourTrees: oh ya true lol

MSmits: also using solver does too

MSmits: more signs

AllYourTrees: :scream:

Astrobytes: it really is a minefield of sign errors, or a signfield of mine errors...

MSmits: my professors at the uni told me the biggest difference between math and physics is that the signs are really important in physics wheras in math they are... meh

MSmits: is true for coding as well :)

RightHandElf: why is my chat scrolling itself

MSmits: no idea, it happens to me as well

Astrobytes: it's extremely annoying

MSmits: well the auto scrolling is not as bad as the fact that it locks everything up

MSmits: you cant do anything

MSmits: until its done

Astrobytes: Yeah, that too

martinpapa69: it only happens to me when i have multiple cg tabs open

Astrobytes: There are not many days when that is not the case for me lol

RightHandElf: I only had the one open but I did leave it up overnight and I might've had another open when I opened this one

Astrobytes: if you leave the chat minimised I think it's OK, even with multiple tabs

Astrobytes: iirc

martinpapa69: there were crazy memory leaks on abandoned cg tabs back then

martinpapa69: like one cg tab consumed 10's of gigabytes

Astrobytes: Certain games if I remember rightly

AllYourTrees: so any tricks to speed up NN computations? i tried simd but it was slower :scream:

jacek: get faster cpu

AllYourTrees: on CG i mean

AllYourTrees: has anyone tried batching multiple node evaluations?

jacek: sponsor faster servers for CG

AllYourTrees: LOL

jacek: have you tried nncache

AllYourTrees: whats that

AllYourTrees: just a cache for computations?

RoboStac: have you tried a less rusty language? :)

AllYourTrees: :scream:

AllYourTrees: how dare you

jacek: like transposition table, but you put state - nn eval

jacek: depends on how transposity is the game it may speed up considerably

AllYourTrees: this is C4

AllYourTrees: so probably a lot?

jacek: so, quite

AllYourTrees: kk wish me luck

jacek: are you doing policy as well

RoboStac: yeah, nncache is very good on c4

AllYourTrees: ya policy & value

jacek: everyone doing policy but me :(

AllYourTrees: :shrug: we are just about even now that royale blew up the ranks

michaellan: whats policy

AllYourTrees: a distribution over children nodes

AllYourTrees: theoretically allows mcts to focus in certain parts of the tree

michaellan: interesting

michaellan: Do i need to worry about this? warning: comparing floating-point with '==' or '!=' is unsafe [-Wfloat-equal]

michaellan: if (n->visits == 0)

brooklyn76: Hi umm what do we do on here im new and just joined??

RoboStac: probably not for a visit count, you aren't doing anything that could cause decimal places (it's only an issue if you are hitting accuracy limits which you won't do with full numbers until about 16 million)

michaellan: I see

michaellan: thanks robo

michaellan: i guess i can make it < 1

MSmits: policy predates nn's i think

MSmits: there are mcts enhancements that use something like a policy

MSmits: explore high valued children sooner

MSmits: (this assumes you have mcts with eval)

MACKEYTH: I read a paper recently that suggested eval functions are best employed to terminate rollouts early, with each rollout still judged as a win or loss

Astrobytes: EPT, yes. Early playout termination

MACKEYTH: Once you start giving children values other than win/loss, doesn't that throw off the exploration constant in the UCT function?

RoboStac: only if the values are outside the range

RoboStac: it's normal for a node value in uct to be between -1/1 as it's averaged over all visits

reCurse: You just need to scale the constant accordingly

reCurse: There's nothing special about the range

Astrobytes: You can either adjust your exploration constant or scale your eval score

MSmits: it's funny to assign 117 as a loss, 118 as a draw and 119 as a win value

MSmits: you can use the same exploration param for that

MSmits: and your bot plays the same way

MSmits: because an additive constant changes nothing, the addition being 118 here

reCurse: Well

reCurse: Guess I'm going to be that guy

reCurse: You lose a lot more precision at 117

MSmits: hmm sure i guess so, mathematically it's the same, but yeah 32 bit floats and all that

michaellan: MSmits:

michaellan: the FastRand function is defined on ints

MSmits: oh yeah, it's only for integers

michaellan: but in even the first iteration

michaellan: mcts_c4.cpp:20:50: runtime error: signed integer overflow: 777778 * 214013 cannot be represented in type 'int'

michaellan: is it *meant* to overflow?

michaellan: I have a flag that crashes my program on these erros

MSmits: probably yeah

michaellan: ok

MSmits: I did not design it

michaellan: aight aight

MSmits: i just use it

MSmits: funny that it tells you this

RoboStac: it probably shouldn't be signed though

MSmits: i must be having my VS setup poorly, i never saw any errors

RoboStac: whats the function?

MSmits: inline int FastRand(int mod) { g_seed = (214013 * g_seed + 2531011); return (((g_seed >> 16) & 0x7FFF) * mod) >> 15; }

michaellan: unsigned integer is UB

michaellan: unsigned integer overflwo*

RoboStac: no, unsigned is ok, signed is bad

MSmits: you mean the seed?

michaellan: oh, i swore i saw the opposite somewhere

michaellan: yeah you're right

michaellan: inside the function, where there's 214013 * g_seed

MSmits: yeah?

michaellan: that sub-expression is larger than signed integer max size

MSmits: ok

RoboStac: probably all 3 (seed, mod, return value) should be unsigned

MSmits: ah, i just took it off stack overflow at some point I think

MSmits: it works, but maybe it could work better

MSmits: are you sure the overflow is not a feature?

michaellan: i thikn its meant to be

michaellan: but i'm too dumb

michaellan: so i'm gonna not use it for now

MSmits: ah, i sometimes use stuff i dont know how it works

MSmits: like fast sqrt and such

MSmits: i do check it to see if it does what it's supposed to

michaellan: omg

michaellan: wait MSmits

michaellan: you said 3 and 5 are best, and 1 and 7 are most equal?

michaellan: and 4 is second best

MSmits: yes

michaellan: i think im getting there!

michaellan: close to coding up the basic part of it

MSmits: most good mcts bots will find 3 or 5 as best move on turn 1

MSmits: you dont need a local meta mcts with millions of games simmed, to find this

michaellan: whats the best second move/reply to 3/5

MSmits: in terms of winrate on meta mcts, i it's more or less 40% - 50% - 60% - 70% -60% for the first 5 moves from left to right

MSmits: the other 4 are symmetric

michaellan: mhm

MSmits: reply hmm

MSmits: the best reply is to steal it :P

MSmits: i cant get to my meta mcts program atm. It's big and i transfered it to my slow HD

MSmits: running oware now

MSmits: but whatever the reply is, it's a losing move

michaellan: okay

MSmits: i can tell you all the best moves for oware any time you want though :0

michaellan: ._.

Default avatar.png andyescobar: anyone knows why I keep getting an unalitialized numb6 variable

Default avatar.png andyescobar: http://chat.codingame.com/pastebin/cf8868bb-76f5-4e33-aa29-125845728577

MSmits: int numb6,

MSmits: it has no value

MSmits: int numb6 = 0 works

MSmits: you are assuming they are both set to 0 on that line of code

MSmits: but they aren't

Default avatar.png andyescobar: MSmith I added a value to numb6 along with numb8

MSmits: nope

MSmits: it's uninitialized

MSmits: you just set numb8 to 0

Astrobytes: donno if that works in java

Default avatar.png andyescobar: int num6, numb8 = 0;

Astrobytes: What MSmits said

MSmits: the error tells me it doesn;t work

Default avatar.png andyescobar: ohh thanks

MSmits: so i dont need to know about java

MSmits: not much else can be wrong

Default avatar.png andyescobar: yeah thanks

MSmits: it can only be uninitialized if it was never initialized

Astrobytes: No shit!

Default avatar.png andyescobar: I am transitioning from C++ to java

MSmits: :poop:

Default avatar.png andyescobar: and its killing me not really but some syntax is a bit different

MSmits: cool, yeah c++ lets you do lots of stuff that's a bad idea :0

Astrobytes: It's a completely different 'experience'

Default avatar.png andyescobar: Yeah thanks a lot btw

michaellan: why dont they put PIE rule in UTTT

michaellan: oops idk why i capitalized pie

MSmits: they just didn't when it was created

MSmits: pie rule was first used in Yacalath

michaellan: they can add a patch

MSmits: c->v

michaellan: or not

MSmits: it would be too damaging to the bots already submitted

Astrobytes: I kinda like Yacalath. When struct comes back you can suggest that to him.

MSmits: lol

MSmits: pie rule would definitely fix the imbalance in uttt, but would add some more complexity. If you just view uttt as a new player mcts practice tool, then it's not worth it

MSmits: near the top the imbalance really hurts the game

michaellan: true

michaellan: when i run out of space do i just ditch everything and restart?

MSmits: when two bots are clearly not near in strength, the imbalance doesnt matter

MSmits: node pool?

michaellan: yeah

michaellan: i dont think it'll matter in the real thing

MSmits: i have a buffer. If I get near 90% of the node pool being used, I drop the tree. This is very easy as you just set the first node as the root and treat the root as not expanded

michaellan: nice

MSmits: whatever old data is still in the tree is just as ignored as if it were uninitialize

MSmits: d

MSmits: there is a riskier thing you can do

MSmits: you can also keep the whole tree but just set the index back to 0

MSmits: and hope none of the overwritten nodes are still being used

MSmits: in uttt this is safe to do

Astrobytes: it can go very badly wrong though

MSmits: yeah, the more performant your bot, the more likely it does

MSmits: there are many games where i dont even use 10M nodes, let alone 25

MSmits: but some are really cheap to sim

michaellan: the method described in the github markdown page earlier to determine winner doesnt seem to work

michaellan: it made sense in my head

MSmits: sorry i dont use that method

michaellan: i used a method that trys to check for ALL verticalss at once

michaellan: and ALL horizontals

michaellan: but like it can wrap around incorrectly

michaellan: i think

MSmits: yeah those are complicated things

MSmits: the main thing is to keep everything as simple as possible. Dont worry about optimizing

michaellan: do you loop?

MSmits: do that later

MSmits: i dont wincheck

xxd: wtf

MSmits: i calculate all winning moves for the opponent

MSmits: then make sure i dont play under them

MSmits: if no such moves exist

MSmits: i lose

Astrobytes: Wrap around as in bitboards? Just mask the areas you don't wanna go out of bounds from

MSmits: i never win

MSmits: (in the sim)

xxd: http://chat.codingame.com/pastebin/454da757-c377-4731-bb8a-3d02dfa9a2ab

xxd: this is probably very very buggy

xxd: because of the wrapping around

xxd: oh wait theres a typo in there

xxd: too

MSmits: yeah wrapping is annoying

michaellan: i underestimated C4

MSmits: c4 is harder than uttt sim-wise

Wontonimo: really?

MSmits: but not terribly hard compared to some games

Wontonimo: i found c4 way easier

MSmits: well maybe it's harder because of simd being usable

Wontonimo: but then again, i had a lot of practice before c4 and little practice before uttt

Wontonimo: okay, you are 2nd and i'm 19th

Wontonimo: so, yeah, it's easier if I don't rank as high lol

Wontonimo: true skill difference is 46.24 (u) vs 32.62 (me)

michaellan: I havent been able to complete anything for a couple days now, im sad

Wontonimo: where as for uttt 29.89 (u) vs 24.54 (me) I still sometimes win against you when I play first

reCurse: Relying on CG scoring is a fatal mistake

reCurse: Unfortunately they killed benching so competitiveness on CG may now also be a fatal mistake ;)

Astrobytes: reCurse: come now, it's all about 'fun' and happyhappy joyjoy, not competitiveness :P

**Wontonimo wonto checks pulse

reCurse: Killing benching was the last straw for me

reCurse: I don't care anymore :P

reCurse: Just mentioning

reCurse: Delta score is bad

Astrobytes: Absolutely mind-bendingly peculiar decision

Astrobytes: (CG I mean)

michaellan: is benching sitting out or something?

Astrobytes: CGBench, you could benchmark against other bots in the leaderboard by connecting via the 'CG API' and running IDE matches to gather stats

xxd: oh bench as in benchmarking

xxd: i mean i can see why they removed that

xxd: when did they remove it?

Astrobytes: Have you tried tweaking parameters in the IDE and doing a few plays? (not even submits)

xxd: yeah it takes long time

Astrobytes: You reach the play limit *very* quickly.

xxd: oh theres a limit

Astrobytes: The only solution is offline self-play, or replay downloads (which is also, I presume, heavily affected by this)

CaptainDrewBoy: Hi everyone! New to CodinGame

Astrobytes: But yeah, I'm chill on the situation. It's sad but life goes on.

Wontonimo: hey CaptainDrewBoy ! Nice pic

Astrobytes: Hippie too, I dig.

Astrobytes: Anyway, night all

Astrobytes: afternoon, whatever

michaellan: gn

Default avatar.png korex: hello

peppers: hi everyone

MSmits: Wontonimo it surprises me not at all you sometimes beat me as p1, even with 5 rating difference

MSmits: c4 is different because it's balanced

MSmits: sorry for late reply, gonna get some sleep now :)

Wontonimo: gn

Wontonimo: hi peppers

peppers: :smiley:+

ja_fica: C4 is one of the best games to try simulation AI's

ja_fica: For me is the best option to learn from bitboard to minmax to montecarlo tree search

ja_fica: also AVX instructions work well in gere

ja_fica: *here

xxd: i think the is_win function is harder for C4 than for UTTT

xxd: granted, someone generously spoonfed me the "fast" way to check is_win for UTTT

michaellan: ja_fica: where do you use AVX? for checking win?

michaellan: I'm trying to use the num_selected value (how many nodes in the current path) to determine who the current player is but its definitely not working...

michaellan: need to think this thorugh

xxd: i hate how i went from "decent-ish" code to global-variables-everywhere

xxd: so hard to reason with

ProCoder03: in UTTT bronze if the board to play as per last move is already captured, when can we play in random boards ???

Wontonimo: yeah, that's when

ProCoder03: interesting, i just need to fix it !!!

grindy: Im back

grindy: :grinning:

michaellan: i feel like if you didnt account for that in the beginning, there may be a chance you will have to make some annoying changes to your code

michaellan: like bitset/int sizing etc

Default avatar.png kresteodymium: asdasad is cool

ProCoder03: @xxd is it for me ???

Default avatar.png kresteodymium: everyone go follow him, he's really good :D

Default avatar.png asdasasd: kresteodymium won IOI

michaellan: lmao are yall 9yo

peppers: 안녕

Default avatar.png kresteodymium: xxd is orz

Default avatar.png asdasasd: hello krish wants ioi medal

Default avatar.png kresteodymium: thats what jinha wants

Default avatar.png asdasasd: segment tree

Default avatar.png kresteodymium: orz

xxd: shut up cringe USACO people

Default avatar.png asdasasd: heavy decomposition

Default avatar.png kresteodymium: lol

Default avatar.png asdasasd: eulerian circuits

xxd: heavy light decomp

xxd: blah blah blah some more algos no one cares about

xxd: using ll = long long;

Default avatar.png kresteodymium: lol

Default avatar.png kresteodymium: macros are good doe

Default avatar.png asdasasd: lol

Default avatar.png asdasasd: did anyone ask

Default avatar.png asdasasd: kresteodymium

Default avatar.png kresteodymium: bruh

Default avatar.png kresteodymium: hmmm

xxd: u guys on the usaco discord?

Default avatar.png asdasasd: convex hull

Default avatar.png asdasasd: is so cute

Default avatar.png asdasasd: functional graphs UwU

xxd: CHT or convex hull

xxd: CHT is cute

Default avatar.png asdasasd: latter definitely

Default avatar.png asdasasd: imho

xxd: i wrote a li chao tree once for a CF problem, still timed out, and i didnt bother again

xxd: i also stole the li chao tree part from eric zhang's library repo

Default avatar.png asdasasd: oh nice

xxd: so i guess im just dogwater

Default avatar.png kresteodymium: so youre USACO too i suppose

Default avatar.png asdasasd: have you tried network flow probs

Default avatar.png asdasasd: max

Default avatar.png kresteodymium: orz

xxd: nah

Default avatar.png kresteodymium: imagine being camper

xxd: i dont really do usaco much anymore

xxd: never that good

Default avatar.png asdasasd: camperr brrrr

Default avatar.png kresteodymium: asdasasd is camper

xxd: proof?

Default avatar.png kresteodymium: bruh

Default avatar.png kresteodymium: fricking ioi

xxd: aight cap

Default avatar.png kresteodymium: chad

Default avatar.png asdasasd: kresteodymium stop

Default avatar.png kresteodymium: lol

Default avatar.png kresteodymium: ioi chad

Default avatar.png asdasasd: seriously

xxd: what are you guys working on, if anything

Default avatar.png asdasasd: lagrangian relaxation cute

Default avatar.png kresteodymium: lol

Default avatar.png kresteodymium: i tried eulerian tour stuff on a dmoj problem

Default avatar.png kresteodymium: but it died to mle

Default avatar.png kresteodymium: sadge

Default avatar.png asdasasd: when ur main programming language is javascript

Default avatar.png kresteodymium: bruh

Default avatar.png kresteodymium: imagine being python and going to usaco camp

Default avatar.png kresteodymium: *python user

Default avatar.png asdasasd: xxd

Default avatar.png asdasasd: hi

xxd: sorry cant hear you over the sound of my bugs

Default avatar.png kresteodymium: hi