Chat:World/2020-11-24

From CG community
Revision as of 11:56, 15 June 2021 by Chat Log (talk | contribs) (Created page with "<img src=/a/7946484028034> linjoehan: what is the turn limit go multis? I fogot the number <img src=/a/53930124121000> rockstar555: hello <img src=/a/53930124121000> rocksta...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

linjoehan: what is the turn limit go multis? I fogot the number

rockstar555: hello

rockstar555: Guys

rockstar555: good morning

kavandoctor: hi

JohnCM: hello

miszu: 95th in gold now

miszu: the grind is real

Lysk: where you able to reuse your tree?

miszu: yeah

miszu: but I only get a fraction back

miszu: haven't submit that version yet

miszu: for 13k sims, I get only back 300

miszu: which is expected if you do 13k/81 = 160

JohnCM: gold boss still hard to beat

JohnCM: i tried using some heuristics ppl mentioned, but my code became worse

miszu: isn't vanilla MCTS enough?

JohnCM: so looks like i have to use their heuristics totally with the structure

JohnCM: too lazy to do that

JohnCM: can try

ClockSort: vanilla mcts has no heuristics though? it just measures the endgame state?

miszu: correct

JohnCM: but you need some heuristics

JohnCM: because you don't know future brews

miszu: sorry talking about UTTT :P

ClockSort: oh, that game. brews. :D

ClockSort: i was curious to use vanilla mcts on the brews game, did not try it though

miszu: woudln't make sense I believe

ClockSort: you can build a full simulator and deal brews from the brews deck

miszu: mcts is good for complete turned based state

ClockSort: i built a simulator anyway (outside my engine) just to test its strength

miszu: I need to get rid of vectors in my code

miszu: but I dunno how to handle getAllMoves() from a state

miszu: it returns a vector

miszu: if somehow I could return an array and the size of it

Lysk: hacky but an array where the first value is the index of the last element ( [3, 1, 2, 3, xxxx]

Lysk: (or last value of the array to store some kind of size) or a struct {array of definite size; int size}

Default avatar.png Rodrigo_the_coder: the funniest

Default avatar.png Rodrigo_the_coder: https://www.youtube.com/watch?v=IrsG4X6KSLE

miszu: yeah that's sounds a good idea... but I dn't like how error prone it can be

miszu: to replace all vectors I need to rewrite all... using lookup table for everything.. sigh

Default avatar.png Rodrigo_the_coder: https://www.youtube.com/watch?v=IrsG4X6KSLE

Natorade: wait, what's mtcs mean?

Natorade: er, mcts

Lysk: Monte Carlo Tree Search

miszu: monte carlos tree search

Natorade: ah yeah, ty

miszu: it's an important search algorithm for turned based game

miszu: like checkers

Default avatar.png Rodrigo_the_coder: how to win in every challenge

Default avatar.png Rodrigo_the_coder: https://www.youtube.com/watch?v=IrsG4X6KSLE

SansPapyrus683: hi

linjoehan: I tried vanilla MCTS with DUCT but my sim was only able to run about 10 games per round, so it failed horribly.

ClockSort: 10 doesn't seem like enough :)

ClockSort: maybe that number is expressed in base 50000?

Default avatar.png Rodrigo_the_coder: trigonometry

Q12: Finally!!! I made it into gold, even if it's not part of the contest, I can rest in peace :slight_smile:

Xenoid: Congrats!

Q12: Thanks

NoobCod3: can anybody teach me python?

Default avatar.png Rodrigo_the_coder: yes

Default avatar.png Rodrigo_the_coder: I am in legend now B-)

JohnCM: woohoo congrats

Default avatar.png Rodrigo_the_coder: legend in CSB XD

Default avatar.png Rodrigo_the_coder: thanks to a small hardcode thingy

Default avatar.png Rodrigo_the_coder: I got legend bcs of my last submit

Default avatar.png Rodrigo_the_coder: before going to bed

Default avatar.png Rodrigo_the_coder: :D

Default avatar.png Rodrigo_the_coder: :(

Default avatar.png Rodrigo_the_coder: so lonely

Uljahn: good job, but legend in csb is the lowest hanging fruit :smiley:

Default avatar.png Rodrigo_the_coder: wdym lowest hanging fruit

Uljahn: CSB is a tutorial multi, so CSB gold is equal to bronze in others

PrO_OGrmr: hey why i can't see accepted contributions

Default avatar.png Rodrigo_the_coder: reload

PrO_OGrmr: ok

PrO_OGrmr: no change there is only PENDING CONTRIBUTIONS

confused:

Uljahn: i can clearly choose accepted but the page stalls then :relieved:

mojojojo: Is the cover picture for the Spring Challenge supposed to be related to the problem?

Q12: no

mojojojo: Okay

Default avatar.png BoBot: finally, this competition made me Grand master! I had been hovering above top 500 for a while :D

AntiSquid: it kinda is related though

AntiSquid: you throw stuff in the cauldron and brew potions

Q12: Congrats!

Default avatar.png ExecuteOrder66: Last one, boys! Good luck to all!

BendedWills: int* hello = &everyone;

dbdr: Illedan, implementing those PMs? :)

Illedan: Hm?

Illedan: nah

dbdr: sub in Witches 2020

Illedan: Didn't like the game :P

Illedan: Just tried to not use depth 30

Illedan: xD

dbdr: better or worse?

Illedan: No idea, game too random

Illedan: :D

Illedan: Also, the random submit I ended delivering was not the best anyway xD

dbdr: last in contest?

Illedan: Yeah

Illedan: Seems worse :O

Illedan: Maybe I'll try with a little adaptive depth

PatrickMcGinnisII: huh, i didn't realize while($n-->1) ; doesn't work because it thinks I'm trying to access a class variable

PatrickMcGinnisII: but while (--$n>1) ; does

PatrickMcGinnisII: wierd

lifetimeLearner007: I see few people are missing from FC2020 leaderboard who were there yesterday. Is this a bug?

dbdr: who?

dbdr: they might have been disqualified

lifetimeLearner007: what's the criteria for disqualification? My rank is slightly better because of this

lifetimeLearner007: who? ->few who I was trying to beat in silver

dbdr: https://www.codingame.com/rules

dbdr: see Article 8: Exclusion

lifetimeLearner007: "Obfuscating your code as well as creating obstacles to its reading and understanding." Does this mean that we can't submit minified JS code?

dbdr: I would say yes

PatrickMcGinnisII: well, beside codegolf

PatrickMcGinnisII: could switch to perl

PatrickMcGinnisII: ;)

lifetimeLearner007: Is there any article which tells us what CG does with all these coe submissions? I mean is our code being analysed for something apart from contest results?

Default avatar.png BoBot: they are creating Skynet

lifetimeLearner007: or is some part of the code submissions being reused somewhere else

lifetimeLearner007: haha... sounds scar @BoBot

Default avatar.png BoBot: I mean there is literally a game called Skynet here... :eye:

lifetimeLearner007: scary*

Default avatar.png BoBot: damn, no illuminati emoji?

Default avatar.png BoBot: tbh this eye looks scary enough

lifetimeLearner007: "The eye" "Sauran's eye" :p

lifetimeLearner007: Found this:

lifetimeLearner007: The Participants irrevocably agree that all solutions that they submit to the CodinGame platform during the Contest may be published under GPL v3 license, and they may be made ​​publicly available to anyone through CodinGame at the end of the Contest. However Participants retain ownership of all intellectual and industrial property rights (including moral rights) in and to code they submit to the CodinGame platform during the Contest.

PatrickMcGinnisII: Well if you select to be contacted for jobs lifetimeLearner007 and win a sponsored contest ... beyond that, don't worry about it

lifetimeLearner007: was just curious looking at these many people submitting so many times and all

PatrickMcGinnisII: CG is a pretty decent sandbox, it's okay there's plenty of cats to cover up our doodoo

lifetimeLearner007: :D xD

BendedWills: tes

BendedWills: t

PatrickMcGinnisII: level 34, tx nicola for adding an easy puzzle

Default avatar.png TonySurdu: hi

AntiSquid: hi

rockstar555: hi

XprophEtX: hey guys! anyone here who uses rust for CG contests?

Default avatar.png Picolai: fuxck aff

Default avatar.png Picolai: NO

Default avatar.png Picolai: FACK NO

Default avatar.png Picolai: I AM PROFFFFF

Default avatar.png Picolai: U DONt Know Ma POWERRRRR

Default avatar.png Picolai: U FACKASRS


Default avatar.png Picolai: MUAHHAAHAHAHAHA55

Default avatar.png Picolai: U WILLL NAVA REACH MA POWERRRRRRRR

