Chat:World/2021-01-24
kalier: Every time I click this, it always shows that I'm a robot
jacek: clash addict
kalier: eh....I didn't play it in the past
struct: after some games you start getting captchas
struct: It resets after a while
struct: only thing i dislike atm is the playerUI
struct: https://i.imgur.com/dwhMSiI.png
jacek: nice
jacek: but will they be queens?
struct: I can change I guess
struct: its just a png atm
jacek: looks like othello disc
boulboul: Hello word ! How are you doing
Redlin_Kirill: hahaha
geppoz: fun fact: you can calc the n-th Fibonacci number with just an exp operation, a mul and a sum
geppoz: wonders of math
eulerscheZahl: yeah, hacker.org taught me that
eulerscheZahl: somehow related to the golden ratio
geppoz: y, you can even reduce it to a power of 2
geppoz: Math.round(Math.pow(2,n*a-b))
geppoz: with a,b double constants
IceFire708: join private clash https://www.codingame.com/clashofcode/clash/15590220afd0d54c3b5541d02da42ab90721e11
eulerscheZahl: join public multiplayer https://www.codingame.com/multiplayer/bot-programming/a-code-of-ice-and-fire
IceFire708: lol
notofyourinterest: is alpaca a bot?
AntiSquid: JOIN NOW! FREE GAME! IceFire708 https://www.codingame.com/multiplayer/bot-programming/botters-of-the-galaxy
TBali: join strings
TBali: (no stings attached)
jacek: octavia theme?
Q12: Why I failed to trap the ghost (id 11)? I was in the right dis from it and the ghost has 0 stamina. https://www.codingame.com/replay/523972452
Q12: In frame 51
eulerscheZahl: because the opponent tries the same, so it's a draw
Maxim251: Botters of the Galaxy looks nice but i think it is to complicated for me. To much data to colect and i scared that I will over complicated thinks.
Q12: Thanks eulerscheZahl
Q12: But I don't see it written in the statement, maybe they should add it
eulerscheZahl: i didn't read the statement but i know the official version of the game
eulerscheZahl: i have reasons to skip sopra (as in: not interested in playing that slaughtered version of the game)
jacek: slaughtered?
eulerscheZahl: butchered
MSmits: like a :pig2:
MSmits: :sad:
MSmits: :cry:
struct: Game is mostly ready I think
struct: Writing statement atm, and need to make a boss that beats random
trictrac: hello struct, which game ?
struct: trictrac amazons
trictrac: ok thanks, I will have a look on this game
ErrorRazor: I didn't realize his name was trictrac so I thought the name was called "trictrac amazons" and I googled it, found a French backgammon variation
ErrorRazor: the game* was called
eulerscheZahl: https://www.duckipedia.de/Tick,_Trick_und_Track
Maxim251: why assert is not working? how i can fix it?
struct: What do you mean? What error do you get?
Maxim251: assert is not defined
struct: include <assert.h>
Maxim251: I did include header file
struct: I just tried it and it works fine
Maxim251: I fix it, it turns out that assert.h is depracated and now need to be used cassert
struct: Did you not misstype anything?
struct: ah ok
jrke: struct did you made contribution for amazons yet?
struct: not yet
Maxim251: Inclusion of deprecated C++ header 'assert.h'; consider using 'cassert' instead [modernize-deprecated-headers]
struct: Im finishing writing the statement
eulerscheZahl: writing the statement that's when the game is done and you want to upload it but then remember you forgot something essential
**eulerscheZahl hates writing statements
struct: This game is very simple, I wont spend time on images
TBali: Just submitted a solution to easy solo puzzle "The Descent" (bash section). Not long, just 700+ lines :-) Thanks for Westicles for the "inspiration" Still have some issues with it any help/hint welcome.
Kitkat260: good morning
eulerscheZahl: you see me confused TBali
TBali: why?
eulerscheZahl: because of the 700 lines
TBali: check it out :-)
eulerscheZahl: then you have a look at mine
eulerscheZahl: ah, you include all languages there
TBali: let me see.... Okay, but I took the approach to the extreme
TBali: missing command lines for 2 langs.
VizGhar: o.O
TBali: 8 langs have error, despite the code works if submitted directly
TBali: don't know why
eulerscheZahl: you didn't really take it to the extreme. you have different solutions for each language
TBali: can be used as a systax cheat sheet for an unknown language
eulerscheZahl: while you should only have 1 solution in 1 language and call that from the others
TBali: I don't know the system() syntax for all 27 languages
geppoz: in shortest mode CoC, it is better shorter solution with 75% or longer with 100% ?
geppoz: i suppose 100% always is considerated better
struct: 100%
geppoz: ok
geppoz: seems fair
struct: stop it
MSmits: beamsearch question
MSmits: is it possible to get a worse result with a greater beamwidth?
MSmits: keeping everything else the same
1400179: Whynot
MSmits: not sure, it seems counterintuitive somehow, it's a deterministic search and you're improving something
MSmits: but i think it could be, it's just weird
1400179: You could be bumping out the good results with fleetingly better ones coming from more expansions
MSmits: yeah thats it i think
MSmits: I was just worried i bugged something
1400179: You prune violently you get violent results
MSmits: makes sense
MSmits: maybe time to put some hashing in there, get rid of duplicates
kovi: that is definitely better than widening
MSmits: well it depends a lot on how common duplicates are
MSmits: not entirey sure yet
MSmits: entirely
MSmits: i guess with code of the ring it is at least the case that every game state can be mirrored horizontally, so there's a factor of 2 right there
MSmits: you can also rotate them 30 times, but i am not sure if rotation states occur much
MSmits: that's just the symmetry part, then there's also arriving at the same state via a different order of actions. No idea how common that is
MSmits: and i just shrunk my state-size and increased beamwidth even further. Maybe that helps :P
ErrorRazor: Chat keeps disconnecting :|
ErrorRazor: So uhh how many searches would a decent MCTS algo run in 100ms, in UTTT?
struct: you need around 25k to reach legend
struct: with vanilla mcts
struct: 25k rollouts
MSmits: if you're new to this sort of thing, it's not easy to reach with a language slower than c+=
MSmits: c++
MSmits: with c++ it's quite easy
MSmits: as 100k is also possible
MSmits: with languages like java and C# and the like, you probably wont be able to do better than 30k or so
MSmits: and that's if you do it perfectly
ErrorRazor: I'm using c++ but clearly not doing it well, I get a few hundreds
jacek: do you have optimisation pragmas?
jacek: #pragma GCC optimize "Ofast,omit-frame-pointer,inline,unroll-loops"
- pragma GCC option("arch=native", "tune=native", "no-zero-upper")
- pragma GCC target("rdrnd", "popcnt", "avx", "bmi2")
ErrorRazor: I just started learning tbh
jacek: write those at top
MSmits: should help, but will not solve the problem fully
jacek: secondly, do you use bitboards
MSmits: probably a factor of 3 at most
ErrorRazor: No, don't know what those are either
jacek: no wonder its slow :v
MSmits: he might also be doing mcts wrong. I noticed many players at first, create nodes all the way to the end game instead of rolling out randomly and only making 1 leaf
jacek: or they do flat monte carlo thinkig its mcts
MSmits: yeah but that should at least be fasrt
MSmits: fast
ErrorRazor: That's possible, I don't really know what I'm doing :P
MSmits: thats fine, we didnt either at first
MSmits: well except jacek, he was born like this
jrke: so amazons in contribution
MSmits: cool
jacek: oh my
MSmits: remember the other day jacek when you told us your first word was: mmmam... mi.... minimax
jacek: oO
jacek: are you high MSmits
MSmits: how would I know?
struct: If I have to increase turn time I will do it
struct: I have no idea
MSmits: what is it now?
struct: 100
jacek: years?
struct: should be enough for python
MSmits: well with so much branching, i would not be surprised to see some reasonable python heuristic bots :)
eulerscheZahl: a challenge for field 3
MSmits: is there any way to turn off the language assist?
MSmits: it annoys me
MSmits: there should be a profile setting for it
MSmits: account setting i mean, whatever it's called
1400179: I don't know why people hate it so much, I find it quite useful
MSmits: well I guess when you're actually using the IDE it's useful, but if you're working locally and paste it in and it tells you: "Fix your :poop: " it's not :)
1400179: Locally and paste well there's your problem, you paste
MSmits: I paste
MSmits: I don't have a fancy program to send my code =/
Counterbalance: I fix my :poop: locally and then paste
MSmits: Counterbalance!
MSmits: hi
Counterbalance: heyy
MSmits: everything good?
Counterbalance: Yup! Not much time for CG these days unfortunately.. and you?
MSmits: fine, teaching from home ofc. Plenty of time for CG
Counterbalance: what are you working on now?
jrke: for me "learning from home ofc. Plenty of time for CG" ;)
MSmits: i have to go to school every thursday because somehow the exam classes have to be at school
MSmits: code of the rings
Counterbalance: ah of course you beat me at that too ;)
MSmits: i was actually 54th doing every validator by hand :P
MSmits: only just now working on a search
MSmits: dunno why i didnt start with that right away, would have been much easier
Counterbalance: maybe, but doing it by hand first must have given you some good ideas
MSmits: yeah i guess it does give you a feeling for what moves could be good and that helps with pruning
jrke: looks all bugs fixed in D&B endgame solver but timeout bug is .....
MSmits: timeout bug?
jrke: takes 100ms if total no. of chains > 12
jrke: more than 100ms*
MSmits: ah thats not really a bug though
MSmits: i thought you meant something server side
MSmits: jrke do you have a function that calculates the board value when the board is simple?
MSmits: like, only isolated chains and loops?
MSmits: you can do this without search
MSmits: it's just a calculation
MSmits: so i mean with 0 joints remaining
MSmits: I got this from the papers on simple loony endgames
MSmits: it's useful as part of a greater search, because when you get deeper, you eventually will hit a simple state. Then you finish it off without branching, using a simple calculation
jrke: hmm
jrke: MS is choosing smallest loop and pruning bigger loops always is good or not?
struct: MSmits do you know why some people use _m128 to store bitboards instead of _int128?
struct: Is it more efficient?
struct: __m128*
1400179: __int128 is not standard at all
struct: I see, is that the main reason?
1400179: It doesn't map to any register either so it's pointless
soyreda: anyone want to team up for the hash code competition by google ?
ItZAtomic: Doing this has made me realize how bad I am at math.
MSmits: _int128 isnt even supported in VS
MSmits: if i need 128 bit i will just create a struct of two 64 bit or something
jacek: doing bitboards for amazons?
jacek: my nn got random loss and couldnt converge. stupid c++. most of the time it initialized with zeroes, but sometimes some values were random memory trash
struct: what game jacek?
jacek: just my own 'framework'. decided to rewrite it
jacek: easy fix
MSmits: array[X] = { 0} ?
jacek: momentumHidden = new float[hidden * SQ * units]; to momentumHidden = new float[hidden * SQ * units]();
MSmits: your nn is pretty secretive
MSmits: 4x hidden on 1 line
MSmits: or 2
jrke: a stupid ques - is NN a kinda hardcoding?
MSmits: no
jacek: well the MLP has the hidden later
jacek: layer
MSmits: but it does use codesize as a resource jrke
jacek: maybe more with the friendship extension
MSmits: jrke, if you think of your typical minimax eval, consisting of a few features that form a linear combination that leads to a score
MSmits: a nn will have features too, but its hard to say what they are and instead of maybe 5-10 params, you have thousands
MSmits: and the score takes much longer to compute
jrke: ok
MSmits: they train the nn offline to make sure it computes sensible eval scores
MSmits: given a gamestate
kovi: and you may run it on mcts not minimax
MSmits: you can also run it on minimax
kovi: yeah, i meant alpha0 style
MSmits: it's just not done, so i guess it must be less effective
MSmits: ahh ok
jrke: how to store it on CG in 10k chars?bytes?
MSmits: 100k chars
MSmits: they use floats, possibly 16 bit ones i think
jrke: oh yes my bad typos
MSmits: or maybe some conversion
MSmits: i dunno
jacek: for bt i have about 50k weights. each weight is stored as 1 unicode character. its a less resoluted 'float'
Maxim251: how I can activate set<> ? I have error No template named 'set'; did you mean 'get'?
/usr/lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/utility:225:5: note: 'get' declared here
struct: include <set>
jrke: #include <set>
jacek: c++ errors, so descriptive
Maxim251: thaks, why set<> is not in std ?
jacek: it is. you need to include it
Maxim251: Ow, Ok, thank YOU FOR HELP
DomiKo: if you are lazy you can use <bits/stdc++.h>
Maxim251: Yes, I see it long time ago that shortcut, but I forget that I could use it
samuel_wondimu: hello everyone i am new here
jacek: hello, new here. we are everyone
synchoz: new is goood
iRewiewer: topkek
struct: Anyone else getting both headers?
struct: https://i.imgur.com/yz2ERyT.png
MrPapaya: yes
Astrobytes: Looking good there reCurse
Astrobytes: struct: I get the old one on some pages
1400179: Don't think so
Astrobytes: Where were you earlier? I only opened the lb when you were 4th or 5th
1400179: Never ceases to amaze me how bad it is
Astrobytes: Pretty sure you'll hit the jackpot soon enough.
MSmits: hey, I'm still beating you, without counterbook
1400179: RNGkings
1400179: No
MSmits: surprised me i still see wins i sall
1400179: o59 MSmits 322-111-31 (72.74%) 464 games
1400179: But of course need to hit the lottery
MSmits: yeah i didnt mean 50%+
MSmits: i just mean i still see wins
1400179: That's the best I can do atm
MSmits: though this game i won last:
1400179: And I'm out of motivation
MSmits: https://www.codingame.com/share-replay/524118680
MSmits: i went off book on ply 33 :P
1400179: Alright time to work that gambling addiction
jacek: oh my
1400179: That being said
1400179: 1) Othello is a terrible game
1400179: 2) Othello is a terrible game for NN
1400179: 3) Facts. Obviously
MSmits: it's a terrible game for botting maybe, people still enjoy it
Astrobytes: Hehehe
MSmits: is every version you try completely retrained reCurse?
1400179: Define try
MSmits: you test with cg bench or whatnot
1400179: So yes and no
MSmits: i meant, do you sometimes start from intermediate versions that arent fully trained
1400179: Sometimes
MSmits: like a halfway point
MSmits: saves time i guess
1400179: Depends on my confidence and which way the headless chicken fell
1400179: My deep learning training process featured here: https://www.youtube.com/watch?v=wz-PtEJEaqY
Astrobytes: hahaha
Astrobytes: I was sure I knew the headless chicken thing from somewhere
MSmits: lol
MSmits: your bot must be pretty general if you're not pushing anyone else above me
MSmits: maybe jacek
1400179: db dr is massively underrated
MSmits: not by me, i knew
Astrobytes: Not underrated at all.
1400179: So it's going to fuck my submits for a long time I think
1400179: Underrated, as in literally
MSmits: just push him up to where he needs to be
1400179: Yeah just let me submit for a few hours
Astrobytes: If he was to resubmit it might change things
jacek: push me up, pushy pushy
1400179: 5% chance it ends up right
1400179: Or not
MSmits: gj
1400179: Jinxing station
Astrobytes: Ain't over til the fat lady sings
Astrobytes: Well, that *is* looking rather solid I must say.
struct: this is the same bot?
1400179: I did add some randomness for mr smits
1400179: Yes
struct: 90 games sample :D
1400179: I batched over 400 games against the top 6
1400179: It works :p
jacek: such confidence
MSmits: 400 each?
MSmits: if so, then that's good
1400179: Yeah 400 each
1400179: 464 whatever
MSmits: I'm a little surprised the first line of play I found goes 33 plies into my book though
MSmits: I was somehow expecting it to play differently
1400179: There are a lot of moves with only one good answer
MSmits: yeah that's my experience. 1 or 2, rarely 3
1400179: So if you enter a line where it's more or less forced
1400179: I had a version earlier on that had 100% vs you, guess it hit the right line all the time
MSmits: that's likely
1400179: Literally gambling
1400179: Oh well, yay
kovi: another one bytes the ... recurse
kovi: well done!
1400179: Thanks
Swagboy: Hey, what are you guys/girls playing on?
1400179: Othello. Was.
kovi: i try to implement my first mcts
MSmits: wow, never done it before?
MSmits: thats cool kovi, let me know if you need anything
kovi: and i have trouble with some parts
MSmits: ask away
kovi: for opponent turn, uct should work on opponent win rate or not?
1400179: It's like minimax
MSmits: yeah opponent winrate
1400179: Either you keep the absolute result and do max/min nodes, or you negate according to player to always maximize
MSmits: so his wins/visits, assuming you're just backpropagating W/L/D
1400179: If you minimize though don't forget to negate the exploration
1400179: It's an upper bound
jacek: each level should be from current player's persective
MSmits: thats how it is traditionally done, but what reCurse says works fine
kovi: thx. looked into many guides and implementations and i think many mixed that up i think
MSmits: negamax vs minimax
MSmits: sign errors are the most annoying mcts errors
jacek: wait till you read about mcts solver
1400179: There's so much crap on the internet that most tutorials are actually getting something massively wrong
**jacek runz
1400179: If it's on a medium blog post chances are it's trash
MSmits: well mostly they work, they're just very inefficient
MSmits: the stuff i found that is
jacek: like those on NN from 'scratch'. here you have math that we dont know what it does
1400179: But they can be massively misleading if you're looking to do something good
MSmits: true
jacek: and here's python 2 lines that will download mnist example and make full neural network to train
1400179: So I usually end up doing the ensemble method
1400179: Grab multiple articles on the same subject and average out the errors
1400179: Works well most of the time
Astrobytes: It's a good technique in most subjects
1400179: It is
kovi: my problem is that my depth2 minimax is much better on bt so i still think my mcts is bugged
1400179: Scoring scaling can be a big issue with mcts
1400179: Unless you're doing the pure rollouts
kovi: (well depth2 + wise eval)
kovi: i did pure rollouts
1400179: Then it's up to sheer luck whether it's actually going to do anything
kovi: without smart eval
1400179: Or uttt
1400179: A game where vanilla mcts works is kind of a black swan event
kovi: i see. i was going to ask for some
1400179: uttt
kovi: thx
MSmits: kovi, what often works better for me is backpropagating an eval
MSmits: not for BT though
MSmits: but for oware it was very strong, also onitama
1400179: mcts evals are very tricky
MSmits: yea
1400179: Not like minimax at all
MSmits: what is the difference you think?
MSmits: I mean i just fit params and see where it takes me
jacek: if you learn mcts, do pure mcts first. uttt is good for that
1400179: Serious question?
MSmits: no i know the difference between the algorithms
MSmits: i just mean, how does this work out in eval params, combining features etc.
MSmits: i tried a mcts eval in minimax sometimes
MSmits: was definitely bad
1400179: The eval is used for (way too) many things in mcts
MSmits: you mean guiding and deciding what the best move is, i dont see much else
1400179: It affects everything from exploration, backpropagation, etc
kovi: or nonrandom rollout
1400179: So its effects are quite random
1400179: You can only truly reason about it in MAB perspective I think
1400179: Which I don't think is the case for zero sum games
MSmits: mab?
1400179: multi armed bandit
MSmits: ohh ok
1400179: Unless you let infinities in I guess
1400179: But that makes me out
kovi: one last question about uct...so using current player winrate...and max...but what about the exploration param
MSmits: for me it often has best value 1.0
MSmits: that's if you count a loss as -1 and a win as +1
1400179: It is "determined empirically"
MSmits: yeah
1400179: Love those scientific words
jacek: its usually less than sqrt(2)
kovi: sorry...i meant the formula not the constant
1400179: What about it
kovi: the whole need to be maxed (for current/original player)
1400179: You can look at it as a measure of uncertainty
1400179: The more visits you have on a node, the more certain you are
1400179: So it maximizes the upper bound of average and uncertainty to balance exploration vs exploitation
MSmits: you iterate over all moves and you select the move that has the highest sum of the exploration term + the exploitation term
kovi: ok, for my use but than what someone wrote (here in chat) to use minimum for enemy is incorrect
MSmits: a higher exploration parameter will make the exploration term more powerful and you end up with lower depth in your search
1400179: That's why I also said to negate the exploration term if you do minimize
kovi: ok, understood now
MSmits: kovi generally most players use maximum for both the player and the opponent. You alternate scores in backpropagation usually
kovi: i will stick to max
MSmits: if you do it the way reCurse explained you will not alternate in backpropagation
1400179: There are pros and cons
MSmits: but instead negate in selection
kovi: yeah, either alternate backprop or alternate use
kovi: thx
1400179: You can mess up signs in either way
MSmits: and if you're anything like me, you will mess it up a lot :P
MSmits: its worse when you add a solver, because you can have more kinds of sign errors then
1400179: In other news, adding more code creates more bugs
kovi: my current one seems proper...just weak for bt
1400179: I think random rollouts are a poorer fit than average for bt
MSmits: yeah.. the risk is that you will copy your mcts to another game that is slightly different and have multiple erros because of it, that causes a lot of issues with me
MSmits: random rollouts are also weak in oware
MSmits: full ones anyway
kovi: another q: are you reusing the tree on subsequent turns?
1400179: Preferable
kovi: yeah, i dont see anything against it other than memory (too bad the long first turn probably gives useless nodes)
kovi: (long timeout on first turn)
1400179: 640MB ought to be enough for anyone
MSmits: kovi i reuse the tree sometimes, but if you use heuristics to prune moves and your opponent makes a different one, you lose it anyway
MSmits: in uttt i lose my tree a lot because i make assumptions
kovi: makes sense
kovi: what amount of rollouts are reasonable...for bt 50ms? (i will probably come back with the same q for uttt later)
reCurse: No idea, don't think anyone did it
MSmits: dont know kovi, i dont do random rollouts in bt, i just eval and backpropagate
kovi: i c
kovi: thx a lot
reCurse: It's also a terrible metric for what it's worth
1400179: But some memes never die
MSmits: it's better than nothing, in uttt it's good as long as players keep it simple and do nothing but random rollouts
MSmits: if you start making the rollouts heavy, it starts to be useless
struct: on some games is needed though
reCurse: Isn't bt 100ms anyway
kovi: and how many rollouts per 50ms there?
MSmits: in uttt it's 100 ms i think, if i remove all heavy stuff i can get up to 130k
MSmits: in turn 2
kovi: wow, bt is 100ms as well
MSmits: currently i get more like 90k
MSmits: because of heavy pruned expansion and such
MSmits: and rollout too
struct: rollout with eval is to stop early right?
MSmits: yeah
MSmits: you can also stop at depth 0, so no random at all
reCurse: 'stop early' makes no sense
MSmits: that only works if your eval is good
kovi: pure eval on state
reCurse: And the :fire: is started
kovi: like with...nnn
struct: By stop early I meant stop before game reaches the end
MSmits: it makes sense if your eval is bad reCurse. I kept refitting this depth parameter in oware (how deep i rolled out) and as my eval got better, the ideal depth went to 0
MSmits: thats why its 0 for you as well reCurse, because NN eval is awesome
MSmits: it was about 4 or 5 at first
MSmits: so 4-5 random moves, then eval
MSmits: struct i know
kovi: interesting
DomiKo: kovi with full random like 10K rollouts in bt
kovi: but if you dont do random rollout
kovi: isnt minimaxed eval is better?
DomiKo: Breakthrough
struct: breakthrough
kovi: thx domiko
MSmits: kovi not necessarily, the advantage of doing mcts is that you get deeper on some branches
kovi: true
reCurse: But that wasn't my point
reCurse: I still think it makes no sense
reCurse: You either do eval or rollout
reCurse: Mixing both? Why
Angecide: so you can get more rollouts in 100ms
reCurse: Then just use eval at leaf
MSmits: because when you random you get a better sampling. The "badness" of the eval averages out then
MSmits: hopefully
reCurse: But the same can be said for mcts
reCurse: So it's already covered
MSmits: yes, i think this topic is too complicated for casual conversation though. All I noticed is that with poorly fitted parameters, it helped to add a few random moves.... dont know how to prove it or put it in to words properly
reCurse: hocus pocus :wand:
MSmits: yeah maybe so :)
MSmits: but if it helps, i assume for every game now that i dont need the random moves
MSmits: at the risk of being wrong
MSmits: never tried random in bt
MSmits: nor onitama
MSmits: it just makes coding the searches less work. Coding random rollout efficiently is tricky
MSmits: even tried a 0 depth uttt rollout + eval. Wasnt even that bad
MSmits: top 20
MSmits: you probably like that reCurse, a reasonable uttt bot with no random :)
Maxim251: what header file is for c++ contains?
struct: string
struct: you want to see if string contains another string right?
struct: or something else?
struct: use str.find(anotherString)
Maxim251: i remember that i use contains(inout1, input2) but i dont remember what was header for that
Maxim251: I think I need make my one function "contains" :/
1400179: I wish I was kidding but you need to wait for C++23 for that
struct: doesnt find do the job? Maxim251
Maxim251: I think Yes, Probably long time ago, probably I was using some private library what was containing compare... I was thinking that this will be in std :| Yeah well, Is not hard, to do for loop and if statment. :)
MSmits: you're not using c++ in a clash are you?
MSmits: ah ok good
MSmits: btw ... automatonNN you dog! https://imgur.com/a/uiMLcwy
AutomatonNN: why?
PatrickMcGinnisII: woof AutomatonNN
AutomatonNN: hey guys
struct: I blame pixi MSmits
MSmits: no worries, i just think it is funny
pluto-de: who's number 1 on this site (or how can i check the leaderboard)
MSmits: activites
MSmits: compete
MSmits: it kind of depends what you mean by nr 1 though. The overall nr 1 is part activity part achievement/skill. The best players are not necessarily nr 1.
MSmits: the nr 1 is quite good though
MSmits: there are many leaderboards and you can make up your own mind of what you find important
PatrickMcGinnisII: hmm, tonight no one is side channel hacking my GPU ... well that's good
struct: what do you mean patrick?
PatrickMcGinnisII: last time I was on cg, my gpu had an openGL hack thru browser
PatrickMcGinnisII: drove me crazy for hours trying to track it down
Orip: is it possible to do recursive function here?
Astrobytes: Call your function recursively.
BrokenMaster_8213: ^dont thats that literally, lol
Orip: how do i do it for the full thing or i must enter it into a func
struct: int func(int n) {
func(n);
}
struct: infinite recursion
Astrobytes: 1. We have no idea what you're working on. 2. We have no idea why you need a recursive function. 3. What 'full thing'?
Orip: but thanks i understand it's impossible
Astrobytes: No it's not.
Orip: needed to make a def and then do it
Orip: RecursionError: maximum recursion depth exceeded in comparison
Astrobytes: Yes, you need to make a function outside of the main program loop
Orip: def naive_ackermann(m,n): http://chat.codingame.com/pastebin/55470721-f4b6-442c-8dff-be7b15da4d33
BrokenMaster_8213: you are getting stuck inside your functions, you will have to write a condition to break it
Orip: RecursionError: maximum recursion depth exceeded in comparison
Astrobytes: meh, the auto pastebin isn't working, use pastebin.com or something to post your code if you like
PatrickMcGinnisII: PEBCAK
Astrobytes: Sounds like you're infinitely recursing
Orip: https://pastebin.com/Yey60Hdk
struct: recursion inside recursion
struct: is too much for my brain too handle at this hour
Astrobytes: Yeah what's with that
Astrobytes: return naive_ackermann(m - 1, naive_ackermann(m, n - 1)) - this could be an issue
BrokenMaster_8213: that IS the issue :P
Astrobytes: (no s**t :D )
BrokenMaster_8213: i think it keeps repeating over and over again becaise m never reaches actual 0, since it recalls itself, never gettis to actually go m - 1
PatrickMcGinnisII: that's a highly exponential # of calls for even small m and n
Astrobytes: My brain just popped
BrokenMaster_8213: i mightve looked too fast, but wouldnt you just want to n+1 for the same result? :D
PatrickMcGinnisII: https://gfredericks.com/things/arith/ackermann
ErrorRazor: Looks to me like it would result in 1 rather than n+1
PatrickMcGinnisII: even with memoization it's a hog
Astrobytes: Looks like a poor implementation, is it a specific puzzle?
ErrorRazor: Yeah this animation looks like it'll never end
BrokenMaster_8213: i think our names just changed to Ackermann
BrokenMaster_8213: interesting, https://gfredericks.com/things/arith/ackermann
Sergen: does anyone know how the coc question algorithm works. Like how it prioritises which questions are chosen or if it's completely random?
ErrorRazor: Not completely random, it doesn't repeat a puzzle within a short period of time
gatitos: i jsut did a coc and my thing has been pending for like
gatitos: 2 minutes
gatitos: is it stuck
gatitos: it is taking so long that the clash finished
gatitos: NVM it finally finnished
gatitos: test cases were taking forever too
pdx_firebird: server is having some issues it would seem
Youzak: Do you guys often have the issue where a test case may fail or success randomly because of execution time being variable ?
Youzak: Especially tonight where the servers seems to be a bit laggy
Rodrigo_the_coder: time_of_lag = 'night' console.log(time_of_lag)