Vagina1337: very useful info
struct: on your profile
struct: or for a specific puzzle just click it
Torpesh: Ahh, found it. I was trying to find it from the coding page. Had to go back to the details page. Weird though - it said that I didn't get any, but when I went to the details it shows that I got 2/2.
eulerscheZahl: happy Caturday
struct: If I want to overload copy constructor on c++ and I dont want to copy the last N bits, is it bad if I do memcpy(to, from, sizeof(struct)-N_bits)?
pb4: struct : Don't do that
pb4: memcpy works with full bytes, not bits
struct: what if the all the bits together = 8 bits?
struct: This still seems to hacky though I think I will avoid it
pb4: You can only use "vanilla memcpy" if N_bits is a multiple of 8
pb4: What kind of data structure do you want to copy-but-not-completely ?
struct: Thanks, also I have a question about moving range from array
struct: Imagine I want to copy from 400-500 to 0-100
struct: is memcpy fine?
struct: I dont want to copy, but just move
mzbear: as long as the ranges don't overlap
struct: It was some members on the struct that I didnt need to copy, but I dont think it would matter much, so Ill leave the default copy constructor
pb4: If it's really an array, it won't make a difference if you're copying or moving
struct: ok, thanks
pb4: I'd suggest you try the std::copy algorithm and compare with memcpy
struct: Arent they the same?
pb4: Less prone to error, and probably just as fast
struct: ah ok
jacek: merry Caturday
eulerscheZahl: oh, it's merry now :D
VizGhar: Hey guys... I'd like to contribute with this multiplayer game: https://www.youtube.com/watch?v=MGvY3jsLN1I
Seems to be not that hard to implement. What u guys think?
eulerscheZahl: looks similar to this game https://www.youtube.com/watch?v=Xcyz3dzxcm0&ab_channel=TheRealQueenGames
eulerscheZahl: if you know how the SDK works, you can probably do it in 3-4 days
eulerscheZahl: so sounds like a nice project for the christmas holidays if you don't know the quirks yet
VizGhar: :) I've quickly read documentation and looked at 4-5 games on github, so I'll struggle a bit, but at least i know where to start
struct: most of the stuff is pretty simple
eulerscheZahl: and chat can help
VizGhar: sure can... you guys are here non-stop :D
struct: Cant rest before finishing STc
eulerscheZahl: can rest now, RAIC going well
eulerscheZahl: and topcoder has a minesweeper optim contest but i don't feel like competing atm :(
VizGhar: I wont feel like that next 2 years :|
eulerscheZahl: you have time till May to recover
jrke: what is RAIC ? russianaicup?
eulerscheZahl: the 2nd most easy tshirt of the year
SirMiska: Hello everyone!
eulerscheZahl: that hii-guy is still trolling on #fr :D
struct: Its the same guy
SirMiska: Could you fill me in?
eulerscheZahl: just enjoy your stay here, i don't want to turn you off by stories about a troll. they come and go
eulerscheZahl: but the fun multiplayer games on the platform stay
SirMiska: I always enjoy my time here!
MSmits: oh noes, the pony is back
derjack: better do the Y thing with my alt
MSmits: are you afraid you'll break the leaderboard otherwise?
derjack: yes, i think im lucky with being 4th
MSmits: ahh ok
struct: Keep spamming and you will get kicked
struct: There is, you can play private clashes
eulerscheZahl: so, who else needs a kick?
eulerscheZahl: can't even switch chatrooms for a few minutes
derjack: w00t? you too submiting?
struct: Robo also playing?
eulerscheZahl: playing where?
derjack: hmm i get random timeouts
MSmits: i am submitting because of robo yes
MSmits: though not just robo, i also still lose other games, so there's work to do
MSmits: robo made some changes. His bot is pretty deterministic, but also pretty good, so he tends to hit upon a line of play my bot keeps getting wrong
struct: You need more time for first turn jacek?
RoboStac: I don't understand my bot anymore
MSmits: so i suddenly lose 50% or 100% of my games vs him when he does that
derjack: he didnt add randomness?
MSmits: dont know derjack
MSmits: sometimes randomness isnt enough
MSmits: if you add too much, the bot becomes bad, if you add too little it's deterministic
MSmits: sometimes the window size is 0
RoboStac: theres no randomness added
jrke: you need a good bot + randomness for a good rank
MSmits: jrke randomness is mostly just needed to beat someone with an opening book
MSmits: or someone else deterministic who just happens to use the right moves against you
RoboStac: I think I've got a bug in the learning somewhere and my scores aren't working well (the mean squared error stabilized at .75 which is huge), but the bot still wins somehow
MSmits: Yavalath is also a weird game because of the early wins. 1 mistake is enough
MSmits: might have something to do with it robo
MSmits: it;s not like oware, where you can keep playing and hope your opponent makes a mistake as well, so you can get some seeds back
MSmits: maybe a game like that is harder to train?
RoboStac: maybe, but I'm sure it didn't used to do this
MSmits: well it did use to be very deterministic
RoboStac: well, the only reason it isn't now is every position is almost identically stored
MSmits: also right after your last submit, i added 1 move to my book that made my winrate go back from 50% to 80-90%
MSmits: so dont judge by the leaderboard
RoboStac: like it thinks I have a 50-80% chance to win at all times
MSmits: on your move?
RoboStac: for both players
MSmits: because when it's your turn you do have the advantage
MSmits: i'd say compare it with your other NN's? or is this one fundamentally different?
RoboStac: I'm pretty sure it's a bug, I've never seen the eval get stuck at such a large error
MSmits: hmm ok. Well as for your version of last night, i did not see it blunder
jrke: lemme go for resubmit for my 5 month old bot in yavalath its just mess
MSmits: derjack that last game is strange. Your bot should be good at spotting traps that late in the game shouldnt it?
derjack: unlikely. i was thinking of switching to mcts for late game
MSmits: usually the game ends early because early traps are hard to spot due to large branching
derjack: patterns get messy
derjack: oh shit i forgot i commented pragmas to debug
MSmits: aha so i was right
MSmits: less sims, less depth
MSmits: more trapping
MSmits: the 3 2 start is really popular
MSmits: there's really no reason to use it, some others are just as good
derjack: my meta mcts always thinks early 3 2 is better than center
MSmits: as p1 or as p2
derjack: as p1 without swap
MSmits: and ofc, with swap rule, center is useless
MSmits: my meta mcts says 44% win as p1
MSmits: but it's biased because i;ve been using it to counter players as p2
MSmits: so ofc i get more wins as p2
MSmits: i suspect it's pretty balanced
MSmits: oh, one thing about this. I solved all but 4 moves as a win for p1
MSmits: so thats 56 losses as p2
MSmits: that might be why your mcts thinks this
MSmits: but if you pick one of the 4 leftover moves, you're fine as p2
MSmits: ignore the right side, symmetry
MSmits: as you can see 2 unsolved moves
eulerscheZahl: i'm probably wrong here as you wrote in C++ but I sense some Windows Forms there
MSmits: all my meta mcts are windows forms
MSmits: i start c++ bots from it
eulerscheZahl: i see
MSmits: it's so easy
MSmits: otherwise i know nothing about coding interfaces, w forms really saved me there
eulerscheZahl: easy to get started
eulerscheZahl: WPF is way more flexible. but not a good idea if you want a quick UI without much learning before
MSmits: I'll remember that, this is also C#?
eulerscheZahl: yes. or .net in general
MSmits: I still like C# a lot. Especially after using C++ a lot. It's just more relaxed somehow
MSmits: you know you're not gonna do something silly thats gonna cost you hours to debug
eulerscheZahl: oh, i did silly things in C# too
MSmits: sure, but you have less opportunity to
eulerscheZahl: pass list to function inside function: list = list.OrderBy(...).ToList()
eulerscheZahl: and use the list outside of the function after that
eulerscheZahl: of course i created a new list and worked on that, nothing I did had any effect
MSmits: ah you mean you thought it was unchanged?
eulerscheZahl: story of my GitC contest code :(
MSmits: seems like a typical pass by reference bug?
MSmits: i suppose C# is more dangerous for that than C++ is
eulerscheZahl: so my upgrade behavior was flawed
MSmits: because you abstract more of the functionality, you dont always realize what its doing
eulerscheZahl: but totally my own fault of course. i still very much like C#
MSmits: for tiny programs I use python these days because of work
MSmits: but this Christmas vacation i'll be coding yavalath in unity, so plenty of opportunity for C# :)
eulerscheZahl: when i do web requests or parse some files, python is my go-to language too.
MSmits: I think i'll put a minimax AI in it, just so i dont inadvertently share my real bot
eulerscheZahl: in unity :D
MSmits: yep, it's a study project
MSmits: i'm supposed to code a roll a ball demo level and a game design document for a different game
MSmits: but i dont like roll a ball
MSmits: so i'll code yavalath as a demo and make the document about that also, probably should add a twist to it
MSmits: astrobytes suggested lavalath with a volcano
eulerscheZahl: or you do something with planes https://www.youtube.com/watch?v=D5xX6nRWDko&ab_channel=CodeBullet
MSmits: lol i thought you meant planes as in flat surfaces
eulerscheZahl: wait, plane was correct wasn't it?
MSmits: mmh no there's also a plane as in mathematical plane
MSmits: plains are also flat though
MSmits: English is fun :P
MSmits: its actually not easy to make a plane game in unity
MSmits: you need to keep the plane at center 0,0,0 and instead move the stuff around it
MSmits: otherwise you easily hit floating point issues
MSmits: it uses floats for vectors, not doubles
MSmits: of course you can fix that, but it sounds too complicated for me for a simple 3 EC project
MSmits: didnt struct do yavalath in 4 hrs. I am guessing that means i can do it in 40
struct: I didnt know SDK at that time
MSmits: oh no that was connect 4 right
struct: it was 1:30
MSmits: nice nice
MSmits: so my point is, i am much slower, but i can still do it fairly quickly :P
eulerscheZahl: "you need to keep the plane at center 0,0,0 and instead move the stuff around it" reminds me of Futurama
struct: And you already know the game
MSmits: I got the AI, just need to convert it to C#
MSmits: in world of warcraft, the was an item called a world enlarger
MSmits: when you used it, the whole world became large
MSmits: of course thats not what really happened...
struct: Bust not be easy to do
Maxim251: I play now Ocean of Code, and I created first time guidance system. I get message how oponent is moving, but I dont know his exact position. guidance system should help me average his place to smal area.
AntiSquid: did it shrink you MSmits ?
Maxim251: This is code where boundarys is folowing his step. The square is making smaller when he is moving to end of map, and in same time is moving with orders of his move. If more he is moving on the map, then more precise of his place I get
MSmits: AntiSquid yes :)
MSmits: "Only Gnomish Technology could invent a device that affects the entire world!"
VizGhar: Is there already port for CG game skeleton to Kotlin+Gradle. I just made one (force of habit as an Android Dev :P )
eulerscheZahl: i doubt that Gradle is possible, you probably have to stick to Maven
VizGhar: not sure how maven-publish works, but I've already make the skeleton run with gradle
eulerscheZahl: wait, i didn't read correctly: you made it work? also on upload?
eulerscheZahl: that is: can you upload your gradle project to CG and still have it working?
VizGhar: as I said... not sure how maven-publish works... but output from kotlin is still java, so it might work... how do i test it as fast as possible
eulerscheZahl: CG builds your project on their servers
VizGhar: havent uploaded anything... gonna try right now
eulerscheZahl: not sure if they understand gradle
jacek: gradle+kotlin? kradle?
Astrobytes: grotlin, I like it
VizGhar: allright... gradle impossible :)
VizGhar: FileNotFoundError: [Errno 2] No such file or directory: 'pom.xml'
VizGhar: so maven is must :P
eulerscheZahl: is that the right time for "told you so"?
VizGhar: yeah... go ahead
msd9126: msd9126's game: https://www.codingame.com/clashofcode/clash/151018028fec1b3aed2f7dbda306d029d7b19f6 Watch on Twitch: https://twitch.tv/msd9126
jacek: oh my
eulerscheZahl: hello stream
Astrobytes: there's already a notification in clash, on discord and at the top of the site msd9126 - was that necessary to link in chat too?
Astrobytes: no worries, just a bit overkill :)
Astrobytes: did you just...
jacek: spoiler alert
eulerscheZahl: watch a pixelated stream and solve it faster than the clasher? yes!
jacek: but they hidden the chat
VizGhar: coc hides chat by default
Westicles: Is there a way to look up a clash and see the rating?
eulerscheZahl: as far as I know: no
eulerscheZahl: but CG has all kind of unexpected surprised hiding in the API so there might be some obscure way
mzbear: accidentally using left handed vector coordinates instead of right handed for half of the code, ffs, why am i so stupid
jacek: left handed vector coordinates?
mzbear: z axis flipped
Westicles: possible brain damage from particulate matter from eruptions of Eyjafjallajökull?
mzbear: solving detective pikaptcha ep4 currently, using an approach i'm already regretting
mzbear: a hardcoded lookuptable would've been so much faster to write
jacek: and no search?
jacek: you were so traumatized by doing search you cant find a way out
MSmits: mzbear this was a 4 hr contest
MSmits: you had to solve all 4 puzzles in 4 hrs
eulerscheZahl: and remove the picture of the "Möbius strip"
mzbear: pikaptcha? it would've definitely been doable if i hadn't chosen to write this in C
MSmits: I did it in C#
MSmits: Robo did it in python in a little over an hour i think
MSmits: all 4 episodes
mzbear: and that möbius strip picture only confused me, because i didn't fully read the description and thought it was replicated on the other side in full >_<
MSmits: yeah confused everyone, it was basically the only criticism of the contest
MSmits: i just used the testcases to figure out what it did
MSmits: still took me an hour to do ep3
eulerscheZahl: and the visuals that aren't helping
eulerscheZahl: you only see picaptcha walking if you solved it correctly
MSmits: right, that makes no sense
eulerscheZahl: and that zoom and automove of the camera just make it worse
mzbear: i only figured it out after i accidentally solved it while debugging and saw the pika walk :D
eulerscheZahl: and the whole run in a single frame of the replay
mzbear: ep4 would be trivial with a lookup table for transitions between the faces, but i dont want to do that, so i'm doing vector math instead... which isn't fun in C
MSmits: oh, i did a lookup table
mzbear: my cube coords -> face coords transformation has a bug somewhere and i hate it
MSmits: only had 1 bug in it
MSmits: which was most of the hour i took to solve ep4
MSmits: They could have added ep5 and add an extra dimension
MSmits: 4d cube!
mzbear: oh god
mzbear: i'm having enough trouble with 3d, and i've written some small 3d engines in the past so i should kinda have some grasp of this
MSmits: it's pretty hard
MSmits: i did plenty of 3d work as well, but i had trouble with this too
MSmits: sigh, c++ is so dumb, I cant even cerr a int_8 without doing to_string
mzbear: "surely i didn't write the matrix multiplication wrong" ... OH WOULD YOU LOOK AT THAT
MSmits: lol, grats on finding your bug
mzbear: there's another bug. first wrap goes correctly, second one doesn't ;_;
mzbear: 180 degree error in y axis wraps, but why...
MSmits: why !?!?
jacek: why? https://www.youtube.com/watch?v=RoSs9-NDP3E
mzbear: no, this is fallout from the z-axis issues due to right/left handed mess i had earlier
mzbear: i didn't fix it all
MSmits: lol jacek
mzbear: i'm going to need a can of ice cold coke
MSmits: how will you get it into your nose if it is frozen
mzbear: ahhh, i had two bugs left, that countered each other in most cases. *sigh*
mzbear: oh, fails to solve the last testcase. argh
MSmits: but now you can think faster, because of the coke
mzbear: oh, it times out due to debug output lol
MSmits: that happens
jacek: all you have to do is to have even numer of bugs
mzbear: i had messed up because my face coordinate origin was bottom left corner, while the flat map coordinate origin is top left...
mzbear: waitamoment, i found one more bug while cleaning up the code
mzbear: ... but if i fix this, the solution doesn't work anymore :D
mzbear: no, wait, this isn't a bug, it's just ugly code
MSmits: thats right
MSmits: ugly code is a feature
mzbear: i'm doing some slightly hideous things with this code
mzbear: everyone else who wrote solution in C used hardcoded lookup tables or switch cases, so this is glorious. i should port this to some other languages to see if anyone else did this the stupid way as i did :D
MSmits: you would be actively looking for stupid ?
mzbear: actually, if this didn't have ugly coordinate mapping hack, i should probably port this to every language just for the giggles, but the code is a bit embarrassing because i have to differentiate between negative 0 and positive 0 (i.e. x=0 at left end and x=0 at right end)
mzbear: ... if you have 4 codingame tabs open when you level up, you get that job thingie popup in every single one of them ;_;
jacek: why would you have 4 codingame tabs open :v
eulerscheZahl: i'll ping mzbear on 4 tabs then :imp:
eulerscheZahl: i do that too occasionally
eulerscheZahl: opening the IDE clears chat history
eulerscheZahl: or opening a contribution test IDE opens a new tab
jacek: AutomatonNN really?
AutomatonNN: eulerscheZahl is there a way to see the problem and for the contest is over and it was hard to find
struct: ok, so I managed to reuse the states, but I forgot one important thing. The parent of the state will change...
struct: Now I cant find a way to reasign parent
eulerscheZahl: still STC?
struct: I could check the moves size of all the depths again
struct: and then reasign
struct: Dont think there is an easier way
jacek: some mess in leaderboard and im 6th not 4th in Y :angry:
jacek: though pony is doing good even though no opening book yet
jacek: because they didnt share
mzbear: for(int i=n;i>=0&&d[i]++=='9';i--) d[i]='0'; // and here's how you increment a number in C
KishoreP: is python better to code than Java?
KishoreP: at least on hre
mzbear: python is super convenient, yes
eulerscheZahl: always depends on what you want to do
eulerscheZahl: code golf? take python or ruby
eulerscheZahl: bot programming? python is too slow to simulate many turns. take java or even better C++
struct: What a mess I created
struct: I think it worked finally :tada:
eulerscheZahl: no you can't
MACKEYTH: I don't think there's anything preventing you from copy/pasting the source, or components of it, into your solutions.
MACKEYTH: If you have it
MACKEYTH: But you're stuck with the Java 8 API otherwise
MACKEYTH: Have you looked into CodinGame Sync?
eulerscheZahl: no, i'm a grandmaster at manually copy-pasting from my IDE to the website
MACKEYTH: Not sure if that would be helpful for this
MACKEYTH: Just rereading the FAQ now
MACKEYTH: Are you limited on code size in the online IDE?
MSmits: 100k characters
jacek: characters*, not bytes
jacek: utf-16 character counts as one
jacek: i wonder how would the bots change if we were told the name of the opponent
reCurse: No one said bytes
jacek: its implied :v
jacek: and i made mistake in training data
jacek: i used tanh(tanh(x)) instead of tanh(x)
MSmits: thats an enhancement
MSmits: if you make it better with tanh, who's to say you can't make it better again?
jacek: it shouldnt affect much, as x was already in range (-1,1), maybe some scaling poblem
Astrobytes: you went off on a tangent...
jacek: :o https://9gag.com/gag/awBMN8B
Astrobytes: "germanated" lol
MACKEYTH: Oh. CG is using JDK 11. Why did I think we were using 8?
jacek: good for you. android doesnt even use 8 fully
mzbear: the FAQ says it's either 8 or 11 depending on the puzzle
MACKEYTH: Thanks, mzbear. I missed that. Link?
MACKEYTH: Looks like Oracle's long term support commitment is longer for 8
struct: (╯°□°）╯︵ ┻━┻
AntiSquid: it used to be 8 for a long time
struct: ┬─┬ノ( º _ ºノ)
MACKEYTH: I guess it doesn't make much difference.
struct: Then they updated and it just before contest started and everyone was getting random timeouts
AntiSquid: save the trees, every table you break means some trees get cut to make a new one
AntiSquid: (╯°□°）╯︵ ┻━┻
MACKEYTH: I do wish I could use the SwitchRule syntax that was introduced in JDK 14
AntiSquid: you can if you set everything up offline
mzbear: just found the troll vs castles game... this is terrifying
AntiSquid: get the referee and also check the codingame github repo, you need to download gamemanager files there and edit it i think
struct: Doesnt he want to use jdk 14 on CG?
MACKEYTH: Yeah, or 15.
AntiSquid: i said locally, not on CG :P
struct: Well its not possible
MACKEYTH: If I had some ham I could have ham & eggs if I had some eggs.
Zenoscave: Pew pew
Zenoscave: hey astro
Astrobytes: how's it going?
AntiSquid: hi pewpew
Zenoscave: pretty good. I'm thinking of going back and redoing all my bots to have sims
Zenoscave: Hey anti
Astrobytes: oh hey squiddy
Astrobytes: Rust'ing or C#'ing zeno?
Astrobytes: oh nice
Zenoscave: maybe C#
Zenoscave: we'll see
Zenoscave: I want to take advantage of intrinsics
Astrobytes: The only thing I was iffy about with go was string handling, but I didn't practice enough yet
Astrobytes: *to complain
Zenoscave: I also found that you can do ternaries in avx to some degree
Astrobytes: haven't used any simd stuff in go
Zenoscave: I meant any lang where shifts are arithmetic
Astrobytes: ah gotcha
Zenoscave: Might rewrite a bot to avx. need one where the branching factor is close to a power of 2
Astrobytes: go? 19x19
Zenoscave: i'm going to start with breakthrough
Zenoscave: jacek I assume you bit board
Zenoscave: is there a better board representation?
jacek: i just use bitboard. maybe it has a name, but its simple two int64
Zenoscave: one for each player?
MSmits: works well in bt
VizGhar: Hey guys, can CG SDK draw bezier curves? (fe. graphicEntityModule.createPolygon())
struct: maybe with line?
VizGhar: nah... line got setX, setY, setX2, setY2. No "bezier points"
MSmits: he means, draw hundreds of lines and you have a curve :)
struct: Yeah, I dont think there is any easy way
struct: this is how illedan did curves on lines
struct: but isnt a real curve
struct: I guess
struct: PIXI has bezierCurveTo but GEM doesnt
VizGhar: Hmm... I'm working on this game: www.youtube.com/watch?v=MGvY3jsLN1I
Maybe I won't need curves, just nice sprites
VizGhar: and for preview it doesn't matter at all
struct: sprites will do the job fine imo
Astrobytes: weren't you gonna do that one struct?
struct: no mine was with rivers
Astrobytes: or considered it at some point
Astrobytes: oh right
VizGhar: hehe :) I've just started today... Can be pretty funny to create some bot game
Astrobytes: looks interesting
Zenoscave: I like it.
Astrobytes: just dont have 8 players :P
Zenoscave: is there a bitscan (MS1B/LS1B) intrinsic on these machines
struct: and ctz
VizGhar: at leasy I'm placing tiles https://pasteboard.co/JFHuO9B.png
struct: spent entire day in a function and its not working yet
jacek: dont care, upload it to production server
struct: Where did you submit?
jacek: it was for you
Astrobytes: I don't think he returned from the function yet jacek
Zenoscave: jacek iirc you use mcts solver on breakthrough?
Astrobytes: if he's not here to answer, most use solver with MCTS as standard (on board games at least)
Astrobytes: but iirc his BT is not just MCTS
Zenoscave: So like a minimax rollout policy?
Astrobytes: just backpropagating the game theoretic value when you hit a leaf node really
Astrobytes: pay no heed to the papers you come across, they overcomplicate matters, it really is as simple as that
Zenoscave: something like that?
Astrobytes: I think it's easier to keep a win/loss in your node structure (I'm distracted a little right now, fucking up my RAIC)
Astrobytes: Smits and jace k are your best bets for this kinda thing anyway, way better than me. Also darkhorse 64
Astrobytes: I will say watch your signs though while backpropagating using solver, it can be hell to debug
Uljahn: are you talking about this? https://www.minimax.dev/docs/ultimate/
Astrobytes: no, just plain mcts solver, but nice link!
Zenoscave: I'm saving that one for sure uljahn
Astrobytes: damn right
MSmits: mmh pretty sure i can do the same after ply 20
MSmits: i had a proof number search paper ready and its on my list to code
MSmits: but yeah solving it entirely is too hard i think
MSmits: also I think his version of UTTT is easier to solve
MSmits: it doesnt incorporate the "most boards won" rule
Astrobytes: will be interested in your results if you try it anyway
MSmits: which means you cant just stop after noone can get 3 in a row anyway
MSmits: its for sure an interesting site
MSmits: maybe I'll learn something new from it
MSmits: the wincheck is nice
Astrobytes: didn't check the rest yet tbh
MSmits: I also like the move analysis
MSmits: could let me solve a bit faster and make the simulation better
Astrobytes: you're gonna catch the UTTT bug again :P
Astrobytes: anyway, Im outta here for tonight
blueman34: its im a failure
Lobster_Speed: you know ppl
Lobster_Speed: @blueman34 i like how you introduced yourself as a failure