Astrobytes: wanna ban?

Default avatar.png Picolai: I AM TOO POWER FULLL


Default avatar.png Picolai: always

Default avatar.png Picolai: elo

AntiSquid: wow, that's random .

ppeter: too much coffee? :D

tibithegreat: when you accidentally use redbull instead of water to make the coffee

ppeter: ahah

jacek: woo new puzzle of the week

jacek: nice avatar

rockstar555: hii

Default avatar.png InnerException: Hi guys

sQuareNothing: Hi

wlesavo: how the learning tags for the last contest do not have a beam search in it :smiley:

sQuareNothing: what is the basis of score counting in coders strike back

struct: check magu s tutorial

struct: http://files.magusgeek.com/csb/csb_en.html

DaNinja: is it normal for c++ to take 45ms to run nodes.clear(); with 35000 state nodes?

DomiKo: is node really big?

DaNinja: probably

DaNinja: how to see? sizeof() ?

DomiKo: yes

DaNinja: sizeof(nodes[0]) is 176

DaNinja: think I'll switch to packed integers

struct: still seems a lot

DaNinja: no idea how this got to gold :D

Default avatar.png Mohammadmh: hello wrd

MadKnight: DaNinja which game ?

miszu: good morning all

Default avatar.png DevonLarratt: guys what does couldnt process siteId error mean

Default avatar.png DevonLarratt: in code royale

GrantWard: DevonLarratt you probably output an invalid ID

GrantWard: or badly formatted your output

Default avatar.png DevonLarratt: what if they look totally valid?

dbdr: kovi, congrats for #1 in contest ranking!

kovi: thx :)

Illedan: :clap:

DomiKo: :clap:

jacek: contest is over already? and i got this new bot...

Illedan: New bot? where?

jacek: now its too late

DomiKo: :disappointed_relieved:

AntiSquid: which contest are we talking about ?

AntiSquid: isn't pb first?

DomiKo: uuuu yes 100K CP squad!

AntiSquid: ah leaderboards

AntiSquid: was #101 now #183 Q_Q

eulerscheZahl: :wave:

struct: :wave:

eulerscheZahl: oh, i dropped on the contest leaderboard, from 7 to 12 :(

eulerscheZahl: pb4 post mortem https://forum.codingame.com/t/fall-challenge-2020-feedbacks-strategies/187846/99?u=eulerschezahl

DomiKo: Time to read!

miszu: I discovered a bug in my UTTT. I didn't read the rules that if no one wins, count the # of smaller grids win

wlesavo: barely got to top100 with this contest points :slight_smile: but made it to #18 on the contest lb, fun fact is that my highest place on the contest was 19

eulerscheZahl: i'm first globally without having a single #1 spot

struct: "Everybody talking about performance being important. On the contrary, I found that above a certain threshold (approx. 30k simulations), there was no benefit to have a faster code. There is exactly 0 ELO difference between my code and itself capped at 50% simulation time."

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

eulerscheZahl: "Larger beam width (400 to 600) at same depth = worse ranking (-15 ELO !!). "

struct: meanwhile my beam is 6k lol

eulerscheZahl: maybe because the wider beam finds a path with higher score but more volatility?

Illedan: That makes sense euler

miszu: occasionally I can beat the boss

miszu: https://www.codingame.com/share-replay/510391933

eulerscheZahl: oh, you are in that madness now

eulerscheZahl: try the teccles heuristic

eulerscheZahl: a new animated puzzle :o https://www.codingame.com/contribute/view/43687cd854d10e38c3716e6d08efe735b42f

JohnCM: euler contributed a lot

JohnCM: that's why pts very high

eulerscheZahl: i admit i was a little spammy in the past :innocent:

miszu: I notice my games vs the gold boss is the game is very tight. Always like 1 move away to win but my mcts always go for that path

AntiSquid: guess pb4 repaired his laptop already :o

DomiKo: wow

DomiKo: he is right ;(

DomiKo: smaller beamsize is better

DomiKo: wow

Illedan: My test failed xD

eulerscheZahl: let me test the smaller beam

DomiKo: my beamsize400 is crashing my 1700

eulerscheZahl: maybe my scoring is flawed enough to need a wider one

kovi: it didnt matter much for me. last few days i tried and only going too deeper hurt a bit (and going below 12)

eulerscheZahl: https://www.codingame.com/share-replay/510396255

eulerscheZahl: perfect harmony

kovi: of course if someone is speed limited and going wider means falling below 12 that can hurt

DomiKo: pb4 didn't say about depth

DomiKo: what you think is the best? or close to best?

kovi: i know. recurse did

DomiKo: so 15 hmmm

eulerscheZahl: why does this puzzle game have an MCTS tag?

VizGhar: jeez, where are you all looking those search algorithms?

DomiKo: because pb4 used MCTS

struct: holy

struct: changed beam width to 600

struct: and boss had no chance

struct: https://www.codingame.com/replay/510397887

struct: oh he got stuck

struct: :p

eulerscheZahl: your beam did that

struct: it was luck

DomiKo: boss got scared

struct: I removed the enemy prediction

eulerscheZahl: nice, submits are fast now

struct: I was 40th yesterday now 9th

struct: maybe I sit

struct: and wait for push

DomiKo: for 10 days I missed CG before the contest

DomiKo: I like to spam submit

eulerscheZahl: less players active to push you now

eulerscheZahl: i think there are worse spammers

eulerscheZahl: one got > 1k on ocean of code

DomiKo: ohh my

Illedan: 1k submits on ooc?

Illedan: Only 500 for me xD

DomiKo: then I'm noob

DomiKo: max is 363 for me I guess

eulerscheZahl: if you want to read a few more post mortems: https://www.google.com/search?q=codingame+fall+challenge+site%3Ahatenablog.com&oq=codingame+fall+challenge+site%3Ahatenablog.com&aqs=chrome..69i57.10235j0j7&client=ubuntu&sourceid=chrome&ie=UTF-8

Illedan: Wow, that is a lot

DomiKo: I wonder why CG got that hype boost in Asia

eulerscheZahl: the japanese community is really active

eulerscheZahl: they even have streams where one shares the screen while manually opening one replay after another

MadKnight: how did they get that hype boost ?

Agade: Didn't there used to be a similar tradition of PMs you could only find in russian?

kovi: wanna post yours in there? ;)

kovi: gratz btw

AntiSquid: in broken google japanese

eulerscheZahl: somewhere on youtube there's a video of Romka analyzing the fall challenge for half an hour and scrolling through his code

Illedan: Spring? or did he do it again?

eulerscheZahl: the pacman

eulerscheZahl: video post mortem

eulerscheZahl: btw the shortest replay from the last contest recalc: https://www.codingame.com/replay/509910868

wlesavo: euler quite informative video actually, if you know russian :slight_smile:

kovi: 24, nice

kovi: romka did well in the first few days

wlesavo: i guess he lost motivation

eulerscheZahl: there are some 101 frame replays as well. but i can't open them anymore

kovi: like psyho, after some unkown emil beat them ;)

eulerscheZahl: on ocean of code there was a mchl12 playing strong at first

eulerscheZahl: then suddenly lost interest

eulerscheZahl: another re curse?

Illedan: https://youtu.be/KP6xXg1n2e0?t=13689 "Coincidence"

eulerscheZahl: i don't know that emil and did not collaborate with him

eulerscheZahl: max length replays

eulerscheZahl: http://chat.codingame.com/pastebin/946befc3-dac9-4ba6-98a2-7f879fde1f8b

Illedan: From recalc?

Illedan: Replay not found..

eulerscheZahl: first 2 are working for me

eulerscheZahl: yes, from recalc

Illedan: https://www.codingame.com/replay/509903491 That was just bad of Royale :P

struct: I guess that on the 2nd one

struct: red had a bug

struct: he could win

Cosmeen: How is the clash of code score calculated? Is it specified anywhere?

Cosmeen: Like the one used for the ranking

eulerscheZahl: Trueskill

Cosmeen: Are the rivals we get also affected by the rating? Or is it just for the leaderboard?

eulerscheZahl: every player in the clash gets a score update

Cosmeen: If this information is anywhere on the site, please link me I don't wanna bother, I just couldn't find it

Cosmeen: No like are we matched with players near our score rating, or just at random?

struct: random

Cosmeen: Because it seems random, but on the Trueskill documentation it says it is also used for matching

struct: you play players that join it

Cosmeen: ok, thank you!

eulerscheZahl: whoever is online

eulerscheZahl: codingame even added bots as to few players were active at the same time

Cosmeen: I can't find info about how the number of players affects the rating, or if the score you get on the problem is relevant, or if it's just the placement

