From CG community
Jump to navigation Jump to search

Default avatar.png kalier: Every time I click this, it always shows that I'm a robot

jacek: clash addict

Default avatar.png 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


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

Default avatar.png boulboul: Hello word ! How are you doing

Default avatar.png boulboul: world *

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, 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

eulerscheZahl: join public multiplayer

IceFire708: lol

Default avatar.png notofyourinterest: is alpaca a bot?

AntiSquid: JOIN NOW! FREE GAME! IceFire708

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.

Q12: In frame 51

eulerscheZahl: because the opponent tries the same, so it's a draw

Default avatar.png 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

Default avatar.png 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

Default avatar.png ErrorRazor: the game* was called


Default avatar.png Maxim251: why assert is not working? how i can fix it?

struct: What do you mean? What error do you get?

Default avatar.png Maxim251: assert is not defined

struct: include <assert.h>

Default avatar.png Maxim251: I did include header file

struct: I just tried it and it works fine

Default avatar.png 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

Default avatar.png Maxim251: no

jrke: struct did you made contribution for amazons yet?

struct: not yet

Default avatar.png 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

Default avatar.png lankygame_Adrian: it is

Default avatar.png lankygame_Adrian: v

Default avatar.png lankygame_Adrian: v

Default avatar.png lankygame_Adrian: v

Default avatar.png lankygame_Adrian: v

struct: stop it

Default avatar.png lankygame_Adrian: l

Default avatar.png lankygame_Adrian: l

Default avatar.png lankygame_Adrian: l

Default avatar.png lankygame_Adrian: l

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

Default avatar.png ErrorRazor: Chat keeps disconnecting :|

Default avatar.png 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

Default avatar.png ErrorRazor: Oh shit lol

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

Default avatar.png ErrorRazor: I'm using c++ but clearly not doing it well, I get a few hundreds

jacek: do you have optimisation pragmas?

Default avatar.png ErrorRazor: No what are those

jacek: #pragma GCC optimize "Ofast,omit-frame-pointer,inline,unroll-loops"

  1. pragma GCC option("arch=native", "tune=native", "no-zero-upper")
  2. pragma GCC target("rdrnd", "popcnt", "avx", "bmi2")

Default avatar.png ErrorRazor: I just started learning tbh

jacek: write those at top

Default avatar.png ErrorRazor: Ok thx

MSmits: should help, but will not solve the problem fully

jacek: secondly, do you use bitboards

MSmits: probably a factor of 3 at most

Default avatar.png 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

Default avatar.png 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 ?

Default avatar.png 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'

Default avatar.png 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

Default avatar.png Maxim251: thaks, why set<> is not in std ?

jacek: it is. you need to include it

Default avatar.png Maxim251: Ow, Ok, thank YOU FOR HELP

DomiKo: if you are lazy you can use <bits/stdc++.h>

Default avatar.png Maxim251: Yes, I see it long time ago that shortcut, but I forget that I could use it

Default avatar.png Maxim251: thank You guys :)

Default avatar.png samuel_wondimu: hello everyone i am new here

jacek: hello, new here. we are everyone

synchoz: new is goood

iRewiewer: topkek

Default avatar.png CadeLilley: hi

struct: Anyone else getting both headers?


MrPapaya: yes

Default avatar.png Orip: nope

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: 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:

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 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

Default avatar.png Angecide: what game is bt?

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

Default avatar.png 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 :)

Default avatar.png 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?

Default avatar.png Maxim251: yes

struct: use str.find(anotherString)

Default avatar.png Maxim251: i remember that i use contains(inout1, input2) but i dont remember what was header for that

Default avatar.png 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

Default avatar.png 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. :)

Default avatar.png Maxim251: and output as bool

MSmits: you're not using c++ in a clash are you?

Default avatar.png Maxim251: no

MSmits: ah ok good

MSmits: btw ... automatonNN you dog!

AutomatonNN: why?

PatrickMcGinnisII: woof AutomatonNN

AutomatonNN: hey guys

struct: I blame pixi MSmits

MSmits: no worries, i just think it is funny

Default avatar.png pluto-de: who's number 1 on this site (or how can i check the leaderboard)

MSmits: activites

MSmits: compete

Default avatar.png pluto-de: ok ty

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

Default avatar.png Orip: is it possible to do recursive function here?

Default avatar.png BrokenMaster_8213: yes

Default avatar.png Orip: how

Astrobytes: Call your function recursively.

Default avatar.png BrokenMaster_8213: ^dont thats that literally, lol

Default avatar.png BrokenMaster_8213: dont take*

Default avatar.png Orip: i mean

Default avatar.png Orip: how do i do it for the full thing or i must enter it into a func

struct: int func(int 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'?

Default avatar.png Orip: full code

Default avatar.png Orip: but thanks i understand it's impossible

Astrobytes: No it's not.

Default avatar.png Orip: needed to make a def and then do it

Default avatar.png Orip: RecursionError: maximum recursion depth exceeded in comparison

Astrobytes: Yes, you need to make a function outside of the main program loop

Default avatar.png Orip: def naive_ackermann(m,n):

Default avatar.png BrokenMaster_8213: you are getting stuck inside your functions, you will have to write a condition to break it

Default avatar.png Orip: nvm

Default avatar.png Orip: this is the erroir

Default avatar.png Orip: RecursionError: maximum recursion depth exceeded in comparison

Default avatar.png Orip: what can i do?

Astrobytes: meh, the auto pastebin isn't working, use or something to post your code if you like

PatrickMcGinnisII: PEBCAK

Astrobytes: Sounds like you're infinitely recursing

Default avatar.png Orip:

Default avatar.png Orip: ye

Default avatar.png Orip: ill check my code

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

Default avatar.png BrokenMaster_8213: that IS the issue :P

Astrobytes: (no s**t :D )

Default avatar.png 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

Default avatar.png ErrorRazor: Same

Default avatar.png BrokenMaster_8213: i mightve looked too fast, but wouldnt you just want to n+1 for the same result? :D


Default avatar.png 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?

Default avatar.png ErrorRazor: Yeah this animation looks like it'll never end

Default avatar.png BrokenMaster_8213: i think our names just changed to Ackermann

Default avatar.png BrokenMaster_8213: interesting,

Sergen: does anyone know how the coc question algorithm works. Like how it prioritises which questions are chosen or if it's completely random?

Default avatar.png 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

Default avatar.png mfnsvrtm: same

gatitos: NVM it finally finnished

gatitos: test cases were taking forever too

Default avatar.png pdx_firebird: server is having some issues it would seem

Default avatar.png Youzak: Do you guys often have the issue where a test case may fail or success randomly because of execution time being variable ?

Default avatar.png Youzak: succeed*

Default avatar.png Youzak: Especially tonight where the servers seems to be a bit laggy

Default avatar.png Rodrigo_the_coder: time_of_lag = 'night' console.log(time_of_lag)