Chat:World/2021-07-27
AJamal31: the leaderboard on the compete section and the rankings on the person's profile
BlaiseEbuth: The ranking on the profile correspond to the global leaderboard.
AJamal31: so what does the leaderboard on the compete sectino mean?
BlaiseEbuth: My bad. I said 'global' instead of 'general'. The ranking on the profile correspond to the 'general' leaderboard in the compete section.
AJamal31: lol i'm still confused
AJamal31: i literally found out about this site today
BlaiseEbuth: No problem. What don't you understand ?
AJamal31: When I go to the compete tab, my rank says 3000 something but on my profile it's like 400,000... I don't understand the difference
AJamal31: like who am I being compared to in the 2 different rankings
BlaiseEbuth: You're looking to the Clash of Code leaderboard.
BlaiseEbuth: At the top of the leadeboard page there are tabs, you have to click on the first one, 'general' to see what is displayed on your profile.
BlaiseEbuth: https://i.imgur.com/V9rfFo4.png
AJamal31: general is combination of everything and clash of code leaderboard is only for clash of code... makes sense
BlaiseEbuth: AJamal31, if you want details, click on the '?' beside your rank on your profile.
BlaiseEbuth: https://i.imgur.com/iYQd2AR.png
AJamal31: I only have the progression box: https://www.codingame.com/profile/ac73e76e943039550b0f72549c3d4d480806444
AJamal31: But i see the ranking on your profile so now it makes more sense
BlaiseEbuth: Oh. Yes that's normal, since you've just registered. You'll be able to see it tomorrow.
jacek: a helpful mod? oO
BlaiseEbuth: Shit! He saw me! :scream:
BlaiseEbuth: Jacek :(
AJamal31: lol anyways, nice to meet you and thanks for your help
BlaiseEbuth: No problem. ;)
BlaiseEbuth: o/
AJamal31: if you don't mind me asking, are you a student or are you working?
BlaiseEbuth: Working. :older_man:
AJamal31: Okay so does practicing here help with coding interviews?
AJamal31: These questions int he "Clash of Code" seem much easier than like LeetCode questions
BlaiseEbuth: Clashs aren't representative.
BlaiseEbuth: Thanks kobebryant
BlaiseEbuth: AJamal31 I thought you spoke of CodinGame tests. Well, anything that make you practicing is good to take.
BlaiseEbuth: (Even if clashs are not the better way...)
kobebryant: you people are insain
BlaiseEbuth: Something interesting to say kobebryant?
BlaiseEbuth: Bye
BlaiseEbuth: Stop kobebryant. Last warning.
AJamal31: Great meeting you, I'm gonna head off. It's really late here
BlaiseEbuth: Good night!
Despair97: as a noob,i like the clash exercise problems
Despair97: generally i cant provide a valid answer in ~10 mins but i take the question and solve it myself in time
derjack: that what puzzles are for
ShishirBoss: ?
Maxim251: http://chat.codingame.com/pastebin/d51b5b6f-a3fd-4fee-971c-b20848b0ff84
Maxim251: http://chat.codingame.com/pastebin/e5c4e82c-f16b-43c9-8d0f-fe9e000f73e5
Maxim251: Who was playing Custom Game Of Life in codingame? There is rule which I dont understand
Fastman: How continue solving the problem in clash of code?
struct: search the puzzle here
struct: https://eulerschezahl.herokuapp.com/codingame/puzzles/
TobiasA: (╯°□°)╯︵ ┻━┻
BlaiseEbuth: (╯°□°)╯︵ ∀sɐıqo⊥
TobiasA: how dare you
BlaiseEbuth: ┬─┬ノ( º _ ºノ)
BlaiseEbuth: Poor table...
MSmits: i did not know you can flip people
MSmits: very cool
MSmits: flip me
sprkrd: that sounds uncomfortably sexual
TobiasA: MSmitsノ( º _ ºノ)
BlaiseEbuth: (╯°□°)╯︵ sʇıɯSW
oxydowe: is there any chance to see Codepilot using CoC solutions? that would be fun! :-)
captnBill: :eye:_:eye:
MSmits: thanks BlaiseEbuth
darkhorse64: Did more blood towards the brain improve anything for you ?
MSmits: yeah
struct: I cant understand
struct: anything I change gives no improvement
struct: this win was decent but its not consistent
struct: https://www.codingame.com/replay/572451905
MSmits: record the moves done, make a list of states and moves. If state == listed state -> make winning move
struct: nah
struct: Might be the time to finish the book
JoeOrtega: for (let i=0; i<n; i++) {
for (let j=0; j<n; j+=1){}
}
JoeOrtega: why is this loop not iterating the whole table ?? any help !!
struct: is the table n*n?
JoeOrtega: i am trying to compare two numbers in the table !
struct: i mean is the number of rows equal to the number of columns?
struct: ah
struct: so its a 1d array right?
struct: is this for which puzzle?
struct: if you make j start at i + 1 so let j = i + 1
struct: but if you just want to iterate over the array
struct: 1 for loop is enough
struct: that is looping n * n times
JoeOrtega: ah ok thank you !! i see
eulerscheZahl: what's that new achievement? https://prnt.sc/1gmfgh1
DaNinja: points if you rate other players puzzle solutions
struct: rank puzzle
struct: solutions
struct: yeah
struct: da ninja was fast
Astrobytes: also, someone should tell them that examinateur != examinator
eulerscheZahl: i guess i'll never reach that achievement. just like "invite 20 users"
eulerscheZahl: they are French...
Astrobytes: Sure. But examinator sounds like a character that Arnold Schwarzenegger might play
eulerscheZahl: to me it sounds like someone who passes all exams in a badass way
Astrobytes: lol
Astrobytes: I reported it anyway
eulerscheZahl: found your report
Astrobytes: I refrained from pinging you
BlaiseEbuth: Examinator III: He's back, again.
Astrobytes: :D
jrke: how can i convert base64 encoded bytes or string to int?
BlaiseEbuth: You just have to click 45 times on a button eulerscheZahl. Simpler than creating 20 smurfs.
BlaiseEbuth: Or to have friends.
darkhorse64: Rating solutions: upvoting/downvoting ? I tried that with no success
darkhorse64: maybe the feature is not yet enabled
DaNinja: when you submit a valid puzzle solution, you are shown three pairs of other solutions and need to select which solution you prefer
DaNinja: I've only seen it once
darkhorse64: OK. Thanks
DaNinja: ah you get it when you click Learn for the best Coders
DaNinja: *from
jrke: yeah i also just discovered that
pyprog: im giving 100$ to a random person
BlaiseEbuth: You're giving a php file?
SlurpasGasskagg: Anyone who can help me if Mars Lander rounds your X/Y-positions up, down or to closest position?
a_noob: why `String.prototype.replaceAll` is shown as available in the editor, but it's not supported in the validator side?
eulerscheZahl: BlaiseEbuth it's not about how hard it is to get there. it's about how much i care about the task reflecting that achievement
eulerscheZahl: i gave some downvotes for identical solutions in the past (stealing the creator's code). maybe it updates when i solve a puzzle
darkhorse64: Maybe it should replace captchas
eulerscheZahl: SlurpasGasskagg it's best to compute all by yourself and completely ignore the input given
eulerscheZahl: http://chat.codingame.com/pastebin/e349f8dd-d7c1-41e5-a532-abca48f96f7f
BlaiseEbuth: Isn't the purpose of achievments to make you do things you'll never done otherwhise?
TheBouncyPanda_4003: I am new to this thing
sprkrd: you're missing HI and hi
sprkrd: welcome then :)
TheBouncyPanda_4003: I have started learning javascript, please guide me how to master promises!
TheBouncyPanda_4003: hAhaha tHanks @sprkrd
TheBouncyPanda_4003: :slight_smile:
TheBeatles: hi
iLoveAss69: is learning programming hard?
iLoveAss69: i feel like i don't belong to that world :worried:
struct: at the start it might seem hard
dbdr: then it gets harder ;)
TheBouncyPanda_4003: and then after that?
iLoveAss69: just change from java to c++ and thing went from 0 to 100 real fast
struct: code also got faster probably
iLoveAss69: just keep trying and it will eventually get into your head
struct: yeah learn by doing
iLoveAss69: damn you're a master in c++
struct: why?
iLoveAss69: how many years does it take to be on that level?
iLoveAss69: i looked at your profile
struct: I think it changes from person to person
iLoveAss69: very impressive thing
struct: I took a while tbh
iLoveAss69: did you struggle in the beginning?
struct: yes
iLoveAss69: the pointer and reference thing
iLoveAss69: you have some hard times with those too?
struct: not anymore
struct: but when I started I took some time to understand it
iLoveAss69: you must be a senior developer
iLoveAss69: do you have any advice for the juniors of us?
iLoveAss69: i love coding but i'm having some hard times
struct: im still at uni
struct: the normal advice I give is practice
iLoveAss69: it feels very comfortable to express my thought to some random person on the internet
BlaiseEbuth: [RANDOM][OLD]struct
TusharPandey: How do I know which question has character count as criteria?
struct: it should say at the top
struct: if its shortest mode or not
martinpapa69: any idea why my clang consume 10gb of ram, when a compile a codingame-sized project ?
struct: memory leak?
eulerscheZahl: some nested defines that blow up the code size?
martinpapa69: i mean, the compiler consomes the ram during copiling
eulerscheZahl: did you try another compiler?
martinpapa69: nah
martinpapa69: ye mbe i should
reCurse: That doesn't sound right at all
reCurse: Using clang all the time with no such issues
martinpapa69: maybe some compatibity issues with linux subsytem
jacek:
Eagermoney: so Ive been trying to learn code from scratch rn and I can figure out how to end a code and start a new one you guys have any idea how to do that?
StepBack13: lol, depends on what language?
BlaiseEbuth: Usualy, I do ctrl+s, ctrl+f4 and ctrl+n. That's all
RoboStac: martinpapa69 - I used to have that problem, the old version of clang on the default wsl distribution is very memory hungry
jacek: was it made in java?
martinpapa69: ye, it works fine with clang12. thx!
reCurse: Huh, TIL. I always updated before using.
jacek: huh, at work i never update during deadline
reCurse: *using for the first time...
jacek: if using for the first time, then its not update
reCurse: Not sure if you're trolling.
struct: its jacek
reCurse: In case you're not, after installing wsl2 I update compilers and other packages
reCurse: In case you are, I'm done
BlaiseEbuth: There's no trolls on this chat...
reCurse: Usually better when it's tied to an attempt at being funny
jacek: was not funny?
jacek: :rage:
BlaiseEbuth: Don't worry jacek, one day he'll be able to understand humor. Emergence can take time.
reCurse: :rolling_eyes:
FalINTOblivion0112: lol
reCurse: Time for another CG break I think
jacek: :no_mouth:
BlaiseEbuth: Hmm...
Wontonimo: hey ChirathPansilu
Wontonimo: what's your programming lang of choice?
Medoo: i like how c works
struct: are you participating in sogeti Wontonimo?
eulerscheZahl: are you, Tobou?
struct: yes
struct: and yes
eulerscheZahl: what's the 2nd yes?
struct: im tobou
struct: Im done with bt
eulerscheZahl: that's out of question
eulerscheZahl: that you are tobou
struct: im still not sure if im participating tbh
struct: ive submited my fb smitsimax that got to bottom gold
struct: but that was about it
eulerscheZahl: so you are more invested than I am :P
Astrobytes: you never do the physics ones
struct: I would be trying more if I was eligible for any of the prizes
struct: bt tilted me
eulerscheZahl: i never do the semi-private ones
struct: im never touching it again
Astrobytes: you've done one or 2 no?
eulerscheZahl: last was the planets game. but i didn't play until the end
Astrobytes: that's what I was thinking of
eulerscheZahl: that was a new game
Astrobytes: true
eulerscheZahl: those 90% existing games are boring
BlaiseEbuth: Don't worry, no more of those!
Astrobytes: indeed
BlaiseEbuth: No more sdk!
BlaiseEbuth: And only escape contest!
BlaiseEbuth: \o/
Astrobytes: No more SDK? Who said that?
eulerscheZahl: the SDK still exists
BlaiseEbuth: For now...
eulerscheZahl: sounds highly unlikely to me that they will cancel support for a working system
Astrobytes: I could see them no longer updating it at some point
struct: I have 3 options, to port arimaa, paritipate in this challenge or to try breakthrough again and probably go insane
eulerscheZahl: i don't expect much improvements/extensions. but still continued support
struct: Doesnt need improvements tbh
eulerscheZahl: you are insane already
struct: all we need is to create own modules
struct: probably
BlaiseEbuth: Why maintain it if they don't use it for business
eulerscheZahl: the SDK even got a recent update (pixi.js version)
eulerscheZahl: it's still working. and i don't think it needs a lot of maintenance
eulerscheZahl: unless they decide to update java one day? :thinking:
BlaiseEbuth: That's the point
struct: the maintenance is clear the disk when we upload new games
BlaiseEbuth: http://chat.codingame.com/pastebin/ea5a4dd7-96b9-4b8d-a958-00332b6cb3c8
BlaiseEbuth: :scream:
struct: maybe ill try bandas
struct: seems like a few hours at most
ConnorKrakosky: blaise how many of these problems have u seen jfc
BlaiseEbuth: jfc?
ConnorKrakosky: jesus fucking christ lol
BlaiseEbuth: Oh.
jacek: no more bt?
struct: probably not
struct: i give up
struct: :(
ConnorKrakosky: blaise, howd you do the knight one in 30 seconds?
struct: maybe if I ever can manage to make a NN ill try it again
Anonymous7777: he has 1,773 games completed on clash of code
Anonymous7777: just checked lol
struct: weak number
KiwiTae: he is a bot
BlaiseEbuth: Of course I am.
BlaiseEbuth: :robot:
Hexagonal: roybot
struct: tooltip bug?
struct: https://www.codingame.com/replay/572534169
struct: it seems that the spell shows 1 turn after it was cast on tooltip
struct: because score tooltip shows before spell
eulerscheZahl: blame julien
struct: unplayable
struct: now I can play something else
jacek: :notebook: :soccer:
ShellyCsl: my bf and I are coding
BlaiseEbuth: Or read the rule that state a spell is applyed the turn after its cast? :rolling_eyes:
struct: I did read them
Illedan: Spell is cast 1 round later?
struct: yes illedan
struct: you can only change vx and vy when turn ends
struct: end turn apply spell
Mohammad_Moein: have you see many compiler problem in this site
Illedan: :/
Wontonimo: i haven't seen any
Illedan: So, if a wiz picks up the snaffle, it has no effect?
Astrobytes: yeah, I think that's when it says "spell failed" or something like that
Mohammad_Moein: in cpp code compiler cant compile your code well and many bugs
struct: it compiles fine for me
Wontonimo: Mohammad_Moein , do you mean bugs in your own code or bugs in the actual compiler ?
struct: What are you trying to compile?
Astrobytes: compiles fine for me. PEBCAC
struct: ah the compiler returns no error
Mohammad_Moein: actual compiler because i write my code everytime again in vs and it work well
struct: do you still lose magic though?
Astrobytes: not 100% on that struct
struct: vs uses msvc, codingame uses gcc
Mohammad_Moein: last time i use my code in gcc and it works
Mohammad_Moein: yeah i know it
Astrobytes: what are you trying to do?
Mohammad_Moein: i try to compute the angle and use in robot war
Mohammad_Moein: when it give me x and y , i use to compute arctan
Astrobytes: and what's the error?
Mohammad_Moein: not an error that function returns me just 45 deg for every x , y
Astrobytes: atan2?
Wontonimo: hmm, something tells me you should try atan2.
Astrobytes: ^
Astrobytes: atan2(y,x)
Wontonimo: :D
Mohammad_Moein: but i use "math64.h" so arctan return atan2
Marchete: lol that's next level
Marchete: it's not the descent game
Marchete: but the compiler
jacek: math64.h?
Astrobytes: intriguing
ShellyCsl: me coding with my bf
Astrobytes: we heard you the first time.
ShellyCsl: print("".join(["0"if int(i)==1 else"1" for i in input()]))
ShellyCsl: we like shortest mode
eulerscheZahl: 4 chars less: exec(bytes('牰湩⡴∢樮楯⡮≛∰晩椠瑮椨㴩ㄽ攠獬≥∱映牯椠椠湩異⡴崩⤩','u16')[2:])
eulerscheZahl: https://clemg.github.io/pythongolfer/ have fun
Astrobytes: that one gave me some weird line terminators that CG wouldn't accept
eulerscheZahl: worked for me
eulerscheZahl: there was a dialogue that asked me how i want to paste it
Astrobytes: worked for everything except one
eulerscheZahl: tried the first option, failed then i tried the other
Astrobytes: Hm, I had no option. Maybe I'll try again if I get bored at some point.
ShellyCsl: that site is crazy!
ShellyCsl: exec(bytes('牰湩⡴∢樮楯⡮≛∰晩椠瑮椨㴩ㄽ攠獬≥∱映牯椠椠湩異⡴崩⤩','u16')[2:])
ShellyCsl: I can actually run that code
eulerscheZahl: replace exec by print and you will see that it unwraps to your original code
struct: now paste that into there again and run it again
jacek: :O
eulerscheZahl: An error occured. Refresh the page or check the logs.
jacek: euler must be master of shortest clashes, eh
Marchete: hacker :spy:
struct: marchete are you doing sogeti?
jacek: ur mum's spaghetti
Marchete: pasta :D
Marchete: no I'm not doing it
Astrobytes: Still doing D&B Marchete?
Marchete: I think I'll stop by now
Astrobytes: :)
Marchete: holidays for 20+ days
Marchete: without PC
Astrobytes: Nice. Enjoy that!!
BlaiseEbuth: :scream:
struct: just leave your NN on for those 20 days
struct: What can go wrong
Astrobytes: :grin:
BlaiseEbuth: :smile_cat:
ShellyCsl: your bf code with you?
ShellyCsl: I can tell that he is the cutest and best bf in the world
jacek: i dont have bf :(
ShellyCsl: Im gonna bite his face
Wontonimo: code people. let's focus on code
ShellyCsl: Im sure you can get one soon :)
PatrickMcGinnisII: oh no... code in the face :sneezing_face:
Astrobytes: Wontonimo: you doing the Sogeti contest?
Astrobytes: And you Patrick
jacek: then what are you codeing Wontonimo
PatrickMcGinnisII: like I'm clueless
PatrickMcGinnisII: trying to find my error in 2-player calculator game
jacek: calculator game?
jacek: 80085?
Astrobytes: Slowww submits
PatrickMcGinnisII: Boobs ... yes thank you
Astrobytes: BlaiseEbuth: https://www.youtube.com/watch?v=ZrOpdZMssL0
PatrickMcGinnisII: 55378008
Astrobytes: 8008135
Marchete: 3352176
MSmits: ohh the anthem of scotland
Marchete: HOW CAN I UNSEE SOMETHING?
MSmits: lots of alcohol I think
MSmits: hf on vacation martinpapa69
MSmits: argh
MSmits: marc
MSmits: Marchete
MSmits: that works
Marchete: :thumbsup:
Marchete: you are free to improve your D&B :D
MSmits: yes, I also still need to try your nn stuff
struct: NN for breakthrough when?
MSmits: so, i'll still be working on that when you come back
Marchete: I'd like NN for C4
Marchete: board seems easy to code
KiwiTae: nn for serpent!
KiwiTae: snake
MSmits: snek
KiwiTae: ups
Astrobytes: lol MSmits
struct: i can give you the win checks and stuff in avx
Marchete: my NN is not hard to get it working
KiwiTae: the frenchs are ruining my english :(
struct: neural network
MSmits: no just 2
FalINTOblivion0112: 14 gold achievements
FalINTOblivion0112: not bad
Astrobytes: is there a CSB promotion computing or what?
Astrobytes: hm, 112 computing
Takos: hello
Takos: :cloud:
jacek: or maybe they lowered the limit again
Astrobytes: was fine a wee while ago
Astrobytes: Seems like it was the CSB after all. Have they reduced their server capacity too?
FalINTOblivion0112: how do you become a codingame mod
Astrobytes: Sell your soul
Astrobytes: Nah, just be regular, trustworthy and asked
Astrobytes: It's not a paid role btw
FalINTOblivion0112: dunno if blaiseEbuth sold his soul to the devil
FalINTOblivion0112: or he sold his soul to salt instead
Astrobytes: You sell your salt and souls to Blaise
FalINTOblivion0112: i like salt
FalINTOblivion0112: i can say that for certain
FalINTOblivion0112: what is even blaise gender
Wontonimo: it's good on apples
FalINTOblivion0112: SALTY APPLES
FalINTOblivion0112: YES MY FAVORITE SNACK
Astrobytes: CAPS LOCK MUCH?
FalINTOblivion0112: oops
FalINTOblivion0112: can somebody just accept my contribution on codingame
Wontonimo: you could have said you used shift for every letter to make it even more loud
Astrobytes: No. Be patient.
AbhiEncoded: hi
AbhiEncoded: anyone there
MSmits: It is I
MSmits: who is here
Astrobytes: You've done it now, you've awoken Mecha-Smits
MSmits: :robot:
FalINTOblivion0112: how do you limit your clashes to only reverse clashes
MSmits: there is one way to never get shortest and speed
FalINTOblivion0112: how
Astrobytes: Think you can only do that in private clashes
MSmits: dont play clashes
FalINTOblivion0112: ahhhh thats big brain
Astrobytes: Or maybe not even, I don't clash so...
struct: i hope the fb rewrite is wrote
struct: my previous code was barely getting any sims :(
Astrobytes: True AI ftw. Who needs sims.
Astrobytes: Speaking of which, I just spotted a wild ceg in the leaderboard
struct: if I write a true ai ill need to think
struct: if i write a sim i wont
struct: its an easy choice for me
Astrobytes: :D
MSmits: prune arrays are coming to hogwarts
Astrobytes: hehehehe
MSmits: marchet e changed the whole way I am looking at D&B now
MSmits: keeping me busy
struct: my state size for FB was 10kb
struct: o.o
Marchete: :nerd:
Astrobytes: lol, embracing the graphs MSmits
MSmits: no, not that
Astrobytes: the loopy thing
MSmits: I was trying to beat mikla at the nim-game, but now I know I don't have to
MSmits: yeah that's part of it
MSmits: I basically have the tools marchete uses to beat mikla, but i wasnt using them rgiht
MSmits: thought my score solver was just cool to look at, but it can do more
Astrobytes: a 2-pronged approach is often better
MSmits: in this case it would be 3 pronged
Astrobytes: multi-pronged
MSmits: yes many prongs
MSmits: whats a prong?
Astrobytes: think of the bits on the business-end of a fork
MSmits: ah yes
PatrickMcGinnisII: prawn *
Astrobytes: prong *
MSmits: :shrimp:
PatrickMcGinnisII: ok, new name for a game search
Astrobytes: :)
cegprakash: Wingardium!! :D
Astrobytes: hey prakash, how you doing man?
cegprakash: good :D I just edited my fantastic bits bot and submitted for wingardium :D
Astrobytes: Didn't we all :D
Marchete: maybe you don't have graphs
cegprakash: hope to get some XP :P
Marchete: but you do need to floodfill
struct: Dont think this game gives XP
Marchete: check "graph" types, etc
Astrobytes: No XP for this no
Astrobytes: 1 league
cegprakash: Looks like no Accio in this version
Astrobytes: there is only Wingardium
cegprakash: Wingardium may be little OP compared to Wingardium
cegprakash: compared to Filipendo*
Astrobytes: there's no flipendo either so don't worry about it
cegprakash: lol https://www.codingame.com/replay/572588719
struct: we can wigardium wizards?
cegprakash: it's difficult to even score 1 goal against Neumann
Marchete: what's your rank at FB?
struct: bottom legend with if else but bottom gold with this bot
cegprakash: gold 229th
cegprakash: no collision detection lol
cegprakash: just take the ball and shoot to target
cegprakash: :D
struct: I had no idea that I could cast wigardium on wizards
struct: https://www.codingame.com/replay/572588607
struct: maybe also works for bludgers
cegprakash: sometimes my bot try to pass to teammate :D
cegprakash: but not really a through ball like top guys do
Astrobytes: just says 'entity' so I would assume so struct
cegprakash: top guys play through passes which is insane
cegprakash: a back pass into wingardium would be a nice strat
struct: my bot likes to take boost from bludgers
cegprakash: interesting
struct: https://www.codingame.com/replay/572496389
struct: its sim though
struct: at frame 65~
struct: since the mass of bludgers is 8, it gives a good boost to speed
cegprakash: double rebound strat wow
struct: and the pass
struct: before that
cegprakash: don't tell it's sim struct.. tell it's ur strat :D
struct: its easy to tell if a bot has sim or not from replays
Astrobytes: you don't say!!
cegprakash: will we get the source code released?
Astrobytes: No.
cegprakash: :(
cegprakash: that means I won't do sim
cegprakash: struct nice through ball :D
cegprakash: imagine this was a 5 v 5 game :D it would be a futsal
cegprakash: ppl would try different formations
YurkovAS: cegprakash https://github.com/dreignier/fantastic-bits
cegprakash: thx YurkovAS will check
cegprakash: gn all
Astrobytes: gn cegprakash, nice to see you
struct: gn
PatrickMcGinnisII: hmm, is there a codefest going on?
struct: https://www.codingame.com/hackathon/sogeti-codefest-2021
Astrobytes: Yes I mentioned it earlier to you and Wontonimo Patrick
YurkovAS: no Russia in the countries list :sweat:
PatrickMcGinnisII: ahh couldn't find it on the home page
Astrobytes: switch country temporarily YurkovAS
PatrickMcGinnisII: loaded
struct: I was in spain when i registered
struct: I going back when it ends
struct: Im*
PatrickMcGinnisII: last one didn't include USA
Astrobytes: :D
PatrickMcGinnisII: VCirtual travel is better than no travel
PatrickMcGinnisII: er virtual
Astrobytes: True
YurkovAS: :laughing:
Astrobytes: St. Petersburg, Finland! A place I know so well :rofl:
struct: https://www.codingame.com/replay/572594110
struct: I might be on to something
Astrobytes: Possibly the most exciting replay in history
struct: :D
MSmits: very deep strategy
MSmits: it's no shame if you can't see it
Astrobytes: Shifting your dudes around like that is something though
struct: this boost is from 2 wingardium 100 combined
struct: with only 1 is not much
Astrobytes: Depends how much magic you spend on it though
Astrobytes: can you cast it on yourself?
struct: ill try wingardium + thrust
struct: one sec
struct: https://www.codingame.com/replay/572595085
struct: with 2 thrust 150
struct: is not much tbh
struct: half the map
struct: and you have to spend 100 wingardium
struct: magic*
reCurse: Still there MSmits?
MSmits: yeah
MSmits: whats up reCurse
reCurse: Just wondered something about mcts solver
MSmits: ok
reCurse: How to get out of the fact that when a draw is found it never explores anything else if for some reason all other moves are seen as bad by both sides
reCurse: I'm a bit puzzled rn
MSmits: there's several ways to deal with it
MSmits: I can tell you how i do it sometimes
MSmits: ok so the idea is you have 1 child node solved as draw and the others are probably solved as loss right?
MSmits: meaning they bring up the value of the parent node, because they keep losing?
MSmits: or is this not your problem?
reCurse: No they are barely explored because the initial value is below 0
reCurse: 0 = draw
reCurse: And it keeps selecting the solved draw because it's better than losing
MSmits: do you mean initial value from policy?
reCurse: Which is good in theory but then the exploration is lost
reCurse: No it could just be initial values from low exploration
MSmits: ohh, well first of all stop selecting the solved draw
MSmits: thats a waste
reCurse: Yeah that's the obvious part
reCurse: However
MSmits: allright, but you want to prevent bias yes?
reCurse: What if it *is* the best way
reCurse: Because of zugzwang situation for example
reCurse: Then it's better to force the draw and you want to reflect that and not all the other crap
PatrickMcGinnisII: 32nd with move and throw, not fancy ... wth, anyone trying?
MSmits: ok, so what you do is, you fix it on backpropagation
MSmits: one of those bad nodes will be selected
MSmits: and some bad result will be backpropagated
MSmits: what you do is, you dont let it get past the solved draw
MSmits: so you up it to 0 when you get there
MSmits: but only as long as the bad node has a value lower than 0
reCurse: But then you have the same problem up in the parents
reCurse: It keeps selecting the 0 node
reCurse: When it's not proven because other moves are not selected
reCurse: Or can't be proven anyway
Astrobytes: Good time to post your SolverPropagation(int result) ?
MSmits: nah, i dont have a good example for this, i do this in my meta mcts
NinjaDoggy: that's not an issue is it reCurse?
MSmits: for oware
NinjaDoggy: the parent parent of the draw node should keep selecting the 0 value if other nodes are worse
MSmits: yeah i dont see the problem of selecting draws when they are obviously better
MSmits: at least until they are solved
reCurse: Yeah but the problem is the other nodes may not actually be so bad if you'd select them more
Astrobytes: The key being that the rest are solved
MSmits: you just have to prevent the bias from loss siblings
MSmits: reCurse but isnt that an eval question, why would the NN think they are bad?
reCurse: The jump from eval to solved is so massive it completely messes up the selection
reCurse: Because NNs aren't perfect
MSmits: ohh ok, so the NN doesnt have an eval thats centered around 0, is this the problem?
reCurse: They can still have wrong intuition only corrected by further search
reCurse: No
reCurse: It thinks the position is really bad but it may turn out to be not so bad
reCurse: But with 10 visits or so it's hard to tell
reCurse: And then it finds the draw too early
reCurse: And zeroes in (hoho)
reCurse: When in fact there was an obscure checkmate
NinjaDoggy: ok so if I understand this correctly basically at some node
NinjaDoggy: all the child nodes are supposed to be close to 0 in value
NinjaDoggy: but the NN outputs negative
NinjaDoggy: so then when one of them is solved for draw
NinjaDoggy: it will keep selecting that one
reCurse: Yes
Astrobytes: that's how I read it yeah
MSmits: well as i said, stop that at least
reCurse: But with more forced visits on the siblings
reCurse: The initial negative value is actually turning out to be positive
reCurse: But it never gets to explore
reCurse: Or if you want a different perspective
NinjaDoggy: doesn't this issue go away with more training?
reCurse: Let's say you're ahead in material
reCurse: You feel good
reCurse: But oh no there's a forced tactic in 4 moves you didn't see and now you lose
reCurse: All your evals will still return massive positive until more search is done
reCurse: So same with the other way around
reCurse: But draws make it entirely stop looking into bad moves
MSmits: but that kinda make sense
reCurse: You can't expect a NN to never be wrong
MSmits: from the NN perspective anyway
reCurse: That's why you back it up with a search otherwise you wouldn't bother
MSmits: of course
NinjaDoggy: increase exploration constant then?
reCurse: But the jump is massive
MSmits: lowers depth and might not let him get past the depth 4 thing
reCurse: So now it finds that draw sequence because both sides don't feel good about their position for some reason
MSmits: I'm not sure this is a mcts solver issue though. I mean it would also happen with an unsolved node that has a "draw like" eval
reCurse: And it wastes the entire remainder of the search constantly selecting that path
reCurse: Sure but you can expect your own eval to be smooth
reCurse: The terminal can cause a massive break in the smoothness
MSmits: yes that's true
Astrobytes: is this backproping the solve too early? Before checking the sibling nodes?
reCurse: No it's not backproping the solve
reCurse: It's backproping the 0 value tho
reCurse: And that's messing up with the average score very quickly
Astrobytes: Ah ok
MSmits: oh you can backprop solves though
reCurse: Yeah I do that too
MSmits: even using some form of ab pruning
reCurse: But it never gets to solve anything else anyway because it keeps selecting the draw
MSmits: lemme make my ab pruning for draws picture again, who knows, maybe it;s worth it for nn
NinjaDoggy: don't think it will resolve the issue here
NinjaDoggy: I still think this shouldn't be an issue with improved NN weights
reCurse: Just imagine you're in a losing position
reCurse: But you find a perpetual check
reCurse: But these kind of situations don't happen enough for the NN to bother learning it
reCurse: Makes sense?
NinjaDoggy: ok nvm yea I see
reCurse: Now for a perpetual that behavior is actually desirable
reCurse: So not so good example
reCurse: But say you find a draw by repetition
reCurse: Then it may or may not be valid
NinjaDoggy: except it would keep selecting the perpetual
NinjaDoggy: and not look for other lines that COULD win
NinjaDoggy: at all
reCurse: That is definitely another issue yeah
MSmits: https://imgur.com/a/gRmm2No
MSmits: in case it helps
MSmits: most people dont know this about mcts solver
reCurse: The problem is the terminal value can be so different from the eval it's messing things up
Astrobytes: No it's a fine example tbh if you just conjecture other situations with it
reCurse: For wins and losses it's fine
reCurse: Draws however...
struct: is this similar to what you are getting reCurse
struct: "PUCT algorithm from AlphaZero needs an unpractical amount of simulations to revisit optimal ac- tions where the value evaluations of the first visits are mis- leading"
reCurse: That's a similar issue but not quite
MSmits: I think us non-NN users run into this problem a lot less. We get so many sims and much depth so it evens out a bit
struct: ah, ok i was just reading how a0 implemented it
struct: this was the paper
struct: https://arxiv.org/pdf/2012.11045v1.pdf
Astrobytes: Don't you counter that sometimes though MSmits? Sure I saw you talking about it before
reCurse: You could definitely have the same issue
reCurse: Without NN
reCurse: Say you're down material
reCurse: Your eval is negative
reCurse: You find a draw by repetition
reCurse: You zero in on that
reCurse: But there's actually a forced checkmate
reCurse: You'll never find it
struct: ah re curse they mention
struct: that they handle three fold diferent
struct: on solver
Astrobytes: well, not with just one search
MSmits: allright, you're correct. I think the reason we don't encounter it is that we mostly play games with no early-draws
reCurse: Chess is also very particular on that
MSmits: so draws are always last to solve
NinjaDoggy: yea I mean this is why Alpha Beta is in general so much stronger than MCTS for chess right
Astrobytes: this is why there are multiple search types and depths used at various stages
MSmits: those "fill-up the board" games solve draws very late (like uttt, yavalath connect 4 etc.)
struct: and no draws for repetition there
MSmits: right
struct: which is a completely diferent thing
Astrobytes: NinjaDoggy yeah
MSmits: Astrobytes what we usually talk about is the bias from not selecting a solved draw and instead selecting bad nodes, making the solved draw look bad too
MSmits: if you dont correct for it in backprop
Astrobytes: 960 alphabeta variations for every step in a chess engine :P
reCurse: Hmm
reCurse: I need to propagate some information up the tree the draw exists
reCurse: And stop selecting it
reCurse: But remember it enough that if nothing better is found at the end
reCurse: Then consider it
reCurse: I have trouble formulating the algo though
MSmits: challenge is to code that without being disgusted :P
Astrobytes: MSmits right yeah, The backprop is important. That's why I suggested your solver backprop code
Astrobytes: It accounts for this no?
MSmits: yeah i dont mind sharing that, but its a complete mess inside my C# oware meta mcts code
MSmits: extremely complex
reCurse: I'm kinda hoping fixing that issue will boost my elo
MSmits: and it backprops net seed score too
reCurse: Found multiple bad plays caused by that bug
MSmits: do you have some place with a leaderboard where this bot gets tested?
MSmits: like CG's
Astrobytes: The reChess Computer I presume :D
MSmits: well of course
MSmits: but it would be cool to beat other chess engines
NinjaDoggy: just download stockfish and beat it ;)
Astrobytes: He tests with available engines
reCurse: Yeah I pick engines off CCRL
MSmits: ahh ok
reCurse: When I start beating an engine by 60% I pick another one higher
struct: he could also test it in lichess I think
reCurse: Then the equivalent hardware goes out the window
MSmits: oh it doesn't run on their stuff
reCurse: No
MSmits: thats too bad
MSmits: well good if you want to keep your stuff private
reCurse: Then I can batch all I want with all my cores
reCurse: Ah I think I found a solution
reCurse: Set a flag when a draw exists with no better score
NinjaDoggy: wait does AlphaZero/LC0 do anything special in their MCTS?
reCurse: Reset the flag when a better score is backproped
reCurse: Set it back when it falls below
reCurse: etc
MSmits: oh yeah, you can still use the eval of the draw, instead o f0
Astrobytes: that's kinda like your one MSmits? 0 for loss, 1 for win, 2 for ongoing right?
Astrobytes: or whatever it is
reCurse: So it's kind of a draw negotiation
MSmits: well thats how i do the solver sure
reCurse: If the negotiation reaches the root then it's accepted
MSmits: i think recurse means a different kind of flag
Astrobytes: not altogether that different
Astrobytes: conceptually
MSmits: a flag that sees the draw as 0 or sees the draw as it's eval score even when it's solved
MSmits: unless i'm mistaken
MSmits: it's really hard to discuss these things properly
NinjaDoggy: from my interpretation i'm hearing
NinjaDoggy: have the parent node of the draw have the flag set to true
NinjaDoggy: if no other child node has positive eval
NinjaDoggy: and then set the flag to false when a child (other than the solved draw) has positive eval
MSmits: might work
NinjaDoggy: and then he'll probably do something to select the node less when the flag is true
NinjaDoggy: but in the end check for existing flags to go for draw if no better lines are found
Astrobytes: Very interesting issue either wayy
Astrobytes: *way
MSmits: I've been stuck for hours on the ab pruning + TT problem myself. It's already a hard thing to properly do, but with D&B you have control switching which basically gives you an extra turn or gives your turn away. Headache-inducing. It works again now, which is fine.
MSmits: however
MSmits: I have a much shorter formula, more elegant, gives the same result
MSmits: and i dont know why :(
Astrobytes: what's your TT replacement policy?
MSmits: oh, i keep upper and lower limits
MSmits: when they are the same, it's an exact value
NinjaDoggy: sry what's TT?
MSmits: transposition table
Astrobytes: Depth-wise?
MSmits: It's a solver. I just store all
MSmits: it's not iterative minimax
MSmits: i should probably keep depth also and then not overwrite higher depth result
Astrobytes: Yes
MSmits: but my problem was not that
MSmits: it was just the conceptual part of it
Astrobytes: Replace if higher or equal, use if equal depth
NinjaDoggy: wait for dots and boxes is it not good to generate all moves you can chain?
NinjaDoggy: like make chaining just 1 move?
NinjaDoggy: does that explode too much?
Astrobytes: Or you'll really fk things up if you're not doing things in a certain way
MSmits: in my solver, when i play a chain, i play the whole thing at once
MSmits: say a chain is 5 boxes
MSmits: it gets played at once and either you take all 5 boxes
MSmits: or you take 3 and give 2 to opponent
MSmits: so that seems like a split of 2
MSmits: but i can do it in 1 negamax
MSmits: that's the elegant formula i discovered which i dont know why it works :P
Marchete: how in 1 negamax?
MSmits: sec
MSmits: ok this is my negamax function
MSmits: template<bool depth0> int Negamax(int a, int b, int bonus, int currentScore, uint64_t map)
MSmits: a and b are alpha and beta obviously
MSmits: you can simulate the two things
MSmits: by doing:
MSmits: int controlScore = -Negamax<false>(currentScore - b, currentScore - a, 0, bonus, map); int captureScore = Negamax<false>(-(currentScore - a). -(currentScore - b), 0, bonus, map); best = currentScore + max(controlScore, captureScore);
MSmits: so a negative negamax for giving away your turn and a positive negamax for keeping control
MSmits: take all boxes, or all minus 2
MSmits: (bonus is the doubledealing loss btw)
Marchete: for me these are two different moves
MSmits: well they are, in a sense
Marchete: with turn == all moves until not scoring
Marchete: and If I end in "free moves" I auto give away to the enemy
Astrobytes: both valid approaches I guess
MSmits: i play the whole chain and give the opponent the choice what to do with the last 2 boxes
Marchete: your score or score -2
MSmits: but the chain is already gone
MSmits: so the map is the same either way
MSmits: only the score is different and who's turn it is
Marchete: in my case the latter is myscore += score-2; enemyscore+=2
MSmits: yes, thats it
Marchete: because they are *freeeee*
MSmits: but anyways, 2 possible moves right?
MSmits: when a chain is played
MSmits: 2 ways to respond
Marchete: yes, but not 1
Marchete: on a simple chain, yes
MSmits: so, now i did this:
MSmits: int specialB = b - currentScore + bonus; int score = Negamax<false>(-specialB, specialB, 0, bonus, map); int best = currentScore + abs(score);
MSmits: so it's still two negamax
MSmits: but i only calculate it once
MSmits: and then just have a + or - sign
MSmits: (i abs)
Marchete: too complex for me :)
Marchete: I mean
MSmits: yes for me too, thats my problem
MSmits: but it works
Marchete: I never thought that way
MSmits: tested on 100 million boards
MSmits: it's also not faster
MSmits: because the other way just uses TT
Astrobytes: int score = Negamax<false>(-specialB, specialB, 0, bonus, map); are you missing some '-' or did I miss something
MSmits: int best = currentScore + abs(score);
MSmits: minus sign is irrelevant
MSmits: because i abs
Astrobytes: right
Astrobytes: I missed that part, my bad
MSmits: mind you, i dont know why it works, but it has something to with the symmetry of lookign from both players positions at the map
MSmits: impartial game it's called
MSmits: i shifted the score to make it symmetric around 0
MSmits: or something..
missjane: omg I'm so confused I don't know what to do
MSmits: it annoys me that it's a pretty formula and i dont get it. Would be ok if it was someone else's work, but i came up with it
MSmits: anyway, this is my endgame solver, then i extended that solver into the pre-endgame and with pre-emptive sacrifices i also play chains
MSmits: which means i can use the same formula again..
Astrobytes: I think it's weird, but if it works, go for it
MSmits: yeah I guess so... i can also use the other one, it's not slower, just uglier
MSmits: and i understand it
Astrobytes: 'other one'?
MSmits: the one with 2 negamax calls and a max
MSmits: instead of 1 negamax call and a abs
Astrobytes: ah right
MSmits: the thing is, after the 1st negamax it stores in TT
MSmits: so the 2nd negamax just looks it up
MSmits: map is identical after all
Astrobytes: I never use abs in negamax
Marchete: didn't you have preemptive sacrifices, MSmits?
MSmits: well i only had an endgame solver, there are no preemptive sacrifices in the endgame as all chains are finished
MSmits: but i extended it to before the endgame and at first had only normal sacrifices (1 and 2 boxes)
MSmits: but pre-emptive are super important apparently
Marchete: I don't know
Astrobytes: anyways, I'm away to bed, gn people and take care :)
MSmits: well it cuts chains
MSmits: gn Astrobytes
MSmits: if a very long chain is about to be formed and you can sacrifice a 3 chain to prevent that, your netscore improves a lot
MSmits: the thing to remember is that you can never use it to win unless you're already ahead
MSmits: gn Astrobytes
MSmits: you might be ahead when facing a nim player who is sacrificing a lot of boxes to keep control
MSmits: you can screw his chains this way and he wont have enough points in the endgame
PatrickMcGinnisII: gn Astrobytes drream travel
MSmits: your bot does it Marchete
MSmits: not always correctly, but it does do it
MSmits: and wins with it too
Marchete: it backfires a lot
MSmits: yes
MSmits: thats why it's good to have it in a solver, if the solver is correct it cant backfire
Marchete: it's hard to count/guess early
MSmits: yes
MSmits: it makes my solver a lot slower though, looking for ways to prune it
MSmits: one way of pruning it is to use the alpha
MSmits: alpha is like the minimum score you can get right?
MSmits: so if your alpha >= 0, pre-emptive sacrifice should be useless
MSmits: or maybe >= -1 even
MSmits: or >= -chainlength +2 or something like that
MSmits: ab pruning hurts my head
MSmits: this is why i always test everything vs a non-pruned output
MSmits: to make sure its faster, but not wrong
Marchete: I prefer MCTS
Marchete: I see it more "clean"
MSmits: played out till endgame you mean?
MSmits: intermediate eval is complicated here
NinjaDoggy: I like MCTS too but one thing REALLY bothers me
NinjaDoggy: which is that the value of a node is the sum of all it's children...
MSmits: but it prefers the good child
MSmits: so it's a weighted sum
MSmits: and the more visits, the more weighted it is
NinjaDoggy: but it can be so hurtful like in UTTT
MSmits: play long enough and the other children will be irrelevant
MSmits: yes, especially on free moves
NinjaDoggy: moves that give your opponent freedom are seen as good
NinjaDoggy: because of the sum thing
MSmits: i see this in meta mcts, they completely bias the game
MSmits: you need a lot of visits before they are reliably searched
MSmits: however, visiting them at all is usually a bad idea
MSmits: because they are not good moves
MSmits: it's a conundrum
MSmits: it happens also in yavalath, on a forced move
MSmits: when you're making forced move, you're automatically playing the correct move. But then it's the opponents turn and he has the choice of tons of bad moves
MSmits: (it's like a uttt free move, only all the time)
NinjaDoggy: wait meta-mcts except you replace random rollouts with another mcts?
MSmits: yes, meaning it takes a lot more time to get a good view of the value of a node
MSmits: so in my meta mcts, when i get near those free nodes, i see the terrible bias happen live
MSmits: they get selected a lot
MSmits: because the opponent doesnt know what to do with them. so much choice, so many crap moves
NinjaDoggy: so the results are heavily skewed by who has more complexity
MSmits: in my uttt bot on the leaderboard i bias free moves with 0.2 on value
MSmits: negatively
MSmits: so they are less likely to be selected
MSmits: helps a bit
MSmits: yes, more complexity but it gets worse when only a small fraction of moves are good
MSmits: say you get 50 moves to choose from
MSmits: and only 1 wins you a miniboard and nearly wins you the game
MSmits: those 49 are really going to bring you down for a long time
MSmits: until they get enough visits that they will no longer get selected anymore
MSmits: in combination with their low value ofc
MSmits: so the player who played the free moves will, for a long time, think this is a good idea
MSmits: not a problem for the root node, because there will be enough visits to fix the problem, but it will affect exploration deeper in the tree
NinjaDoggy: are there any formulas that very heavily weigh the best node?
MSmits: I think there are many mcts enhancements like that
MSmits: to UCT mostly
MSmits: but i think you have to look at the game and try different things
MSmits: many things should help and then turns out they dont help enough to offset performance loss
MSmits: this is particularly frustrating in uttt. It's really a good place to learn mcts, but not a lot works in uttt beyond the basic mcts
MSmits: the top consists mostly of high performance + intelligent pruning in expansion
MSmits: (and NN's )
Marchete: error #407....
MSmits: did i break the chat
Marchete: you did a buffer overflow
MSmits: haha
MSmits: you know i type with 2 fingers
MSmits: doesn;t stop me
ja_fica: where do you use AVX in UTTT?
ja_fica: MSmits
Gameonn: Hello friends