eulerscheZahl: only the placement within the clash matters

Cosmeen: is there anywhere on this website that goes into detail about the ranking?

eulerscheZahl: for clash of code: i don't think so

eulerscheZahl: most clashers don't want to understand that ranking in that much detail

eulerscheZahl: for multiplayer games there is some information scattered over several forum posts

eulerscheZahl: but no real documentation

Cosmeen: okk, I was jsut looking at the leaderboards and wanted to know more, as I am working on the 'top 1000' mission :))

Cosmeen: thanks for the help!

Default avatar.png kriti123: hi

pb4: AntiSquid : didn't repair the laptop, I plugged it into the TV to use it ...

pb4: It's the screen that's broken

eulerscheZahl: :D

eulerscheZahl: now you don't have to buy glasses for a long time

pb4: DomiKo, how much better with lower beam width ?

pb4: TV is 22 inches but only 720p...

Illedan: Can you even call that a TV? :P

jrke: pb4 have you got your computer repaired?

struct: https://i.imgur.com/cLzrR4A.png

struct: my bot is 2nd kryptonite

DomiKo: I can't say the exact number, because that infect my depth too, so I made two changes

Guinsoo: I forgot to implement repeatable spells

CaioYon: can anyone explain me how to implement the "BOOST" parameter in the "Coders Strike Back" challange?

struct: just print "boost"

miszu: ok I am sick and tired of tic tac toe

struct: example "1200 1241 BOOST"

miszu: reached gold and that's good enough

eulerscheZahl: miszu try the teccles

CaioYon: I'm trying that, but It do not boost

eulerscheZahl: if you are close to legend, that could do the trick

miszu: what's that?

struct: euler, should I try HS, GITC or WW?

eulerscheZahl: if you are the first player to play on a sertain subsquare

DomiKo: "teccles heuristic

   play the move that forces your opponent to play in the same miniboard you are playing in 

"

eulerscheZahl: send the opponent right back there

eulerscheZahl: hypersonic <3

eulerscheZahl: you can even bitboard it

struct: ok I guess its a good way to keep practicing with beam search

eulerscheZahl: (true for WW as well, i know)

miszu: oh I see

eulerscheZahl: HS is great for beam search

miszu: how's that a good strats?

eulerscheZahl: but that much opponent interaction

eulerscheZahl: or 2048 for solo

eulerscheZahl: you avoid winning a miniboard by 3-0 in the end

eulerscheZahl: make the opponent waste some turns

DomiKo: HS is great for FAST beam search

struct: you meant "not that much" right?

DomiKo: HS is one of the hardest

eulerscheZahl: *not that much

struct: ok

struct: Ill try it

eulerscheZahl: HS is one of my favorites

struct: thanks

eulerscheZahl: was my first contest on CG btw

miszu: eulerscheZahl I fixed a bug in the way draw is calculated. I didn't include the condition of how many mini board you won. But once I fixed that, my AI performed worse...

miszu: I am 135th

eulerscheZahl: that sounds like another bug

miszu: I don't see a bug, I checked my code

DomiKo: gold MCTS's is like 50% of them are slow and another 50% have bugs

jrke: mine beam search is slow enough to just be in top gold not above that :smiley:

miszu: do you see an error here?

miszu: http://chat.codingame.com/pastebin/aaeda806-0566-4538-870d-eea120abe8ec

eulerscheZahl: nothing totally obvious at least

(player+1) % 2 could be shortened: 1-player

eulerscheZahl: do you have vertical rows?

miszu: yeah

miszu: look at the board index

darkhorse64: What happens if wins[0] == wins[1] ?

miszu: OMG

eulerscheZahl: where is 0,3,6?

miszu: such imbecile I am

eulerscheZahl: DomiKo 05:01PM gold MCTS's is like 50% of them are slow and another 50% have bugs

eulerscheZahl: so true

miszu: darkhorse64 there is a draw condition

miszu: http://chat.codingame.com/pastebin/708f96eb-9da0-416d-bbd8-d38952b9d27e

miszu: if there is nothing to play but no one won => draw

miszu: brb let me fix that

darkhorse64: kk but you compute way too much things

miszu: what you mean?

eulerscheZahl: no nice bitboards, true but the correctness goes first

miszu: my miniboard uses bitboards

eulerscheZahl: your win check seems slow

eulerscheZahl: could be a lookup

miszu: this is my wincheck for small boards

miszu: http://chat.codingame.com/pastebin/62c748d3-e489-4fdd-9918-65e7296ebef8

miszu: just this upped my sims by 3k

eulerscheZahl: you can do the same for the large board

miszu: eulerscheZahl there was 2^81 states for the big board

miszu: are*

eulerscheZahl: it's you or not you

eulerscheZahl: and then opponent or not opponent

eulerscheZahl: mini boards don't matter for the macro

eulerscheZahl: so you have the small thing and a big board as an extra var

eulerscheZahl: for quick check

miszu: sorry I don't get it how you can have a lookup for the whole game

eulerscheZahl: you have a macro board that only says who won the subboard

eulerscheZahl: that is 2^9 for you alone (yours or not yours)

miszu: ok well that is implemented

eulerscheZahl: another thing to consider: when player A plays, you don't have to check if player B won the game

miszu: in my lookup

miszu: my didWin() uses lookup for smaller boards

eulerscheZahl: but you call didWin() a lot

miszu: well yeah for each sub board

eulerscheZahl: i'm telling you to cache that as well

eulerscheZahl: a state has 9 mini boards and a big board when you win a miniboard, you update bigboard

eulerscheZahl: when then check the bigboard winner via lookup

miszu: ohh I see

miszu: smart

miszu: does player + 1 % 2 and 1 - player makes a big difference?

eulerscheZahl: no, just shorter to write

miszu: ok fixed my win condition now

eulerscheZahl: submit time

miszu: 1/1 beat gold boss

miszu: 2/2

jrke: submit it then

miszu: 2/3 :(

eulerscheZahl: as yellow? then you should have a winrate > 50%

miszu: 2/4

miszu: yeah as yellow

jrke: yellow??

miszu: X = yellow

eulerscheZahl: the one who plays first

jrke: oO

miszu: at least now my ai output the correct % of win rate for a given branch

miszu: like if he knows he will lose, he outputs me like 5% win chance

Default avatar.png BoBot: ok, time to learn Rust on Penguins game!

Default avatar.png BoBot: Rusty Penguins - name for a band

miszu: ok submitting

miszu: http://chat.codingame.com/pastebin/c3a58eb1-b9be-41ce-92ba-13e30500d161

miszu: I think it's fine now

eulerscheZahl: you don't need this block

eulerscheZahl: http://chat.codingame.com/pastebin/b7cf76ed-cb2d-4aa0-9cbc-8c24f09b8fdf

eulerscheZahl: how shall the opponent win the game when you made a move?

eulerscheZahl: (improving performance)

miszu: it's a constant time improvement

miszu: but I get it

miszu: ok my rank is getting better

Default avatar.png BoBot: seeing so much copied code makes me itch..

Default avatar.png BoBot: extract that variable! :D

miszu: :D

miszu: 67th and just 20% done

Default avatar.png BoBot: at least* I was also sure that the other parts needed to be put into a for-loop, before I got what you were doing

Default avatar.png BoBot: now I feel like looking up my UTTT code... it seems popular, several people have mentioned it in the last week

miszu: eulerscheZahl you were right. It was unecessary. Just tested for correctness

eulerscheZahl: and how many more sims without?

miszu: like 2-3k

jrke: which bot programming miszu?

eulerscheZahl: uttt

jrke: oh

miszu: I think with the lookup table in the bigger board it will increase even more

struct: also modulo operator is expensive

struct: But I guess % 2 is fine right?

miszu: % 2 is optimized

eulerscheZahl: %2 is ok

struct: but yeah caching who won is importatnt

struct: like euler said

miszu: int row = (movePlayed % 9) / 3 + (movePlayed / 27)*3;

       int col = movePlayed % 3 + ((movePlayed % 27) / 9) * 3;

miszu: :D

Default avatar.png BoBot: lol no Python in Legend for UTTT, I wonder why...

miszu: http://chat.codingame.com/pastebin/23f6a1f8-de64-4bf6-b312-7dea9d53ee99

Default avatar.png BoBot: first is 288th, in Gold

miszu: 37th in gold

miszu: jesus, imagine with my bug in win condition made me to gold

struct: I dont think you need to use modulo or division to apply moves

struct: at least I dont

miszu: I could cache the index

struct: I just say which small board index it is and which cell of that smallboard

miszu: lookupt table

struct: to me caching moves gain was negligible

miszu: 40th

miszu: meh

Death_Rock: yeeep

miszu: somethign is still wrong with my winning condition. He take a path where he thinks he win at 99% but loses...

miszu: 99.93% to be precise

struct: well 99.93 is not 100 :D

PrO_OGrmr: http://chat.codingame.com/pastebin/3cd3ec62-03f1-4976-b701-1ec280e6d9ee

struct: thor temperatures

PrO_OGrmr: ok thanks

struct: then defib and mime

PrO_OGrmr: ok :)

