Chat:World/2021-07-30
Peached: and first time 2nd les go
phoenixcrow: i dont understand how all game work
FleuryBoy: guys, i already beat the first bot in the spring challenge contest
FleuryBoy: but they didnt upgrade my league
FleuryBoy: i already battled multiple times
KiwiTae: u need to submit
KiwiTae: your code in the arena
FleuryBoy: im on top of my league
KiwiTae: nop
KiwiTae: you are 2points behind Benoi
KiwiTae: and whats the boss score?
FleuryBoy: but that shouldnt matter
FleuryBoy: because they say that the ones better than the bot will upgrade
KiwiTae: whats the boss score?
KiwiTae: how much? hehe
KiwiTae: :fearful:
Peached: finally im off 8k on clash of code
derjack: :tada:
Peached: now imma try to solve this ascii art
Peached: puzzle thing
Peached: (instant confusion)
Peached: YOO ALL OF A SUDDEN IM 5K WHAT
BlaiseEbuth: Hey there.
Peached: hai
Peached: im on a impossible clash rn it has problems so bad
Peached: imma just get 20% of it and S U B M I T
Peached: and i got 0% wtf
Peached: weirdo clasher
Peached: dawdsjdowldmadkdce
KiwiTae: time to give up
Peached: right, forgotten that opton
Peached: *presses 5th button on mouse*
Peached: how the hell do i do this potato buy or sell think i know nothing about it
Peached: a
Peached: imma just p w a c t i c e
Peached: lets start this wonderful ai journey of tower defence
Peached: oh no
Peached: *dies
derjack: tower dereference?
Peached: yea
Peached: my brain cant handle
Peached: imma play something more simple
derjack: onitama from the same author :v
Peached: a
Peached: wow i finally got py3 regular hahahaha
astrabug: chungus
JonathanBoto: pero nkita nko ako acct dati:
struct: hi
KiwiTae: o/
struct: hi KiwiTae are you still working on hypersonic?
Nguyen_SoCute: hello
Wontonimo: oi
struct: hi Wontonimo
Wontonimo: hey struct !
Wontonimo: I have successfully converted 3 CoC'ers to multis this week. I should get a badge
struct: lol nice
Illedan: :star:
struct: yesterday i sucesfully revived my c4 bot
Wontonimo: look at it, proudly high on the leaderboard. What the heck is Robo doing different?
struct: he has NN
Wontonimo: I'm a bit frustrated that I can't get my UTTT bot any higher. I'm kinda out of bullets. Perhaps a transposition table or node reuse table?
struct: node reuse?
Wontonimo: an inferior version of transposition tables, which only looks at exact board/move matches
Wontonimo: i just made up "node reuse", it's not an official term
struct: i feel like its one of those games where its hard to improve
Wontonimo: it is, for sure. it's been a crazy amount of effort to climb from 38th to 28th
struct: if I were you I would try another multi
struct: Sometimes you might get another ideas and then apply them there
struct: its what happened for me on c4
struct: I found this when I was doing breakthrough
Wontonimo: you and me are thinking the same thing
struct: then I aplied it on c4
Marchete: :notebook::soccer:
struct: :fire:
Wontonimo: are you using transposition tables for C4?
struct: no
struct: mcts solver with smart rollouts
struct: and higher rollout count than the average
Wontonimo: thanks
struct: and opening book that is book = {7} :)
struct: just 1 move for first turn
struct: cant really be called a book
Wontonimo: yeah, i saw that. It would be great if UTTT also had that steal option to balance the opening
Wontonimo: more like a leaflet
struct: Im sure if you port your uttt mcts to c4
struct: you get top 20
Wontonimo: yup
derjack: node reuse? like tree reuse from previous turn?
martinpapa69: or more like a node storage where you put back nodes you dont need anymore
derjack: node pool?
Wontonimo: in the event you've come to the same board configuration, reuse the cooresponding node in your MCTS
Wontonimo: it therefore benefits from not having to divide the learnings from rollouts between two areas of the tree
derjack: so, transposition table
Wontonimo: right, but without symmetry transformations
Wontonimo: i thought transposition tables usually included symmetry transformations
Wontonimo: or do you skip that?
Wontonimo: or is symmetry transformation usually considered "extra" on top of transposition ?
RoboStac: extra - lots of games have no symmetry but benefit from transposition tables (eg chess)
Wontonimo: excellent, thanks
martinpapa69: I've too thought about that kind of node reusage. doesn't look trivial to implement tho
struct: i would not try it on c4
Peached: hi
RoboStac: I would have thought c4 would be good for it, it has a lot of reused positions
derjack: the are not many transpositions in uttt anyway
struct: maybe, but I still think its not trivial to use with mcts
Peached: i finally got off 6k place in clash of code
martinpapa69: one thing is cool about it, it could be merget with the neural network cache. the outputs could be stored on the nodes
martinpapa69: oh, i dont even need nn cache in that case. nvm
martinpapa69: one thing i dont know if i backprock. i would be smart to count all parants
martinpapa69: and backprop to all of them
martinpapa69: so instead of having a Node* parant, having a vector<Node*> parents, and call backprop on every parent
derjack: afaik robo is using nncache in oware
derjack: well if nn stuff is expensive, why not reuse it
derjack: no transpositions in oware until endgames loops though
RoboStac: yeah, but I still have separate nodes for each state
Wontonimo: hey Peached, have you tried competing in the bot battles?
Wontonimo: Peached , do you think you could steer a pod better than these guys https://www.codingame.com/replay/572892061 ?
Peached: yea i did
Peached: im in liek bronze league rn
Peached: lemme see the link
Wontonimo: yeah, you are higher than them
Peached: yep
Wontonimo: what do you think you could do to predict that your pod is about to hit the checkpoint, and if so to target the next checkpoint?
Wontonimo: so as to drift into the current checkpoint by turning in advance
derjack: -3vel eh
Wontonimo: oh, that too
Wontonimo: but i usually try and get people to use -1vel first and have them find 3 by themselves
jrke: -3vel easy pzy top gold
jrke: top gold like top 1000 i think
Wontonimo: Peached, have you heard of -3v ?
Wontonimo: PM me if you want more details
Peached: no clue
Peached: probally shouldnt do clash of code rn and ruin my ranking imma message u
schachmatt: did the power of thor golf challenge get re-run recently?
antiwonto: why you ask?
schachmatt: my solution went from 100% to 75% without me changing anything
eulerscheZahl: and i climbed a lot of ranks
Astrobytes: Yeah I think it was rerun a few weeks(?) ago
eulerscheZahl: sometimes CG adds/changes validators to prevent hardcoding
schachmatt: ahh gotcha
derjack: checkmate!
wild: yh
Nxnn: hi
jacek: a chat
ericmp33: bruh
AlecMan: Yeah it's a chat
ericmp33: but if u ask what is this chat, u can't answer is a chat
ericmp33: is redundant
eulerscheZahl: it's a chat for the whole website
eulerscheZahl: there are others for certain languages such as #rf #ru #de
ericmp33: thanks
eulerscheZahl: and there is a discord independently from this chat
ricknardo: Greetings, just a friendly reminder to stay hydrated. Please, drink wanter now if you are able to.
eulerscheZahl: uhm, thanks. my bottle is right next to me
Astrobytes: same
ericmp33: xd
dbdr: what's in your bottles though?
eulerscheZahl: tap water
AstroHydes: Also tap water for me
AstroHydes: woops, wrong window :D
eulerscheZahl: why the account switch?
eulerscheZahl: :D
ericmp33: if i drink the tap water we have here, i die in 15 days xdddd, not drinkable
AstroHydes: I'm doing stuff in this one and tabbing between them, gets confusing at times!
eulerscheZahl: is it me or is the user info on mouse-over not working?
Astrobytes: Getting the same actually
struct: in chat yeah
struct: i guess we all tried to mouse-over the same person
ericmp33: how can i check my previous solved puzzles?
ericmp33: puzzles/exercises idk how u call them
struct: go to the dificulty and scroll to the bottom
ericmp33: hmmmm
ericmp33: cant find it
eulerscheZahl: https://www.codingame.com/training/easy at the bottom?
eulerscheZahl: or did you play clashes? then you can't see it
ericmp33: i think i did both
ericmp33: thanks btw
ericmp33: in this one, when the loop breaks? like i see while true in java, but no break (https://www.codingame.com/ide/puzzle/onboarding)
ericmp33: http://chat.codingame.com/pastebin/424c9209-06e7-4930-b3e5-f237a7c13be0
eulerscheZahl: while(true) is fine here on CodinGame
eulerscheZahl: in each iteration you will read input and write output
Astrobytes: it runs as long as it receives input from stdin
eulerscheZahl: an external program will feed your code. and kill the process when it's done
ericmp33: oh
ericmp33: but wouldnt be better use sc.hasNext() in java for example? or how could i stop it?
eulerscheZahl: you don't have to stop it. CodinGame will do this for you
ericmp33: okay yeah, but was an assumption of how could i do it coding it in my machine
ericmp33: a guess*
dbdr: imagine the millions of bots still running
xxd: i have this odd issue where in CoC where the page freezes when a clash starts, i need to refresh the page to view the problem/IDE
eulerscheZahl: only Stilgart's bot refused to die at some point
dbdr: how could he tell?
Stilgart: \o
ericmp33: i solved it, just changed while (true) to while (sc.hasNext()) c:
Astrobytes: that was tricky to get to the bottom of iirc
Astrobytes: Something to do with threading?
dbdr: ssh my_bot@codingame.com
Stilgart: not my fault if CG does weird things with threads :)
Astrobytes: hehehe
Husoski: Coffee!
dbdr: error: garbage option Usage:
ps [options]
dbdr: how rude
jacek: oO
ricknardo: ey guys there is any way to get back to a past clash to finish it in your own?
jacek: no
jacek: you can try to find it https://eulerschezahl.herokuapp.com/codingame/puzzles/
Astrobytes: https://eulerschezahl.herokuapp.com/codingame/puzzles/
**Astrobytes is a slowpoke
Astrobytes: :+1:
jacek: :tada:
Maxim251: http://chat.codingame.com/pastebin/b1b968c3-ed1d-4151-a870-c46f0e01c5b8
aetrnm: Oh Astrobytes, you are still alive UwU
Maxim251: Please read that, There is question wht array cant be initiate
aetrnm: Haven't been for 3 month on a website
Maxim251: If I want initialise "MARK place[3][3] = { none};" then why I get wired output?
Maxim251: http://chat.codingame.com/pastebin/42875bdb-7a16-4ab3-a59c-379b8afbc05d
ANONYMOUS42: is that in C?
aetrnm: If it's C, then None with capital, but I am note sure whether it exists in pure C...
struct: thats how it works
struct: if you do int arr[6] = {1};
struct: only the first 1 will be 1, rest will be 0
struct: which is the default value
struct: you can do enum MARK {none, X, O };
struct: then 0 will equal none
Astrobytes: ^
Astrobytes: that will work, anything else you risk garbage
Maxim251: Thats wired, I always was sure that it will initiate all array
Maxim251: @struct yeah, I think this could be easy solution, is good that is initializing with 0 value and not mess leaved from memory.
Maxim251: Now I know, to never again do it like this int value[8][8] = {3}; and I will do it manually from for loop
struct: for loop works
jacek: does it work for other things?
Astrobytes: 'other things'...
jacek: other than loop
Astrobytes: hm?
Astrobytes: what do you mean?
jacek:
jacek: ok ill shut my mouth :no_mouth:
Astrobytes: were you trolling?
jacek: no
Astrobytes: do you mean the {} initializer syntax?
Astrobytes: Oh well. Unexplained questions never get answered :P
jacek: initializing 2d array with {} is more tricky no?
juice0: you have to do {{}} right?
jacek: i think so?
Astrobytes: For anything other than 0 value it's safer to use a loop
Astrobytes: There are ways
Astrobytes: But it depends what you want the value to be
Astrobytes: iirc memset works for 0 or -1, anything else needs a loop
juice0: yep i do Template:0 with maximum confidence for me, which is about 1%
aetrnm: *int arr[6] = {1}; only the first 1 will be 1, rest will be 0 which is the default value* Values that are not defined can contain garbage, which is rare, but can happen. For newbies such a details are important, as it is a basis for understanding of evething
Astrobytes: Yeah, I would definitely recommend looking into memory allocation and memory in general, since it fundamental for arrays
aetrnm: Tbh, I have been solving programming tasks with C++ for 3 years so far, and I am always using vectors. Even though they are slower, if you don't want to fk brains with memory, it's really a good option, especially because Codingame does not have 1s time limitation
Astrobytes: It's different when you're doing bot programming
Astrobytes: I mean STL vectors are fine if you reserve the size and don't change it
Astrobytes: but when you have 50-100ms per turn and no command line optimization, you have to use the pragmas
Astrobytes: and sometimes arrays too
Astrobytes: implement your own vector class or whatever
aetrnm: Nah, once I tried to override standard vector in C++, according to my task, that was crazy
aetrnm: Just C++ is not for everyone :)
Maxim251: I have another problem, in Montecarlo tree search, I have base class on wich I will generate child class, in my mind is like multiverse in LOKI series in Avengers, My question is that when I create obiect in side obiect, it will happen for ever. How I can limit that, or how I can track multilayer arrays of class?
jacek: you have nodes in your node class?
Astrobytes: You may be overcomplicating things a little
Astrobytes: @Maxim251
Maxim251: That class is a node, but this node is base node, because I am create it, but in side that class I want create copy of its one, where will create copy of that board and fill up next choice.
therealbeef: sounds like composite design pattern
Maxim251: that class is... I try explain as easy as posible how I try desighn that class...
Maxim251: vector< pair<int, int>
jacek: time flies eh https://img-9gag-fun.9cache.com/photo/axMex3n_460svav1.mp4
Astrobytes: Right, so you have a Node class. Your root node is an instance of that. From there you expand that node - you give it children, more instances of that same Node class, who are created from applying available moves
Maxim251: I never do that previously, and I am bit confused how I should do that...
Maxim251: I know that clas should contain whole logic to figureout next move and if is win or lose
Maxim251: Or do I need move all functions out side of node class and inherit them apart?
jacek: logic is done outside the class
Astrobytes: ^
jacek: class is has just state/move, wins/ visits, children and optionally parent
Maxim251: Do someone can help me in C++ ... help me write base code? On private chat, that I will get glimps of how that desighn should look? Because now I feel like I go thru black room,
sapfeer0k: the website's js is broken.
sapfeer0k: Possibly unhandled rejection: {"id":-2} undefined in browser console
Maxim251: I want learn Montecarlo tree search on Ultimate Tic-Tac-Toe because board is small and I think it will be easier to me to understand
Astrobytes: http://chat.codingame.com/pastebin/c565ae3d-f476-45cc-9730-7c94b761f7e0
Astrobytes: there is a naive example
Astrobytes: Maxim251: I would try to learn it on regular TicTacToe first
Maxim251: Ok, then I go first there, if I found...
Astrobytes: We don't have it on here, other than a puzzle version. But it's easy to code by yourself
Maxim251: Ok, logic it self is easy . But that game give me 2 moves of O, and my answere should be where is the winning move, But I need something to start from scrach using Montecarlo, like Othello game, where I try use old fashion code. And I get only 111 in ranking, and i think others was using tree search to predict future moves.
Astrobytes: I am suggesting to code tictactoe and use monte carlo tree search to play it.
therealbeef: the wood league of UTTT is regular tic tac toe, no?
Astrobytes: Hm yes, I think so
Maxim251: Yes, I have wood tictactoe only 1 board... Thats why I did not write simple code to pass wood league, and thats why I want learn tree search on that simple board.
therealbeef: good idea
Astrobytes: Yes stay with the simple board
Maxim251: In othello board is to big, and I leaved that , because I want first learn how code tree search.
Astrobytes: have you learned minimax w/ alphabeta pruning, and even random (monte carlo method, no tree) searches?
jacek: start with the simulation: board state, list all available moves, makeMove, undoMove, isGameOver, getWinner
Maxim251: http://chat.codingame.com/pastebin/7b54a29e-533d-4f45-a8e8-0ce3d1fb8476
Astrobytes: Are you familiar with tree data structures in general?
Astrobytes: OK, well I'd get learning about binary trees first and work your way from there. It will help a lot
Maxim251: ps, I know that node should contain array? Because board have 9 fields, and each choice begins from diferent field?
TobiasA: what is the largest depth you guys have ever used for minimax on coding game? that actually works?
jacek: i think i had around 14 in oware when using negamax
jacek: and more near endgame
Astrobytes: No idea. Mostly I use iterative deepening, I don't always check the depth
TobiasA: 14:fearful:
TobiasA: i see
jacek: welp there are at most 6 moves
Astrobytes: and higher yes, depends on pruning tricks and other search techniques
TobiasA: that means it is me who is doing something wrong
Astrobytes: which game?
TobiasA: depth of 1 times out for me
TobiasA: tron
Astrobytes: You're doing something wrong
TobiasA: mhm
Astrobytes: Maybe another game is better to try minimax first
TobiasA: any suggestions?
Maxim251: ok, I have node based at using pointers and 'new' key word
Maxim251: http://chat.codingame.com/pastebin/c3be42ae-afcc-427d-8982-b427960d8bb9
Maxim251: But when I think about it, there should be posible to use vector?
jacek: depth 1 timeouts? then it is likely some crash
Maxim251: vector will alowed me to iterate from all instances in simpler way.. I am going in good direction?
Maxim251: This site show me basics how manually create tree of nodes, https://www.geeksforgeeks.org/binary-tree-set-1-introduction/
Maxim251: how I can create automatycally growing node untill some rulls will stop it?
Astrobytes: but have you practiced that?
Maxim251: To practice, first I need to know how do it, other wise I will code blindly and waisting a lot of time, where at the end it will be so simple...
Maxim251: I dont want lern it in hard way, thats why I try ask You gus for help
Astrobytes: Sorry but you really need to learn the basics of building tree data structures
Maxim251: http://chat.codingame.com/pastebin/0794f50d-801c-4348-8b22-26f6564fc74d
Astrobytes: there's no quick fix
Maxim251: this is simple. But I never do auto growing node,
Astrobytes: afk, back later
Maxim251: This link show manually creating tree, like: node = create node, node->node->node->node = create new node.... In auto growing node this type is without sense... And function to create node should be in side of that node,
Maxim251: then I will get problem, how to prevent to growing tree for ever,
Maxim251: Also coming to my head is problem of counting deph,
Maxim251: My aproach was something like this:
Maxim251: http://chat.codingame.com/pastebin/857166e6-284e-43ae-ba7f-419bf648e4a4
Maxim251: This aproach will be good?
Maxim251: http://chat.codingame.com/pastebin/cfbf62a2-2895-4f1d-b924-8948128d12bd
Maxim251: I try play with nodes, And happly I get what I want, but more interesting is that output what I get is something what I was suprised.
Maxim251: http://chat.codingame.com/pastebin/e5ad8b1c-40fd-4a1e-90ce-9d0ee07fef09
Maxim251: This line is very interesting, left = new Node( layer ) Is creating new nodes until reach desire amount, and then next line is outputted, Is going in oposite direction
Maxim251: Output looks like that :
Maxim251: http://chat.codingame.com/pastebin/027db5c2-2da4-40d7-84e6-499d0954869d
jacek: :upside_down:
Maxim251: By accident now I know to make all logic before creating next layer, and use that last line to return interesting me value? Or I can do logic after creation of node, but that will happened bacuard?
Maxim251: Ps, I should use also delete ? because I use pointers and new keyword/
struct: usually you do
struct: but on cg I dont use delete
struct: I create a memory pool for the nodes
struct: and then use the nodes in that pool
Maxim251: I was just reading about chunk alocation... I think I understand how You use in Your code... Hmmm... Interesting aproach.. Rather to delete every seccond 1 node, You delete whole chunk at the end... Do I am corect?
struct: yes when program ends
struct: This is used mostly for performance reasons
struct: at least here
struct: If you are starting to learn how to program
struct: You dont need to do this
Maxim251: Only problem is that when I want create size for my nodes, I need first know how many of my nodes will be sored, ?
struct: yes, usually I store like 40'000'000
struct: I never end up needing all of them
Maxim251: Yes, of course, is good to know that stuff...
Maxim251: Its like array and moving 1 pointer in fixt amount of bits
Maxim251: uff, Thanks for help, now I understand how create tree of nodes. :)
BENTALLAH: .
Gameonn: Hey guys, I am looking for a job in reactjs. Can anyone share some references?