struct: Also if you are learning, sometimes solving the problem on paper can help

PrO_OGrmr: oh i see

AntiSquid: wow skyyker missed a high rank on contest

AntiSquid: by a huge margin too . feels terribad :(

eulerscheZahl: and in java

miszu: sometimes it feels like my mcts assume i'll play the best move and my opponent the worst move

struct: can be hard to find bugs on mcts sometimes

miszu: the trend of wins/total vistied when I lost the game is that it starts at 55% then goes down to 20%. Rarely, the move before he lose it jumps to like 97%

miszu: at least it's not like, the % increases and boom lost

miszu: throughout the game it shows that the game converges into a lost

miszu: eulerscheZahl do you make 2 lookup table for the bigboard? One for absolute win and one for draw breaker?

AllYourWhat: thats because the rollout policy is random

AllYourWhat: in reality your opponent will take advantage of your mistakes, but mcts can't relaly see that because of the random opponent

AllYourWhat: (if you're using random rollout policy at least)

miszu: yeah random policy

eulerscheZahl: i don't remember what exactly i did

struct: I just use the same lookup

struct: works on both

Default avatar.png TimberStalker: I found a strange bug in this Code4Life Game.

struct: Whats the bug?

Default avatar.png TimberStalker: When i collect two samples, the game thinks im at a different station than the one im really at.

eulerscheZahl: i bet the bug is in your bot

eulerscheZahl: is there a red text telling you that you don't read all input?

Default avatar.png TimberStalker: No.

Default avatar.png TimberStalker: Im logging the location

Default avatar.png TimberStalker: it looks like this.

Default avatar.png TimberStalker: Location: DIAGNOSIS

eulerscheZahl: how long is your code approximately? less than 200 lines? then paste it here in the chat

Default avatar.png TimberStalker: bit long but sure

Default avatar.png TimberStalker: http://chat.codingame.com/pastebin/813695b9-75bf-46ac-90de-f0b4df96450a

Default avatar.png TimberStalker: oh it uses pastebin

Default avatar.png TimberStalker: http://chat.codingame.com/pastebin/b0995196-90ba-4b68-9d0f-22aa790be26c

Default avatar.png TimberStalker: thats the full code

eulerscheZahl: you have multiple usages of Console.WriteLine

eulerscheZahl: you should only have 1

eulerscheZahl: while (true) { read all input print 1 single action }

Default avatar.png TimberStalker: It shouldnt run at the same time. I made sure of that

struct: impossible to not run on the same time

Default avatar.png TimberStalker: if elsese between them and a continue between the switch statements

struct: or is the continue; inside case for the while loop?

eulerscheZahl: Console.WriteLine("GOTO DIAGNOSIS"); is always executed

Default avatar.png TimberStalker: the continue seems to work fine

eulerscheZahl: a few others sometimes

Default avatar.png TimberStalker: But that isnt the problem

eulerscheZahl: it is

eulerscheZahl: at least one if you have multiple

Default avatar.png TimberStalker: the problem is that after i collect to vials, the game thinks im at the Molecules station instead of the diagnosis one

Default avatar.png TimberStalker: two*

eulerscheZahl: you get out of sync

struct: wont continue; make while loop go to next turn?

eulerscheZahl: you think you are in turn 8 and the game says you are in 12 already

struct: I never saw a continue; on a switch statement

Default avatar.png TimberStalker: Changed them to breaks and its exactly the same.

eulerscheZahl: and then your stderr doesn't match the viewer anymore

struct: its the same because you goto diagnosis

struct: after the switch

Default avatar.png TimberStalker: ye i removed that

struct: use default: on switch

struct: to go to diagnosis

Default avatar.png TimberStalker: it wasnt actually running because of the continues though

Default avatar.png TimberStalker: setting it as default is a good idea though

eulerscheZahl: https://github.com/eulerscheZahl/ParameterFiddler/blob/master/example/c4ldummy.cs#L89 some sample code that only prints 1 line

Default avatar.png TimberStalker: i should probavly put the move in the robot class, but again, that isnt the problem

Default avatar.png TimberStalker: the error is that the game thinks im at a different spot than i really am

Default avatar.png TimberStalker: Standard Error Stream: http://chat.codingame.com/pastebin/a6dee59f-42a9-4a57-82ff-6596c38e7192

Default avatar.png TimberStalker: thats the game output

Default avatar.png TimberStalker: the target is printed to Standard Error Stream:

miszu: easiest way to count # of set bits in an integer?

Default avatar.png TimberStalker: you can see after it says Timberstalker downladed sample 1, the game tells me im at molecules now

Default avatar.png TimberStalker: not nearly that advanced

Default avatar.png TimberStalker: ignore that last one

eulerscheZahl: TimberStalker you can add messages: "MOVE DIAGNOSTICS " + turnCounter

eulerscheZahl: add a turn counter variable

eulerscheZahl: and print that

eulerscheZahl: you will see that your bot prints the same turn number twice

eulerscheZahl: miszu use popcount

eulerscheZahl: https://en.cppreference.com/w/cpp/numeric/popcount

miszu: thanks

eulerscheZahl: or __builtin_popcount for older standards

miszu: in ide popcount is not detected

eulerscheZahl: then __builtin_popcount

DomiKo: popcount is c++20

DomiKo: CG has c++17 I believe

miszu: yeah can't find the library

Default avatar.png TimberStalker: I added

           Console.Error.WriteLine($"Turn {turnCounter++}");

Default avatar.png TimberStalker: no duplicate turns

eulerscheZahl: me facepalms

Default avatar.png BoBot: :D

Lysk: I used popcount everywhere :cold_sweat:

Default avatar.png TimberStalker: is there a way to send a video or something?

Lysk: my bad: __builtin_popcountll

eulerscheZahl: http://chat.codingame.com/pastebin/40a059ce-cb6f-46ff-893f-8fa5b62d08bc

eulerscheZahl: try this

eulerscheZahl: we have a discord for screensharing. but let's try this way first

Default avatar.png TimberStalker: nope, no duplicates

eulerscheZahl: you make me open the game now, see what you've done

Default avatar.png TimberStalker: the program cant send duplicates anymay

Default avatar.png TimberStalker: http://chat.codingame.com/pastebin/d594db84-e25b-4d91-b660-7eef67969baf

Default avatar.png TimberStalker: current state of code

Default avatar.png BoBot: @TimberStalker also, I suggest using more for loops...at least four more for loops :P for your input parsing

Default avatar.png TimberStalker: probably should use for loops for the arrays

Default avatar.png BoBot: your example will always print a higher number - because you always increase it in the same place where you print it - use Euler's example, it is what is actually needed to debug your case

eulerscheZahl: your bot doesn't work in higher leagues, can't test it :/

Default avatar.png TimberStalker: had a feeling that would happen

eulerscheZahl: did you run my code modification already?

Default avatar.png TimberStalker: yes

eulerscheZahl: share a replay

eulerscheZahl: the 3 dots below the viewer, bottom right

Default avatar.png TimberStalker: https://www.codingame.com/replay/510463541

eulerscheZahl: you say CONNECT A but you aren't at the SAMPLES

eulerscheZahl: go there first

Default avatar.png TimberStalker: Look at the ourput

eulerscheZahl: i did

Default avatar.png TimberStalker: the game says im at molecules in the last turn, even though im not there

eulerscheZahl: https://prnt.sc/vpbjou

Default avatar.png TimberStalker: yes, look under that

eulerscheZahl: error streams are private, can't see that

eulerscheZahl: and can't have a real look myself as higher leagues have different rules

Default avatar.png TimberStalker: https://www.codingame.com/replay/510467325

Default avatar.png TimberStalker: try that

Default avatar.png TimberStalker: you can see that the last turn says molecules for some reason.

eulerscheZahl: ah, i see. hidden in the bot.Update()

eulerscheZahl: you read your own state first. and then the opponent

eulerscheZahl: your opponent is going to the molucules already

eulerscheZahl: and you think you are there

PrO_OGrmr: can anyone suggest any bot programming contest for beginner

Default avatar.png TimberStalker: god dammit

Default avatar.png TimberStalker: "For EACH player, 1 line"

Default avatar.png TimberStalker: thanks

eulerscheZahl: PrO_OGrmr looking for real contests? also on other websites?

or for a multiplayer game that has previously been a contest here on codingame?

eulerscheZahl: if the latter, i suggest https://www.codingame.com/multiplayer/bot-programming/ghost-in-the-cell

PrO_OGrmr: thanks

eulerscheZahl: for contests elsewhere: https://codeforces.com/contests look for division 3 contests

PrO_OGrmr: yeah :)

PrO_OGrmr: is there other website like codingame

Default avatar.png TimberStalker: IT WORKS!

eulerscheZahl: yay!

PrO_OGrmr: :clap:

struct: Damn

struct: the guy that was pushing me was finally promoted

eulerscheZahl: now you need a new booster

struct: here was i thinking that vs used cmd to build but uses msbuild ...

PrO_OGrmr: hey i like to contribute a reverse mode clash, but i don't know how to write stub generator if i made that all test cases and the solution will anyone send me a stub generator ?

eulerscheZahl: how does your input look like?

PrO_OGrmr: read 3 integers in a line

eulerscheZahl: read a:int b:int c:int write answer

PrO_OGrmr: thanks

struct: Can brutaltester test multiple bots against each other'

struct: ?

eulerscheZahl: yes, if you run it multiple times

eulerscheZahl: it's open source, fork it and add what you want

eulerscheZahl: i added a flag to swap player positions in the past. not sure if it still works

AntiSquid: geez 19 likes for Spice Girls (fall contest 2020), guess that's the semi-official name now :P

AllYourWhat: oooh we can vote? where is that?

eulerscheZahl: no it's not

AntiSquid: https://www.codingame.com/forum/t/fall-challenge-2020-feedbacks-strategies/187846/14 AllYourWhat

struct: Just keep as it is

AntiSquid: you can vote with a like

AntiSquid: it's a joke anyway

AllYourWhat: you got another vote from me :thumbsup:

AntiSquid: thanks, much appreciated

jacek: oO

eulerscheZahl: wow, i collected some upvotes with my bitboard as well already :o i have a feeling that my minimum effort posts get the most likes

miszu: eulerscheZahl where?

AntiSquid: did it have nice visuals, if it has nice visuals i upvote

eulerscheZahl: https://www.codingame.com/forum/t/fall-challenge-2020-feedbacks-strategies/187846/40

miszu: feels like I am reading a binary file

AllYourWhat: oh eulerscheZahl i meant to ask you, how do you call isValidInventory with applyDelta? doesn't ApplyDelta clear the bits you check for negatives in IsValidInvetory?

struct: nice euler

struct: I was too dumb to find a way to += negative deltas

eulerscheZahl: no, i keep the 5 bit and only reset the overflow buffer

struct: so i ended up making everything positive

eulerscheZahl: it's all included in the binary encoding already :D

Counterbalance: i'm seeing strings of 1111 aswell though.. this wasn't copy paste I guess?

Default avatar.png BoBot: ugh, looks like everyone who starts with Rust tried to write a generic input parser and runs into the same problem+question - several posts across sites with the same exact error as I had :D

AllYourWhat: oh i must be misreading this then, it looks to me like the &= 0b001111... in applyDelta keeps 4 bits per

AllYourWhat: or misunderstanding i mean

AntiSquid: what about dbdr, @BoBot did he have these issue?

eulerscheZahl: oh, that's the inventory only

eulerscheZahl: that has no negative values

AllYourWhat: oooooooooooooh

AntiSquid: also you're from same city as inory i see, do you know each other? BoBot

struct: ah ok, so no negative deltas?

tomatoes: never had problems with rust and input :eyes:

eulerscheZahl: delta from spells can be negative

eulerscheZahl: and you can add a negative delta to your inventory

struct: yeah on mine implementation i cant

struct: so i had to have gain + cost

eulerscheZahl: just the outcome will be positive. but with 5 1's it should also work

Default avatar.png BoBot: @AntiSquid we have chatted on this site, but I do not know him personally, also I have been in the Netherlands for the past 3 years, returning to my home town next week actually :D

struct: on spells

AntiSquid: so social distancing BoBot

AllYourWhat: BoBot what issues are you having? i used rust in the contest

eulerscheZahl: the valid check already makes sure that there is no 1 at the leading spot anyways. so i can reset it or keep it

Default avatar.png BoBot: @AntiSquid - I mean I assume that dbdr is past those issues - it is a language learning curve problem, not anything related with Codingame :D

Default avatar.png BoBot: just familiarizing myself with the Traits+generics

AllYourWhat: :thumbsup:

Default avatar.png BoBot: http://chat.codingame.com/pastebin/4ac08508-397d-4eaa-92ae-0767b64a3c30

Default avatar.png BoBot: this is what I have now :D

Default avatar.png BoBot: just to get the input parsing reusable and nice - CG default had the macro_rules version, but it still had code reuse problems

AntiSquid: just remembered forgot to use D this contest after bronze :thinking:

AllYourWhat: gotcha, definitely did not try to do anything generic like that haha

eulerscheZahl: there were 9 D players without you

Recovery_disaster: I reached Silver league in two different games but the Quest Map still says 1/2 for days. Any ideas? I can not progress further :/

Default avatar.png BoBot: I tried to avoid using where, messed around with the generic syntax - it is not that unlike Java, but enough + I have forgot a bit about Java generics as well...been using Python mostly for the past few years

eulerscheZahl: python, C++, Java, C# the most popular

AntiSquid: so the D revolution has begun

Astrobytes: paython

eulerscheZahl: :D

struct: yeah, D is so popular that CG never added it to the languages you can show in your profile

Astrobytes: I kinda like that

Astrobytes: I have nothing against the language, just after the zealotry

AntiSquid: i have D in solved puzzles

eulerscheZahl: oh, we should tell that our D evangelists

kovi: euler: i have an idea (maybe someelse did it) if you add 5 << 24 to the sum, flag check would be enough for that as well

kovi: (overflow flag for the sum)

Default avatar.png BoBot: damn guys, I am really itching for the "who wants the D" jokes...

AntiSquid: can just add it to profile description: "I use D btw"

eulerscheZahl: hm, true. is that more efficient than the > check?

Astrobytes: we did all those when they were 'petitioning' to have it added BoBot

AntiSquid: it will be the new "i am on arch" meme

kovi: you just need a single check

Astrobytes: In the end, CG took the D.

eulerscheZahl: i like the idea

kovi: which checks both the negatives per tier

kovi: and the sum

eulerscheZahl: got it now

Astrobytes: clever

eulerscheZahl: but i need the sum for my eval as well

eulerscheZahl: or do i? i have no idea what i kept and what i deleted anymore

PrO_OGrmr: hey it ask for statement, but it is reverse what should i do

eulerscheZahl: write "reverse only"

AntiSquid: figure it out !

PrO_OGrmr: ok

eulerscheZahl: if it's both reverse and fastest/shortest, write a statement

eulerscheZahl: it will be hidden in reverse mde

eulerscheZahl: mode

AntiSquid: oh nvm thought you're clashing .

PrO_OGrmr: ok

Astrobytes: this isn't in the docs

Astrobytes: ?

eulerscheZahl: i'm not even sure if it is

Astrobytes: I can't find it

eulerscheZahl: https://github.com/CodinGame/Contribute-Help fork it and make a PR

Astrobytes: I didn't say I was that keen!

eulerscheZahl: i like the last commit message

Astrobytes: lol

Recovery_disaster: typo, typo, a real fix, bad typo, typo

PrO_OGrmr: my first contribution

PrO_OGrmr: https://www.codingame.com/contribute/view/5758fe79ca3d10286e0159a04ef46f971db2

Default avatar.png ProMikeSundays: funny how i win mostly in short mode and suck in fast mode

Default avatar.png Rich-Dunne: I'm doing the War puzzle. What does PAT mean? "If players are equally first: PAT"

Lysk: I would think it's borrowed from chess, meaning a draw

Default avatar.png Rich-Dunne: Thanks

Default avatar.png BoBot: 3 hours to reduce Rust default code size by 11 lines...for the Penguins game time well spent I guess :D

**eulerscheZahl pats Lysk's back

Astrobytes: need to get this terminology down pat, Rich-Dunne :P

Default avatar.png Rich-Dunne: Seems so

eulerscheZahl: finally i can use chromium on the chat again

Astrobytes: that was a real busy contest

Astrobytes: every part of the site was going nuts

Astrobytes: (including your PMs ofc) :D

struct: Finally managed to set vs so it makes a copy of the exe with the date so i can use it on brutaltester

struct: also it makes a copy of the merged file so I know the code for that version

eulerscheZahl: and i gained 35 new followers during the contest

struct: Now I wont lose anything

Astrobytes: lol

Astrobytes: oh, you were doing that manually before struct? Nightmare!

struct: yes

Astrobytes: It gets out of hand really fast

struct: Now I need to find out to run brutaltester on ubuntu

struct: I had error last time

eulerscheZahl: is ubuntu your main system now?

struct: no

Astrobytes: why not just on windoze?

struct: I run wsl2

struct: because code runs faster on wsl2 than on my machine

Astrobytes: oh yeah, forgot about that

struct: also gcc vs vs compiler

Astrobytes: yeah

eulerscheZahl: isn't that an extra layer of abstraction?

struct: I dont mind it much

eulerscheZahl: i mean doesn't wsl2 add overhead? that's faster?

struct: I dont think it has that much overhead

struct: its pretty fast

Astrobytes: It's negligible afaik, and beats playing around with dual boot

eulerscheZahl: my mainboard battery died some months ago

struct: I had like 3x sims running on wsl2

eulerscheZahl: i replaced it

eulerscheZahl: but BIOS settings lost

eulerscheZahl: there's one to check fan status on boot, i can't find it anymore

eulerscheZahl: now on every boot it tells me that my CPU fan isn't working

eulerscheZahl: that's correct, i have a water cooling

Astrobytes: lol

eulerscheZahl: now: turn on, F1 for settings, F8 for boot, arrow down twice, ENTER

struct: lol

Astrobytes: Ever so slightly annoying eh

eulerscheZahl: and everytime i'm like: shall i search again? nah, just start it

eulerscheZahl: i'm heading to bed, missing some sleep from the contest

Astrobytes: I bet you'll do that automatically on every computer you touch from now on

Astrobytes: alright, goodnight man

struct: gn

struct: I dont really need pathfinding for HS do I?

reCurse: There is no abstraction in wsl2

Astrobytes: Haven't done it struct

reCurse: You basically have a linux kernel inside windows kernel

reCurse: Oh of course he's gone to bed when I reply...

struct: :)

Astrobytes: lol, back to normal sleeping schedule for euler now

reCurse: What is he, 60? :P

struct: he wakes up pretty early

struct: like 5-6 am

Astrobytes: Mentally, yes I think so :D

Astrobytes: So do the elderly struct

reCurse: Speaking of old, haven't recovered from mine yet... ugh

reCurse: Sleep at 6am one day and pay for it

struct: Yeah, I dont think its worth it

struct: I did it for 2 days

struct: friday and sunday

Default avatar.png BoBot: I deviated from a normal schedule for 2-3 days and paid for it for at least 2 more

reCurse: To think I used to do that easily... :(

Default avatar.png BoBot: 10 years ago I would have even recovered from if I had been drinking for those 2-3 days instead of programming..

Default avatar.png BoBot: lol, "old guys" complaining

reCurse: You mean you separate drinking from programming?

Default avatar.png BoBot: right now I separate everything from drinking i.e. I rarely drink :D

reCurse: I kid I kid

reCurse: or do I

SurduTony: how is no nut november going for you guys

CodinBotChatRelay: Arnav#9054: Wow

reCurse: It took one second to degenerate did it

Default avatar.png k0ded: This website is showing me how terrible i am at programming lmao. wish i found this website earlier

x5nake: Same lol

Default avatar.png k0ded: im literally stuck on a medium challenge, its slightly embarrassing to say the least

Astrobytes: reCurse: funnily enough the Ballmer peak applies to me when I review my code sometimes. Past that I just save and do something else :P

Astrobytes: 1-3 beer limit, depending on the beer

reCurse: I thought the ballmer peak meant you reviewed your code

Default avatar.png BoBot: I think I actually had a pretty nice evening of coding on weed last week :D

Astrobytes: Yes, after my consumption of 1 - 3 bears.

Astrobytes: Or beers.

reCurse: Oh ok read that wrong

Astrobytes: Tried doing that when I was younger BoBot, was not conducive to productivity *at all*

Default avatar.png BoBot: @Astrobytes works differently on different people and depends on dosage as well :P

Default avatar.png BoBot: I was near the optimum...hmm..I need a different name than Ballmer for that peak

Default avatar.png BoBot: Wozniak peak maybe?!

Astrobytes: For sure. I'm not a fan of the high-strength stuff around these days tbh. Anyway - move on. Not the best subject for a public chat ;)

Default avatar.png BoBot: (it is legal where I am :D but sure)

Astrobytes: "Wozniak peak" :D

Default avatar.png BoBot: he seems like the kind of guy..

sadakatsu: ... I decided to try Ultimate Tic-tac-toe. I submitted a bot that literally selects a move at random from an even distribution. I know I'm just in Wood league, but why did that place in 18th out of 300+ entries?

Default avatar.png BoBot: do you pick from legal moves always?

Default avatar.png BoBot: other bots might not even do that...if that is the bottom Wood

sadakatsu: My algorithm is: 1) input action count 2) randomly select value in bounds [0, action count) 3) echo the selected action

sadakatsu: It even manages to draw the boss more often than not...

Astrobytes: Cause it's Wood league ;)

Astrobytes: There's one wood league in UTTT right? Then Bronze?

struct: looks like my code that got me first on fall challenge 2020

miszu: Astrobytes I am 40th in gold

Default avatar.png BoBot: yea - in some games it is enough to always output a valid move to beat the lowest boss

Astrobytes: Getting there miszu!!

Default avatar.png BoBot: or minimal heuristic, like - random move instead of first move

miszu: yeah but I broke my game engine somehow. Now when I play a game, it choses a path where has a high confidence of wining but loses

Astrobytes: debug fun for you :D

miszu: like 2-3 moves before the game over he choses a path with like 70% win rates

miszu: I wish unit tests exist here in ide

Default avatar.png BoBot: tic tac toe test setup is not the worst

Astrobytes: You have an engine written, not too much effort to run it locally

Default avatar.png BoBot: you could even input it manually I guess?

miszu: I think I will stop UTTT

Default avatar.png BoBot: oh no, it gives valid actions as well :D

miszu: 40th is godo enough

Astrobytes: Sure you can take the game input and debug locally that way

Default avatar.png BoBot: those are harder to input by hand

struct: so there are only 6 actions on HS right?

struct: move N,E,S,W, Bomb or wait

struct: ah wait

struct: you can move more than 1 cell

struct: ah not

Astrobytes: in one tick?

struct: my bad

Astrobytes: I think not

struct: ok I see how it works

struct: so 10 possible actions

struct: How do people usually manage using bit operations on corner of th maps?

Astrobytes: depending on the dimensions you can leave a row/col free and shift

Astrobytes: well, you can do that anyway, depending on your representation I guess

struct: I see so if width is 13 I should use 15 bits

Astrobytes: I think the bitboard methods for games paper has some useful 'bits'

Astrobytes: iirc

miszu: does int16 vs fast int16 speed difference really matters?

struct: Thanks Ill check

struct: miszu i already explained it to you the other day

miszu: yeah I know

struct: I think reCurse could answer it though

struct: :D

miszu: but there was no consensus

Astrobytes: I was just about to recommend asking him struct :D

miszu: did you use it in your UTTT?

struct: yes and I got 1x the performance

Default avatar.png BoBot: I was going to ask "but could he answer it in his sleep?" but he was not who went to sleep early..

Astrobytes: I think we mostly all use just straight up (u)int_X's for most things on CG

miszu: basically useless haha

miszu: I just put int

Astrobytes: Too much wacky backy BoBot :P

miszu: way faster

miszu: to type it

struct: int is different from int16 though

miszu: yeah I know

miszu: is there performance difference?

struct: not everything is about performance

struct: The best way to check is to profile it

Astrobytes: ^^^^^^^

struct: int16 is 2 bytes int is 4 bytes

miszu: well yeah

Default avatar.png BoBot: @Astrobytes lol did not know that euphemism

Astrobytes: :D

struct: There are no shortcuts to performance

miszu: except pragmas

miszu: I gonna learn how to make unit tests in visual studio, then rewrite my engine and test thoroughly

miszu: get rid of vectors too

particleflux: Is the "score" in the leaderboards different per league?

Default avatar.png BoBot: (Y) for unit tests I was doing so well in Fall Challenge until I stopped adding unit-tests :D might be more to do with the complexity of the code than laziness, but I could have kept on trying maybe :P

Default avatar.png BoBot: @particleflux yes

Default avatar.png BoBot: it might seem confusing, but it also makes sense as you only play against people in your league

miszu: BoBot at my work I always go for 100% code coverage

miszu: then everytime later I have to add something or edit, takes 2 seconds

particleflux: Sure, makes sense. I was just wondering with the overview of the leaderboard until I noticed that the league icons were different

miszu: cuz everything is easilly testable

Default avatar.png BoBot: that is great :D I was feeling so great and professional this contest...while I was actually doing that :D

miszu: my recommendation is do the game engine first and test it properly

miszu: then you can have fun with different AI algorithms

miszu: but bad game engine = poor performance

Astrobytes: Do that for UTTT now miszu ;)

Default avatar.png BoBot: it is easier to cover heuristic code, than the search...though I reused the tests for search as sell because I assumed that I want it all strategies to beat the simple cases

Astrobytes: Trust but Verify :P

miszu: I am confident about my MCTS but somehow it choses the path with high % win but loses.

Default avatar.png BoBot: they did help immensely with debugging later as well

miszu: Astrobytes yeah I gonna do that

miszu: there is a hidden bug I can't see it

miszu: add that with lookup tables

miszu: nightmares

miszu: btw, you know how i went from 105th to 40th? I forgot to check vertical win conditions...

Astrobytes: making a little visualisation offline can help debugging stuff like that, even just in the console

Default avatar.png BoBot: loses against whom - maybe the opponents just find the winning moves?

miszu: I checked only horziontal and diagonal. And still managed to get gold

Astrobytes: lol, brilliant!

struct: Maybe I should add my "feature" back to the bot on FC2020

struct: maybe it will get legend

Astrobytes: what was your "feature"?

miszu: basically my AI was playing in handicap mode. Make it harder for me to win

struct: not discounting resources when I brewed

Default avatar.png BoBot: were you the one who wrote in PM that you had 2 major bugs that actually helped you

miszu: not a bug, it's a feature that help you win

struct: no

struct: I didnt write pm

struct: my pm would be 8 days spent on optimizations

Default avatar.png BoBot: @miszu I got to Gold in Fall challenge using only 9 inventory slots

Astrobytes: I had a few of those "features", fixing them makes my bot lose ofc

Default avatar.png BoBot: so much for test coverage I guess

struct: 3 days spent without sleep

miszu: BoBot I only finished silver :(

struct: https://i.imgur.com/sG2UXMR.png

miszu: but I didnt do any search

struct: I still believe

miszu: just instant heuristics

struct: this bot was 40th on gold yesterday

Astrobytes: past a day or 2 it becomes fruitless struct

Astrobytes: (no sleep)

miszu: grind for legendary?

AntiSquid: you didn't change it at all you mean? tobou

struct: yes

struct: i got pushed

Astrobytes: oh just above siharde the cheat

struct: Astro I slept

Astrobytes: ah good

struct: friday i stood awake for 20 hours then slep for 6

struct: then stood for 10+- slept for 8

struct: then stood again for 21

Astrobytes: that's fine then

Astrobytes: gotta have the breaks

Default avatar.png BoBot: wow, Rust needs to know array size at compile-time :O

sadakatsu: Why is that surprising?

Default avatar.png BoBot: in most languages you do not

Nerchio: i wanted to try rust but some of the things there are just painful :D

sadakatsu: Rust is intended as a low-level competitor to C and C++.

Astrobytes: Slightly different way of thinking, Rust stops you doing the things that you're gonna mess up :P

reCurse: In most languages you do not??

Astrobytes: *that Rust decides you're gonna mess up

Default avatar.png BoBot: you can get the array size as an input from the user right? at runtime? even in C++?

reCurse: Array size needs to be compile time in C++

Default avatar.png BoBot: oh, damn :D

sadakatsu: If you dynamically allocate it, sure.

tomatoes: use Vec if you want dynamic size

Astrobytes: I think dbd r or tomatoes already told one of you this

Default avatar.png BoBot: no, fixed size, but runtime

Default avatar.png BoBot: I am not mixing up fixed vs dynamic

sadakatsu: @Astrobytes <playful>Put another way, Rust interferes with doing anything useful because it is difficult to build things without potentially harmful tools.</playful>

struct: tomatoes please dont submit

struct: you beat me a lot

tomatoes: :sweat:

Astrobytes: lol sadakatsu :D

AllYourWhat: what multi has the highest rating delta between first and second ranked players?

struct: you have 6/10 vs me

struct: it will probably bring me down

struct: but im joking, feel free to submit

sadakatsu: I tried to learn Rust several months back. My test application was building a search tree. I found that to be impossible without using their pointers. So, I walked away.

ClockSort: heh

Default avatar.png BoBot: wait do you need to know array size before running in Java as well?! I must have forgotten a lot while using Python

tomatoes: need to cleanup mess i wrote

ClockSort: the secret to learning rust is to not use it afterward. That's what I did, and it worked great!

AllYourWhat: lol!

sadakatsu: lol, exactly!

miszu: BoBot not in java

Default avatar.png BoBot: yea, I got to it while googling :D

Default avatar.png BoBot: so basically all languages I have extensively used worked liked I thought :D

miszu: yesterday I was banging the wall trying to figure out how to initialise a static array in a struct

miszu: so complicated

Astrobytes: I can't diss Rust, haven't used it enough to be able to comment either way. It seems perfectly fine to me but not to everyone's style/methodology

struct: c++ is all i need

Astrobytes: Seems it might be better coming to Rust from a managed language? Not sure.

Twelve-2: guys what's the name of that multiplayer game that has 4 players in each battle

Astrobytes: Yes, same struct.

struct: hypersonic?

struct: There is more than 1 with 4 players

Astrobytes: There are a few Twelve-2

sadakatsu: I know a lot of developers have switched from C++ to Rust. I think they have some good ideas, but their safety features are so opinionated that (IMO) it ties an arm or two behind your back if you try to build anything real.

Default avatar.png BoBot: @Astrobytes yea, that is why I decided to even try, I have not definitely given up on C++, but...

Twelve-2: yes struct thanks I was looking for this

Twelve-2: Astrobytes , what others?

Astrobytes: Honestly Twelve-2 there are so many now I've forgotten!

Default avatar.png BoBot: Penguins allows up to 4! :D

Default avatar.png BoBot: which is what I am working on rn

Astrobytes: I need to get back to that one

Twelve-2: everyone in Penguins is still in wood!

Astrobytes: There are only Wood leagues for user contributed games Twelve-2

Nerchio: how hard is Poker Chip Race ? :D

Astrobytes: (currently)

Astrobytes: I heard the sim isn't too bad for PCR Nerchio

struct: https://i.imgur.com/Fwo0lge.png

struct: what is this madness

Astrobytes: well, it was here before

Default avatar.png BoBot: obviously better than Python 3, as you can see from that LB

struct: But wasnt it just called python before?

Default avatar.png BoBot: who has time for writing brackets when trying to print important stuff

Astrobytes: No, we had paython2 and paython3

Astrobytes: :P

Default avatar.png BoBot: what's the meme with paython?

Default avatar.png BoBot: I want to know all the Python memes!

Astrobytes: Just a spammy user from during the contest

Default avatar.png BoBot: oh, alright :D

Astrobytes: *also see payhon

Default avatar.png BoBot: thought it had something to do with it being expensive (in terms of CPU)

Astrobytes: No, but I kind of like that

Astrobytes: Hey, chat is active a day after the contest. I'm impressed

ZarthaxX: give it one more day

Astrobytes: So pessimistic Zarthomist

Astrobytes: but yeah :/

ZarthaxX: i hope it doesnt tho

ZarthaxX: i like cg being alive

Default avatar.png BoBot: yay, my first runtime (not compile-time) error in Rust!

Astrobytes: Yeah, same ZarthaxX

Astrobytes: lol BoBot

miszu: do you guys bother with encapsulation?

Default avatar.png TimberStalker: like classes and stuff?

miszu: yeah

Default avatar.png TimberStalker: 100%

miszu: to protect your member variable

miszu: but I wonder if it adds overhead and reduces # of sims

Default avatar.png TimberStalker: i just like having all my variables tied together

Astrobytes: No, not for CG anyway

Astrobytes: No-one else is gonna use your code

miszu: would getter and setter reduce the # of sims?

therealbeef: I feel it helps after days of extending and refactoring code

Default avatar.png TimberStalker: depends

Astrobytes: Are you still thinking about UTTT miszu

miszu: yes :)

miszu: it's a love hate relationship

miszu: 40th

miszu: so close to legendary

miszu: my goal is to reach legendary and not to be last in legendary

Astrobytes: Don't compute stuff in real-time if it can be pre-calculated

miszu: yeah I created a lot of lookup tables

miszu: I can reach 16k sims

tomatoes: gold boss ~120th in legend

miszu: but I broke my engine somewhere

Astrobytes: Profile your code.

Default avatar.png TimberStalker: getters and setters are pretty much exclusively real-time.

miszu: thus why I need to use visual studio and massive test it

Default avatar.png BoBot: write manageable first, while keeping in mind how you would convert it into faster versions while writing, so it is not too much of a pain later

miszu: BoBot you can't

Astrobytes: And like I said, test your engine for correctness and stop worrying about optim until that's done

Default avatar.png BoBot: unless you know you need hardcore performance straight from the start

miszu: like once you discover a hack, you need to change a lot

miszu: getting rid of vectors and use arrays instead

miszu: with pools

miszu: that's a challenge

Default avatar.png BoBot: yea, I guess with bit arithmetic and fancy storaging methods it gets nasty

Default avatar.png BoBot: also I do not know how C++ guys do it :D

miszu: this is where I am getting now

Astrobytes: verify engine correctness first <--

miszu: yes Astrobytes

miszu: that's why I will learn how to use that unit test framework in visual studio

miszu: so complicated

miszu: create a unit test project

miszu: and hook it to your actual project

Astrobytes: Or it'll be like trying to find a needle in a hastack

miszu: jesus

Astrobytes: *haystack

miszu: in intellij is just rick click + create test

Astrobytes: In UTTT you should be able to take the game state, feed to your engine then check if the output matches?

Astrobytes: *matches CG output I mean

miszu: yeah that is the point

miszu: create bunch of states and verify correctness

miszu: especially the win condition

miszu: cuz something is wrong if my mcts pick a branch with 80% win rate and still lose

miszu: like.. it's not 2016 election survey right?

AntiSquid: lol

AntiSquid: only end result matters, winner writes history

Astrobytes: hahaha

miszu: in the morning, I had a branch with 99.94% win chance

miszu: stil lost

AntiSquid: maybe you evaluate wrong ?

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

miszu: evaluation is good

Astrobytes: Don't rush this one miszu

miszu: my win condition was wrong in my engine

AntiSquid: i mean something MUST be missing if you are only 0.06% correct on your prediction

miszu: yeah the vertical winning condition

miszu: and it improved

miszu: but now it's broken again

miszu: anyways, I'll unit test my game engine

AntiSquid: what are you up to astro ?

Astrobytes: you have to test your engine

struct: I guess I also need to learn unit testing

ToshiTuringMachine: i translated my bot from Dart to C++. guess what happened

Astrobytes: not much, played a bit with fixing some Fall Challenge bugs but I need a rewrite AntiSquid

miszu: undefined behavior?

Astrobytes: Will probably go back to Penguins

struct: you stopped timeout

AntiSquid: i gained 200 ranks after fixing some really minor stuff in fall challenge :D

miszu: struct, once you unit test, there will be no turning back

Astrobytes: I lost about 200 lol :D

ToshiTuringMachine: no, it goes exacly the same!

struct: you still timeout?

AntiSquid: but time for CIF now, seems there are timeouts there out of nowhere

ToshiTuringMachine: yeah totally

struct: it must be your account

struct: emil cursed it

AntiSquid: does curse go away if you delete?

Astrobytes: everything is timing out again AntiSquid? This was happening with multis way before the contest

struct: it went to toshi aparently

AntiSquid: someone test if account deletion removes their timeouts, maybe it works

ToshiTuringMachine: lol... no curse. i just cannot c++ so my translation is not using any of the c++ tipical speedups

struct: boss .33 away

struct: any pushers

Astrobytes: If you cannot C++, you must C#, other than that you need better glasses Toshi :D

struct: zeno got pushed already nice

AntiSquid: if i get a magical idea of how to improve to gold, i'll push you struct

ToshiTuringMachine: prrr Astrobytes

Astrobytes: :D

ParticleBeam: Are you talking about the last contest?

AntiSquid: "if you can't C++ then you ain't latino"

struct: ParticleBeam me? yes

Astrobytes: I don't get that AntiSquid

Astrobytes: Come to think of it, I think I need new glasses too

AntiSquid: it's a Biden reference

ToshiTuringMachine: ah ok.. well I WON BY A LOT

Astrobytes: I can see you've been Biden your time to make that joke

AntiSquid: :D

struct: AntiSquid get always first 6 spells

struct: 8*

struct: than you will beat silver

AntiSquid: even if 2nd costs 0 ?

AntiSquid: think i tried that before

struct: I still have it

struct: and silver boss has no real chance

AntiSquid: https://www.codingame.com/share-replay/510528825

miszu: is there a way to restart your progress in a competition?

struct: that is 6 spells not 8

struct: do you take into account potions score?

ToshiTuringMachine: I don't think so miszu

Astrobytes: Not without an alt account miszu

Astrobytes: It's a highly requested feature

AntiSquid: first 8 https://www.codingame.com/share-replay/510529950

AntiSquid: reset to wood would be fine too . you wouldn't get the xp again anyway

miszu: it's nice to glorify your AI how it beats in bronze :D

struct: What search are you doing?

Astrobytes: lol, your output squiddy

AntiSquid: vector<string> lyrics = {"Link", http://chat.codingame.com/pastebin/a72bea5e-3b4b-4d94-beba-0d73a6dbe249

AntiSquid: just didn't feel like counting the lines .

AntiSquid: that's why the vector

Skynse: wut

Astrobytes: still works AntiSquid :D

struct: the terms they use in this paper

struct: dilation erosion

AntiSquid: https://www.youtube.com/watch?v=cpJMzS_Gbd8 Skynse

Astrobytes: they explain them though struct

struct: cant they explain it to me like im 5

Astrobytes: lol

struct: I like Icebox explanations better

struct: Paint and in 2 minutes he teached me beam search

ToshiTuringMachine: is he 5?

Astrobytes: :rofl:

struct: I think i need to apply the things to understand

struct: reading isnt really for me

AntiSquid: can he explain AlphaZero in MS Paint?

AntiSquid: the full implementation

Astrobytes: The pseudocode is pretty good in that paper struct

Astrobytes: play around with it

struct: yeah Ill do it

Astrobytes: if you get stuck, doing little examples on paper/whiteboard can help a bit, if you write the steps next to your visualisation

AntiSquid: i just do basic search to reach a potion actually struct

AntiSquid: well only checking if i can reach before boss

Cosmeen: If I submit a solution to a problem, is the code saved?

ToshiTuringMachine: yes

Cosmeen: thanks!

MadKnight: Cosmeen it's even saved when u hit Play

Cosmeen: Ow shiet didn't notice

Cosmeen: I should try that

AntiSquid: hi MadKnight

AntiSquid: how's it going

MadKnight: just woke up

AntiSquid: funny prize: Sigmoid Hacks is a 3 day student led, machine learning hackathon on Jan 15TH. We welcome K-12 students and university students! Participation is free and winners receive prizes such as a Tesla tour! (After the covid restrictions).

AntiSquid: you get a tesla tour in 5 years from now probably .

struct: tomatoes

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

ParticleBeam: Did he beat you again?

struct: 1 time

struct: 1/1

struct: just focus on the boss :)

tomatoes: added learn

tomatoes: in the middle game

struct: if(struct) cout << "lose" << endl;

struct: holy 6 loses vs you

struct: gj

miszu: do you guys use header file here?

miszu: to do unit tests in visual studio i need to make some header files

struct: grats tomatoes

struct: yes I use multiple files miszu

tomatoes: thanks :tada:

miszu: struct do you code here in ide or a different ide?

struct: VS

miszu: okay yeah

miszu: and then you copy paste all files to here?

struct: i use file merger

struct: https://github.com/MarcosCosmos/cg-cpp-bundler

miszu: oh okay

miszu: thanks

miszu: time to learn header files

miszu: the c++ version here is this one right?

miszu: ISO C++17 Standard (/std:c++17)

struct: g++ 9.2.1 mode C++17

miszu: c++17 is enough

Recovery_disaster: I'm still at 1/2 for "reach silver league in 2 games", but I'm gold in one game and git silver in the last challenge. Shouldnt it be 2/2? I cant progress in my quest map

struct: I think they have a bug

struct: because you reached silver in the conntest

struct: And the constest doesnt count for quest map I guess

Recovery_disaster: oh :(

struct: Know that the game became a multiplayer you got automaticly placed in silver

Recovery_disaster: but isnt it allready a normal bot programming game ?

struct: yes, but I guess they dont have a check for that

Recovery_disaster: got it. So I'll need another silver

Recovery_disaster: thanks

SansPapyrus683: do emojis work😘

SansPapyrus683: oh they do